Re: [PATCH v3 1/4] i2c: mux-pinctrl: Rework to honor disabled child nodes

From: Wolfram Sang
Date: Thu Mar 19 2015 - 12:01:53 EST


> >- /* 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