Message ID | 20201211211916.6259-3-semen.protsenko@linaro.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | usb: dwc3: drd: Check graph presence for extcon | expand |
On Sun, Dec 13, 2020 at 5:27 AM Sam Protsenko <semen.protsenko@linaro.org> wrote: > > Commit c73b41955ee4 ("usb: dwc3: drd: Avoid error when extcon is The previous change ("... (because we don't know the actual commit id) > missing") changed the code flow in dwc3_get_extcon() function, leading > to unnecessary if-branch. This patch does housekeeping by reworking the > code for obtaining extcon device from the "port" node. While at it, add an extcon > the comment from mentioned code block, explaining how checking the port > availability helps to avoid the misleading error. ... > + /* > + * Try to get extcon device from USB PHY controller's "port" node. an extcon the USB > + * Check if it has the "port" node first, to avoid printing the error > + * message from underlying code, as it's a valid case: extcon device > + * (and "port" node) may be missing in case of "usb-role-switch" or OTG > + * mode. > + */ To me it sounds like this should be in the previous patch.
diff --git a/drivers/usb/dwc3/drd.c b/drivers/usb/dwc3/drd.c index 312a4d060e80..eaf389d3f3c5 100644 --- a/drivers/usb/dwc3/drd.c +++ b/drivers/usb/dwc3/drd.c @@ -441,8 +441,8 @@ static int dwc3_drd_notifier(struct notifier_block *nb, static 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; + struct device_node *np_phy; + struct extcon_dev *edev = NULL; const char *name; if (device_property_read_bool(dev, "extcon")) @@ -462,18 +462,22 @@ static struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc) return edev; } + /* + * Try to get extcon device from USB PHY controller's "port" node. + * Check if it has the "port" node first, to avoid printing the error + * message from underlying code, as it's a valid case: extcon device + * (and "port" node) may be missing in case of "usb-role-switch" or OTG + * mode. + */ np_phy = of_parse_phandle(dev->of_node, "phys", 0); - if (of_graph_is_present(np_phy)) - np_conn = of_graph_get_remote_node(np_phy, -1, -1); - else - np_conn = NULL; + if (of_graph_is_present(np_phy)) { + struct device_node *np_conn; - if (np_conn) - edev = extcon_find_edev_by_node(np_conn); - else - edev = NULL; - - of_node_put(np_conn); + np_conn = of_graph_get_remote_node(np_phy, -1, -1); + if (np_conn) + edev = extcon_find_edev_by_node(np_conn); + of_node_put(np_conn); + } of_node_put(np_phy); return edev;
Commit c73b41955ee4 ("usb: dwc3: drd: Avoid error when extcon is missing") changed the code flow in dwc3_get_extcon() function, leading to unnecessary if-branch. This patch does housekeeping by reworking the code for obtaining extcon device from the "port" node. While at it, add the comment from mentioned code block, explaining how checking the port availability helps to avoid the misleading error. Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- Changes in v3: - Split patch into two patches: logic diff and style diff drivers/usb/dwc3/drd.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)