[U-Boot] Regression: dm: i2c: Make i2c_get_chip_for_busnum() fail if the chip is not detected

Simon Glass sjg at chromium.org
Tue Dec 11 19:11:29 UTC 2018


Hi Stephen,

On Mon, 10 Dec 2018 at 11:23, Stephen Warren <swarren at wwwdotorg.org> wrote:
>
> The following commit:
>
> > dm: i2c: Make i2c_get_chip_for_busnum() fail if the chip is not detected
> >
> >     i2c_get_chip_for_busnum() really should check the presence of the chip on
> >     the bus. Most of the users of this function assume that this is done.
>
> ... causes a boot failure on NVIDIA Jetson TX2:
>
> > U-Boot 2019.01-rc1-00220-g7ff485c68b7e (Dec 10 2018 - 11:20:41 -0700)
> >
> > TEGRA186
> > Model: NVIDIA P2771-0000-500
> > DRAM:  7.8 GiB
> > tegra_ivc_read_get_next_frame() timed out (-12)
> > tegra_board_init: Cannot find MAX77620 I2C chip
> > initcall sequence 00000000fffa95a8 failed at call 0000000080083480 (err=-110)
> > ### ERROR ### Please RESET the board ###
>
> This may be due to the fact the bus in question is implemented by RPC to
> a separate CPU, and that mechanism hasn't been used with probing before.
> In general though, there's not guarantee that probing will work even on
> a local/native I2C bus, since different chips don't support all probe
> methods (see i2c-detect in Linux, which supports various different
> probing methods due to this), so I'm rather surprised this change was
> implemented. Is it really necessary? I believe we should revert it.

i2c_get_chip_for_busnum() is a legacy function. New code should use
the device tree to handle this case.

Can this code be moved into a PMIC / regulator driver?

Regards,
Simon


More information about the U-Boot mailing list