summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgab-k <[email protected]>2026-03-27 18:34:04 +0100
committerhathach <[email protected]>2026-04-09 11:08:39 +0700
commita39e9cdf2c82401eb61b99dd35e73531bcd76cf1 (patch)
treeec63c50751e71dba2b73ecef2160c593cae9e50d /src
parent7c3f5979ff9be05b7938f10dbaa6e55daaf8bdc1 (diff)
Add initial board support for nRF54LM20 DK
Diffstat (limited to 'src')
-rw-r--r--src/common/tusb_mcu.h1
-rw-r--r--src/portable/synopsys/dwc2/dwc2_nrf.h27
2 files changed, 26 insertions, 2 deletions
diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h
index b12a3177e..77a0bbf1d 100644
--- a/src/common/tusb_mcu.h
+++ b/src/common/tusb_mcu.h
@@ -166,6 +166,7 @@
#define TUP_USBIP_DWC2
#define TUP_USBIP_DWC2_NRF
#define TUP_DCD_ENDPOINT_MAX 16
+ #define TUP_RHPORT_HIGHSPEED 1
#define CFG_TUH_DWC2_DMA_ENABLE_DEFAULT 0
//--------------------------------------------------------------------+
diff --git a/src/portable/synopsys/dwc2/dwc2_nrf.h b/src/portable/synopsys/dwc2/dwc2_nrf.h
index 51f2d684f..067bf39cc 100644
--- a/src/portable/synopsys/dwc2/dwc2_nrf.h
+++ b/src/portable/synopsys/dwc2/dwc2_nrf.h
@@ -2,6 +2,7 @@
* The MIT License (MIT)
*
* Copyright (c) 2025 Ha Thach (tinyusb.org)
+ * Copyright (c) 2026, Gabriel Koppenstein
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -30,14 +31,25 @@
#define DWC2_EP_MAX 16
+// Use the auto-resolving peripheral pointer (respects TrustZone secure/non-secure mapping)
+#if defined(NRF54LM20A_ENGA_XXAA)
+ #define _DWC2_NRF_REG_BASE ((uintptr_t) NRF_USBHSCORE)
+#else
+ #define _DWC2_NRF_REG_BASE ((uintptr_t) NRF_USBHSCORE0)
+#endif
+
static const dwc2_controller_t _dwc2_controller[] = {
- { .reg_base = NRF_USBHSCORE0_NS_BASE, .irqnum = USBHS_IRQn, .ep_count = 16, .ep_fifo_size = 12288 },
+ { .reg_base = _DWC2_NRF_REG_BASE, .irqnum = USBHS_IRQn, .ep_count = 16, .ep_fifo_size = 12160 },
};
TU_ATTR_ALWAYS_INLINE static inline void dwc2_int_set(uint8_t rhport, tusb_role_t role, bool enabled) {
(void) rhport;
(void) role;
- (void) enabled;
+ if (enabled) {
+ NVIC_EnableIRQ(USBHS_IRQn);
+ } else {
+ NVIC_DisableIRQ(USBHS_IRQn);
+ }
}
#define dwc2_dcd_int_enable(_rhport) dwc2_int_set(_rhport, TUSB_ROLE_DEVICE, true)
@@ -64,4 +76,15 @@ TU_ATTR_ALWAYS_INLINE static inline void dwc2_phy_update(dwc2_regs_t* dwc2, uint
(void)hs_phy_type;
}
+// nRF54 Cortex-M33 has no D-cache, provide no-op stubs for DMA mode
+TU_ATTR_ALWAYS_INLINE static inline bool dwc2_dcache_clean(const void* addr, uint32_t data_size) {
+ (void)addr; (void)data_size; return true;
+}
+TU_ATTR_ALWAYS_INLINE static inline bool dwc2_dcache_invalidate(const void* addr, uint32_t data_size) {
+ (void)addr; (void)data_size; return true;
+}
+TU_ATTR_ALWAYS_INLINE static inline bool dwc2_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
+ (void)addr; (void)data_size; return true;
+}
+
#endif