On 15/07/2024 18:38, Dmitry Baryshkov wrote: > Please correct me if I'm wrong. We have following usecases. > > 1. I2C_EN pulled low. TI158 is in the pin strap mode, it is not > connected to the I2C bus. A0, A1, SDA and SCL pins are used for > strapping the settings. > board DT file should describe the bridge as a platform device > sitting directly under the root node. > > 2. I2C_EN pulled high. TI158 is in the I2C mode. It is connected to > the I2C bus, A0/A1 pins set the I2C bus address. The device is > controlled over the I2C bus > > 2.a. The same as 2, but the device is not controlled at all, default > settings are fine. > > The driver covers usecase 2.a. The bindings allow extending the driver > to the usecase 2 (e.g. via optional properties which specify > board-specific settings) OK, I think I understand (maybe). You're saying: the current binding doesn't specify any particular setting because the default settings are OK. We can switch to use-case 2. simply by adding a prop that will change one specific setting (backward compatible) > The usecase 1 is a completely separate topic, it requires a different > schema file, specifying no i2c address, only voltages supplies and > enable-gpios. I have tested this. We can support use-case 1. by registering a module_platform_driver with the same compatible property. The probe function gets called only for a node that is a child of root. No different binding required. Regards