summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2021-02-22 18:02:52 +0700
committerhathach <[email protected]>2021-02-22 18:02:52 +0700
commit8a2e4c79fd6a5b7927ae07bececc30ca79d9edf2 (patch)
tree899e17ddd9816e8a31b393eaec5831288496ac4b /src
parent00b4b74e8276691dfc4a20163b472c7bd15f4f51 (diff)
make hcd tdi more generic
Diffstat (limited to 'src')
-rw-r--r--src/host/ehci/ehci.c5
-rw-r--r--src/portable/nxp/transdimension/dcd_transdimension.c5
-rw-r--r--src/portable/nxp/transdimension/hcd_transdimension.c45
3 files changed, 45 insertions, 10 deletions
diff --git a/src/host/ehci/ehci.c b/src/host/ehci/ehci.c
index 23c8ea9ee..f3a5cf9cd 100644
--- a/src/host/ehci/ehci.c
+++ b/src/host/ehci/ehci.c
@@ -26,7 +26,10 @@
#include "common/tusb_common.h"
-#if TUSB_OPT_HOST_ENABLED && (CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX)
+#if TUSB_OPT_HOST_ENABLED && \
+ (CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX || \
+ CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX )
+
//--------------------------------------------------------------------+
// INCLUDE
//--------------------------------------------------------------------+
diff --git a/src/portable/nxp/transdimension/dcd_transdimension.c b/src/portable/nxp/transdimension/dcd_transdimension.c
index 755e7635e..6f1923ec9 100644
--- a/src/portable/nxp/transdimension/dcd_transdimension.c
+++ b/src/portable/nxp/transdimension/dcd_transdimension.c
@@ -26,9 +26,8 @@
#include "tusb_option.h"
-#if TUSB_OPT_DEVICE_ENABLED && (CFG_TUSB_MCU == OPT_MCU_LPC18XX || \
- CFG_TUSB_MCU == OPT_MCU_LPC43XX || \
- CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX)
+#if TUSB_OPT_DEVICE_ENABLED && \
+ (CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX)
//--------------------------------------------------------------------+
// INCLUDE
diff --git a/src/portable/nxp/transdimension/hcd_transdimension.c b/src/portable/nxp/transdimension/hcd_transdimension.c
index cb509e7a2..f8ad7c719 100644
--- a/src/portable/nxp/transdimension/hcd_transdimension.c
+++ b/src/portable/nxp/transdimension/hcd_transdimension.c
@@ -26,25 +26,58 @@
#include "tusb_option.h"
-#if TUSB_OPT_HOST_ENABLED && (CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_LPC43XX)
+// NXP Trans-Dimension USB IP implement EHCI for host functionality
-#include "chip.h"
+#if TUSB_OPT_HOST_ENABLED && \
+ (CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX)
+
+#if CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX
+ #include "fsl_device_registers.h"
+#else
+ // LPCOpen for 18xx & 43xx
+ #include "chip.h"
+#endif
+
+typedef struct
+{
+ uint32_t regs_addr; // registers base
+ const IRQn_Type irqnum; // IRQ number
+}hcd_controller_t;
+
+#if CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX
+ static const hcd_controller_t _hcd_controller[] =
+ {
+ // RT1010 and RT1020 only has 1 USB controller
+ #if FSL_FEATURE_SOC_USBHS_COUNT == 1
+ { .regs_addr = (uint32_t) &USB->USBCMD , .irqnum = USB_OTG1_IRQn }
+ #else
+ { .regs_addr = (uint32_t) &USB1->USBCMD, .irqnum = USB_OTG1_IRQn },
+ { .regs_addr = (uint32_t) &USB2->USBCMD, .irqnum = USB_OTG2_IRQn }
+ #endif
+ };
+
+#else
+ static const hcd_controller_t _hcd_controller[] =
+ {
+ { .regs_addr = (uint32_t) &LPC_USB0->USBCMD_H, .irqnum = USB0_IRQn },
+ { .regs_addr = (uint32_t) &LPC_USB1->USBCMD_H, .irqnum = USB1_IRQn }
+ };
+#endif
-// LPC18xx and 43xx use EHCI driver
void hcd_int_enable(uint8_t rhport)
{
- NVIC_EnableIRQ(rhport ? USB1_IRQn : USB0_IRQn);
+ NVIC_EnableIRQ(_hcd_controller[rhport].irqnum);
}
void hcd_int_disable(uint8_t rhport)
{
- NVIC_DisableIRQ(rhport ? USB1_IRQn : USB0_IRQn);
+ NVIC_DisableIRQ(_hcd_controller[rhport].irqnum);
}
uint32_t hcd_ehci_register_addr(uint8_t rhport)
{
- return (uint32_t) (rhport ? &LPC_USB1->USBCMD_H : &LPC_USB0->USBCMD_H );
+ return _hcd_controller[rhport].regs_addr;
}
#endif