soc: arm: nxp_imx: rt: Remove CONFIG_OCRAM_NOCACHE setting
Remove CONFIG_OCRAM_NOCACHE setting, as this is now possible to achieve using devicetree linker regions, and there is no point in having a specific Kconfig for one memory region on the RT series like this. Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
This commit is contained in:
parent
7e646b56a1
commit
c3dfc2220a
8 changed files with 3 additions and 93 deletions
|
@ -97,6 +97,8 @@ Boards & SoC Support
|
||||||
* i.MX RT SOCs no longer enable CONFIG_DEVICE_CONFIGURATION_DATA by default.
|
* i.MX RT SOCs no longer enable CONFIG_DEVICE_CONFIGURATION_DATA by default.
|
||||||
boards using external SDRAM should set CONFIG_DEVICE_CONFIGURATION_DATA
|
boards using external SDRAM should set CONFIG_DEVICE_CONFIGURATION_DATA
|
||||||
and CONFIG_NXP_IMX_EXTERNAL_SDRAM to enabled.
|
and CONFIG_NXP_IMX_EXTERNAL_SDRAM to enabled.
|
||||||
|
* i.MX RT SOCs no longer support CONFIG_OCRAM_NOCACHE, as this functionality
|
||||||
|
can be achieved using devicetree memory regions
|
||||||
|
|
||||||
* Added support for these ARC boards:
|
* Added support for these ARC boards:
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ zephyr_linker_sources_ifdef(CONFIG_NXP_IMX_RT_BOOT_HEADER
|
||||||
|
|
||||||
# Add custom mpu regions
|
# Add custom mpu regions
|
||||||
zephyr_sources(mpu_regions.c)
|
zephyr_sources(mpu_regions.c)
|
||||||
zephyr_linker_sources_ifdef(CONFIG_OCRAM_NOCACHE SECTIONS sections.ld)
|
|
||||||
|
|
||||||
zephyr_linker_section_configure(
|
zephyr_linker_section_configure(
|
||||||
SECTION .rom_start
|
SECTION .rom_start
|
||||||
|
|
|
@ -787,14 +787,6 @@ config CODE_OCRAM
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config OCRAM_NOCACHE
|
|
||||||
bool "Create noncacheable OCRAM region"
|
|
||||||
select CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS
|
|
||||||
select PLATFORM_SPECIFIC_INIT
|
|
||||||
help
|
|
||||||
Creates linker section and MPU region for OCRAM region with
|
|
||||||
noncacheable attribute. OCRAM memory is useful for fast DMA transfers.
|
|
||||||
|
|
||||||
config NXP_IMX_EXTERNAL_SDRAM
|
config NXP_IMX_EXTERNAL_SDRAM
|
||||||
bool "Allow access to external SDRAM region"
|
bool "Allow access to external SDRAM region"
|
||||||
help
|
help
|
||||||
|
|
|
@ -9,35 +9,20 @@
|
||||||
#include <zephyr/devicetree.h>
|
#include <zephyr/devicetree.h>
|
||||||
#include <zephyr/devicetree/memory-attr.h>
|
#include <zephyr/devicetree/memory-attr.h>
|
||||||
#include "../../common/cortex_m/arm_mpu_mem_cfg.h"
|
#include "../../common/cortex_m/arm_mpu_mem_cfg.h"
|
||||||
#define IS_CHOSEN_SRAM(x) (DT_DEP_ORD(DT_NODELABEL(x)) == DT_DEP_ORD(DT_CHOSEN(zephyr_sram)))
|
|
||||||
|
|
||||||
static const struct arm_mpu_region mpu_regions[] = {
|
static const struct arm_mpu_region mpu_regions[] = {
|
||||||
/* Region 0 */
|
/* Region 0 */
|
||||||
MPU_REGION_ENTRY("FLASH_0",
|
MPU_REGION_ENTRY("FLASH_0",
|
||||||
CONFIG_FLASH_BASE_ADDRESS,
|
CONFIG_FLASH_BASE_ADDRESS,
|
||||||
REGION_FLASH_ATTR(REGION_FLASH_SIZE)),
|
REGION_FLASH_ATTR(REGION_FLASH_SIZE)),
|
||||||
#if IS_CHOSEN_SRAM(ocram)
|
|
||||||
/* Mark SRAM as noncacheable */
|
|
||||||
/* Region 1 */
|
|
||||||
MPU_REGION_ENTRY("SRAM_0",
|
|
||||||
CONFIG_SRAM_BASE_ADDRESS,
|
|
||||||
REGION_RAM_NOCACHE_ATTR(REGION_SRAM_SIZE)),
|
|
||||||
|
|
||||||
#else
|
|
||||||
/* Region 1 */
|
/* Region 1 */
|
||||||
MPU_REGION_ENTRY("SRAM_0",
|
MPU_REGION_ENTRY("SRAM_0",
|
||||||
CONFIG_SRAM_BASE_ADDRESS,
|
CONFIG_SRAM_BASE_ADDRESS,
|
||||||
REGION_RAM_ATTR(REGION_SRAM_SIZE)),
|
REGION_RAM_ATTR(REGION_SRAM_SIZE)),
|
||||||
/* Region 2 - OCRAM. Noncacheable. */
|
|
||||||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(ocram), okay)
|
|
||||||
MPU_REGION_ENTRY("OCRAM",
|
|
||||||
DT_REG_ADDR(DT_NODELABEL(ocram)),
|
|
||||||
REGION_RAM_NOCACHE_ATTR(REGION_256K)),
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CONFIG_NXP_IMX_EXTERNAL_SDRAM
|
#ifndef CONFIG_NXP_IMX_EXTERNAL_SDRAM
|
||||||
/*
|
/*
|
||||||
* Region 3 - mark SDRAM0 as device type memory to prevent core
|
* Region 2 - mark SDRAM0 as device type memory to prevent core
|
||||||
* from executing speculative prefetches against this region when
|
* from executing speculative prefetches against this region when
|
||||||
* no SDRAM is present.
|
* no SDRAM is present.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2022 NXP
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <zephyr/linker/linker-tool.h>
|
|
||||||
|
|
||||||
#define IS_CHOSEN_SRAM(x) (DT_DEP_ORD(DT_NODELABEL(x)) == DT_DEP_ORD(DT_CHOSEN(zephyr_sram)))
|
|
||||||
|
|
||||||
#if (DT_REG_SIZE(DT_NODELABEL(ocram)) > 0) && !IS_CHOSEN_SRAM(ocram)
|
|
||||||
GROUP_START(OCRAM)
|
|
||||||
__ocram_start = .;
|
|
||||||
SECTION_PROLOGUE(.ocram_bss,(NOLOAD),SUBALIGN(4))
|
|
||||||
{
|
|
||||||
__ocram_bss_start = .;
|
|
||||||
*(.ocram_bss)
|
|
||||||
*(".ocram_bss.*")
|
|
||||||
__ocram_bss_end = .;
|
|
||||||
__ocram_end = .;
|
|
||||||
} GROUP_LINK_IN(OCRAM)
|
|
||||||
SECTION_PROLOGUE(.ocram_noinit,(NOLOAD),SUBALIGN(4))
|
|
||||||
{
|
|
||||||
__ocram_noinit_start = .;
|
|
||||||
*(.ocram_noinit)
|
|
||||||
*(".ocram_noinit.*")
|
|
||||||
__ocram_noinit_end = .;
|
|
||||||
} GROUP_LINK_IN(OCRAM)
|
|
||||||
SECTION_PROLOGUE(.ocram_data,,SUBALIGN(4))
|
|
||||||
{
|
|
||||||
__ocram_data_start = .;
|
|
||||||
*(.ocram_data)
|
|
||||||
*(".ocram_data.*")
|
|
||||||
__ocram_data_end = .;
|
|
||||||
} GROUP_LINK_IN(OCRAM AT> ROMABLE_REGION)
|
|
||||||
__ocram_end = .;
|
|
||||||
|
|
||||||
__ocram_data_load_start = LOADADDR(.ocram_data);
|
|
||||||
#endif
|
|
|
@ -26,19 +26,6 @@ void imxrt_audio_codec_pll_init(uint32_t clock_name, uint32_t clk_src,
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (DT_DEP_ORD(DT_NODELABEL(ocram)) != DT_DEP_ORD(DT_CHOSEN(zephyr_sram))) && \
|
|
||||||
CONFIG_OCRAM_NOCACHE
|
|
||||||
/* OCRAM addresses will be defined by linker */
|
|
||||||
extern char __ocram_start;
|
|
||||||
extern char __ocram_bss_start;
|
|
||||||
extern char __ocram_bss_end;
|
|
||||||
extern char __ocram_noinit_start;
|
|
||||||
extern char __ocram_noinit_end;
|
|
||||||
extern char __ocram_data_start;
|
|
||||||
extern char __ocram_data_end;
|
|
||||||
extern char __ocram_end;
|
|
||||||
extern char __ocram_data_load_start;
|
|
||||||
#endif
|
|
||||||
#if CONFIG_MIPI_DSI
|
#if CONFIG_MIPI_DSI
|
||||||
void imxrt_pre_init_display_interface(void);
|
void imxrt_pre_init_display_interface(void);
|
||||||
|
|
||||||
|
|
|
@ -332,14 +332,6 @@ static int imxrt_init(void)
|
||||||
#ifdef CONFIG_PLATFORM_SPECIFIC_INIT
|
#ifdef CONFIG_PLATFORM_SPECIFIC_INIT
|
||||||
void z_arm_platform_init(void)
|
void z_arm_platform_init(void)
|
||||||
{
|
{
|
||||||
#if (DT_DEP_ORD(DT_NODELABEL(ocram)) != DT_DEP_ORD(DT_CHOSEN(zephyr_sram))) && \
|
|
||||||
CONFIG_OCRAM_NOCACHE
|
|
||||||
/* Copy data from flash to OCRAM */
|
|
||||||
memcpy(&__ocram_data_start, &__ocram_data_load_start,
|
|
||||||
(&__ocram_data_end - &__ocram_data_start));
|
|
||||||
/* Zero BSS region */
|
|
||||||
memset(&__ocram_bss_start, 0, (&__ocram_bss_end - &__ocram_bss_start));
|
|
||||||
#endif
|
|
||||||
/* Call CMSIS SystemInit */
|
/* Call CMSIS SystemInit */
|
||||||
SystemInit();
|
SystemInit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -682,14 +682,6 @@ static int imxrt_init(void)
|
||||||
#ifdef CONFIG_PLATFORM_SPECIFIC_INIT
|
#ifdef CONFIG_PLATFORM_SPECIFIC_INIT
|
||||||
void z_arm_platform_init(void)
|
void z_arm_platform_init(void)
|
||||||
{
|
{
|
||||||
#if (DT_DEP_ORD(DT_NODELABEL(ocram)) != DT_DEP_ORD(DT_CHOSEN(zephyr_sram))) && \
|
|
||||||
CONFIG_OCRAM_NOCACHE
|
|
||||||
/* Copy data from flash to OCRAM */
|
|
||||||
memcpy(&__ocram_data_start, &__ocram_data_load_start,
|
|
||||||
(&__ocram_data_end - &__ocram_data_start));
|
|
||||||
/* Zero BSS region */
|
|
||||||
memset(&__ocram_bss_start, 0, (&__ocram_bss_end - &__ocram_bss_start));
|
|
||||||
#endif
|
|
||||||
SystemInit();
|
SystemInit();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue