summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@st.com>2019-03-29 17:42:18 +0300
committerMarek Vasut <marex@denx.de>2019-04-21 11:26:52 +0300
commit2d76160f049c42087011cfa0e6e878aa2ed6b406 (patch)
tree804fdf3ca8bb10bbfb20eaf7c1b982c2afd0e310
parent0fdd0bc621f060fcf60fd4ba48a2a32f338ffeac (diff)
downloadu-boot-2d76160f049c42087011cfa0e6e878aa2ed6b406.tar.xz
usb: dwc2: Add function for session B check
Add a new function to check the session B validity, to be use to check cable connection. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Lukasz Majewski <lukma@denx.de>
-rw-r--r--drivers/usb/gadget/dwc2_udc_otg.c9
-rw-r--r--include/usb/dwc2_udc.h2
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c
index 146f11e710..b1efad115e 100644
--- a/drivers/usb/gadget/dwc2_udc_otg.c
+++ b/drivers/usb/gadget/dwc2_udc_otg.c
@@ -1151,4 +1151,13 @@ U_BOOT_DRIVER(dwc2_udc_otg) = {
.platdata_auto_alloc_size = sizeof(struct dwc2_plat_otg_data),
.priv_auto_alloc_size = sizeof(struct dwc2_priv_data),
};
+
+int dwc2_udc_B_session_valid(struct udevice *dev)
+{
+ struct dwc2_plat_otg_data *platdata = dev_get_platdata(dev);
+ struct dwc2_usbotg_reg *usbotg_reg =
+ (struct dwc2_usbotg_reg *)platdata->regs_otg;
+
+ return readl(&usbotg_reg->gotgctl) & B_SESSION_VALID;
+}
#endif /* CONFIG_IS_ENABLED(DM_USB_GADGET) */
diff --git a/include/usb/dwc2_udc.h b/include/usb/dwc2_udc.h
index 3cf20eab92..8a426b631e 100644
--- a/include/usb/dwc2_udc.h
+++ b/include/usb/dwc2_udc.h
@@ -27,4 +27,6 @@ struct dwc2_plat_otg_data {
int dwc2_udc_probe(struct dwc2_plat_otg_data *pdata);
+int dwc2_udc_B_session_valid(struct udevice *dev);
+
#endif /* __DWC2_USB_GADGET */