Hello Simon,
Am 13.05.2015 03:44, schrieb Simon Glass:
Hi,
On 12 May 2015 at 19:09, Fan Peng <peng....@freescale.com> wrote:
Hi,
Is there any further comments? Or this patch will be applied?
I can apply it if you like - Heiko what do you prefer?
Yes, please. Thanks.
bye,
Heiko
- Simon
Regards,
Peng.
-----Original Message-----
From: s...@google.com [mailto:s...@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....@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....@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 <s...@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(-)
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot