[U-Boot] [PATCH 2/4] imx: mx6slevk: Add PMIC Pfuze support

Li Ye-B37916 b37916 at freescale.com
Tue Nov 4 10:24:00 CET 2014


Hi Przemyslaw,


On 10/30/2014 6:36 PM, Stefano Babic wrote:
> Hi Ye,
>
> On 10/09/2014 11:08, Ye.Li wrote:
>> Initialize the Pfuze on I2C1 at board late init. The mx6slevk board
>> has Pfuze100 or Pfuze200, print the chip type by parsing the ID.
>>
>> Signed-off-by: Ye.Li <B37916 at freescale.com>
>> ---
> Slowly (sorry for that..) I am checking again all PMIC related patches
> you sent last month. However, these patches do not fit very well in the
> current development.
>
> In the last U-Boot mini summit we get the decision to post new PMIC
> drivers according to the Device Model rules. Przemyslaw is the new
> custodian for PMICs, and he will take care of all related issues
> regarding power management.

Can you share me more information about the new PMIC drivers development that Stefano mentioned above.
1. Have you completed the APIs define for new PMIC drivers?  If yes, where I can get them.
2. When will the new PMIC drivers deliver?
3. Will the PMIC devices already supported in current release stay supported by new PMIC drivers?

Best regards,
Ye Li
> Please rethink your patches and post them again, not forgetting to add
> Przemyslaw in CC.
>
> Best regards,
> Stefano Babic
>
>>  board/freescale/mx6slevk/mx6slevk.c |   57 +++++++++++++++++++++++++++++++++++
>>  include/configs/mx6slevk.h          |    7 ++++
>>  2 files changed, 64 insertions(+), 0 deletions(-)
>>
>> diff --git a/board/freescale/mx6slevk/mx6slevk.c b/board/freescale/mx6slevk/mx6slevk.c
>> index fedd5c3..8b6a79c 100644
>> --- a/board/freescale/mx6slevk/mx6slevk.c
>> +++ b/board/freescale/mx6slevk/mx6slevk.c
>> @@ -21,6 +21,8 @@
>>  #include <mmc.h>
>>  #include <netdev.h>
>>  #include <i2c.h>
>> +#include <power/pmic.h>
>> +#include <power/pfuze100_pmic.h>
>>  
>>  DECLARE_GLOBAL_DATA_PTR;
>>  
>> @@ -48,6 +50,8 @@ DECLARE_GLOBAL_DATA_PTR;
>>  
>>  #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
>>  
>> +#define I2C_PMIC	0
>> +
>>  /* I2C1 for PMIC */
>>  struct i2c_pads_info i2c_pad_info0 = {
>>  	.sda = {
>> @@ -191,6 +195,59 @@ int board_init(void)
>>  	return 0;
>>  }
>>  
>> +static int pfuze_init(void)
>> +{
>> +	struct pmic *p;
>> +	int ret;
>> +	unsigned int reg;
>> +
>> +	ret = power_pfuze100_init(I2C_PMIC);
>> +	if (ret)
>> +		return ret;
>> +
>> +	p = pmic_get("PFUZE100");
>> +	ret = pmic_probe(p);
>> +	if (ret)
>> +		return ret;
>> +
>> +	pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
>> +	printf("PMIC:  PFUZE%s ID=0x%02x\n",
>> +		((reg & 0xf) == 0) ? "100" : "200", reg);
>> +
>> +	/* Set SW1AB stanby volage to 0.975V */
>> +	pmic_reg_read(p, PFUZE100_SW1ABSTBY, &reg);
>> +	reg &= ~0x3f;
>> +	reg |= 0x1b;
>> +	pmic_reg_write(p, PFUZE100_SW1ABSTBY, reg);
>> +
>> +	/* Set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */
>> +	pmic_reg_read(p, PUZE_100_SW1ABCONF, &reg);
>> +	reg &= ~0xc0;
>> +	reg |= 0x40;
>> +	pmic_reg_write(p, PUZE_100_SW1ABCONF, reg);
>> +
>> +	/* Set SW1C standby voltage to 0.975V */
>> +	pmic_reg_read(p, PFUZE100_SW1CSTBY, &reg);
>> +	reg &= ~0x3f;
>> +	reg |= 0x1b;
>> +	pmic_reg_write(p, PFUZE100_SW1CSTBY, reg);
>> +
>> +	/* Set SW1C/VDDSOC step ramp up time from 16us to 4us/25mV */
>> +	pmic_reg_read(p, PFUZE100_SW1CCONF, &reg);
>> +	reg &= ~0xc0;
>> +	reg |= 0x40;
>> +	pmic_reg_write(p, PFUZE100_SW1CCONF, reg);
>> +
>> +	return 0;
>> +}
>> +
>> +int board_late_init(void)
>> +{
>> +	pfuze_init();
>> +
>> +	return 0;
>> +}
>> +
>>  u32 get_board_rev(void)
>>  {
>>  	return get_cpu_rev();
>> diff --git a/include/configs/mx6slevk.h b/include/configs/mx6slevk.h
>> index bf5066f..09d0896 100644
>> --- a/include/configs/mx6slevk.h
>> +++ b/include/configs/mx6slevk.h
>> @@ -30,6 +30,7 @@
>>  #define CONFIG_SYS_MALLOC_LEN		(3 * SZ_1M)
>>  
>>  #define CONFIG_BOARD_EARLY_INIT_F
>> +#define CONFIG_BOARD_LATE_INIT
>>  #define CONFIG_MXC_GPIO
>>  
>>  #define CONFIG_MXC_UART
>> @@ -66,6 +67,12 @@
>>  #define CONFIG_SYS_I2C_MXC
>>  #define CONFIG_SYS_I2C_SPEED		  100000
>>  
>> +/* PMIC */
>> +#define CONFIG_POWER
>> +#define CONFIG_POWER_I2C
>> +#define CONFIG_POWER_PFUZE100
>> +#define CONFIG_POWER_PFUZE100_I2C_ADDR	0x08
>> +
>>  /* allow to overwrite serial and ethaddr */
>>  #define CONFIG_ENV_OVERWRITE
>>  #define CONFIG_CONS_INDEX		1
>>
>



More information about the U-Boot mailing list