[U-Boot] [PATCH 04/10] power: Explicitly select pmic device's bus

Lukasz Majewski l.majewski at samsung.com
Thu Mar 27 18:33:58 CET 2014


Hi Simon, Heiko

> From: Aaron Durbin <adurbin at chromium.org>
> 
> The current pmic i2c code assumes the current i2c bus is
> the same as the pmic device's bus. There is nothing ensuring
> that to be true. Therefore, select the proper bus before performing
> a transaction.
> 
> Signed-off-by: Aaron Durbin <adurbin at chromium.org>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Simon Glass <sjg at chromium.org>
> ---
> 
>  drivers/power/power_i2c.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/power/power_i2c.c b/drivers/power/power_i2c.c
> index ac76870..594cd11 100644
> --- a/drivers/power/power_i2c.c
> +++ b/drivers/power/power_i2c.c
> @@ -23,6 +23,8 @@ int pmic_reg_write(struct pmic *p, u32 reg, u32 val)
>  	if (check_reg(p, reg))
>  		return -1;
>  
> +	I2C_SET_BUS(p->bus);
> +

Hadn't we had a  discussion about this explicit setting of I2C some time
ago? I thought that this problem was solved within the I2C rework.

Also I might be wrong, so please correct me if I'm wrong. Isn't the
I2C_SET_BUS() macro regarded as a obsolete after the I2C rework?

>  	switch (pmic_i2c_tx_num) {
>  	case 3:
>  		if (p->sensor_byte_order ==
> PMIC_SENSOR_BYTE_ORDER_BIG) { @@ -66,6 +68,8 @@ int
> pmic_reg_read(struct pmic *p, u32 reg, u32 *val) if (check_reg(p,
> reg)) return -1;
>  
> +	I2C_SET_BUS(p->bus);
> +
>  	if (i2c_read(pmic_i2c_addr, reg, 1, buf, pmic_i2c_tx_num))
>  		return -1;
>  



-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group


More information about the U-Boot mailing list