mirror of
https://github.com/hathach/tinyusb.git
synced 2025-04-16 05:42:56 +00:00
change dcd_dcache_*() API return type from void to bool
This commit is contained in:
parent
66741e35c2
commit
833eb7d22d
@ -364,19 +364,15 @@
|
|||||||
#define TUP_DCD_ENDPOINT_MAX 16 // FS 7 ep, HS 16 ep
|
#define TUP_DCD_ENDPOINT_MAX 16 // FS 7 ep, HS 16 ep
|
||||||
|
|
||||||
#define CFG_TUSB_OS_INC_PATH_DEFAULT freertos/
|
#define CFG_TUSB_OS_INC_PATH_DEFAULT freertos/
|
||||||
|
#define CFG_TUSB_MEM_DCACHE_LINE_SIZE_DEFAULT 64
|
||||||
|
|
||||||
#if defined(CFG_TUD_DWC2_DMA_ENABLE) && CFG_TUD_DWC2_DMA_ENABLE == 1
|
#if defined(CFG_TUD_DWC2_DMA_ENABLE) && CFG_TUD_DWC2_DMA_ENABLE == 1
|
||||||
#define CFG_TUD_MEM_DCACHE_ENABLE_DEFAULT 1
|
#define CFG_TUD_MEM_DCACHE_ENABLE_DEFAULT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CFG_TUH_DWC2_DMA_ENABLE) && CFG_TUH_DWC2_DMA_ENABLE == 1
|
#define CFG_TUH_DWC2_DMA_ENABLE_DEFAULT 0
|
||||||
#define CFG_TUH_MEM_DCACHE_ENABLE_DEFAULT 1
|
#define CFG_TUH_MEM_DCACHE_ENABLE_DEFAULT 0
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CFG_TUD_MEM_DCACHE_LINE_SIZE_DEFAULT 64
|
|
||||||
#define CFG_TUH_MEM_DCACHE_LINE_SIZE_DEFAULT 64
|
|
||||||
|
|
||||||
#define CFG_TUH_DWC2_DMA_ENABLE_DEFAULT 0 // TODO currently have issue with buffer DMA with espressif
|
|
||||||
|
|
||||||
#elif TU_CHECK_MCU(OPT_MCU_ESP32, OPT_MCU_ESP32C2, OPT_MCU_ESP32C3, OPT_MCU_ESP32C6, OPT_MCU_ESP32H2)
|
#elif TU_CHECK_MCU(OPT_MCU_ESP32, OPT_MCU_ESP32C2, OPT_MCU_ESP32C3, OPT_MCU_ESP32C6, OPT_MCU_ESP32H2)
|
||||||
#if (CFG_TUD_ENABLED || !(defined(CFG_TUH_MAX3421) && CFG_TUH_MAX3421))
|
#if (CFG_TUD_ENABLED || !(defined(CFG_TUH_MAX3421) && CFG_TUH_MAX3421))
|
||||||
|
@ -35,8 +35,9 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TUD_EPBUF_DCACHE_SIZE(_size) \
|
//------------- Device DCache declaration -------------//
|
||||||
(CFG_TUD_MEM_DCACHE_ENABLE ? (TU_DIV_CEIL(_size, CFG_TUD_MEM_DCACHE_LINE_SIZE) * CFG_TUD_MEM_DCACHE_LINE_SIZE) : (_size))
|
#define TUD_EPBUF_DCACHE_SIZE(_size) (CFG_TUD_MEM_DCACHE_ENABLE ? \
|
||||||
|
(TU_DIV_CEIL(_size, CFG_TUD_MEM_DCACHE_LINE_SIZE) * CFG_TUD_MEM_DCACHE_LINE_SIZE) : (_size))
|
||||||
|
|
||||||
// Declare an endpoint buffer with uint8_t[size]
|
// Declare an endpoint buffer with uint8_t[size]
|
||||||
#define TUD_EPBUF_DEF(_name, _size) \
|
#define TUD_EPBUF_DEF(_name, _size) \
|
||||||
@ -52,6 +53,25 @@
|
|||||||
uint8_t _name##_dcache_padding[TUD_EPBUF_DCACHE_SIZE(sizeof(_type))]; \
|
uint8_t _name##_dcache_padding[TUD_EPBUF_DCACHE_SIZE(sizeof(_type))]; \
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//------------- Host DCache declaration -------------//
|
||||||
|
#define TUH_EPBUF_DCACHE_SIZE(_size) (CFG_TUH_MEM_DCACHE_ENABLE ? \
|
||||||
|
(TU_DIV_CEIL(_size, CFG_TUH_MEM_DCACHE_LINE_SIZE) * CFG_TUH_MEM_DCACHE_LINE_SIZE) : (_size))
|
||||||
|
|
||||||
|
// Declare an endpoint buffer with uint8_t[size]
|
||||||
|
#define TUH_EPBUF_DEF(_name, _size) \
|
||||||
|
union { \
|
||||||
|
CFG_TUH_MEM_ALIGN uint8_t _name[_size]; \
|
||||||
|
uint8_t _name##_dcache_padding[TUH_EPBUF_DCACHE_SIZE(_size)]; \
|
||||||
|
};
|
||||||
|
|
||||||
|
// Declare an endpoint buffer with a type
|
||||||
|
#define TUH_EPBUF_TYPE_DEF(_name, _type) \
|
||||||
|
union { \
|
||||||
|
CFG_TUH_MEM_ALIGN _type _name; \
|
||||||
|
uint8_t _name##_dcache_padding[TUH_EPBUF_DCACHE_SIZE(sizeof(_type))]; \
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
/* CONSTANTS
|
/* CONSTANTS
|
||||||
*------------------------------------------------------------------*/
|
*------------------------------------------------------------------*/
|
||||||
|
@ -93,15 +93,15 @@ typedef struct TU_ATTR_ALIGNED(4) {
|
|||||||
|
|
||||||
// clean/flush data cache: write cache -> memory.
|
// clean/flush data cache: write cache -> memory.
|
||||||
// Required before an DMA TX transfer to make sure data is in memory
|
// Required before an DMA TX transfer to make sure data is in memory
|
||||||
void dcd_dcache_clean(const void* addr, uint32_t data_size);
|
bool dcd_dcache_clean(const void* addr, uint32_t data_size);
|
||||||
|
|
||||||
// invalidate data cache: mark cache as invalid, next read will read from memory
|
// invalidate data cache: mark cache as invalid, next read will read from memory
|
||||||
// Required BOTH before and after an DMA RX transfer
|
// Required BOTH before and after an DMA RX transfer
|
||||||
void dcd_dcache_invalidate(const void* addr, uint32_t data_size);
|
bool dcd_dcache_invalidate(const void* addr, uint32_t data_size);
|
||||||
|
|
||||||
// clean and invalidate data cache
|
// clean and invalidate data cache
|
||||||
// Required before an DMA transfer where memory is both read/write by DMA
|
// Required before an DMA transfer where memory is both read/write by DMA
|
||||||
void dcd_dcache_clean_invalidate(const void* addr, uint32_t data_size);
|
bool dcd_dcache_clean_invalidate(const void* addr, uint32_t data_size);
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Controller API
|
// Controller API
|
||||||
|
@ -97,16 +97,19 @@ TU_ATTR_WEAK void dcd_disconnect(uint8_t rhport) {
|
|||||||
(void) rhport;
|
(void) rhport;
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_WEAK void dcd_dcache_clean(const void* addr, uint32_t data_size) {
|
TU_ATTR_WEAK bool dcd_dcache_clean(const void* addr, uint32_t data_size) {
|
||||||
(void) addr; (void) data_size;
|
(void) addr; (void) data_size;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_WEAK void dcd_dcache_invalidate(const void* addr, uint32_t data_size) {
|
TU_ATTR_WEAK bool dcd_dcache_invalidate(const void* addr, uint32_t data_size) {
|
||||||
(void) addr; (void) data_size;
|
(void) addr; (void) data_size;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_WEAK void dcd_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
|
TU_ATTR_WEAK bool dcd_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
|
||||||
(void) addr; (void) data_size;
|
(void) addr; (void) data_size;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
@ -34,43 +34,29 @@
|
|||||||
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT1XXX
|
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT1XXX
|
||||||
#include "ci_hs_imxrt.h"
|
#include "ci_hs_imxrt.h"
|
||||||
|
|
||||||
void dcd_dcache_clean(void const* addr, uint32_t data_size) {
|
bool dcd_dcache_clean(void const* addr, uint32_t data_size) {
|
||||||
imxrt_dcache_clean(addr, data_size);
|
return imxrt_dcache_clean(addr, data_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dcd_dcache_invalidate(void const* addr, uint32_t data_size) {
|
bool dcd_dcache_invalidate(void const* addr, uint32_t data_size) {
|
||||||
imxrt_dcache_invalidate(addr, data_size);
|
return imxrt_dcache_invalidate(addr, data_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
bool dcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
||||||
imxrt_dcache_clean_invalidate(addr, data_size);
|
return imxrt_dcache_clean_invalidate(addr, data_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
|
||||||
|
|
||||||
#if TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
|
|
||||||
#include "ci_hs_lpc18_43.h"
|
#include "ci_hs_lpc18_43.h"
|
||||||
|
|
||||||
#elif TU_CHECK_MCU(OPT_MCU_MCXN9)
|
#elif TU_CHECK_MCU(OPT_MCU_MCXN9)
|
||||||
// MCX N9 only port 1 use this controller
|
// MCX N9 only port 1 use this controller
|
||||||
#include "ci_hs_mcx.h"
|
#include "ci_hs_mcx.h"
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error "Unsupported MCUs"
|
#error "Unsupported MCUs"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TU_ATTR_WEAK void dcd_dcache_clean(void const* addr, uint32_t data_size) {
|
|
||||||
(void) addr; (void) data_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
TU_ATTR_WEAK void dcd_dcache_invalidate(void const* addr, uint32_t data_size) {
|
|
||||||
(void) addr; (void) data_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
TU_ATTR_WEAK void dcd_dcache_clean_invalidate(void const* addr, uint32_t data_size) {
|
|
||||||
(void) addr; (void) data_size;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// MACRO CONSTANT TYPEDEF
|
// MACRO CONSTANT TYPEDEF
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
@ -83,22 +83,19 @@ CFG_TUD_MEM_SECTION static struct {
|
|||||||
// DMA
|
// DMA
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
#if CFG_TUD_MEM_DCACHE_ENABLE
|
#if CFG_TUD_MEM_DCACHE_ENABLE
|
||||||
void dcd_dcache_clean(const void* addr, uint32_t data_size) {
|
bool dcd_dcache_clean(const void* addr, uint32_t data_size) {
|
||||||
if (addr && data_size) {
|
TU_VERIFY(addr && data_size);
|
||||||
dwc2_dcache_clean(addr, data_size);
|
return dwc2_dcache_clean(addr, data_size);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dcd_dcache_invalidate(const void* addr, uint32_t data_size) {
|
bool dcd_dcache_invalidate(const void* addr, uint32_t data_size) {
|
||||||
if (addr && data_size) {
|
TU_VERIFY(addr && data_size);
|
||||||
dwc2_dcache_invalidate(addr, data_size);
|
return dwc2_dcache_invalidate(addr, data_size);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dcd_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
|
bool dcd_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
|
||||||
if (addr && data_size) {
|
TU_VERIFY(addr && data_size);
|
||||||
dwc2_dcache_clean_invalidate(addr, data_size);
|
return dwc2_dcache_clean_invalidate(addr, data_size);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -130,22 +130,22 @@ TU_ATTR_ALWAYS_INLINE static inline uint32_t round_up_to_cache_line_size(uint32_
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_ALWAYS_INLINE static inline void dwc2_dcache_clean(const void* addr, uint32_t data_size) {
|
TU_ATTR_ALWAYS_INLINE static inline bool dwc2_dcache_clean(const void* addr, uint32_t data_size) {
|
||||||
const int flag = ESP_CACHE_MSYNC_FLAG_TYPE_DATA | ESP_CACHE_MSYNC_FLAG_DIR_C2M;
|
const int flag = ESP_CACHE_MSYNC_FLAG_TYPE_DATA | ESP_CACHE_MSYNC_FLAG_DIR_C2M;
|
||||||
data_size = round_up_to_cache_line_size(data_size);
|
data_size = round_up_to_cache_line_size(data_size);
|
||||||
assert(ESP_OK == esp_cache_msync((void*)addr, data_size, flag));
|
return ESP_OK == esp_cache_msync((void*)addr, data_size, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_ALWAYS_INLINE static inline void dwc2_dcache_invalidate(const void* addr, uint32_t data_size) {
|
TU_ATTR_ALWAYS_INLINE static inline bool dwc2_dcache_invalidate(const void* addr, uint32_t data_size) {
|
||||||
const int flag = ESP_CACHE_MSYNC_FLAG_TYPE_DATA | ESP_CACHE_MSYNC_FLAG_DIR_M2C;
|
const int flag = ESP_CACHE_MSYNC_FLAG_TYPE_DATA | ESP_CACHE_MSYNC_FLAG_DIR_M2C;
|
||||||
data_size = round_up_to_cache_line_size(data_size);
|
data_size = round_up_to_cache_line_size(data_size);
|
||||||
assert(ESP_OK == esp_cache_msync((void*)addr, data_size, flag));
|
return ESP_OK == esp_cache_msync((void*)addr, data_size, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_ALWAYS_INLINE static inline void dwc2_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
|
TU_ATTR_ALWAYS_INLINE static inline bool dwc2_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
|
||||||
const int flag = ESP_CACHE_MSYNC_FLAG_TYPE_DATA | ESP_CACHE_MSYNC_FLAG_DIR_C2M | ESP_CACHE_MSYNC_FLAG_DIR_M2C;
|
const int flag = ESP_CACHE_MSYNC_FLAG_TYPE_DATA | ESP_CACHE_MSYNC_FLAG_DIR_C2M | ESP_CACHE_MSYNC_FLAG_DIR_M2C;
|
||||||
data_size = round_up_to_cache_line_size(data_size);
|
data_size = round_up_to_cache_line_size(data_size);
|
||||||
assert(ESP_OK == esp_cache_msync((void*)addr, data_size, flag));
|
return ESP_OK == esp_cache_msync((void*)addr, data_size, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -397,6 +397,14 @@
|
|||||||
#define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4)
|
#define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef CFG_TUSB_MEM_DCACHE_LINE_SIZE
|
||||||
|
#ifndef CFG_TUSB_MEM_DCACHE_LINE_SIZE_DEFAULT
|
||||||
|
#define CFG_TUSB_MEM_DCACHE_LINE_SIZE_DEFAULT 32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CFG_TUSB_MEM_DCACHE_LINE_SIZE CFG_TUSB_MEM_DCACHE_LINE_SIZE_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
// OS selection
|
// OS selection
|
||||||
#ifndef CFG_TUSB_OS
|
#ifndef CFG_TUSB_OS
|
||||||
#define CFG_TUSB_OS OPT_OS_NONE
|
#define CFG_TUSB_OS OPT_OS_NONE
|
||||||
@ -433,11 +441,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CFG_TUD_MEM_DCACHE_LINE_SIZE
|
#ifndef CFG_TUD_MEM_DCACHE_LINE_SIZE
|
||||||
#ifndef CFG_TUD_MEM_DCACHE_LINE_SIZE_DEFAULT
|
#define CFG_TUD_MEM_DCACHE_LINE_SIZE CFG_TUSB_MEM_DCACHE_LINE_SIZE
|
||||||
#define CFG_TUD_MEM_DCACHE_LINE_SIZE_DEFAULT 32
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CFG_TUD_MEM_DCACHE_LINE_SIZE CFG_TUD_MEM_DCACHE_LINE_SIZE_DEFAULT
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CFG_TUD_ENDPOINT0_SIZE
|
#ifndef CFG_TUD_ENDPOINT0_SIZE
|
||||||
@ -556,11 +560,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CFG_TUH_MEM_DCACHE_LINE_SIZE
|
#ifndef CFG_TUH_MEM_DCACHE_LINE_SIZE
|
||||||
#ifndef CFG_TUH_MEM_DCACHE_LINE_SIZE_DEFAULT
|
#define CFG_TUH_MEM_DCACHE_LINE_SIZE CFG_TUSB_MEM_DCACHE_LINE_SIZE
|
||||||
#define CFG_TUH_MEM_DCACHE_LINE_SIZE_DEFAULT 32
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CFG_TUH_MEM_DCACHE_LINE_SIZE CFG_TUH_MEM_DCACHE_LINE_SIZE_DEFAULT
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//------------- CLASS -------------//
|
//------------- CLASS -------------//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user