summaryrefslogtreecommitdiffstats
path: root/include/soc/fsl/fsl_udc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/soc/fsl/fsl_udc.h')
-rw-r--r--include/soc/fsl/fsl_udc.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/soc/fsl/fsl_udc.h b/include/soc/fsl/fsl_udc.h
index b983f714c5..0b409a9f6b 100644
--- a/include/soc/fsl/fsl_udc.h
+++ b/include/soc/fsl/fsl_udc.h
@@ -1,6 +1,9 @@
#ifndef __FSL_UDC_H
#define __FSL_UDC_H
+#include <linux/types.h>
+#include <io.h>
+
/* USB DR device mode registers (Little Endian) */
struct usb_dr_device {
/* Capability register */
@@ -380,4 +383,12 @@ int imx_barebox_start_usb(void __iomem *dr, void *dest);
int imx8mm_barebox_load_usb(void *dest);
int imx8mm_barebox_start_usb(void *dest);
+static inline bool is_chipidea_udc_running(void __iomem *dr)
+{
+ struct usb_dr_device __iomem *dr_regs = dr;
+
+ return (readl(&dr_regs->usbmode) & USB_MODE_CTRL_MODE_DEVICE)
+ && (readl(&dr_regs->usbcmd) & USB_CMD_RUN_STOP);
+}
+
#endif /* __FSL_UDC_H */