Patchwork [U-Boot,04/11] misc: pmic: addI2C support to pmic_fsl driver

login
register
mail settings
Submitter Stefano Babic
Date Oct. 8, 2011, 10:07 a.m.
Message ID <1318068428-3453-5-git-send-email-sbabic@denx.de>
Download mbox | patch
Permalink /patch/118518/
State Changes Requested
Headers show

Comments

Stefano Babic - Oct. 8, 2011, 10:07 a.m.
Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 drivers/misc/pmic_fsl.c |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)
Sergei Shtylyov - Oct. 8, 2011, 1:57 p.m.
Hello.

On 08-10-2011 14:07, Stefano Babic wrote:

> Signed-off-by: Stefano Babic<sbabic@denx.de>
> ---
>   drivers/misc/pmic_fsl.c |   18 ++++++++++++++----
>   1 files changed, 14 insertions(+), 4 deletions(-)

> diff --git a/drivers/misc/pmic_fsl.c b/drivers/misc/pmic_fsl.c
> index 13dde47..2945dfb 100644
> --- a/drivers/misc/pmic_fsl.c
> +++ b/drivers/misc/pmic_fsl.c
[...]
> @@ -33,25 +34,34 @@ static u32 pmic_spi_prepare_tx(u32 reg, u32 *val, u32 write)
>   	else
>   		return (write<<  31) | (reg<<  25) | (*val&  0x00FFFFFF);
>   }
> +#endif
>
>   int pmic_init(void)
>   {
>   	struct pmic *p = get_pmic();
>   	static const char name[] = "FSL_PMIC";
>
> -	puts("Board PMIC init\n");
> -
>   	p->name = name;
> -	p->interface = PMIC_SPI;
>   	p->number_of_regs = PMIC_NUM_OF_REGS;
> -	p->bus = CONFIG_FSL_PMIC_BUS;
>
> +#if defined(CONFIG_PMIC_SPI)
> +	p->interface = PMIC_SPI;
> +	p->bus = CONFIG_FSL_PMIC_BUS;
>   	p->hw.spi.cs = CONFIG_FSL_PMIC_CS;
>   	p->hw.spi.clk = CONFIG_FSL_PMIC_CLK;
>   	p->hw.spi.mode = CONFIG_FSL_PMIC_MODE;
>   	p->hw.spi.bitlen = CONFIG_FSL_PMIC_BITLEN;
>   	p->hw.spi.flags = SPI_XFER_BEGIN | SPI_XFER_END;
>   	p->hw.spi.prepare_tx = pmic_spi_prepare_tx;
> +#elif defined(CONFIG_PMIC_I2C)
> +	p->interface = PMIC_SPI;
> +	p->interface = PMIC_I2C;

    You assign one value and immediately assign the other. First assignment 
shouldn't be here.

WBR, Sergei
Stefano Babic - Oct. 8, 2011, 2:37 p.m.
On 10/08/2011 03:57 PM, Sergei Shtylyov wrote:
> Hello.
> 
> On 08-10-2011 14:07, Stefano Babic wrote:
> 
>> Signed-off-by: Stefano Babic<sbabic@denx.de>
>> ---
>> +#elif defined(CONFIG_PMIC_I2C)
>> +    p->interface = PMIC_SPI;
>> +    p->interface = PMIC_I2C;
> 
>    You assign one value and immediately assign the other. First
> assignment shouldn't be here.

Right - I drop it in V2, thanks.

Best regards,
Stefano Babic

Patch

diff --git a/drivers/misc/pmic_fsl.c b/drivers/misc/pmic_fsl.c
index 13dde47..2945dfb 100644
--- a/drivers/misc/pmic_fsl.c
+++ b/drivers/misc/pmic_fsl.c
@@ -26,6 +26,7 @@ 
 #include <pmic.h>
 #include <fsl_pmic.h>
 
+#if defined(CONFIG_PMIC_SPI)
 static u32 pmic_spi_prepare_tx(u32 reg, u32 *val, u32 write)
 {
 	if ((val == NULL) && (write))
@@ -33,25 +34,34 @@  static u32 pmic_spi_prepare_tx(u32 reg, u32 *val, u32 write)
 	else
 		return (write << 31) | (reg << 25) | (*val & 0x00FFFFFF);
 }
+#endif
 
 int pmic_init(void)
 {
 	struct pmic *p = get_pmic();
 	static const char name[] = "FSL_PMIC";
 
-	puts("Board PMIC init\n");
-
 	p->name = name;
-	p->interface = PMIC_SPI;
 	p->number_of_regs = PMIC_NUM_OF_REGS;
-	p->bus = CONFIG_FSL_PMIC_BUS;
 
+#if defined(CONFIG_PMIC_SPI)
+	p->interface = PMIC_SPI;
+	p->bus = CONFIG_FSL_PMIC_BUS;
 	p->hw.spi.cs = CONFIG_FSL_PMIC_CS;
 	p->hw.spi.clk = CONFIG_FSL_PMIC_CLK;
 	p->hw.spi.mode = CONFIG_FSL_PMIC_MODE;
 	p->hw.spi.bitlen = CONFIG_FSL_PMIC_BITLEN;
 	p->hw.spi.flags = SPI_XFER_BEGIN | SPI_XFER_END;
 	p->hw.spi.prepare_tx = pmic_spi_prepare_tx;
+#elif defined(CONFIG_PMIC_I2C)
+	p->interface = PMIC_SPI;
+	p->interface = PMIC_I2C;
+	p->hw.i2c.addr = CONFIG_SYS_FSL_PMIC_I2C_ADDR;
+	p->hw.i2c.tx_num = 3;
+	p->bus = I2C_PMIC;
+#else
+#error "You must select CONFIG_PMIC_SPI or CONFIG_PMIC_I2C"
+#endif
 
 	return 0;
 }