From 111e909bbaece50cd45f0db31be48799975e9ae3 Mon Sep 17 00:00:00 2001 From: Lucien Zhao Date: Tue, 27 Aug 2024 23:18:01 +0800 Subject: [PATCH] boards: nxp: mimxrt1180_evk: add flexspi1 support USE_HYPERRAM macro defined shouldn't be placed under CONFIG_BOOT_FLEXSPI_NOR. Add flexspi1 pinmux pinctrl and flash partitions Add flash partitions and correct flash parameter. This commit was tested with samples: flash_shell on cm33/cm7 cores Signed-off-by: Lucien Zhao --- boards/nxp/mimxrt1180_evk/CMakeLists.txt | 7 ++-- boards/nxp/mimxrt1180_evk/doc/index.rst | 2 + .../mimxrt1180_evk-pinctrl.dtsi | 14 +++++++ boards/nxp/mimxrt1180_evk/mimxrt1180_evk.dtsi | 39 +++++++++++++++++-- 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/boards/nxp/mimxrt1180_evk/CMakeLists.txt b/boards/nxp/mimxrt1180_evk/CMakeLists.txt index beb3018567546d9..3123bb111dd2772 100644 --- a/boards/nxp/mimxrt1180_evk/CMakeLists.txt +++ b/boards/nxp/mimxrt1180_evk/CMakeLists.txt @@ -20,11 +20,12 @@ if(CONFIG_NXP_IMXRT_BOOT_HEADER) # used on your custom board. zephyr_compile_definitions(XIP_EXTERNAL_FLASH=1) zephyr_compile_definitions(XIP_BOOT_HEADER_ENABLE=1) - if(CONFIG_EXTERNAL_MEM_CONFIG_DATA AND CONFIG_NXP_IMX_EXTERNAL_HYPERRAM) - zephyr_compile_definitions(USE_HYPERRAM) - endif() zephyr_library_sources(${RT1180_BOARD_DIR}/xip/evkmimxrt1180_flexspi_nor_config.c) zephyr_library_include_directories(${RT1180_BOARD_DIR}/xip) zephyr_library_include_directories(${RT1180_BOARD_DIR}) endif() + if(CONFIG_EXTERNAL_MEM_CONFIG_DATA AND CONFIG_NXP_IMX_EXTERNAL_HYPERRAM) + zephyr_compile_definitions(USE_HYPERRAM) + zephyr_library_sources(${RT1180_BOARD_DIR}/xip/evkmimxrt1180_flexspi_nor_config.c) + endif() endif() diff --git a/boards/nxp/mimxrt1180_evk/doc/index.rst b/boards/nxp/mimxrt1180_evk/doc/index.rst index cb283aab36e1415..02013c45ae57693 100644 --- a/boards/nxp/mimxrt1180_evk/doc/index.rst +++ b/boards/nxp/mimxrt1180_evk/doc/index.rst @@ -107,6 +107,8 @@ configuration supports the following hardware features: +-----------+------------+-------------------------------------+ | I2C | on-chip | i2c | +-----------+------------+-------------------------------------+ +| FLEXSPI | on-chip | flash programming | ++-----------+------------+-------------------------------------+ The default configuration can be found in the defconfig file: :zephyr_file:`boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm33_defconfig` diff --git a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk-pinctrl.dtsi b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk-pinctrl.dtsi index 5b2eba4f8c18b48..e05a80da84ce7cf 100644 --- a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk-pinctrl.dtsi +++ b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk-pinctrl.dtsi @@ -63,4 +63,18 @@ input-enable; }; }; + + pinmux_flexspi1: pinmux_flexspi1 { + group0 { + pinmux = <&iomuxc_gpio_sd_b2_05_flexspi1_b_dqs>, + <&iomuxc_gpio_sd_b2_06_flexspi1_b_ss0_b>, + <&iomuxc_gpio_sd_b2_07_flexspi1_b_sclk>, + <&iomuxc_gpio_sd_b2_08_flexspi1_b_data0>, + <&iomuxc_gpio_sd_b2_09_flexspi1_b_data1>, + <&iomuxc_gpio_sd_b2_10_flexspi1_b_data2>, + <&iomuxc_gpio_sd_b2_11_flexspi1_b_data3>; + bias-pull-down; + input-enable; + }; + }; }; diff --git a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk.dtsi b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk.dtsi index a6b51df82398ed1..05a34b456e728c7 100644 --- a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk.dtsi +++ b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk.dtsi @@ -55,20 +55,51 @@ status = "okay"; }; -&flexspi1 { +&flexspi { + pinctrl-0 = <&pinmux_flexspi1>; + pinctrl-names = "default"; +}; + +&flexspi { status = "okay"; ahb-prefetch; ahb-read-addr-opt; rx-clock-source = <1>; w25q128jw: w25q128jw@0 { compatible = "nxp,imx-flexspi-nor"; - size = <134217728>; - reg = <0>; + size = ; + reg = <2>; spi-max-frequency = <133000000>; status = "okay"; - jedec-id = [ef 80 18]; + jedec-id = [ef 60 18]; erase-block-size = <4096>; write-block-size = <1>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x00000000 DT_SIZE_K(128)>; + }; + /* The MCUBoot swap-move algorithm uses the last 3 sectors + * of the primary slot0 for swap status and move. + */ + slot0_partition: partition@20000 { + label = "image-0"; + reg = <0x00020000 (DT_SIZE_M(7) + DT_SIZE_K(12))>; + }; + slot1_partition: partition@723000 { + label = "image-1"; + reg = <0x00723000 DT_SIZE_M(7)>; + }; + storage_partition: partition@E23000 { + label = "storage"; + reg = <0x00E23000 (DT_SIZE_M(2) - DT_SIZE_K(140))>; + }; + }; }; };