Quoting Peter Rosin (2017-07-11 23:45:24) > On 2017-07-12 03:02, Stephen Boyd wrote: > > @@ -102,4 +107,7 @@ Example: > > rx-burst-size-dword = <0x10>; > > extcon = <0>, <&usb_id>; > > phy-clkgate-delay-us = <400>; > > + mux-controls = <&usb_switch>; > > + mux-control-names = "usb_switch"; > > + usb-switch-states = <0>, <1>; > > I don't see the need for usb-switch-states? Just assume states 0/1 and > if someone later needs some other states, make them add a property that > overrides the defaults. Just document that 0 is host and 1 is device. > Fine by me. Rob H do you agree? > > diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c > > index 18cb8e46262d..9fd23ecc2da3 100644 > > --- a/drivers/usb/chipidea/host.c > > +++ b/drivers/usb/chipidea/host.c > > @@ -25,6 +25,7 @@ > > #include <linux/usb/hcd.h> > > #include <linux/usb/chipidea.h> > > #include <linux/regulator/consumer.h> > > +#include <linux/mux/consumer.h> > > > > #include "../host/ehci.h" > > > > @@ -123,6 +124,13 @@ static int host_start(struct ci_hdrc *ci) > > if (usb_disabled()) > > return -ENODEV; > > > > + if (!IS_ERR(ci->platdata->usb_switch.mux)) { > > + ret = mux_control_select(ci->platdata->usb_switch.mux, > > + ci->platdata->usb_switch.host); > > + if (ret) > > + return ret; > > + } > > + > > You *must* call mux_control_deselect to clean up if there is a failure > later in host_start. Is that handled in some non-obvious way? Good catch. Thanks. I'll add in the unwinding on the error path. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html