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?

Thanks!

bye,
Heiko
--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: h...@denx.de
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to