On 08. 02. 19 10:57, Heiko Schocher wrote: > Hello Michael, > > Am 31.01.2019 um 16:30 schrieb Michal Simek: >> U-Boot with I2C_DM enabled is not capable to list i2c busses connected >> to i2c mux. For getting this work there is a need to find out highest >> alias ID and use this uniq number for new buses connected to I2C mux. >> This series is making this happen. >> >> There is only one missing piece which is that also i2c controllers which >> are not listed in DT are not using this feature. >> >> Removing setting up aliases from i2c mux code and unifying it in the >> same code ensures that numbering schema is proper if no alias is >> specified. >> >> ZynqMP> i2c bus >> Bus 0: i2c@ff020000 >> 20: gpio@20, offset len 1, flags 0 >> 21: gpio@21, offset len 1, flags 0 >> 75: i2c-mux@75, offset len 1, flags 0 >> Bus 1: i2c@ff020000->i2c-mux@75->i2c@0 >> Bus 2: i2c@ff020000->i2c-mux@75->i2c@1 >> Bus 3: i2c@ff020000->i2c-mux@75->i2c@2 >> Bus 4: i2c@ff030000 (active 4) >> 74: i2c-mux@74, offset len 1, flags 0 >> 75: i2c-mux@75, offset len 1, flags 0 >> Bus 5: i2c@ff030000->i2c-mux@74->i2c@0 (active 5) >> 54: eeprom@54, offset len 1, flags 0 >> Bus 6: i2c@ff030000->i2c-mux@74->i2c@1 >> Bus 7: i2c@ff030000->i2c-mux@74->i2c@2 >> Bus 8: i2c@ff030000->i2c-mux@74->i2c@3 >> Bus 9: i2c@ff030000->i2c-mux@74->i2c@4 >> Bus 10: i2c@ff030000->i2c-mux@75->i2c@0 >> Bus 11: i2c@ff030000->i2c-mux@75->i2c@1 >> Bus 12: i2c@ff030000->i2c-mux@75->i2c@2 >> Bus 13: i2c@ff030000->i2c-mux@75->i2c@3 >> Bus 14: i2c@ff030000->i2c-mux@75->i2c@4 >> Bus 15: i2c@ff030000->i2c-mux@75->i2c@5 >> Bus 16: i2c@ff030000->i2c-mux@75->i2c@6 >> Bus 17: i2c@ff030000->i2c-mux@75->i2c@7 >> >> Thanks, >> Michal >> >> Changes in v2: >> - Update kernel-doc binding >> - Return -1 in case of error. -1 means that the next free alias is 0. >> - New patch >> - New patch >> - Use dev_read_alias_highest_id() >> - Use uclass private data >> - Use private uclass data >> - Fix headers >> - Change patch description to focus only on bus name >> >> Michal Simek (7): >> dm: core: Add of_alias_get_highest_id() >> fdt: Introduce fdtdec_get_alias_highest_id() >> dm: core: Introduce dev_read_alias_highest_id() >> dm: core: Add tests for dev_read_alias_highest_id() >> i2c: dm: Record maximum id of devices before probing devices >> i2c: Fill req_seq in i2c_post_bind() >> i2c: mux: Generate longer i2c mux name >> >> drivers/core/of_access.c | 18 ++++++++++++++ >> drivers/core/read.c | 8 ++++++ >> drivers/i2c/i2c-uclass.c | 50 >> +++++++++++++++++++++++++++++++++++--- >> drivers/i2c/muxes/i2c-mux-uclass.c | 29 +++++++++++++++++++--- >> include/dm/of_access.h | 10 ++++++++ >> include/dm/read.h | 16 ++++++++++++ >> include/fdtdec.h | 13 ++++++++++ >> lib/fdtdec.c | 33 +++++++++++++++++++++++++ >> test/dm/test-fdt.c | 23 ++++++++++++++++++ >> 9 files changed, 194 insertions(+), 6 deletions(-) >> > > I just applied your patches and triggered a build on travis: > > It shows error for omap boards: > > https://travis-ci.org/hsdenx/u-boot-i2c/jobs/490393822 > > I try to find time to look into it, but may you have time too? >
This should be the fix. (I tried that on omap35_logic_somlv_defconfig) diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c index 6f3fca2d2326..391fb1289983 100644 --- a/drivers/i2c/i2c-uclass.c +++ b/drivers/i2c/i2c-uclass.c @@ -655,8 +655,12 @@ int i2c_uclass_init(struct uclass *class) if (!priv) return -ENOMEM; +#if CONFIG_IS_ENABLED(OF_CONTROL) /* Get the last allocated alias. */ priv->max_id = dev_read_alias_highest_id("i2c"); +#else + priv->max_id = -1; +#endif debug("%s: highest alias id is %d\n", __func__, priv->max_id); SPL has no OF_CONTROL and also no LIBFDT that's why it is trying to call it. Thanks, Michal -- Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91 w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel - Xilinx Microblaze Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs
signature.asc
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot