soc: atmel: sam: Fix cache management
The current platform initialization do not take in consideration cache management for historic reasons. This fixes any miss configuration and allow users to enable/disable caches at board definition. The default value is cache disabled and the below examples are for SAMV71 which have both I/D Cache available: I Cache only: CONFIG_CACHE_MANAGEMENT=y CONFIG_DCACHE=n D Cache only: CONFIG_CACHE_MANAGEMENT=y CONFIG_ICACHE=n I/D Cache disabled: CONFIG_ICACHE=n CONFIG_DCACHE=n I/D Cache Enabled: CONFIG_CACHE_MANAGEMENT=y Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
This commit is contained in:
parent
45ad244212
commit
ea24dd40eb
8 changed files with 20 additions and 12 deletions
|
@ -9,6 +9,7 @@ CONFIG_BOARD_SAM_E70_XPLAINED=y
|
|||
CONFIG_BUILD_OUTPUT_HEX=y
|
||||
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_CACHE_MANAGEMENT=y
|
||||
CONFIG_HW_STACK_PROTECTION=y
|
||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_BOARD_SAM_E70_XPLAINED=y
|
|||
CONFIG_BUILD_OUTPUT_HEX=y
|
||||
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_CACHE_MANAGEMENT=y
|
||||
CONFIG_HW_STACK_PROTECTION=y
|
||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_BOARD_SAM_V71_XULT=y
|
|||
CONFIG_BUILD_OUTPUT_HEX=y
|
||||
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_CACHE_MANAGEMENT=y
|
||||
CONFIG_HW_STACK_PROTECTION=y
|
||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_BOARD_SAM_V71_XULT=y
|
|||
CONFIG_BUILD_OUTPUT_HEX=y
|
||||
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_CACHE_MANAGEMENT=y
|
||||
CONFIG_HW_STACK_PROTECTION=y
|
||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||
|
||||
|
|
|
@ -38,7 +38,4 @@ config NUM_IRQS
|
|||
default 74 if SOC_ATMEL_SAME70_REVB
|
||||
default 71
|
||||
|
||||
config CACHE_MANAGEMENT
|
||||
default y
|
||||
|
||||
endif # SOC_SERIES_SAME70
|
||||
|
|
|
@ -226,10 +226,15 @@ static ALWAYS_INLINE void clock_init(void)
|
|||
|
||||
void z_arm_platform_init(void)
|
||||
{
|
||||
SCB_EnableICache();
|
||||
|
||||
if (!(SCB->CCR & SCB_CCR_DC_Msk)) {
|
||||
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_ICACHE)) {
|
||||
SCB_EnableICache();
|
||||
} else {
|
||||
SCB_DisableICache();
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_DCACHE)) {
|
||||
SCB_EnableDCache();
|
||||
} else {
|
||||
SCB_DisableDCache();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -38,7 +38,4 @@ config NUM_IRQS
|
|||
default 74 if SOC_ATMEL_SAMV71_REVB
|
||||
default 71
|
||||
|
||||
config CACHE_MANAGEMENT
|
||||
default y
|
||||
|
||||
endif # SOC_SERIES_SAMV71
|
||||
|
|
|
@ -226,10 +226,15 @@ static ALWAYS_INLINE void clock_init(void)
|
|||
|
||||
void z_arm_platform_init(void)
|
||||
{
|
||||
SCB_EnableICache();
|
||||
|
||||
if (!(SCB->CCR & SCB_CCR_DC_Msk)) {
|
||||
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_ICACHE)) {
|
||||
SCB_EnableICache();
|
||||
} else {
|
||||
SCB_DisableICache();
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_DCACHE)) {
|
||||
SCB_EnableDCache();
|
||||
} else {
|
||||
SCB_DisableDCache();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue