On Wed, Apr 17, 2019 at 12:15:18PM +0200, Hans de Goede wrote:
Hi,
On 17-04-19 11:32, Heikki Krogerus wrote:
On Wed, Apr 17, 2019 at 11:19:28AM +0200, Hans de Goede wrote:
<snip>
That is not going to work since the (virtual) mux / orientation-switch
devices are only registered once the driver binds to the piusb30532 i2c
device, so when creating the nodes we only have the piusb30532 i2c device.
It's not a problem, that's why we have the software nodes. The nodes
can be created before the device entires. The node for pi3usb30532
will just be the parent node for the new nodes we add for the mux and
switch.
I've been thinking some more about this and an easy fix is to have separate
fwnode_match functions for typec_switch_match and typec_mux_match and have
them check that the dev_name ends in "-mux" resp. "-switch" that requires
only a very minimal change to "usb: typec: Registering real device entries for the muxes"
and then everything should be fine.
I don't want to do anymore device name matching unless we have to, and
here we don't have to. We can name the nodes for those virtual mux and
switch, and then just do fwnode_find_named_child_node() in
pi3usb30532.c for both of them.
Thinking more about this, I have a feeling that this makes things needlessly
complicated, checking the dev_name *ends* in "-mux" resp. "-switch" should be
100% reliable since we call:
dev_set_name(&sw->dev, "%s-switch", dev_name(parent));
dev_set_name(&mux->dev, "%s-mux", dev_name(parent));
When registering the switch / mux, so I believe doing name (suffix) comparison
here is fine and much simpler. Anyways this is just my 2 cents on this, I'm
happy with either solution, your choice.
You do have a point. I'll take a look how the two options look like,
but maybe your way is better after all.
thanks,