Re: [PATCH 1/2] USB: dwc3: get extcon device by OF graph bindings
On Tue, May 15, 2018 at 9:26 AM, Felipe Balbiwrote: > Andrzej Hajda writes: > >> extcon device is used to detect host/device connection. Since extcon >> OF property is deprecated, alternative method should be added. >> This method uses OF graph bindings to locate extcon. >> >> Signed-off-by: Andrzej Hajda >> --- >> Hi all, >> >> This patch implements alternative method to get extcon from DWC3. >> The code works but is hacky, as DWC3 must traverse different DT nodes >> to get extcon, in case of TM2 it is USB-PHY and MUIC, but other >> platforms can have different paths. >> I would be glad if it can be merged as is for now, but additional work >> must be done to make it generic. >> I guess on DT binding side it is OK. So the problem should be addressed >> in the code. >> My rough idea is to implement kind of extcon aliases/forwarder mechanism, >> ie. USB-PHY will expect on its output remote port extcon, and it should >> register >> extcon-forwarder pointing to this extcon. This way DWC3 can look for the >> extcon >> on its PHY phandle, and it will receive via forwarding mechanism extcon >> exposed by MUIC. >> As I said this is rough idea for discussion, other propositions are welcome. >> >> Regards >> Andrzej > > I need someone from devicetree to review and ack patch2 before I can > apply them. Either way, this doesn't apply: The DTS patch will go through arm-soc tree, I'll take it. The DTS patches are independent from drivers and shall not usually go through regular trees. Best regards, Krzysztof
Re: [PATCH 1/2] USB: dwc3: get extcon device by OF graph bindings
On Tue, May 15, 2018 at 9:26 AM, Felipe Balbi wrote: > Andrzej Hajda writes: > >> extcon device is used to detect host/device connection. Since extcon >> OF property is deprecated, alternative method should be added. >> This method uses OF graph bindings to locate extcon. >> >> Signed-off-by: Andrzej Hajda >> --- >> Hi all, >> >> This patch implements alternative method to get extcon from DWC3. >> The code works but is hacky, as DWC3 must traverse different DT nodes >> to get extcon, in case of TM2 it is USB-PHY and MUIC, but other >> platforms can have different paths. >> I would be glad if it can be merged as is for now, but additional work >> must be done to make it generic. >> I guess on DT binding side it is OK. So the problem should be addressed >> in the code. >> My rough idea is to implement kind of extcon aliases/forwarder mechanism, >> ie. USB-PHY will expect on its output remote port extcon, and it should >> register >> extcon-forwarder pointing to this extcon. This way DWC3 can look for the >> extcon >> on its PHY phandle, and it will receive via forwarding mechanism extcon >> exposed by MUIC. >> As I said this is rough idea for discussion, other propositions are welcome. >> >> Regards >> Andrzej > > I need someone from devicetree to review and ack patch2 before I can > apply them. Either way, this doesn't apply: The DTS patch will go through arm-soc tree, I'll take it. The DTS patches are independent from drivers and shall not usually go through regular trees. Best regards, Krzysztof
Re: [PATCH 1/2] USB: dwc3: get extcon device by OF graph bindings
Andrzej Hajdawrites: > extcon device is used to detect host/device connection. Since extcon > OF property is deprecated, alternative method should be added. > This method uses OF graph bindings to locate extcon. > > Signed-off-by: Andrzej Hajda > --- > Hi all, > > This patch implements alternative method to get extcon from DWC3. > The code works but is hacky, as DWC3 must traverse different DT nodes > to get extcon, in case of TM2 it is USB-PHY and MUIC, but other > platforms can have different paths. > I would be glad if it can be merged as is for now, but additional work > must be done to make it generic. > I guess on DT binding side it is OK. So the problem should be addressed > in the code. > My rough idea is to implement kind of extcon aliases/forwarder mechanism, > ie. USB-PHY will expect on its output remote port extcon, and it should > register > extcon-forwarder pointing to this extcon. This way DWC3 can look for the > extcon > on its PHY phandle, and it will receive via forwarding mechanism extcon > exposed by MUIC. > As I said this is rough idea for discussion, other propositions are welcome. > > Regards > Andrzej I need someone from devicetree to review and ack patch2 before I can apply them. Either way, this doesn't apply: checking file drivers/usb/dwc3/drd.c Hunk #1 FAILED at 8. Hunk #2 FAILED at 38. 2 out of 2 hunks FAILED -- balbi signature.asc Description: PGP signature
Re: [PATCH 1/2] USB: dwc3: get extcon device by OF graph bindings
Andrzej Hajda writes: > extcon device is used to detect host/device connection. Since extcon > OF property is deprecated, alternative method should be added. > This method uses OF graph bindings to locate extcon. > > Signed-off-by: Andrzej Hajda > --- > Hi all, > > This patch implements alternative method to get extcon from DWC3. > The code works but is hacky, as DWC3 must traverse different DT nodes > to get extcon, in case of TM2 it is USB-PHY and MUIC, but other > platforms can have different paths. > I would be glad if it can be merged as is for now, but additional work > must be done to make it generic. > I guess on DT binding side it is OK. So the problem should be addressed > in the code. > My rough idea is to implement kind of extcon aliases/forwarder mechanism, > ie. USB-PHY will expect on its output remote port extcon, and it should > register > extcon-forwarder pointing to this extcon. This way DWC3 can look for the > extcon > on its PHY phandle, and it will receive via forwarding mechanism extcon > exposed by MUIC. > As I said this is rough idea for discussion, other propositions are welcome. > > Regards > Andrzej I need someone from devicetree to review and ack patch2 before I can apply them. Either way, this doesn't apply: checking file drivers/usb/dwc3/drd.c Hunk #1 FAILED at 8. Hunk #2 FAILED at 38. 2 out of 2 hunks FAILED -- balbi signature.asc Description: PGP signature
Re: [PATCH 1/2] USB: dwc3: get extcon device by OF graph bindings
On 31.01.2018 16:57, Andrzej Hajda wrote: > extcon device is used to detect host/device connection. Since extcon > OF property is deprecated, alternative method should be added. > This method uses OF graph bindings to locate extcon. > > Signed-off-by: Andrzej HajdaPing, 3.5 months passed. Regards Andrzej > --- > Hi all, > > This patch implements alternative method to get extcon from DWC3. > The code works but is hacky, as DWC3 must traverse different DT nodes > to get extcon, in case of TM2 it is USB-PHY and MUIC, but other > platforms can have different paths. > I would be glad if it can be merged as is for now, but additional work > must be done to make it generic. > I guess on DT binding side it is OK. So the problem should be addressed > in the code. > My rough idea is to implement kind of extcon aliases/forwarder mechanism, > ie. USB-PHY will expect on its output remote port extcon, and it should > register > extcon-forwarder pointing to this extcon. This way DWC3 can look for the > extcon > on its PHY phandle, and it will receive via forwarding mechanism extcon > exposed by MUIC. > As I said this is rough idea for discussion, other propositions are welcome. > > Regards > Andrzej > --- > drivers/usb/dwc3/drd.c | 41 - > 1 file changed, 28 insertions(+), 13 deletions(-) > > diff --git a/drivers/usb/dwc3/drd.c b/drivers/usb/dwc3/drd.c > index cc8ab9a8e9d2..eee2eca3d513 100644 > --- a/drivers/usb/dwc3/drd.c > +++ b/drivers/usb/dwc3/drd.c > @@ -8,6 +8,7 @@ > */ > > #include > +#include > > #include "debug.h" > #include "core.h" > @@ -38,24 +39,38 @@ static int dwc3_drd_notifier(struct notifier_block *nb, > return NOTIFY_DONE; > } > > +struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc) > +{ > + struct device *dev = dwc->dev; > + struct device_node *np_phy, *np_conn; > + struct extcon_dev *edev; > + > + if (of_property_read_bool(dev->of_node, "extcon")) > + return extcon_get_edev_by_phandle(dwc->dev, 0); > + > + np_phy = of_parse_phandle(dev->of_node, "phys", 0); > + np_conn = of_graph_get_remote_node(np_phy, -1, -1); > + edev = extcon_get_edev_by_of_node(np_conn); > + of_node_put(np_conn); > + of_node_put(np_phy); > + > + return edev; > +} > + > int dwc3_drd_init(struct dwc3 *dwc) > { > int ret; > > - if (dwc->dev->of_node) { > - if (of_property_read_bool(dwc->dev->of_node, "extcon")) > - dwc->edev = extcon_get_edev_by_phandle(dwc->dev, 0); > - > - if (IS_ERR(dwc->edev)) > - return PTR_ERR(dwc->edev); > + dwc->edev = dwc3_get_extcon(dwc); > + if (IS_ERR(dwc->edev)) > + return PTR_ERR(dwc->edev); > > - dwc->edev_nb.notifier_call = dwc3_drd_notifier; > - ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST, > ->edev_nb); > - if (ret < 0) { > - dev_err(dwc->dev, "couldn't register cable notifier\n"); > - return ret; > - } > + dwc->edev_nb.notifier_call = dwc3_drd_notifier; > + ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST, > +>edev_nb); > + if (ret < 0) { > + dev_err(dwc->dev, "couldn't register cable notifier\n"); > + return ret; > } > > dwc3_drd_update(dwc);
Re: [PATCH 1/2] USB: dwc3: get extcon device by OF graph bindings
On 31.01.2018 16:57, Andrzej Hajda wrote: > extcon device is used to detect host/device connection. Since extcon > OF property is deprecated, alternative method should be added. > This method uses OF graph bindings to locate extcon. > > Signed-off-by: Andrzej Hajda Ping, 3.5 months passed. Regards Andrzej > --- > Hi all, > > This patch implements alternative method to get extcon from DWC3. > The code works but is hacky, as DWC3 must traverse different DT nodes > to get extcon, in case of TM2 it is USB-PHY and MUIC, but other > platforms can have different paths. > I would be glad if it can be merged as is for now, but additional work > must be done to make it generic. > I guess on DT binding side it is OK. So the problem should be addressed > in the code. > My rough idea is to implement kind of extcon aliases/forwarder mechanism, > ie. USB-PHY will expect on its output remote port extcon, and it should > register > extcon-forwarder pointing to this extcon. This way DWC3 can look for the > extcon > on its PHY phandle, and it will receive via forwarding mechanism extcon > exposed by MUIC. > As I said this is rough idea for discussion, other propositions are welcome. > > Regards > Andrzej > --- > drivers/usb/dwc3/drd.c | 41 - > 1 file changed, 28 insertions(+), 13 deletions(-) > > diff --git a/drivers/usb/dwc3/drd.c b/drivers/usb/dwc3/drd.c > index cc8ab9a8e9d2..eee2eca3d513 100644 > --- a/drivers/usb/dwc3/drd.c > +++ b/drivers/usb/dwc3/drd.c > @@ -8,6 +8,7 @@ > */ > > #include > +#include > > #include "debug.h" > #include "core.h" > @@ -38,24 +39,38 @@ static int dwc3_drd_notifier(struct notifier_block *nb, > return NOTIFY_DONE; > } > > +struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc) > +{ > + struct device *dev = dwc->dev; > + struct device_node *np_phy, *np_conn; > + struct extcon_dev *edev; > + > + if (of_property_read_bool(dev->of_node, "extcon")) > + return extcon_get_edev_by_phandle(dwc->dev, 0); > + > + np_phy = of_parse_phandle(dev->of_node, "phys", 0); > + np_conn = of_graph_get_remote_node(np_phy, -1, -1); > + edev = extcon_get_edev_by_of_node(np_conn); > + of_node_put(np_conn); > + of_node_put(np_phy); > + > + return edev; > +} > + > int dwc3_drd_init(struct dwc3 *dwc) > { > int ret; > > - if (dwc->dev->of_node) { > - if (of_property_read_bool(dwc->dev->of_node, "extcon")) > - dwc->edev = extcon_get_edev_by_phandle(dwc->dev, 0); > - > - if (IS_ERR(dwc->edev)) > - return PTR_ERR(dwc->edev); > + dwc->edev = dwc3_get_extcon(dwc); > + if (IS_ERR(dwc->edev)) > + return PTR_ERR(dwc->edev); > > - dwc->edev_nb.notifier_call = dwc3_drd_notifier; > - ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST, > ->edev_nb); > - if (ret < 0) { > - dev_err(dwc->dev, "couldn't register cable notifier\n"); > - return ret; > - } > + dwc->edev_nb.notifier_call = dwc3_drd_notifier; > + ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST, > +>edev_nb); > + if (ret < 0) { > + dev_err(dwc->dev, "couldn't register cable notifier\n"); > + return ret; > } > > dwc3_drd_update(dwc);