@@ -77,7 +77,7 @@ TU_ATTR_ALWAYS_INLINE static inline bool imxrt_is_cache_mem(uintptr_t addr) {
|
|||||||
return !(0x20000000 <= addr && addr < 0x20100000);
|
return !(0x20000000 <= addr && addr < 0x20100000);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dcd_dcache_clean(void const* addr, uint32_t data_size) {
|
TU_ATTR_ALWAYS_INLINE static inline bool imxrt_dcache_clean(void const* addr, uint32_t data_size) {
|
||||||
const uintptr_t addr32 = (uintptr_t) addr;
|
const uintptr_t addr32 = (uintptr_t) addr;
|
||||||
if (imxrt_is_cache_mem(addr32)) {
|
if (imxrt_is_cache_mem(addr32)) {
|
||||||
TU_ASSERT(tu_is_aligned32(addr32));
|
TU_ASSERT(tu_is_aligned32(addr32));
|
||||||
@@ -87,7 +87,7 @@ bool dcd_dcache_clean(void const* addr, uint32_t data_size) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dcd_dcache_invalidate(void const* addr, uint32_t data_size) {
|
TU_ATTR_ALWAYS_INLINE static inline bool imxrt_dcache_invalidate(void const* addr, uint32_t data_size) {
|
||||||
const uintptr_t addr32 = (uintptr_t) addr;
|
const uintptr_t addr32 = (uintptr_t) addr;
|
||||||
if (imxrt_is_cache_mem(addr32)) {
|
if (imxrt_is_cache_mem(addr32)) {
|
||||||
// Invalidating does not push cached changes back to RAM so we need to be
|
// Invalidating does not push cached changes back to RAM so we need to be
|
||||||
@@ -100,7 +100,7 @@ bool dcd_dcache_invalidate(void const* addr, uint32_t data_size) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
TU_ATTR_ALWAYS_INLINE static inline bool imxrt_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
||||||
const uintptr_t addr32 = (uintptr_t) addr;
|
const uintptr_t addr32 = (uintptr_t) addr;
|
||||||
if (imxrt_is_cache_mem(addr32)) {
|
if (imxrt_is_cache_mem(addr32)) {
|
||||||
TU_ASSERT(tu_is_aligned32(addr32));
|
TU_ASSERT(tu_is_aligned32(addr32));
|
||||||
|
@@ -34,6 +34,20 @@
|
|||||||
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT1XXX
|
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT1XXX
|
||||||
#include "ci_hs_imxrt.h"
|
#include "ci_hs_imxrt.h"
|
||||||
|
|
||||||
|
#if CFG_TUD_MEM_DCACHE_ENABLE
|
||||||
|
bool dcd_dcache_clean(void const* addr, uint32_t data_size) {
|
||||||
|
return imxrt_dcache_clean(addr, data_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dcd_dcache_invalidate(void const* addr, uint32_t data_size) {
|
||||||
|
return imxrt_dcache_invalidate(addr, data_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
||||||
|
return imxrt_dcache_clean_invalidate(addr, data_size);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
|
#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
|
||||||
#include "ci_hs_lpc18_43.h"
|
#include "ci_hs_lpc18_43.h"
|
||||||
|
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#include "ci_hs_imxrt.h"
|
#include "ci_hs_imxrt.h"
|
||||||
|
|
||||||
|
#if CFG_TUH_MEM_DCACHE_ENABLE
|
||||||
bool hcd_dcache_clean(void const* addr, uint32_t data_size) {
|
bool hcd_dcache_clean(void const* addr, uint32_t data_size) {
|
||||||
return imxrt_dcache_clean(addr, data_size);
|
return imxrt_dcache_clean(addr, data_size);
|
||||||
}
|
}
|
||||||
@@ -53,6 +54,7 @@ bool hcd_dcache_invalidate(void const* addr, uint32_t data_size) {
|
|||||||
bool hcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
bool hcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
||||||
return imxrt_dcache_clean_invalidate(addr, data_size);
|
return imxrt_dcache_clean_invalidate(addr, data_size);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
|
#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user