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_BUILD_OUTPUT_HEX=y
|
||||||
|
|
||||||
CONFIG_ARM_MPU=y
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_CACHE_MANAGEMENT=y
|
||||||
CONFIG_HW_STACK_PROTECTION=y
|
CONFIG_HW_STACK_PROTECTION=y
|
||||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_BOARD_SAM_E70_XPLAINED=y
|
||||||
CONFIG_BUILD_OUTPUT_HEX=y
|
CONFIG_BUILD_OUTPUT_HEX=y
|
||||||
|
|
||||||
CONFIG_ARM_MPU=y
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_CACHE_MANAGEMENT=y
|
||||||
CONFIG_HW_STACK_PROTECTION=y
|
CONFIG_HW_STACK_PROTECTION=y
|
||||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_BOARD_SAM_V71_XULT=y
|
||||||
CONFIG_BUILD_OUTPUT_HEX=y
|
CONFIG_BUILD_OUTPUT_HEX=y
|
||||||
|
|
||||||
CONFIG_ARM_MPU=y
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_CACHE_MANAGEMENT=y
|
||||||
CONFIG_HW_STACK_PROTECTION=y
|
CONFIG_HW_STACK_PROTECTION=y
|
||||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_BOARD_SAM_V71_XULT=y
|
||||||
CONFIG_BUILD_OUTPUT_HEX=y
|
CONFIG_BUILD_OUTPUT_HEX=y
|
||||||
|
|
||||||
CONFIG_ARM_MPU=y
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_CACHE_MANAGEMENT=y
|
||||||
CONFIG_HW_STACK_PROTECTION=y
|
CONFIG_HW_STACK_PROTECTION=y
|
||||||
CONFIG_WDT_DISABLE_AT_BOOT=y
|
CONFIG_WDT_DISABLE_AT_BOOT=y
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,4 @@ config NUM_IRQS
|
||||||
default 74 if SOC_ATMEL_SAME70_REVB
|
default 74 if SOC_ATMEL_SAME70_REVB
|
||||||
default 71
|
default 71
|
||||||
|
|
||||||
config CACHE_MANAGEMENT
|
|
||||||
default y
|
|
||||||
|
|
||||||
endif # SOC_SERIES_SAME70
|
endif # SOC_SERIES_SAME70
|
||||||
|
|
|
@ -226,10 +226,15 @@ static ALWAYS_INLINE void clock_init(void)
|
||||||
|
|
||||||
void z_arm_platform_init(void)
|
void z_arm_platform_init(void)
|
||||||
{
|
{
|
||||||
SCB_EnableICache();
|
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_ICACHE)) {
|
||||||
|
SCB_EnableICache();
|
||||||
if (!(SCB->CCR & SCB_CCR_DC_Msk)) {
|
} else {
|
||||||
|
SCB_DisableICache();
|
||||||
|
}
|
||||||
|
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_DCACHE)) {
|
||||||
SCB_EnableDCache();
|
SCB_EnableDCache();
|
||||||
|
} else {
|
||||||
|
SCB_DisableDCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -38,7 +38,4 @@ config NUM_IRQS
|
||||||
default 74 if SOC_ATMEL_SAMV71_REVB
|
default 74 if SOC_ATMEL_SAMV71_REVB
|
||||||
default 71
|
default 71
|
||||||
|
|
||||||
config CACHE_MANAGEMENT
|
|
||||||
default y
|
|
||||||
|
|
||||||
endif # SOC_SERIES_SAMV71
|
endif # SOC_SERIES_SAMV71
|
||||||
|
|
|
@ -226,10 +226,15 @@ static ALWAYS_INLINE void clock_init(void)
|
||||||
|
|
||||||
void z_arm_platform_init(void)
|
void z_arm_platform_init(void)
|
||||||
{
|
{
|
||||||
SCB_EnableICache();
|
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_ICACHE)) {
|
||||||
|
SCB_EnableICache();
|
||||||
if (!(SCB->CCR & SCB_CCR_DC_Msk)) {
|
} else {
|
||||||
|
SCB_DisableICache();
|
||||||
|
}
|
||||||
|
if (IS_ENABLED(CONFIG_CACHE_MANAGEMENT) && IS_ENABLED(CONFIG_DCACHE)) {
|
||||||
SCB_EnableDCache();
|
SCB_EnableDCache();
|
||||||
|
} else {
|
||||||
|
SCB_DisableDCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue