IMX6 I2C bus_recovery not correctly registered

We are doing ESD-Testing with or product and have blocked i2c-Busses.
This should be no problem because there is the i2c_bus_recovery that should recover from “most” cases.
But I discovered that the recover mechanism is not called in case of blocked bus.

The debugging showed that the i2c_imx_init_recovery_info() is not running correctly.
Here we try to get the state of the PINCTRL_STATE_DEFAULT and the “gpio” i2c-imx.c:1016
But when you check the dts imx6qdl-colibri.dtsi:392 you see that the name is “recovery” and not “gpio”.

Changing the name in the driver or the dts fix the problem.
I saw that the problem applies not only for colibri imx6 but also for apalis, eventually for more.
The same applies also for the mainline-kernel (I’m currently using 4.19.36)
In the documentation i2c-imx.txt the correct state should be “gpio” so the dts should be changed.
Almost all boards in mainline uses “gpio” also imx6ull-colibri.dtsi

I have locally fixed it but it should be fixed in linux-toradex and mainline.
How we should proceed ?

Regards Stefan

hi @StefanB

Thanks for reporting this Issue and the solution. We will look into this and come back next week to you.

Best regards,