[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <8cee25b11f1bcf0423728576ea9bc7c6a44a61c4.1637639009.git.schowdhu@codeaurora.org>
Date: Tue, 23 Nov 2021 09:58:22 +0530
From: Souradeep Chowdhury <schowdhu@...eaurora.org>
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
Cc: linux-kernel@...r.kernel.org, tsoni@...eaurora.org,
psodagud@...eaurora.org, satyap@...eaurora.org,
pheragu@...eaurora.org, rnayak@...eaurora.org,
sibis@...eaurora.org, saiprakash.ranjan@...eaurora.org,
quic_schowdhu@...cinc.com,
Souradeep Chowdhury <schowdhu@...eaurora.org>
Subject: [PATCH V1 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 <schowdhu@...eaurora.org>
---
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,
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
Powered by blists - more mailing lists