mbox series

[U-Boot,v1,00/19] DM_I2C_COMPAT removal for all ti platforms

Message ID 1538660864-30399-1-git-send-email-jjhiblot@ti.com
Headers show
Series DM_I2C_COMPAT removal for all ti platforms | expand

Message

Jean-Jacques Hiblot Oct. 4, 2018, 1:47 p.m. UTC
This series remove the usage of the DM_I2C_COMPAT option for all the ti
platforms. It also takes this opportunity to not disable DM_I2C in the SPL.

There are a couples of issues to fix:
- CMD_EEPROM does not support the DM API. Fixed by removing this option
  when DM_I2C is used without DM_I2C_COMPAT
- i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
  (as is the case with am33xx SPL).
- The I2C driver do not support DM_I2C without OF_CONTROL.
- Most of the PMIC drivers do not support the I2C DM API.
- Board detection is done prior DM initialization. Fixed by moving it after
  DM is initialized. That move breaks the DRA7 platforms (The fixes for
  that are at the last 5 patches this series)

When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
enabled in the SPL.

This has been tested with the following boards:
- am437x SK
- am335x SK
- am335x beaglebone (both DM and non-DM config)
- dra76 evm
- am572 evm
- k2g evm



Andreas Dannenberg (1):
  ti: common: board_detect: Allow DM I2C without CONFIG_DM_I2C_COMPAT

Jean-Jacques Hiblot (17):
  cmd: Kconfig: Do not include EEPROM if DM_I2C is used without
    DM_I2C_COMPAT
  dm: i2c: Add dm_i2c_probe_device() to test the presence of a chip
  dm: device: Allow using uclass_find_device_by_seq() without OF_CONTROL
  configs: am335x: am57x: dra7x: Enable CONFIG_SPL_DM_SEQ_ALIAS
  i2c: omap24xx_i2c: Use platdata to probe the device
  am335x: Register the I2C controllers if DM_I2C is used.
  dts: am43x: omap5: Add node for I2C in SPL
  omap: detect the board after DM is available
  power: make most tps drivers and the twl4030 driver compatible with
    DM_I2C
  configs: am335x_pdu001: Explicitly enable CONFIG_I2C_COMPAT
  ti: remove usage of DM_I2C_COMPAT and don't disable DM_I2C in SPL
  am57xx: remove non-DM I2C code
  configs: dra7xx-evm: increase the size of the malloc's pool before
    relocation
  lib: fdtdec: Add function re-setup the fdt more effeciently
  drivers: core: Add the option SPL_DM_DEVICE_REMOVE to the Kconfig
  drivers: core: nullify gd->dm_root after dm_uninit()
  dra7: Allow selecting a new dtb after board detection.

Vignesh R (1):
  i2c: omap24xx_i2c: Move away from SoC specific headers for reg offset

 arch/arm/dts/am437x-gp-evm-u-boot.dtsi       |   4 +
 arch/arm/dts/omap5-u-boot.dtsi               |   4 +
 arch/arm/include/asm/arch-am33xx/i2c.h       |  47 +--
 arch/arm/include/asm/arch-omap3/i2c.h        |  47 ---
 arch/arm/include/asm/arch-omap4/i2c.h        |  45 ---
 arch/arm/include/asm/arch-omap5/i2c.h        |  45 ---
 arch/arm/include/asm/omap_i2c.h              |  24 ++
 arch/arm/mach-keystone/ddr3_spd.c            |   7 +
 arch/arm/mach-omap2/am33xx/board.c           |  24 +-
 arch/arm/mach-omap2/am33xx/clk_synthesizer.c |  56 +++-
 arch/arm/mach-omap2/clocks-common.c          |   2 +
 arch/arm/mach-omap2/hwinit-common.c          |  23 +-
 board/ti/am335x/board.c                      |  17 +-
 board/ti/am335x/mux.c                        |  14 +
 board/ti/am43xx/board.c                      |  35 +-
 board/ti/am57xx/board.c                      |  25 +-
 board/ti/common/board_detect.c               | 110 +++----
 board/ti/ks2_evm/board_k2g.c                 |  11 +
 cmd/Kconfig                                  |   1 +
 configs/am335x_pdu001_defconfig              |   2 +
 configs/am57xx_evm_defconfig                 |   1 +
 configs/am57xx_hs_evm_defconfig              |   1 +
 configs/dra7xx_evm_defconfig                 |   4 +-
 configs/dra7xx_hs_evm_defconfig              |   1 +
 configs/omap3_logic_defconfig                |   1 +
 drivers/core/Kconfig                         |  12 +-
 drivers/core/device.c                        |  10 +-
 drivers/core/root.c                          |   1 +
 drivers/core/uclass.c                        |  24 ++
 drivers/i2c/i2c-uclass.c                     |   8 +
 drivers/i2c/omap24xx_i2c.c                   | 467 ++++++++++++++++++---------
 drivers/power/palmas.c                       |  39 +++
 drivers/power/pmic/pmic_tps62362.c           |  27 ++
 drivers/power/pmic/pmic_tps65217.c           |  47 ++-
 drivers/power/pmic/pmic_tps65218.c           |  88 +++++
 drivers/power/pmic/pmic_tps65910.c           |  60 +++-
 drivers/power/twl4030.c                      |  39 +++
 include/asm-generic/global_data.h            |   4 +
 include/configs/am43xx_evm.h                 |   2 +
 include/configs/ti_armv7_common.h            |  18 +-
 include/dm/uclass-internal.h                 |  13 +
 include/fdtdec.h                             |  17 +
 include/i2c.h                                |  13 +
 include/palmas.h                             |   5 +
 include/power/tps65217.h                     |   2 +
 include/power/tps65910.h                     |   1 +
 include/twl4030.h                            |   6 +-
 lib/fdtdec.c                                 |  38 ++-
 48 files changed, 1033 insertions(+), 459 deletions(-)
 create mode 100644 arch/arm/include/asm/omap_i2c.h

Comments

Adam Ford Oct. 4, 2018, 9:55 p.m. UTC | #1
On Thu, Oct 4, 2018 at 8:48 AM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>
> This series remove the usage of the DM_I2C_COMPAT option for all the ti
> platforms. It also takes this opportunity to not disable DM_I2C in the SPL.

Thanks for doing that, but I have some bad news.  I started testing
omap3_logic from a fresh pull of master, and I applied the entire 19
patch series. I did a distclean, then make omap3_logic, but I am
getting build errors:

drivers/built-in.o: In function `dev_read_alias_seq':
/home/aford/src/u-boot/include/dm/read.h:600: undefined reference to
`fdtdec_get_alias_seq'
scripts/Makefile.spl:357: recipe for target 'spl/u-boot-spl' failed
make[1]: *** [spl/u-boot-spl] Error 1
Makefile:1534: recipe for target 'spl/u-boot-spl' failed
make: *** [spl/u-boot-spl] Error 2

The good news is that the main U-Boot built, and I was able to test a
few of the PMIC features (like poweroff), but I haven't had a chance
to test other PMIC features (like the USB transceiver yet), but I'll
do a more thorough test once SPL can correctly build.

adam

>
> There are a couples of issues to fix:
> - CMD_EEPROM does not support the DM API. Fixed by removing this option
>   when DM_I2C is used without DM_I2C_COMPAT
> - i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
>   (as is the case with am33xx SPL).
> - The I2C driver do not support DM_I2C without OF_CONTROL.
> - Most of the PMIC drivers do not support the I2C DM API.
> - Board detection is done prior DM initialization. Fixed by moving it after
>   DM is initialized. That move breaks the DRA7 platforms (The fixes for
>   that are at the last 5 patches this series)
>
> When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
> enabled in the SPL.
>
> This has been tested with the following boards:
> - am437x SK
> - am335x SK
> - am335x beaglebone (both DM and non-DM config)
> - dra76 evm
> - am572 evm
> - k2g evm
>
>
>
> Andreas Dannenberg (1):
>   ti: common: board_detect: Allow DM I2C without CONFIG_DM_I2C_COMPAT
>
> Jean-Jacques Hiblot (17):
>   cmd: Kconfig: Do not include EEPROM if DM_I2C is used without
>     DM_I2C_COMPAT
>   dm: i2c: Add dm_i2c_probe_device() to test the presence of a chip
>   dm: device: Allow using uclass_find_device_by_seq() without OF_CONTROL
>   configs: am335x: am57x: dra7x: Enable CONFIG_SPL_DM_SEQ_ALIAS
>   i2c: omap24xx_i2c: Use platdata to probe the device
>   am335x: Register the I2C controllers if DM_I2C is used.
>   dts: am43x: omap5: Add node for I2C in SPL
>   omap: detect the board after DM is available
>   power: make most tps drivers and the twl4030 driver compatible with
>     DM_I2C
>   configs: am335x_pdu001: Explicitly enable CONFIG_I2C_COMPAT
>   ti: remove usage of DM_I2C_COMPAT and don't disable DM_I2C in SPL
>   am57xx: remove non-DM I2C code
>   configs: dra7xx-evm: increase the size of the malloc's pool before
>     relocation
>   lib: fdtdec: Add function re-setup the fdt more effeciently
>   drivers: core: Add the option SPL_DM_DEVICE_REMOVE to the Kconfig
>   drivers: core: nullify gd->dm_root after dm_uninit()
>   dra7: Allow selecting a new dtb after board detection.
>
> Vignesh R (1):
>   i2c: omap24xx_i2c: Move away from SoC specific headers for reg offset
>
>  arch/arm/dts/am437x-gp-evm-u-boot.dtsi       |   4 +
>  arch/arm/dts/omap5-u-boot.dtsi               |   4 +
>  arch/arm/include/asm/arch-am33xx/i2c.h       |  47 +--
>  arch/arm/include/asm/arch-omap3/i2c.h        |  47 ---
>  arch/arm/include/asm/arch-omap4/i2c.h        |  45 ---
>  arch/arm/include/asm/arch-omap5/i2c.h        |  45 ---
>  arch/arm/include/asm/omap_i2c.h              |  24 ++
>  arch/arm/mach-keystone/ddr3_spd.c            |   7 +
>  arch/arm/mach-omap2/am33xx/board.c           |  24 +-
>  arch/arm/mach-omap2/am33xx/clk_synthesizer.c |  56 +++-
>  arch/arm/mach-omap2/clocks-common.c          |   2 +
>  arch/arm/mach-omap2/hwinit-common.c          |  23 +-
>  board/ti/am335x/board.c                      |  17 +-
>  board/ti/am335x/mux.c                        |  14 +
>  board/ti/am43xx/board.c                      |  35 +-
>  board/ti/am57xx/board.c                      |  25 +-
>  board/ti/common/board_detect.c               | 110 +++----
>  board/ti/ks2_evm/board_k2g.c                 |  11 +
>  cmd/Kconfig                                  |   1 +
>  configs/am335x_pdu001_defconfig              |   2 +
>  configs/am57xx_evm_defconfig                 |   1 +
>  configs/am57xx_hs_evm_defconfig              |   1 +
>  configs/dra7xx_evm_defconfig                 |   4 +-
>  configs/dra7xx_hs_evm_defconfig              |   1 +
>  configs/omap3_logic_defconfig                |   1 +
>  drivers/core/Kconfig                         |  12 +-
>  drivers/core/device.c                        |  10 +-
>  drivers/core/root.c                          |   1 +
>  drivers/core/uclass.c                        |  24 ++
>  drivers/i2c/i2c-uclass.c                     |   8 +
>  drivers/i2c/omap24xx_i2c.c                   | 467 ++++++++++++++++++---------
>  drivers/power/palmas.c                       |  39 +++
>  drivers/power/pmic/pmic_tps62362.c           |  27 ++
>  drivers/power/pmic/pmic_tps65217.c           |  47 ++-
>  drivers/power/pmic/pmic_tps65218.c           |  88 +++++
>  drivers/power/pmic/pmic_tps65910.c           |  60 +++-
>  drivers/power/twl4030.c                      |  39 +++
>  include/asm-generic/global_data.h            |   4 +
>  include/configs/am43xx_evm.h                 |   2 +
>  include/configs/ti_armv7_common.h            |  18 +-
>  include/dm/uclass-internal.h                 |  13 +
>  include/fdtdec.h                             |  17 +
>  include/i2c.h                                |  13 +
>  include/palmas.h                             |   5 +
>  include/power/tps65217.h                     |   2 +
>  include/power/tps65910.h                     |   1 +
>  include/twl4030.h                            |   6 +-
>  lib/fdtdec.c                                 |  38 ++-
>  48 files changed, 1033 insertions(+), 459 deletions(-)
>  create mode 100644 arch/arm/include/asm/omap_i2c.h
>
> --
> 2.7.4
>
Jean-Jacques Hiblot Oct. 5, 2018, 8:55 a.m. UTC | #2
Adam,


On 04/10/2018 23:55, Adam Ford wrote:
> On Thu, Oct 4, 2018 at 8:48 AM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>> This series remove the usage of the DM_I2C_COMPAT option for all the ti
>> platforms. It also takes this opportunity to not disable DM_I2C in the SPL.
> Thanks for doing that, but I have some bad news.  I started testing
> omap3_logic from a fresh pull of master, and I applied the entire 19
> patch series. I did a distclean, then make omap3_logic, but I am
> getting build errors:
>
> drivers/built-in.o: In function `dev_read_alias_seq':
> /home/aford/src/u-boot/include/dm/read.h:600: undefined reference to
> `fdtdec_get_alias_seq'
> scripts/Makefile.spl:357: recipe for target 'spl/u-boot-spl' failed
> make[1]: *** [spl/u-boot-spl] Error 1
> Makefile:1534: recipe for target 'spl/u-boot-spl' failed
> make: *** [spl/u-boot-spl] Error 2
>
> The good news is that the main U-Boot built, and I was able to test a
> few of the PMIC features (like poweroff), but I haven't had a chance
> to test other PMIC features (like the USB transceiver yet), but I'll
> do a more thorough test once SPL can correctly build.
The quick fix is

--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -79,7 +79,7 @@ static int device_bind_common(struct udevice *parent, 
const struct driver *drv,
                  * This is just a 'requested' sequence, and will be
                  * resolved (and ->seq updated) when the device is probed.
                  */
-               if (CONFIG_IS_ENABLED(OF_CONTROL)) {
+               if (CONFIG_IS_ENABLED(OF_CONTROL) && 
!CONFIG_IS_ENABLED(OF_PLATDATA)) {
                         if (uc->uc_drv->name && ofnode_valid(node))
                                 dev_read_alias_seq(dev, &dev->req_seq);
                 } else {

--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -269,7 +269,7 @@ int uclass_find_device_by_name(enum uclass_id id, 
const char *name,
         return -ENODEV;
  }

-#if !CONFIG_IS_ENABLED(OF_CONTROL)
+#if !CONFIG_IS_ENABLED(OF_CONTROL) || CONFIG_IS_ENABLED(OF_PLATDATA)
  int uclass_find_next_free_req_seq(enum uclass_id id)
  {
         struct uclass *uc;

It will be part of a v2.
Thanks for catching this.

Can you also try to boot without OF_CONTROL and OF_PLATDATA (basically 
reverting e3b1aaa4 and  6931ab2f) ?
Thanks,
JJ


>
> adam
>
>> There are a couples of issues to fix:
>> - CMD_EEPROM does not support the DM API. Fixed by removing this option
>>    when DM_I2C is used without DM_I2C_COMPAT
>> - i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
>>    (as is the case with am33xx SPL).
>> - The I2C driver do not support DM_I2C without OF_CONTROL.
>> - Most of the PMIC drivers do not support the I2C DM API.
>> - Board detection is done prior DM initialization. Fixed by moving it after
>>    DM is initialized. That move breaks the DRA7 platforms (The fixes for
>>    that are at the last 5 patches this series)
>>
>> When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
>> enabled in the SPL.
>>
>> This has been tested with the following boards:
>> - am437x SK
>> - am335x SK
>> - am335x beaglebone (both DM and non-DM config)
>> - dra76 evm
>> - am572 evm
>> - k2g evm
>>
>>
>>
>> Andreas Dannenberg (1):
>>    ti: common: board_detect: Allow DM I2C without CONFIG_DM_I2C_COMPAT
>>
>> Jean-Jacques Hiblot (17):
>>    cmd: Kconfig: Do not include EEPROM if DM_I2C is used without
>>      DM_I2C_COMPAT
>>    dm: i2c: Add dm_i2c_probe_device() to test the presence of a chip
>>    dm: device: Allow using uclass_find_device_by_seq() without OF_CONTROL
>>    configs: am335x: am57x: dra7x: Enable CONFIG_SPL_DM_SEQ_ALIAS
>>    i2c: omap24xx_i2c: Use platdata to probe the device
>>    am335x: Register the I2C controllers if DM_I2C is used.
>>    dts: am43x: omap5: Add node for I2C in SPL
>>    omap: detect the board after DM is available
>>    power: make most tps drivers and the twl4030 driver compatible with
>>      DM_I2C
>>    configs: am335x_pdu001: Explicitly enable CONFIG_I2C_COMPAT
>>    ti: remove usage of DM_I2C_COMPAT and don't disable DM_I2C in SPL
>>    am57xx: remove non-DM I2C code
>>    configs: dra7xx-evm: increase the size of the malloc's pool before
>>      relocation
>>    lib: fdtdec: Add function re-setup the fdt more effeciently
>>    drivers: core: Add the option SPL_DM_DEVICE_REMOVE to the Kconfig
>>    drivers: core: nullify gd->dm_root after dm_uninit()
>>    dra7: Allow selecting a new dtb after board detection.
>>
>> Vignesh R (1):
>>    i2c: omap24xx_i2c: Move away from SoC specific headers for reg offset
>>
>>   arch/arm/dts/am437x-gp-evm-u-boot.dtsi       |   4 +
>>   arch/arm/dts/omap5-u-boot.dtsi               |   4 +
>>   arch/arm/include/asm/arch-am33xx/i2c.h       |  47 +--
>>   arch/arm/include/asm/arch-omap3/i2c.h        |  47 ---
>>   arch/arm/include/asm/arch-omap4/i2c.h        |  45 ---
>>   arch/arm/include/asm/arch-omap5/i2c.h        |  45 ---
>>   arch/arm/include/asm/omap_i2c.h              |  24 ++
>>   arch/arm/mach-keystone/ddr3_spd.c            |   7 +
>>   arch/arm/mach-omap2/am33xx/board.c           |  24 +-
>>   arch/arm/mach-omap2/am33xx/clk_synthesizer.c |  56 +++-
>>   arch/arm/mach-omap2/clocks-common.c          |   2 +
>>   arch/arm/mach-omap2/hwinit-common.c          |  23 +-
>>   board/ti/am335x/board.c                      |  17 +-
>>   board/ti/am335x/mux.c                        |  14 +
>>   board/ti/am43xx/board.c                      |  35 +-
>>   board/ti/am57xx/board.c                      |  25 +-
>>   board/ti/common/board_detect.c               | 110 +++----
>>   board/ti/ks2_evm/board_k2g.c                 |  11 +
>>   cmd/Kconfig                                  |   1 +
>>   configs/am335x_pdu001_defconfig              |   2 +
>>   configs/am57xx_evm_defconfig                 |   1 +
>>   configs/am57xx_hs_evm_defconfig              |   1 +
>>   configs/dra7xx_evm_defconfig                 |   4 +-
>>   configs/dra7xx_hs_evm_defconfig              |   1 +
>>   configs/omap3_logic_defconfig                |   1 +
>>   drivers/core/Kconfig                         |  12 +-
>>   drivers/core/device.c                        |  10 +-
>>   drivers/core/root.c                          |   1 +
>>   drivers/core/uclass.c                        |  24 ++
>>   drivers/i2c/i2c-uclass.c                     |   8 +
>>   drivers/i2c/omap24xx_i2c.c                   | 467 ++++++++++++++++++---------
>>   drivers/power/palmas.c                       |  39 +++
>>   drivers/power/pmic/pmic_tps62362.c           |  27 ++
>>   drivers/power/pmic/pmic_tps65217.c           |  47 ++-
>>   drivers/power/pmic/pmic_tps65218.c           |  88 +++++
>>   drivers/power/pmic/pmic_tps65910.c           |  60 +++-
>>   drivers/power/twl4030.c                      |  39 +++
>>   include/asm-generic/global_data.h            |   4 +
>>   include/configs/am43xx_evm.h                 |   2 +
>>   include/configs/ti_armv7_common.h            |  18 +-
>>   include/dm/uclass-internal.h                 |  13 +
>>   include/fdtdec.h                             |  17 +
>>   include/i2c.h                                |  13 +
>>   include/palmas.h                             |   5 +
>>   include/power/tps65217.h                     |   2 +
>>   include/power/tps65910.h                     |   1 +
>>   include/twl4030.h                            |   6 +-
>>   lib/fdtdec.c                                 |  38 ++-
>>   48 files changed, 1033 insertions(+), 459 deletions(-)
>>   create mode 100644 arch/arm/include/asm/omap_i2c.h
>>
>> --
>> 2.7.4
>>
Lokesh Vutla Oct. 5, 2018, 11:59 a.m. UTC | #3
Hi JJ,

On Thursday 04 October 2018 07:17 PM, Jean-Jacques Hiblot wrote:
> This series remove the usage of the DM_I2C_COMPAT option for all the ti
> platforms. It also takes this opportunity to not disable DM_I2C in the SPL.
> 
> There are a couples of issues to fix:
> - CMD_EEPROM does not support the DM API. Fixed by removing this option
>    when DM_I2C is used without DM_I2C_COMPAT
> - i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
>    (as is the case with am33xx SPL).
> - The I2C driver do not support DM_I2C without OF_CONTROL.
> - Most of the PMIC drivers do not support the I2C DM API.
> - Board detection is done prior DM initialization. Fixed by moving it after
>    DM is initialized. That move breaks the DRA7 platforms (The fixes for
>    that are at the last 5 patches this series)
> 
> When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
> enabled in the SPL.
> 
> This has been tested with the following boards:
> - am437x SK
> - am335x SK
> - am335x beaglebone (both DM and non-DM config)
> - dra76 evm
> - am572 evm
> - k2g evm

I triggered a Travis-CI buid[1] for this series and there are 2 build failures. 
Can you check?

[1] https://travis-ci.org/lokeshvutla/u-boot/builds/437487725

Thanks and regards,
Lokesh
Jean-Jacques Hiblot Oct. 5, 2018, 4:45 p.m. UTC | #4
On 05/10/2018 13:59, Lokesh Vutla wrote:
> Hi JJ,
>
> On Thursday 04 October 2018 07:17 PM, Jean-Jacques Hiblot wrote:
>> This series remove the usage of the DM_I2C_COMPAT option for all the ti
>> platforms. It also takes this opportunity to not disable DM_I2C in 
>> the SPL.
>>
>> There are a couples of issues to fix:
>> - CMD_EEPROM does not support the DM API. Fixed by removing this option
>>    when DM_I2C is used without DM_I2C_COMPAT
>> - i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
>>    (as is the case with am33xx SPL).
>> - The I2C driver do not support DM_I2C without OF_CONTROL.
>> - Most of the PMIC drivers do not support the I2C DM API.
>> - Board detection is done prior DM initialization. Fixed by moving it 
>> after
>>    DM is initialized. That move breaks the DRA7 platforms (The fixes for
>>    that are at the last 5 patches this series)
>>
>> When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
>> enabled in the SPL.
>>
>> This has been tested with the following boards:
>> - am437x SK
>> - am335x SK
>> - am335x beaglebone (both DM and non-DM config)
>> - dra76 evm
>> - am572 evm
>> - k2g evm
>
> I triggered a Travis-CI buid[1] for this series and there are 2 build 
> failures. Can you check?
Should be fixed in the v2. It passes buildman on my machine, but we may 
not have the same default compiler flags.
Thanks,
JJ
>
> [1] https://travis-ci.org/lokeshvutla/u-boot/builds/437487725
>
> Thanks and regards,
> Lokesh
>
Adam Ford Oct. 6, 2018, 1:22 a.m. UTC | #5
On Thu, Oct 4, 2018 at 8:48 AM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>
> This series remove the usage of the DM_I2C_COMPAT option for all the ti
> platforms. It also takes this opportunity to not disable DM_I2C in the SPL.
>
> There are a couples of issues to fix:
> - CMD_EEPROM does not support the DM API. Fixed by removing this option
>   when DM_I2C is used without DM_I2C_COMPAT
> - i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
>   (as is the case with am33xx SPL).
> - The I2C driver do not support DM_I2C without OF_CONTROL.
> - Most of the PMIC drivers do not support the I2C DM API.
> - Board detection is done prior DM initialization. Fixed by moving it after
>   DM is initialized. That move breaks the DRA7 platforms (The fixes for
>   that are at the last 5 patches this series)
>
> When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
> enabled in the SPL.
>
> This has been tested with the following boards:
> - am437x SK
> - am335x SK
> - am335x beaglebone (both DM and non-DM config)
> - dra76 evm
> - am572 evm
> - k2g evm
>
>
>
The whole series applied and

Tested-by: Adam Ford <aford173@gmail.com> #omap3_logic

adam
> Andreas Dannenberg (1):
>   ti: common: board_detect: Allow DM I2C without CONFIG_DM_I2C_COMPAT
>
> Jean-Jacques Hiblot (17):
>   cmd: Kconfig: Do not include EEPROM if DM_I2C is used without
>     DM_I2C_COMPAT
>   dm: i2c: Add dm_i2c_probe_device() to test the presence of a chip
>   dm: device: Allow using uclass_find_device_by_seq() without OF_CONTROL
>   configs: am335x: am57x: dra7x: Enable CONFIG_SPL_DM_SEQ_ALIAS
>   i2c: omap24xx_i2c: Use platdata to probe the device
>   am335x: Register the I2C controllers if DM_I2C is used.
>   dts: am43x: omap5: Add node for I2C in SPL
>   omap: detect the board after DM is available
>   power: make most tps drivers and the twl4030 driver compatible with
>     DM_I2C
>   configs: am335x_pdu001: Explicitly enable CONFIG_I2C_COMPAT
>   ti: remove usage of DM_I2C_COMPAT and don't disable DM_I2C in SPL
>   am57xx: remove non-DM I2C code
>   configs: dra7xx-evm: increase the size of the malloc's pool before
>     relocation
>   lib: fdtdec: Add function re-setup the fdt more effeciently
>   drivers: core: Add the option SPL_DM_DEVICE_REMOVE to the Kconfig
>   drivers: core: nullify gd->dm_root after dm_uninit()
>   dra7: Allow selecting a new dtb after board detection.
>
> Vignesh R (1):
>   i2c: omap24xx_i2c: Move away from SoC specific headers for reg offset
>
>  arch/arm/dts/am437x-gp-evm-u-boot.dtsi       |   4 +
>  arch/arm/dts/omap5-u-boot.dtsi               |   4 +
>  arch/arm/include/asm/arch-am33xx/i2c.h       |  47 +--
>  arch/arm/include/asm/arch-omap3/i2c.h        |  47 ---
>  arch/arm/include/asm/arch-omap4/i2c.h        |  45 ---
>  arch/arm/include/asm/arch-omap5/i2c.h        |  45 ---
>  arch/arm/include/asm/omap_i2c.h              |  24 ++
>  arch/arm/mach-keystone/ddr3_spd.c            |   7 +
>  arch/arm/mach-omap2/am33xx/board.c           |  24 +-
>  arch/arm/mach-omap2/am33xx/clk_synthesizer.c |  56 +++-
>  arch/arm/mach-omap2/clocks-common.c          |   2 +
>  arch/arm/mach-omap2/hwinit-common.c          |  23 +-
>  board/ti/am335x/board.c                      |  17 +-
>  board/ti/am335x/mux.c                        |  14 +
>  board/ti/am43xx/board.c                      |  35 +-
>  board/ti/am57xx/board.c                      |  25 +-
>  board/ti/common/board_detect.c               | 110 +++----
>  board/ti/ks2_evm/board_k2g.c                 |  11 +
>  cmd/Kconfig                                  |   1 +
>  configs/am335x_pdu001_defconfig              |   2 +
>  configs/am57xx_evm_defconfig                 |   1 +
>  configs/am57xx_hs_evm_defconfig              |   1 +
>  configs/dra7xx_evm_defconfig                 |   4 +-
>  configs/dra7xx_hs_evm_defconfig              |   1 +
>  configs/omap3_logic_defconfig                |   1 +
>  drivers/core/Kconfig                         |  12 +-
>  drivers/core/device.c                        |  10 +-
>  drivers/core/root.c                          |   1 +
>  drivers/core/uclass.c                        |  24 ++
>  drivers/i2c/i2c-uclass.c                     |   8 +
>  drivers/i2c/omap24xx_i2c.c                   | 467 ++++++++++++++++++---------
>  drivers/power/palmas.c                       |  39 +++
>  drivers/power/pmic/pmic_tps62362.c           |  27 ++
>  drivers/power/pmic/pmic_tps65217.c           |  47 ++-
>  drivers/power/pmic/pmic_tps65218.c           |  88 +++++
>  drivers/power/pmic/pmic_tps65910.c           |  60 +++-
>  drivers/power/twl4030.c                      |  39 +++
>  include/asm-generic/global_data.h            |   4 +
>  include/configs/am43xx_evm.h                 |   2 +
>  include/configs/ti_armv7_common.h            |  18 +-
>  include/dm/uclass-internal.h                 |  13 +
>  include/fdtdec.h                             |  17 +
>  include/i2c.h                                |  13 +
>  include/palmas.h                             |   5 +
>  include/power/tps65217.h                     |   2 +
>  include/power/tps65910.h                     |   1 +
>  include/twl4030.h                            |   6 +-
>  lib/fdtdec.c                                 |  38 ++-
>  48 files changed, 1033 insertions(+), 459 deletions(-)
>  create mode 100644 arch/arm/include/asm/omap_i2c.h
>
> --
> 2.7.4
>
Jean-Jacques Hiblot Oct. 8, 2018, 9:35 a.m. UTC | #6
On 06/10/2018 03:22, Adam Ford wrote:
> On Thu, Oct 4, 2018 at 8:48 AM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>> This series remove the usage of the DM_I2C_COMPAT option for all the ti
>> platforms. It also takes this opportunity to not disable DM_I2C in the SPL.
>>
>> There are a couples of issues to fix:
>> - CMD_EEPROM does not support the DM API. Fixed by removing this option
>>    when DM_I2C is used without DM_I2C_COMPAT
>> - i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
>>    (as is the case with am33xx SPL).
>> - The I2C driver do not support DM_I2C without OF_CONTROL.
>> - Most of the PMIC drivers do not support the I2C DM API.
>> - Board detection is done prior DM initialization. Fixed by moving it after
>>    DM is initialized. That move breaks the DRA7 platforms (The fixes for
>>    that are at the last 5 patches this series)
>>
>> When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
>> enabled in the SPL.
>>
>> This has been tested with the following boards:
>> - am437x SK
>> - am335x SK
>> - am335x beaglebone (both DM and non-DM config)
>> - dra76 evm
>> - am572 evm
>> - k2g evm
>>
>>
>>
> The whole series applied and
>
> Tested-by: Adam Ford <aford173@gmail.com> #omap3_logic
Thanks for testing
but I guess you meant that for v2 not v1 ?
JJ
>
> adam
>> Andreas Dannenberg (1):
>>    ti: common: board_detect: Allow DM I2C without CONFIG_DM_I2C_COMPAT
>>
>> Jean-Jacques Hiblot (17):
>>    cmd: Kconfig: Do not include EEPROM if DM_I2C is used without
>>      DM_I2C_COMPAT
>>    dm: i2c: Add dm_i2c_probe_device() to test the presence of a chip
>>    dm: device: Allow using uclass_find_device_by_seq() without OF_CONTROL
>>    configs: am335x: am57x: dra7x: Enable CONFIG_SPL_DM_SEQ_ALIAS
>>    i2c: omap24xx_i2c: Use platdata to probe the device
>>    am335x: Register the I2C controllers if DM_I2C is used.
>>    dts: am43x: omap5: Add node for I2C in SPL
>>    omap: detect the board after DM is available
>>    power: make most tps drivers and the twl4030 driver compatible with
>>      DM_I2C
>>    configs: am335x_pdu001: Explicitly enable CONFIG_I2C_COMPAT
>>    ti: remove usage of DM_I2C_COMPAT and don't disable DM_I2C in SPL
>>    am57xx: remove non-DM I2C code
>>    configs: dra7xx-evm: increase the size of the malloc's pool before
>>      relocation
>>    lib: fdtdec: Add function re-setup the fdt more effeciently
>>    drivers: core: Add the option SPL_DM_DEVICE_REMOVE to the Kconfig
>>    drivers: core: nullify gd->dm_root after dm_uninit()
>>    dra7: Allow selecting a new dtb after board detection.
>>
>> Vignesh R (1):
>>    i2c: omap24xx_i2c: Move away from SoC specific headers for reg offset
>>
>>   arch/arm/dts/am437x-gp-evm-u-boot.dtsi       |   4 +
>>   arch/arm/dts/omap5-u-boot.dtsi               |   4 +
>>   arch/arm/include/asm/arch-am33xx/i2c.h       |  47 +--
>>   arch/arm/include/asm/arch-omap3/i2c.h        |  47 ---
>>   arch/arm/include/asm/arch-omap4/i2c.h        |  45 ---
>>   arch/arm/include/asm/arch-omap5/i2c.h        |  45 ---
>>   arch/arm/include/asm/omap_i2c.h              |  24 ++
>>   arch/arm/mach-keystone/ddr3_spd.c            |   7 +
>>   arch/arm/mach-omap2/am33xx/board.c           |  24 +-
>>   arch/arm/mach-omap2/am33xx/clk_synthesizer.c |  56 +++-
>>   arch/arm/mach-omap2/clocks-common.c          |   2 +
>>   arch/arm/mach-omap2/hwinit-common.c          |  23 +-
>>   board/ti/am335x/board.c                      |  17 +-
>>   board/ti/am335x/mux.c                        |  14 +
>>   board/ti/am43xx/board.c                      |  35 +-
>>   board/ti/am57xx/board.c                      |  25 +-
>>   board/ti/common/board_detect.c               | 110 +++----
>>   board/ti/ks2_evm/board_k2g.c                 |  11 +
>>   cmd/Kconfig                                  |   1 +
>>   configs/am335x_pdu001_defconfig              |   2 +
>>   configs/am57xx_evm_defconfig                 |   1 +
>>   configs/am57xx_hs_evm_defconfig              |   1 +
>>   configs/dra7xx_evm_defconfig                 |   4 +-
>>   configs/dra7xx_hs_evm_defconfig              |   1 +
>>   configs/omap3_logic_defconfig                |   1 +
>>   drivers/core/Kconfig                         |  12 +-
>>   drivers/core/device.c                        |  10 +-
>>   drivers/core/root.c                          |   1 +
>>   drivers/core/uclass.c                        |  24 ++
>>   drivers/i2c/i2c-uclass.c                     |   8 +
>>   drivers/i2c/omap24xx_i2c.c                   | 467 ++++++++++++++++++---------
>>   drivers/power/palmas.c                       |  39 +++
>>   drivers/power/pmic/pmic_tps62362.c           |  27 ++
>>   drivers/power/pmic/pmic_tps65217.c           |  47 ++-
>>   drivers/power/pmic/pmic_tps65218.c           |  88 +++++
>>   drivers/power/pmic/pmic_tps65910.c           |  60 +++-
>>   drivers/power/twl4030.c                      |  39 +++
>>   include/asm-generic/global_data.h            |   4 +
>>   include/configs/am43xx_evm.h                 |   2 +
>>   include/configs/ti_armv7_common.h            |  18 +-
>>   include/dm/uclass-internal.h                 |  13 +
>>   include/fdtdec.h                             |  17 +
>>   include/i2c.h                                |  13 +
>>   include/palmas.h                             |   5 +
>>   include/power/tps65217.h                     |   2 +
>>   include/power/tps65910.h                     |   1 +
>>   include/twl4030.h                            |   6 +-
>>   lib/fdtdec.c                                 |  38 ++-
>>   48 files changed, 1033 insertions(+), 459 deletions(-)
>>   create mode 100644 arch/arm/include/asm/omap_i2c.h
>>
>> --
>> 2.7.4
>>
Adam Ford Oct. 8, 2018, 2:46 p.m. UTC | #7
On Mon, Oct 8, 2018 at 4:36 AM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>
>
>
> On 06/10/2018 03:22, Adam Ford wrote:
> > On Thu, Oct 4, 2018 at 8:48 AM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
> >> This series remove the usage of the DM_I2C_COMPAT option for all the ti
> >> platforms. It also takes this opportunity to not disable DM_I2C in the SPL.
> >>
> >> There are a couples of issues to fix:
> >> - CMD_EEPROM does not support the DM API. Fixed by removing this option
> >>    when DM_I2C is used without DM_I2C_COMPAT
> >> - i2c_get_chip_for_busnum() does not work when OF_CONTROL is not used
> >>    (as is the case with am33xx SPL).
> >> - The I2C driver do not support DM_I2C without OF_CONTROL.
> >> - Most of the PMIC drivers do not support the I2C DM API.
> >> - Board detection is done prior DM initialization. Fixed by moving it after
> >>    DM is initialized. That move breaks the DRA7 platforms (The fixes for
> >>    that are at the last 5 patches this series)
> >>
> >> When all this is taken care of DM_I2C_COMPAT can be removed and DM_I2C
> >> enabled in the SPL.
> >>
> >> This has been tested with the following boards:
> >> - am437x SK
> >> - am335x SK
> >> - am335x beaglebone (both DM and non-DM config)
> >> - dra76 evm
> >> - am572 evm
> >> - k2g evm
> >>
> >>
> >>
> > The whole series applied and
> >
> > Tested-by: Adam Ford <aford173@gmail.com> #omap3_logic
> Thanks for testing
> but I guess you meant that for v2 not v1 ?

Sorry.  I did intend that for the V2 patch.  Thanks for doing that.  I
had started on it for the twl4030, but your implemention was a little
cleaner than what I was doing.

adam
> JJ
> >
> > adam
> >> Andreas Dannenberg (1):
> >>    ti: common: board_detect: Allow DM I2C without CONFIG_DM_I2C_COMPAT
> >>
> >> Jean-Jacques Hiblot (17):
> >>    cmd: Kconfig: Do not include EEPROM if DM_I2C is used without
> >>      DM_I2C_COMPAT
> >>    dm: i2c: Add dm_i2c_probe_device() to test the presence of a chip
> >>    dm: device: Allow using uclass_find_device_by_seq() without OF_CONTROL
> >>    configs: am335x: am57x: dra7x: Enable CONFIG_SPL_DM_SEQ_ALIAS
> >>    i2c: omap24xx_i2c: Use platdata to probe the device
> >>    am335x: Register the I2C controllers if DM_I2C is used.
> >>    dts: am43x: omap5: Add node for I2C in SPL
> >>    omap: detect the board after DM is available
> >>    power: make most tps drivers and the twl4030 driver compatible with
> >>      DM_I2C
> >>    configs: am335x_pdu001: Explicitly enable CONFIG_I2C_COMPAT
> >>    ti: remove usage of DM_I2C_COMPAT and don't disable DM_I2C in SPL
> >>    am57xx: remove non-DM I2C code
> >>    configs: dra7xx-evm: increase the size of the malloc's pool before
> >>      relocation
> >>    lib: fdtdec: Add function re-setup the fdt more effeciently
> >>    drivers: core: Add the option SPL_DM_DEVICE_REMOVE to the Kconfig
> >>    drivers: core: nullify gd->dm_root after dm_uninit()
> >>    dra7: Allow selecting a new dtb after board detection.
> >>
> >> Vignesh R (1):
> >>    i2c: omap24xx_i2c: Move away from SoC specific headers for reg offset
> >>
> >>   arch/arm/dts/am437x-gp-evm-u-boot.dtsi       |   4 +
> >>   arch/arm/dts/omap5-u-boot.dtsi               |   4 +
> >>   arch/arm/include/asm/arch-am33xx/i2c.h       |  47 +--
> >>   arch/arm/include/asm/arch-omap3/i2c.h        |  47 ---
> >>   arch/arm/include/asm/arch-omap4/i2c.h        |  45 ---
> >>   arch/arm/include/asm/arch-omap5/i2c.h        |  45 ---
> >>   arch/arm/include/asm/omap_i2c.h              |  24 ++
> >>   arch/arm/mach-keystone/ddr3_spd.c            |   7 +
> >>   arch/arm/mach-omap2/am33xx/board.c           |  24 +-
> >>   arch/arm/mach-omap2/am33xx/clk_synthesizer.c |  56 +++-
> >>   arch/arm/mach-omap2/clocks-common.c          |   2 +
> >>   arch/arm/mach-omap2/hwinit-common.c          |  23 +-
> >>   board/ti/am335x/board.c                      |  17 +-
> >>   board/ti/am335x/mux.c                        |  14 +
> >>   board/ti/am43xx/board.c                      |  35 +-
> >>   board/ti/am57xx/board.c                      |  25 +-
> >>   board/ti/common/board_detect.c               | 110 +++----
> >>   board/ti/ks2_evm/board_k2g.c                 |  11 +
> >>   cmd/Kconfig                                  |   1 +
> >>   configs/am335x_pdu001_defconfig              |   2 +
> >>   configs/am57xx_evm_defconfig                 |   1 +
> >>   configs/am57xx_hs_evm_defconfig              |   1 +
> >>   configs/dra7xx_evm_defconfig                 |   4 +-
> >>   configs/dra7xx_hs_evm_defconfig              |   1 +
> >>   configs/omap3_logic_defconfig                |   1 +
> >>   drivers/core/Kconfig                         |  12 +-
> >>   drivers/core/device.c                        |  10 +-
> >>   drivers/core/root.c                          |   1 +
> >>   drivers/core/uclass.c                        |  24 ++
> >>   drivers/i2c/i2c-uclass.c                     |   8 +
> >>   drivers/i2c/omap24xx_i2c.c                   | 467 ++++++++++++++++++---------
> >>   drivers/power/palmas.c                       |  39 +++
> >>   drivers/power/pmic/pmic_tps62362.c           |  27 ++
> >>   drivers/power/pmic/pmic_tps65217.c           |  47 ++-
> >>   drivers/power/pmic/pmic_tps65218.c           |  88 +++++
> >>   drivers/power/pmic/pmic_tps65910.c           |  60 +++-
> >>   drivers/power/twl4030.c                      |  39 +++
> >>   include/asm-generic/global_data.h            |   4 +
> >>   include/configs/am43xx_evm.h                 |   2 +
> >>   include/configs/ti_armv7_common.h            |  18 +-
> >>   include/dm/uclass-internal.h                 |  13 +
> >>   include/fdtdec.h                             |  17 +
> >>   include/i2c.h                                |  13 +
> >>   include/palmas.h                             |   5 +
> >>   include/power/tps65217.h                     |   2 +
> >>   include/power/tps65910.h                     |   1 +
> >>   include/twl4030.h                            |   6 +-
> >>   lib/fdtdec.c                                 |  38 ++-
> >>   48 files changed, 1033 insertions(+), 459 deletions(-)
> >>   create mode 100644 arch/arm/include/asm/omap_i2c.h
> >>
> >> --
> >> 2.7.4
> >>
>