Skip to content

Commit eb89df4

Browse files
committed
adding hcd_dcache_clean/hcd_dcache_invalidate
1 parent a9aa0e3 commit eb89df4

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

hw/bsp/imxrt/family.cmake

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,21 @@ function(family_configure_target TARGET)
144144
COMMAND ${LINKSERVER_PATH} flash ${NXPLINK_DEVICE} load $<TARGET_FILE:${TARGET}>
145145
)
146146

147+
# Flash using jlink
148+
set(JLINKEXE JLinkExe)
149+
file(GENERATE
150+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.jlink
151+
CONTENT "halt
152+
loadfile $<TARGET_FILE:${TARGET}>
153+
r
154+
go
155+
exit"
156+
)
157+
add_custom_target(${TARGET}-jlink
158+
DEPENDS ${TARGET}
159+
COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} -if swd -JTAGConf -1,-1 -speed auto -CommandFile ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.jlink
160+
)
161+
147162
endfunction()
148163

149164

src/host/hcd.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@ typedef struct
104104
uint8_t speed;
105105
} hcd_devtree_info_t;
106106

107+
//--------------------------------------------------------------------+
108+
// Memory API
109+
//--------------------------------------------------------------------+
110+
111+
// clean/flush data cache: write cache -> memory
112+
void hcd_dcache_clean(void* addr, uint32_t data_size) TU_ATTR_WEAK;
113+
114+
// invalidate data cache: mark cache as invalid, next read will read from memory
115+
void hcd_dcache_invalidate(void* addr, uint32_t data_size) TU_ATTR_WEAK;
116+
107117
//--------------------------------------------------------------------+
108118
// Controller API
109119
//--------------------------------------------------------------------+

src/portable/chipidea/ci_hs/hcd_ci_hs.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@
4141

4242
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT
4343
#include "ci_hs_imxrt.h"
44+
45+
void hcd_dcache_clean(void* addr, uint32_t data_size) {
46+
SCB_CleanDCache_by_Addr((uint32_t*) addr, (int32_t) data_size);
47+
}
48+
49+
void hcd_dcache_invalidate(void* addr, uint32_t data_size) {
50+
SCB_InvalidateDCache_by_Addr(addr, (int32_t) data_size);
51+
}
52+
4453
#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
4554
#include "ci_hs_lpc18_43.h"
4655
#else

src/portable/ehci/ehci.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ TU_VERIFY_STATIC( sizeof(ehci_sitd_t) == 32, "size is not correct" );
268268
// EHCI Operational Register
269269
//--------------------------------------------------------------------+
270270
enum {
271+
// Bit 0-5 has maskable in interrupt enabled register
271272
EHCI_INT_MASK_USB = TU_BIT(0),
272273
EHCI_INT_MASK_ERROR = TU_BIT(1),
273274
EHCI_INT_MASK_PORT_CHANGE = TU_BIT(2),
@@ -276,6 +277,12 @@ enum {
276277
EHCI_INT_MASK_ASYNC_ADVANCE = TU_BIT(5),
277278

278279
EHCI_INT_MASK_NXP_SOF = TU_BIT(7),
280+
281+
EHCI_INT_MASK_HC_HALTED = TU_BIT(12),
282+
EHCI_INT_MASK_RECLAIMATION = TU_BIT(13),
283+
EHCI_INT_MASK_PERIODIC_SCHED_STATUS = TU_BIT(14),
284+
EHCI_INT_MASK_ASYNC_SCHED_STATUS = TU_BIT(15),
285+
279286
EHCI_INT_MASK_NXP_ASYNC = TU_BIT(18),
280287
EHCI_INT_MASK_NXP_PERIODIC = TU_BIT(19),
281288

0 commit comments

Comments
 (0)