[U-Boot] [PATCH] misc: pmic: fix regression in pmic_fsl.c (SPI)

Stefano Babic sbabic at denx.de
Wed Oct 19 19:15:01 CEST 2011


On 10/19/2011 06:48 PM, Helmut Raiger wrote:
> This fixes write access to PMIC registers, the bug was
> introduced partly in commit 64aac65099 and in commit c9fe76dd91.
> It was tested on an i.mx31 with a mc13783.
> 
> Signed-off-by: Helmut Raiger <helmut.raiger at hale.at>
> ---
>  drivers/misc/pmic_fsl.c |    5 +----
>  drivers/misc/pmic_spi.c |    1 -
>  2 files changed, 1 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/misc/pmic_fsl.c b/drivers/misc/pmic_fsl.c
> index b6e809a..0ff75ed 100644

Hi Helmut,

> --- a/drivers/misc/pmic_fsl.c
> +++ b/drivers/misc/pmic_fsl.c
> @@ -29,10 +29,7 @@
>  #if defined(CONFIG_PMIC_SPI)
>  static u32 pmic_spi_prepare_tx(u32 reg, u32 *val, u32 write)
>  {
> -	if ((val == NULL) && (write))
> -		return *val & ~(1 << 31);
> -	else
> -		return (write << 31) | (reg << 25) | (*val & 0x00FFFFFF);
> +	return (write << 31) | (reg << 25) | (*val & 0x00FFFFFF);
>  }
>  #endif
>  
> diff --git a/drivers/misc/pmic_spi.c b/drivers/misc/pmic_spi.c
> index ff35377..e772884 100644
> --- a/drivers/misc/pmic_spi.c
> +++ b/drivers/misc/pmic_spi.c
> @@ -76,7 +76,6 @@ static u32 pmic_reg(struct pmic *p, u32 reg, u32 *val, u32 write)
>  	}
>  
>  	if (write) {
> -		pmic_tx = p->hw.spi.prepare_tx(0, NULL, write);
>  		pmic_tx &= ~(1 << 31);

This fixes the issue with the Freescale PMIC, but...

The new driver introduces a level of abstraction to make easier to
introduce other PMICs that are driven with SPI / I2C. For this reason,
PMIC specific code must be inside the specific driver (pmic_fsl.c) and
not in the general (pmic_core.c and pmic_spi.c). And clearing the MSB is
part of the Freescale's protocol, and for this reason should be moved
inside the prepare function.

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================


More information about the U-Boot mailing list