summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoremb4fun <[email protected]>2023-07-23 10:53:22 +0200
committeremb4fun <[email protected]>2023-07-23 10:53:22 +0200
commite2f28bc134446dc081766055171ca427afd4f564 (patch)
tree9a11f1131b4455e0560709809f650749a042dcb4 /src
parent8fa0b74d8016554d23f84981f78c656f215d76e8 (diff)
Added support for the NXP K64 series
Diffstat (limited to 'src')
-rw-r--r--src/common/tusb_mcu.h2
-rw-r--r--src/portable/nxp/khci/dcd_khci.c14
-rw-r--r--src/tusb_option.h1
3 files changed, 16 insertions, 1 deletions
diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h
index 9f3be78fd..4a0c5acef 100644
--- a/src/common/tusb_mcu.h
+++ b/src/common/tusb_mcu.h
@@ -97,7 +97,7 @@
#define TUP_DCD_ENDPOINT_MAX 8
#define TUP_RHPORT_HIGHSPEED 1
-#elif TU_CHECK_MCU(OPT_MCU_KINETIS_KL, OPT_MCU_KINETIS_K32L)
+#elif TU_CHECK_MCU(OPT_MCU_KINETIS_KL, OPT_MCU_KINETIS_K32L, OPT_MCU_KINETIS_K64)
#define TUP_USBIP_CHIPIDEA_FS
#define TUP_USBIP_CHIPIDEA_FS_KINETIS
#define TUP_DCD_ENDPOINT_MAX 16
diff --git a/src/portable/nxp/khci/dcd_khci.c b/src/portable/nxp/khci/dcd_khci.c
index 52f4145f2..d957338ad 100644
--- a/src/portable/nxp/khci/dcd_khci.c
+++ b/src/portable/nxp/khci/dcd_khci.c
@@ -269,8 +269,22 @@ void dcd_init(uint8_t rhport)
{
(void) rhport;
+#if (CFG_TUSB_MCU == OPT_MCU_KINETIS_K64)
+ uint32_t clk_recover_irc_en;
+ uint32_t clk_recover_ctrl;
+
+ clk_recover_irc_en = KHCI->CLK_RECOVER_IRC_EN;
+ clk_recover_ctrl = KHCI->CLK_RECOVER_CTRL;
+
+ KHCI->USBTRC0 |= USB_USBTRC0_USBRESET_MASK;
+ while (KHCI->USBTRC0 & USB_USBTRC0_USBRESET_MASK);
+
+ KHCI->CLK_RECOVER_IRC_EN = clk_recover_irc_en;
+ KHCI->CLK_RECOVER_CTRL |= clk_recover_ctrl;
+#else
KHCI->USBTRC0 |= USB_USBTRC0_USBRESET_MASK;
while (KHCI->USBTRC0 & USB_USBTRC0_USBRESET_MASK);
+#endif
tu_memclr(&_dcd, sizeof(_dcd));
KHCI->USBTRC0 |= TU_BIT(6); /* software must set this bit to 1 */
diff --git a/src/tusb_option.h b/src/tusb_option.h
index c792efe6a..bbaa2a53a 100644
--- a/src/tusb_option.h
+++ b/src/tusb_option.h
@@ -121,6 +121,7 @@
#define OPT_MCU_KINETIS_KL 1200 ///< NXP KL series
#define OPT_MCU_KINETIS_K32L 1201 ///< NXP K32L series
#define OPT_MCU_KINETIS_K32 1201 ///< Alias to K32L
+#define OPT_MCU_KINETIS_K64 1202 ///< NXP K64 series
#define OPT_MCU_MKL25ZXX 1200 ///< Alias to KL (obsolete)
#define OPT_MCU_K32L2BXX 1201 ///< Alias to K32 (obsolete)