[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <bcb48839a520b8bfc9b09e7a26ba8a8459ab602d.1638430506.git.quic_schowdhu@quicinc.com>
Date: Thu, 2 Dec 2021 15:21:23 +0530
From: Souradeep Chowdhury <quic_schowdhu@...cinc.com>
To: <linux-arm-msm@...r.kernel.org>, <linux-usb@...r.kernel.org>,
<devicetree@...r.kernel.org>, <pure.logic@...us-software.ie>,
<bjorn.andersson@...aro.org>, <greg@...ah.com>, <robh@...nel.org>
CC: <linux-kernel@...r.kernel.org>, <quic_tsoni@...cinc.com>,
<quic_psodagud@...cinc.com>, <quic_satyap@...cinc.com>,
<quic_pheragu@...cinc.com>, <quic_rjendra@...cinc.com>,
<quic_sibis@...cinc.com>, <quic_saipraka@...cinc.com>,
Souradeep Chowdhury <quic_schowdhu@...cinc.com>
Subject: [PATCH V2 4/8] usb: dwc3: drd: Register the eud connector child node for dwc3
Register the child node for dwc3 which is the "eud_usb_connector".
The eud driver will be able to switch the usb role from device to
host and vice versa using the role switch property of dwc3 node.
Signed-off-by: Souradeep Chowdhury <quic_schowdhu@...cinc.com>
---
drivers/usb/dwc3/drd.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/drivers/usb/dwc3/drd.c b/drivers/usb/dwc3/drd.c
index d7f7683..b4ea55c 100644
--- a/drivers/usb/dwc3/drd.c
+++ b/drivers/usb/dwc3/drd.c
@@ -8,6 +8,7 @@
*/
#include <linux/extcon.h>
+#include <linux/of_platform.h>
#include <linux/of_graph.h>
#include <linux/platform_device.h>
#include <linux/property.h>
@@ -164,6 +165,27 @@ static int dwc3_otg_get_irq(struct dwc3 *dwc)
return irq;
}
+static int dwc3_register_eud(struct dwc3 *dwc)
+{
+ struct device *dev = dwc->dev;
+ struct device_node *np = dev->of_node;
+ int ret;
+
+ of_get_child_by_name(np, "eud_usb_connector");
+ if (!np) {
+ dev_dbg(dev, "no usb_connector child node specified\n");
+ return 0;
+ }
+
+ ret = of_platform_populate(np, NULL, NULL, dev);
+ if (ret) {
+ dev_err(dev, "failed to register usb_connector - %d\n", ret);
+ return ret;
+ }
+
+ return 0;
+}
+
void dwc3_otg_init(struct dwc3 *dwc)
{
u32 reg;
@@ -580,6 +602,10 @@ int dwc3_drd_init(struct dwc3 *dwc)
ret = dwc3_setup_role_switch(dwc);
if (ret < 0)
return ret;
+
+ ret = dwc3_register_eud(dwc);
+ if (ret < 0)
+ return ret;
} else if (dwc->edev) {
dwc->edev_nb.notifier_call = dwc3_drd_notifier;
ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST,
--
2.7.4
Powered by blists - more mailing lists