[U-Boot] [PATCH V3] i2c: mxc: refactor i2c driver and support dm

Fan Peng Peng.Fan at freescale.com
Thu May 14 04:35:59 CEST 2015


Hi, Simon

There may be something wrong in my side. I will fix the build errors and send out new version.

Thanks,
Peng.

-----Original Message-----
From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
Sent: Wednesday, May 13, 2015 11:25 PM
To: Fan Peng-B51431
Cc: Stefano Babic; Heiko Schocher; Marek Va?ut; Nikita Kiryanov; U-Boot Mailing List
Subject: Re: [PATCH V3] i2c: mxc: refactor i2c driver and support dm

Hi,

On 12 May 2015 at 19:09, Fan Peng <Peng.Fan at freescale.com> wrote:
> Hi,
>
> Is there any further comments? Or this patch will be applied?

This gives build errors for me:

02: i2c: mxc: refactor i2c driver and support dm
       arm:  +   nitrogen6dl2g mx53smd ls1021atwr_nor_SECURE_BOOT
tqma6s_mba6_spi apf27 mx6sxsabresd_spl ls1021aqds_nor_lpuart nitrogen6s nitrogen6q ls1021aqds_ddr4_nor wandboard_solo ls1021aqds_nand ls1021atwr_nor novena riotboard mx6dlsabreauto nitrogen6dl titanium ls1021aqds_ddr4_nor_lpuart tqma6s_mba6_mmc mx25pdk ot1200_spl mx53ard nitrogen6q2g ls1021atwr_nor_lpuart wandboard_dl wandboard_quad mx6sxsabresd platinum_titanium m53evk woodburn_sd mx6dlsabresd ls1021aqds_sdcard mx6qsabrelite mx6sabresd_spl ls1021atwr_sdcard ls1021atwr_qspi vf610twr_nand tqma6q_mba6_mmc woodburn vf610twr usbarmory flea3 ot1200 tbs2910 ls1021aqds_nor imx31_phycore_eet mx35pdk mx6slevk_spinor ls1021aqds_qspi cm_fx6 mx6qsabresd imx31_phycore nitrogen6s1g marsboard tqma6q_mba6_spi mx53evk aristainetos mx6slevk platinum_picon mx6qsabreauto mx53loco ls1021aqds_nor_SECURE_BOOT gwventana
+../drivers/i2c/mxc_i2c.c:524:11: error: missing binary operator
before token "ined"
+../drivers/i2c/mxc_i2c.c:581:2: error: expected ‘;’ before ‘}’ token
+make[2]: *** [drivers/i2c/mxc_i2c.o] Error 1
+make[1]: *** [drivers/i2c] Error 2
+../drivers/i2c/mxc_i2c.c:532:2: error: #error "architecture not supported"
+In file included from ../arch/arm/include/asm/imx-common/mxc_i2c.h:8:0,
+                 from ../drivers/i2c/mxc_i2c.c:21:
w+../drivers/i2c/mxc_i2c.c: In function ‘bus_i2c_init’:
w+../drivers/i2c/mxc_i2c.c:580:3: warning: ‘return’ with a value, in
function returning void [enabled by default]
w+../drivers/i2c/mxc_i2c.c:577:2: warning: implicit declaration of
function ‘enable_i2c_clk’ [-Wimplicit-function-declaration]
w+../arch/arm/include/asm/imx-common/iomux-v3.h:175:0: warning:
"GPIO_PORTA" redefined [enabled by default]
w+In file included from ../drivers/i2c/mxc_i2c.c:19:0:
w+include/asm/arch/imx-regs.h:457:0: note: this is the location of the
previous definition
w+../arch/arm/include/asm/imx-common/iomux-v3.h:176:0: warning:
"GPIO_PORTB" redefined [enabled by default]
w+include/asm/arch/imx-regs.h:458:0: note: this is the location of the
previous definition
w+../arch/arm/include/asm/imx-common/iomux-v3.h:177:0: warning:
"GPIO_PORTC" redefined [enabled by default]
w+include/asm/arch/imx-regs.h:459:0: note: this is the location of the
previous definition
w+../arch/arm/include/asm/imx-common/iomux-v3.h:178:0: warning:
"GPIO_PORTD" redefined [enabled by default]
w+include/asm/arch/imx-regs.h:460:0: note: this is the location of the
previous definition
w+../arch/arm/include/asm/imx-common/iomux-v3.h:179:0: warning:
"GPIO_PORTE" redefined [enabled by default]
w+include/asm/arch/imx-regs.h:461:0: note: this is the location of the
previous definition
w+../arch/arm/include/asm/imx-common/iomux-v3.h:180:0: warning:
"GPIO_PORTF" redefined [enabled by default]
w+include/asm/arch/imx-regs.h:462:0: note: this is the location of the
previous definition


Regards,
Simon
>
> Regards,
> Peng.
>
> -----Original Message-----
> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
> Sent: Wednesday, May 06, 2015 4:56 AM
> To: Fan Peng-B51431
> Cc: Stefano Babic; Heiko Schocher; Marek Vašut; Nikita Kiryanov; 
> U-Boot Mailing List
> Subject: Re: [PATCH V3] i2c: mxc: refactor i2c driver and support dm
>
> On 27 April 2015 at 07:36, Peng Fan <Peng.Fan at freescale.com> wrote:
>>
>> 1. Introduce a new structure `struct mxc_i2c_bus`, this structure will
>>    used for non-DM and DM.
>> 2. Remove `struct mxc_i2c_regs` structure, but use register offset to access
>>    registers based on `base` entry of `struct mxc_i2c_bus`.
>> 3. Remove most `#ifdef I2C_QUIRK_REG`. Using driver_data to contain platform
>>    flags. A new flag is introduced, I2C_QUIRK_FLAG.
>> 4. Most functions use `struct mxc_i2c_bus` as one of the parameters.
>>    Make most functions common to DM and non-DM, try to avoid duplicated code.
>> 5. Support DM. Pinmux setting is still set by setup_i2c, but we do not
>>    need bus_i2c_init for DM.
>> 6. struct i2c_parms and struct sram_data are removed.
>> 7. Remove bus_i2c_read bus_i2c_write prototype in header file. The frist
>>    paramter of bus_i2c_init is modified to i2c index. Add new prototype
>>    i2c_idle_bus and force_idle_bus. Since bus_i2c_init is not good for
>>    DM I2C and pinctrl is missed, we use a weak function for i2c_idle_bus
>>    for DM part.
>>    Board file take the responsibility to implement this function, like this:
>>    "
>>    int i2c_idle_bus(struct mxc_i2c_bus *i2c_bus)
>>    {
>>            if (i2c_bus->index == 0)
>>                    force_idle_bus(i2c_pads_info0);
>>            else if (i2c_bus->index == 1)
>>                    force_idle_bus(i2c_pads_info1);
>>            else
>>                    xxxxxx
>>    }
>>    "
>>
>> Signed-off-by: Peng Fan <Peng.Fan at freescale.com>
>> ---
>>
>> Changes v3:
>>  1. remove bus_i2c_init for DM, introuduce a weak function i2c_idle_bus.
>>  2. remove static return type for force_idle_bus, since we need to call
>>     it in i2c_idle_bus which may be implemented in board file. This does
>>     not hurt for non-DM.
>
> Acked-by: Simon Glass <sjg at chromium.org>
>
>>
>> Changes v2:
>>  1. Refactor driver, remove register access based on structure, but use
>>    'base + offset'
>>  2. Introduce mxc_i2c_bus structure
>>  3. Introduce I2C_QUIRK_FLAG and remove most I2C_QUIRK_REG and use
>>     driver_data to contain the flags for different platforms  4. 
>> Avoid duplicated code between DM and non-DM part  5. The function 
>> name i2c_init_transfer is not changed.
>>  6. Remove bus_i2c_read/write prototype from header file  7. change 
>> bus_i2c_init's first parameter to i2c index  8. Rename patch name, 
>> since refactor non-DM part.
>>
>>  arch/arm/imx-common/i2c-mxv7.c            |   7 +-
>>  arch/arm/include/asm/imx-common/mxc_i2c.h |  38 +-
>>  drivers/i2c/mxc_i2c.c                     | 575 ++++++++++++++++++++----------
>>  3 files changed, 426 insertions(+), 194 deletions(-)
>>


More information about the U-Boot mailing list