> >- /* Only register child devices if the adapter has a node pointer set */ > >- if (!adap->dev.of_node) > >+ /* Only register childs if adapter has a node pointer with enabled status */ > >+ if (!adap->dev.of_node || !of_device_is_available(adap->dev.of_node)) > > return; > > That feels a bit odd to me. For a regular non-mux I2C controller, that extra > case would never trigger if the controller node was disabled, since the > device core would never probe the controller device itself. So, we'd end up > with inconsistent paths through the I2C core for regular controllers and > muxes. I first thought the no-op for the non-mux case wouldn't hurt, but I agree about the consistent code path. I mentioned in my previous mail that i2c-mux might be a better place for this... > Perhaps better would be to have a mux-specific function to iterate over a > mux's child nodes and instantiate buses for those. That function would check > whether each bus node was disabled or not. That'd isolate the special case > into the place where it was relevant. ... so I wonder what you think about putting the of_device_is_available() check into i2c_add_mux_adapter() once the reg-property and chan_id have been matched?
Attachment:
signature.asc
Description: Digital signature