[PATCH v4 3/8] imxrt1050: synchronise device tree with linux
Giulio Benetti
giulio.benetti at benettiengineering.com
Mon Nov 7 16:05:24 CET 2022
Hi Marcel,
On 05/11/22 12:30, Marcel Ziswiler wrote:
> From: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>
> Synchronise device tree with linux v6.1-rc3.
>
> Note: Nowadays, the intent is for them regular device trees to just be
> synchronised from them Linux kernel device trees and any and all U-Boot
> specific changes need to go into the -u-boot.dtsi device tree include
> files which BTW get included automatically by the U-Boot build system.
>
> Signed-off-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>
> ---
>
> Changes in v4:
> - Use imxrt1050-evk-u-boot.dtsi as provided/tested by Jesse.
> - Explain intent in commit message as pointed out by Giulio.
> - Re-synched with v6.1-rc3.
>
> Changes in v3:
> - Incorporate feedback from Jesse.
>
> Changes in v2:
> - imxrt1050: Re-added DDR timings aka semc node as pointed out by Fabio. Thanks!
>
> arch/arm/dts/imxrt1050-evk-u-boot.dtsi | 174 +++++++++++--
> arch/arm/dts/imxrt1050-evk.dts | 257 +++-----------------
> arch/arm/dts/imxrt1050-pinfunc.h | 2 +-
> arch/arm/dts/imxrt1050.dtsi | 168 ++++++-------
> include/dt-bindings/clock/imxrt1050-clock.h | 9 +-
> 5 files changed, 263 insertions(+), 347 deletions(-)
>
> diff --git a/arch/arm/dts/imxrt1050-evk-u-boot.dtsi b/arch/arm/dts/imxrt1050-evk-u-boot.dtsi
> index 617cece448..d6eba12576 100644
> --- a/arch/arm/dts/imxrt1050-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imxrt1050-evk-u-boot.dtsi
> @@ -4,9 +4,13 @@
> * Author(s): Giulio Benetti <giulio.benetti at benettiengineering.com>
> */
>
> +#include <dt-bindings/memory/imxrt-sdram.h>
> +#include "imxrt1050-pinfunc.h"
> +
> / {
> chosen {
> u-boot,dm-spl;
> + tick-timer = &gpt;
> };
>
> clocks {
> @@ -15,6 +19,53 @@
>
> soc {
> u-boot,dm-spl;
> + semc: semc at 402f0000 {
> + compatible = "fsl,imxrt-semc";
> + reg = <0x402f0000 0x4000>;
> + clocks = <&clks IMXRT1050_CLK_SEMC>;
> + pinctrl-0 = <&pinctrl_semc>;
> + pinctrl-names = "default";
> + status = "okay";
> + };
> + };
> +};
> +
> +&semc {
> + u-boot,dm-spl;
> + /*
> + * Memory configuration from sdram datasheet IS42S16160J-6BLI
> + */
> + fsl,sdram-mux = /bits/ 8 <MUX_A8_SDRAM_A8
> + MUX_CSX0_SDRAM_CS1
> + 0
> + 0
> + 0
> + 0>;
> + fsl,sdram-control = /bits/ 8 <MEM_WIDTH_16BITS
> + BL_8
> + COL_9BITS
> + CL_3>;
> + fsl,sdram-timing = /bits/ 8 <0x2
> + 0x2
> + 0x9
> + 0x1
> + 0x5
> + 0x6
> +
> + 0x20
> + 0x09
> + 0x01
> + 0x00
> +
> + 0x04
> + 0x0A
> + 0x21
> + 0x50>;
> +
> + bank1: bank at 0 {
> + fsl,base-address = <0x80000000>;
> + fsl,memory-size = <MEM_SIZE_32M>;
> + u-boot,dm-spl;
> };
> };
>
> @@ -31,60 +82,143 @@
> };
>
> &gpio1 {
> + compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> u-boot,dm-spl;
> };
>
> &gpio2 {
> + compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> u-boot,dm-spl;
> };
>
> &gpio3 {
> + compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> u-boot,dm-spl;
> };
>
> &gpio4 {
> + compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> u-boot,dm-spl;
> };
>
> &gpio5 {
> + compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> u-boot,dm-spl;
> };
>
> -&gpt1 {
> +&gpt {
> + clocks = <&osc>;
> + compatible = "fsl,imxrt-gpt";
> + status = "okay";
> u-boot,dm-spl;
> };
>
> &lpuart1 { /* console */
> + compatible = "fsl,imxrt-lpuart";
As Jesse pointed me privately here you need to add:
clock-names = "per";
to be compatible with lpuart u-boot driver.
With that corrected it boots correctly.
But you also need to re-add the lcdif and usb* nodes here in
-u-boot.dtsi file because lcdif and usb are supported in u-boot but
still not in Linux.
Best regards
--
Giulio Benetti
CEO/CTO at Benetti Engineering sas
> u-boot,dm-spl;
> };
>
> -&semc {
> +&iomuxc {
> u-boot,dm-spl;
> -
> - bank1: bank at 0 {
> + compatible = "fsl,imxrt-iomuxc";
> + pinctrl-0 = <&pinctrl_lpuart1>;
> +
> + pinctrl_semc: semcgrp {
> + fsl,pins = <
> + MXRT1050_IOMUXC_GPIO_EMC_00_SEMC_DA00
> + 0xf1 /* SEMC_D0 */
> + MXRT1050_IOMUXC_GPIO_EMC_01_SEMC_DA01
> + 0xf1 /* SEMC_D1 */
> + MXRT1050_IOMUXC_GPIO_EMC_02_SEMC_DA02
> + 0xf1 /* SEMC_D2 */
> + MXRT1050_IOMUXC_GPIO_EMC_03_SEMC_DA03
> + 0xf1 /* SEMC_D3 */
> + MXRT1050_IOMUXC_GPIO_EMC_04_SEMC_DA04
> + 0xf1 /* SEMC_D4 */
> + MXRT1050_IOMUXC_GPIO_EMC_05_SEMC_DA05
> + 0xf1 /* SEMC_D5 */
> + MXRT1050_IOMUXC_GPIO_EMC_06_SEMC_DA06
> + 0xf1 /* SEMC_D6 */
> + MXRT1050_IOMUXC_GPIO_EMC_07_SEMC_DA07
> + 0xf1 /* SEMC_D7 */
> + MXRT1050_IOMUXC_GPIO_EMC_08_SEMC_DM00
> + 0xf1 /* SEMC_DM0 */
> + MXRT1050_IOMUXC_GPIO_EMC_09_SEMC_ADDR00
> + 0xf1 /* SEMC_A0 */
> + MXRT1050_IOMUXC_GPIO_EMC_10_SEMC_ADDR01
> + 0xf1 /* SEMC_A1 */
> + MXRT1050_IOMUXC_GPIO_EMC_11_SEMC_ADDR02
> + 0xf1 /* SEMC_A2 */
> + MXRT1050_IOMUXC_GPIO_EMC_12_SEMC_ADDR03
> + 0xf1 /* SEMC_A3 */
> + MXRT1050_IOMUXC_GPIO_EMC_13_SEMC_ADDR04
> + 0xf1 /* SEMC_A4 */
> + MXRT1050_IOMUXC_GPIO_EMC_14_SEMC_ADDR05
> + 0xf1 /* SEMC_A5 */
> + MXRT1050_IOMUXC_GPIO_EMC_15_SEMC_ADDR06
> + 0xf1 /* SEMC_A6 */
> + MXRT1050_IOMUXC_GPIO_EMC_16_SEMC_ADDR07
> + 0xf1 /* SEMC_A7 */
> + MXRT1050_IOMUXC_GPIO_EMC_17_SEMC_ADDR08
> + 0xf1 /* SEMC_A8 */
> + MXRT1050_IOMUXC_GPIO_EMC_18_SEMC_ADDR09
> + 0xf1 /* SEMC_A9 */
> + MXRT1050_IOMUXC_GPIO_EMC_19_SEMC_ADDR11
> + 0xf1 /* SEMC_A11 */
> + MXRT1050_IOMUXC_GPIO_EMC_20_SEMC_ADDR12
> + 0xf1 /* SEMC_A12 */
> + MXRT1050_IOMUXC_GPIO_EMC_21_SEMC_BA0
> + 0xf1 /* SEMC_BA0 */
> + MXRT1050_IOMUXC_GPIO_EMC_22_SEMC_BA1
> + 0xf1 /* SEMC_BA1 */
> + MXRT1050_IOMUXC_GPIO_EMC_23_SEMC_ADDR10
> + 0xf1 /* SEMC_A10 */
> + MXRT1050_IOMUXC_GPIO_EMC_24_SEMC_CAS
> + 0xf1 /* SEMC_CAS */
> + MXRT1050_IOMUXC_GPIO_EMC_25_SEMC_RAS
> + 0xf1 /* SEMC_RAS */
> + MXRT1050_IOMUXC_GPIO_EMC_26_SEMC_CLK
> + 0xf1 /* SEMC_CLK */
> + MXRT1050_IOMUXC_GPIO_EMC_27_SEMC_CKE
> + 0xf1 /* SEMC_CKE */
> + MXRT1050_IOMUXC_GPIO_EMC_28_SEMC_WE
> + 0xf1 /* SEMC_WE */
> + MXRT1050_IOMUXC_GPIO_EMC_29_SEMC_CS0
> + 0xf1 /* SEMC_CS0 */
> + MXRT1050_IOMUXC_GPIO_EMC_30_SEMC_DA08
> + 0xf1 /* SEMC_D8 */
> + MXRT1050_IOMUXC_GPIO_EMC_31_SEMC_DA09
> + 0xf1 /* SEMC_D9 */
> + MXRT1050_IOMUXC_GPIO_EMC_32_SEMC_DA10
> + 0xf1 /* SEMC_D10 */
> + MXRT1050_IOMUXC_GPIO_EMC_33_SEMC_DA11
> + 0xf1 /* SEMC_D11 */
> + MXRT1050_IOMUXC_GPIO_EMC_34_SEMC_DA12
> + 0xf1 /* SEMC_D12 */
> + MXRT1050_IOMUXC_GPIO_EMC_35_SEMC_DA13
> + 0xf1 /* SEMC_D13 */
> + MXRT1050_IOMUXC_GPIO_EMC_36_SEMC_DA14
> + 0xf1 /* SEMC_D14 */
> + MXRT1050_IOMUXC_GPIO_EMC_37_SEMC_DA15
> + 0xf1 /* SEMC_D15 */
> + MXRT1050_IOMUXC_GPIO_EMC_38_SEMC_DM01
> + 0xf1 /* SEMC_DM1 */
> + MXRT1050_IOMUXC_GPIO_EMC_39_SEMC_DQS
> + (IMX_PAD_SION | 0xf1) /* SEMC_DQS */
> + >;
> u-boot,dm-spl;
> };
> -};
> -
> -&iomuxc {
> - u-boot,dm-spl;
>
> - imxrt1050-evk {
> + pinctrl_lpuart1: lpuart1grp {
> u-boot,dm-spl;
> - pinctrl_lpuart1: lpuart1grp {
> - u-boot,dm-spl;
> - };
> -
> - pinctrl_semc: semcgrp {
> - u-boot,dm-spl;
> - };
> + };
>
> - pinctrl_usdhc0: usdhc0grp {
> - u-boot,dm-spl;
> - };
> + pinctrl_usdhc0: usdhc0grp {
> + u-boot,dm-spl;
> };
> -};
> + };
>
> &usdhc1 {
> + compatible = "fsl,imxrt-usdhc";
> u-boot,dm-spl;
> };
> diff --git a/arch/arm/dts/imxrt1050-evk.dts b/arch/arm/dts/imxrt1050-evk.dts
> index fb2da3adfc..6a9c10decf 100644
> --- a/arch/arm/dts/imxrt1050-evk.dts
> +++ b/arch/arm/dts/imxrt1050-evk.dts
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> /*
> * Copyright (C) 2019
> * Author(s): Giulio Benetti <giulio.benetti at benettiengineering.com>
> @@ -6,7 +6,6 @@
>
> /dts-v1/;
> #include "imxrt1050.dtsi"
> -#include "imxrt1050-evk-u-boot.dtsi"
> #include "imxrt1050-pinfunc.h"
>
> / {
> @@ -14,210 +13,52 @@
> compatible = "fsl,imxrt1050-evk", "fsl,imxrt1050";
>
> chosen {
> - bootargs = "root=/dev/ram";
> - stdout-path = "serial0:115200n8";
> - tick-timer = &gpt1;
> + stdout-path = &lpuart1;
> };
>
> - memory {
> + aliases {
> + gpio0 = &gpio1;
> + gpio1 = &gpio2;
> + gpio2 = &gpio3;
> + gpio3 = &gpio4;
> + gpio4 = &gpio5;
> + mmc0 = &usdhc1;
> + serial0 = &lpuart1;
> + };
> +
> + memory at 80000000 {
> device_type = "memory";
> reg = <0x80000000 0x2000000>;
> };
> };
>
> -&lpuart1 { /* console */
> +&lpuart1 {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_lpuart1>;
> status = "okay";
> };
>
> -&semc {
> - /*
> - * Memory configuration from sdram datasheet IS42S16160J-6BLI
> - */
> - fsl,sdram-mux = /bits/ 8 <MUX_A8_SDRAM_A8
> - MUX_CSX0_SDRAM_CS1
> - 0
> - 0
> - 0
> - 0>;
> - fsl,sdram-control = /bits/ 8 <MEM_WIDTH_16BITS
> - BL_8
> - COL_9BITS
> - CL_3>;
> - fsl,sdram-timing = /bits/ 8 <0x2
> - 0x2
> - 0x9
> - 0x1
> - 0x5
> - 0x6
> -
> - 0x20
> - 0x09
> - 0x01
> - 0x00
> -
> - 0x04
> - 0x0A
> - 0x21
> - 0x50>;
> -
> - bank1: bank at 0 {
> - fsl,base-address = <0x80000000>;
> - fsl,memory-size = <MEM_SIZE_32M>;
> - };
> -};
> -
> &iomuxc {
> pinctrl-names = "default";
> - pinctrl-0 = <&pinctrl_lpuart1>;
> -
> - imxrt1050-evk {
> - pinctrl_lpuart1: lpuart1grp {
> - fsl,pins = <
> - MXRT1050_IOMUXC_GPIO_AD_B0_12_LPUART1_TXD
> - 0xf1
> - MXRT1050_IOMUXC_GPIO_AD_B0_13_LPUART1_RXD
> - 0xf1
> - >;
> - };
> -
> - pinctrl_semc: semcgrp {
> - fsl,pins = <
> - MXRT1050_IOMUXC_GPIO_EMC_00_SEMC_DA00
> - 0xf1 /* SEMC_D0 */
> - MXRT1050_IOMUXC_GPIO_EMC_01_SEMC_DA01
> - 0xf1 /* SEMC_D1 */
> - MXRT1050_IOMUXC_GPIO_EMC_02_SEMC_DA02
> - 0xf1 /* SEMC_D2 */
> - MXRT1050_IOMUXC_GPIO_EMC_03_SEMC_DA03
> - 0xf1 /* SEMC_D3 */
> - MXRT1050_IOMUXC_GPIO_EMC_04_SEMC_DA04
> - 0xf1 /* SEMC_D4 */
> - MXRT1050_IOMUXC_GPIO_EMC_05_SEMC_DA05
> - 0xf1 /* SEMC_D5 */
> - MXRT1050_IOMUXC_GPIO_EMC_06_SEMC_DA06
> - 0xf1 /* SEMC_D6 */
> - MXRT1050_IOMUXC_GPIO_EMC_07_SEMC_DA07
> - 0xf1 /* SEMC_D7 */
> - MXRT1050_IOMUXC_GPIO_EMC_08_SEMC_DM00
> - 0xf1 /* SEMC_DM0 */
> - MXRT1050_IOMUXC_GPIO_EMC_09_SEMC_ADDR00
> - 0xf1 /* SEMC_A0 */
> - MXRT1050_IOMUXC_GPIO_EMC_10_SEMC_ADDR01
> - 0xf1 /* SEMC_A1 */
> - MXRT1050_IOMUXC_GPIO_EMC_11_SEMC_ADDR02
> - 0xf1 /* SEMC_A2 */
> - MXRT1050_IOMUXC_GPIO_EMC_12_SEMC_ADDR03
> - 0xf1 /* SEMC_A3 */
> - MXRT1050_IOMUXC_GPIO_EMC_13_SEMC_ADDR04
> - 0xf1 /* SEMC_A4 */
> - MXRT1050_IOMUXC_GPIO_EMC_14_SEMC_ADDR05
> - 0xf1 /* SEMC_A5 */
> - MXRT1050_IOMUXC_GPIO_EMC_15_SEMC_ADDR06
> - 0xf1 /* SEMC_A6 */
> - MXRT1050_IOMUXC_GPIO_EMC_16_SEMC_ADDR07
> - 0xf1 /* SEMC_A7 */
> - MXRT1050_IOMUXC_GPIO_EMC_17_SEMC_ADDR08
> - 0xf1 /* SEMC_A8 */
> - MXRT1050_IOMUXC_GPIO_EMC_18_SEMC_ADDR09
> - 0xf1 /* SEMC_A9 */
> - MXRT1050_IOMUXC_GPIO_EMC_19_SEMC_ADDR11
> - 0xf1 /* SEMC_A11 */
> - MXRT1050_IOMUXC_GPIO_EMC_20_SEMC_ADDR12
> - 0xf1 /* SEMC_A12 */
> - MXRT1050_IOMUXC_GPIO_EMC_21_SEMC_BA0
> - 0xf1 /* SEMC_BA0 */
> - MXRT1050_IOMUXC_GPIO_EMC_22_SEMC_BA1
> - 0xf1 /* SEMC_BA1 */
> - MXRT1050_IOMUXC_GPIO_EMC_23_SEMC_ADDR10
> - 0xf1 /* SEMC_A10 */
> - MXRT1050_IOMUXC_GPIO_EMC_24_SEMC_CAS
> - 0xf1 /* SEMC_CAS */
> - MXRT1050_IOMUXC_GPIO_EMC_25_SEMC_RAS
> - 0xf1 /* SEMC_RAS */
> - MXRT1050_IOMUXC_GPIO_EMC_26_SEMC_CLK
> - 0xf1 /* SEMC_CLK */
> - MXRT1050_IOMUXC_GPIO_EMC_27_SEMC_CKE
> - 0xf1 /* SEMC_CKE */
> - MXRT1050_IOMUXC_GPIO_EMC_28_SEMC_WE
> - 0xf1 /* SEMC_WE */
> - MXRT1050_IOMUXC_GPIO_EMC_29_SEMC_CS0
> - 0xf1 /* SEMC_CS0 */
> - MXRT1050_IOMUXC_GPIO_EMC_30_SEMC_DA08
> - 0xf1 /* SEMC_D8 */
> - MXRT1050_IOMUXC_GPIO_EMC_31_SEMC_DA09
> - 0xf1 /* SEMC_D9 */
> - MXRT1050_IOMUXC_GPIO_EMC_32_SEMC_DA10
> - 0xf1 /* SEMC_D10 */
> - MXRT1050_IOMUXC_GPIO_EMC_33_SEMC_DA11
> - 0xf1 /* SEMC_D11 */
> - MXRT1050_IOMUXC_GPIO_EMC_34_SEMC_DA12
> - 0xf1 /* SEMC_D12 */
> - MXRT1050_IOMUXC_GPIO_EMC_35_SEMC_DA13
> - 0xf1 /* SEMC_D13 */
> - MXRT1050_IOMUXC_GPIO_EMC_36_SEMC_DA14
> - 0xf1 /* SEMC_D14 */
> - MXRT1050_IOMUXC_GPIO_EMC_37_SEMC_DA15
> - 0xf1 /* SEMC_D15 */
> - MXRT1050_IOMUXC_GPIO_EMC_38_SEMC_DM01
> - 0xf1 /* SEMC_DM1 */
> - MXRT1050_IOMUXC_GPIO_EMC_39_SEMC_DQS
> - (IMX_PAD_SION | 0xf1) /* SEMC_DQS */
> - >;
> - };
> -
> - pinctrl_usdhc0: usdhc0grp {
> - fsl,pins = <
> - MXRT1050_IOMUXC_GPIO_B1_12_USDHC1_CD_B
> - 0x1B000
> - MXRT1050_IOMUXC_GPIO_B1_14_USDHC1_VSELECT
> - 0xB069
> - MXRT1050_IOMUXC_GPIO_SD_B0_00_USDHC1_CMD
> - 0x17061
> - MXRT1050_IOMUXC_GPIO_SD_B0_01_USDHC1_CLK
> - 0x17061
> - MXRT1050_IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3
> - 0x17061
> - MXRT1050_IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2
> - 0x17061
> - MXRT1050_IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1
> - 0x17061
> - MXRT1050_IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0
> - 0x17061
> - >;
> - };
> -
> - pinctrl_lcdif: lcdifgrp {
> - fsl,pins = <
> - MXRT1050_IOMUXC_GPIO_B0_00_LCD_CLK 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_01_LCD_ENABLE 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_02_LCD_HSYNC 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_03_LCD_VSYNC 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_04_LCD_DATA00 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_05_LCD_DATA01 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_06_LCD_DATA02 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_07_LCD_DATA03 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_08_LCD_DATA04 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_09_LCD_DATA05 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_10_LCD_DATA06 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_11_LCD_DATA07 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_12_LCD_DATA08 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_13_LCD_DATA09 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_14_LCD_DATA10 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B0_15_LCD_DATA11 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B1_01_LCD_DATA13 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B1_02_LCD_DATA14 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B1_03_LCD_DATA15 0x1b0b1
> - MXRT1050_IOMUXC_GPIO_B1_15_GPIO2_IO31 0x0b069
> - MXRT1050_IOMUXC_GPIO_AD_B0_02_GPIO1_IO02 0x0b069
> - >;
> - };
> + pinctrl_lpuart1: lpuart1grp {
> + fsl,pins = <
> + MXRT1050_IOMUXC_GPIO_AD_B0_12_LPUART1_TXD 0xf1
> + MXRT1050_IOMUXC_GPIO_AD_B0_13_LPUART1_RXD 0xf1
> + >;
> };
> -};
>
> -&gpt1 {
> - status = "okay";
> + pinctrl_usdhc0: usdhc0grp {
> + fsl,pins = <
> + MXRT1050_IOMUXC_GPIO_B1_12_USDHC1_CD_B 0x1B000
> + MXRT1050_IOMUXC_GPIO_B1_14_USDHC1_VSELECT 0xB069
> + MXRT1050_IOMUXC_GPIO_SD_B0_00_USDHC1_CMD 0x17061
> + MXRT1050_IOMUXC_GPIO_SD_B0_01_USDHC1_CLK 0x17061
> + MXRT1050_IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3 0x17061
> + MXRT1050_IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2 0x17061
> + MXRT1050_IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1 0x17061
> + MXRT1050_IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0 0x17061
> + >;
> + };
> };
>
> &usdhc1 {
> @@ -226,42 +67,6 @@
> pinctrl-1 = <&pinctrl_usdhc0>;
> pinctrl-2 = <&pinctrl_usdhc0>;
> pinctrl-3 = <&pinctrl_usdhc0>;
> - status = "okay";
> -
> cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
> -};
> -
> -&lcdif {
> - pinctrl-names = "default";
> - pinctrl-0 = <&pinctrl_lcdif>;
> - display = <&display0>;
> - status = "okay";
> -
> - display0: display0 {
> - bits-per-pixel = <16>;
> - bus-width = <16>;
> -
> - display-timings {
> - timing0: timing0 {
> - clock-frequency = <9300000>;
> - hactive = <480>;
> - vactive = <272>;
> - hback-porch = <4>;
> - hfront-porch = <8>;
> - vback-porch = <4>;
> - vfront-porch = <8>;
> - hsync-len = <41>;
> - vsync-len = <10>;
> - de-active = <1>;
> - pixelclk-active = <0>;
> - hsync-active = <0>;
> - vsync-active = <0>;
> - };
> - };
> - };
> -};
> -
> -&usbotg1 {
> - dr_mode = "host";
> status = "okay";
> };
> diff --git a/arch/arm/dts/imxrt1050-pinfunc.h b/arch/arm/dts/imxrt1050-pinfunc.h
> index a29031ab3d..22c14a3262 100644
> --- a/arch/arm/dts/imxrt1050-pinfunc.h
> +++ b/arch/arm/dts/imxrt1050-pinfunc.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0+ */
> +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
> /*
> * Copyright (C) 2019
> * Author(s): Giulio Benetti <giulio.benetti at benettiengineering.com>
> diff --git a/arch/arm/dts/imxrt1050.dtsi b/arch/arm/dts/imxrt1050.dtsi
> index 09f4712af6..03e6a858a7 100644
> --- a/arch/arm/dts/imxrt1050.dtsi
> +++ b/arch/arm/dts/imxrt1050.dtsi
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> /*
> * Copyright (C) 2019
> * Author(s): Giulio Benetti <giulio.benetti at benettiengineering.com>
> @@ -8,53 +8,37 @@
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/clock/imxrt1050-clock.h>
> #include <dt-bindings/gpio/gpio.h>
> -#include <dt-bindings/memory/imxrt-sdram.h>
>
> / {
> #address-cells = <1>;
> #size-cells = <1>;
>
> - aliases {
> - display0 = &lcdif;
> - gpio0 = &gpio1;
> - gpio1 = &gpio2;
> - gpio2 = &gpio3;
> - gpio3 = &gpio4;
> - gpio4 = &gpio5;
> - mmc0 = &usdhc1;
> - serial0 = &lpuart1;
> - usbphy0 = &usbphy1;
> - };
> -
> clocks {
> osc: osc {
> - compatible = "fsl,imx-osc", "fixed-clock";
> + compatible = "fixed-clock";
> #clock-cells = <0>;
> clock-frequency = <24000000>;
> };
> - };
>
> - soc {
> - semc: semc at 402f0000 {
> - compatible = "fsl,imxrt-semc";
> - reg = <0x402f0000 0x4000>;
> - clocks = <&clks IMXRT1050_CLK_SEMC>;
> - pinctrl-0 = <&pinctrl_semc>;
> - pinctrl-names = "default";
> - status = "okay";
> + osc3M: osc3M {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <3000000>;
> };
> + };
>
> + soc {
> lpuart1: serial at 40184000 {
> - compatible = "fsl,imxrt-lpuart";
> + compatible = "fsl,imxrt1050-lpuart", "fsl,imx7ulp-lpuart";
> reg = <0x40184000 0x4000>;
> - interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <20>;
> clocks = <&clks IMXRT1050_CLK_LPUART1>;
> - clock-names = "per";
> + clock-names = "ipg";
> status = "disabled";
> };
>
> - iomuxc: iomuxc at 401f8000 {
> - compatible = "fsl,imxrt-iomuxc";
> + iomuxc: pinctrl at 401f8000 {
> + compatible = "fsl,imxrt1050-iomuxc";
> reg = <0x401f8000 0x4000>;
> fsl,mux_mask = <0x7>;
> };
> @@ -64,31 +48,61 @@
> reg = <0x400d8000 0x4000>;
> };
>
> - clks: ccm at 400fc000 {
> + clks: clock-controller at 400fc000 {
> compatible = "fsl,imxrt1050-ccm";
> reg = <0x400fc000 0x4000>;
> - interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <95>, <96>;
> + clocks = <&osc>;
> + clock-names = "osc";
> #clock-cells = <1>;
> - };
> -
> - usdhc1: usdhc at 402c0000 {
> - compatible = "fsl,imxrt-usdhc";
> - reg = <0x402c0000 0x10000>;
> - interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
> - clocks = <&clks IMXRT1050_CLK_USDHC1>;
> - clock-names = "per";
> + assigned-clocks = <&clks IMXRT1050_CLK_PLL1_BYPASS>,
> + <&clks IMXRT1050_CLK_PLL1_BYPASS>,
> + <&clks IMXRT1050_CLK_PLL2_BYPASS>,
> + <&clks IMXRT1050_CLK_PLL3_BYPASS>,
> + <&clks IMXRT1050_CLK_PLL3_PFD1_664_62M>,
> + <&clks IMXRT1050_CLK_PLL2_PFD2_396M>;
> + assigned-clock-parents = <&clks IMXRT1050_CLK_PLL1_REF_SEL>,
> + <&clks IMXRT1050_CLK_PLL1_ARM>,
> + <&clks IMXRT1050_CLK_PLL2_SYS>,
> + <&clks IMXRT1050_CLK_PLL3_USB_OTG>,
> + <&clks IMXRT1050_CLK_PLL3_USB_OTG>,
> + <&clks IMXRT1050_CLK_PLL2_SYS>;
> + };
> +
> + edma1: dma-controller at 400e8000 {
> + #dma-cells = <2>;
> + compatible = "fsl,imx7ulp-edma";
> + reg = <0x400e8000 0x4000>,
> + <0x400ec000 0x4000>;
> + dma-channels = <32>;
> + interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>, <8>,
> + <9>, <10>, <11>, <12>, <13>, <14>, <15>, <16>;
> + clock-names = "dma", "dmamux0";
> + clocks = <&clks IMXRT1050_CLK_DMA>,
> + <&clks IMXRT1050_CLK_DMA_MUX>;
> + };
> +
> + usdhc1: mmc at 402c0000 {
> + compatible = "fsl,imxrt1050-usdhc", "fsl,imx6sl-usdhc";
> + reg = <0x402c0000 0x4000>;
> + interrupts = <110>;
> + clocks = <&clks IMXRT1050_CLK_IPG_PDOF>,
> + <&clks IMXRT1050_CLK_OSC>,
> + <&clks IMXRT1050_CLK_USDHC1>;
> + clock-names = "ipg", "ahb", "per";
> bus-width = <4>;
> + fsl,wp-controller;
> + no-1-8-v;
> + max-frequency = <4000000>;
> fsl,tuning-start-tap = <20>;
> - fsl,tuning-step= <2>;
> + fsl,tuning-step = <2>;
> status = "disabled";
> };
>
> gpio1: gpio at 401b8000 {
> - compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> + compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> reg = <0x401b8000 0x4000>;
> - interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <80>, <81>;
> gpio-controller;
> #gpio-cells = <2>;
> interrupt-controller;
> @@ -96,10 +110,9 @@
> };
>
> gpio2: gpio at 401bc000 {
> - compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> + compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> reg = <0x401bc000 0x4000>;
> - interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <82>, <83>;
> gpio-controller;
> #gpio-cells = <2>;
> interrupt-controller;
> @@ -107,10 +120,9 @@
> };
>
> gpio3: gpio at 401c0000 {
> - compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> + compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> reg = <0x401c0000 0x4000>;
> - interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <84>, <85>;
> gpio-controller;
> #gpio-cells = <2>;
> interrupt-controller;
> @@ -118,10 +130,9 @@
> };
>
> gpio4: gpio at 401c4000 {
> - compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> + compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> reg = <0x401c4000 0x4000>;
> - interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <86>, <87>;
> gpio-controller;
> #gpio-cells = <2>;
> interrupt-controller;
> @@ -129,60 +140,21 @@
> };
>
> gpio5: gpio at 400c0000 {
> - compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
> + compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> reg = <0x400c0000 0x4000>;
> - interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <88>, <89>;
> gpio-controller;
> #gpio-cells = <2>;
> interrupt-controller;
> #interrupt-cells = <2>;
> };
>
> - lcdif: lcdif at 402b8000 {
> - compatible = "fsl,imxrt-lcdif";
> - reg = <0x402b8000 0x4000>;
> - interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
> - clocks = <&clks IMXRT1050_CLK_LCDIF_PIX>,
> - <&clks IMXRT1050_CLK_LCDIF_APB>;
> - clock-names = "pix", "axi";
> - assigned-clocks = <&clks IMXRT1050_CLK_LCDIF_SEL>;
> - assigned-clock-parents = <&clks IMXRT1050_CLK_PLL5_VIDEO>;
> - status = "disabled";
> - };
> -
> - gpt1: gpt1 at 401ec000 {
> - compatible = "fsl,imxrt-gpt";
> + gpt: timer at 401ec000 {
> + compatible = "fsl,imxrt1050-gpt", "fsl,imx6dl-gpt", "fsl,imx6sl-gpt";
> reg = <0x401ec000 0x4000>;
> interrupts = <100>;
> - clocks = <&osc>;
> - status = "disabled";
> - };
> -
> - usbphy1: usbphy at 400d9000 {
> - compatible = "fsl,imxrt-usbphy";
> - reg = <0x400d9000 0x1000>;
> - interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
> - };
> -
> - usbmisc: usbmisc at 402e0800 {
> - #index-cells = <1>;
> - compatible = "fsl,imxrt-usbmisc";
> - reg = <0x402e0800 0x200>;
> - clocks = <&clks IMXRT1050_CLK_USBOH3>;
> - };
> -
> - usbotg1: usb at 402e0000 {
> - compatible = "fsl,imxrt-usb", "fsl,imx27-usb";
> - reg = <0x402e0000 0x200>;
> - interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
> - clocks = <&clks IMXRT1050_CLK_USBOH3>;
> - fsl,usbphy = <&usbphy1>;
> - fsl,usbmisc = <&usbmisc 0>;
> - ahb-burst-config = <0x0>;
> - tx-burst-size-dword = <0x10>;
> - rx-burst-size-dword = <0x10>;
> - status = "disabled";
> + clocks = <&osc3M>;
> + clock-names = "per";
> };
> };
> };
> diff --git a/include/dt-bindings/clock/imxrt1050-clock.h b/include/dt-bindings/clock/imxrt1050-clock.h
> index f74dbbcf93..93bef0832d 100644
> --- a/include/dt-bindings/clock/imxrt1050-clock.h
> +++ b/include/dt-bindings/clock/imxrt1050-clock.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0+ */
> +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
> /*
> * Copyright(C) 2019
> * Author(s): Giulio Benetti <giulio.benetti at benettiengineering.com>
> @@ -62,6 +62,11 @@
> #define IMXRT1050_CLK_PLL7_USB_HOST 53
> #define IMXRT1050_CLK_LCDIF_PIX 54
> #define IMXRT1050_CLK_USBOH3 55
> -#define IMXRT1050_CLK_END 56
> +#define IMXRT1050_CLK_IPG_PDOF 56
> +#define IMXRT1050_CLK_PER_CLK_SEL 57
> +#define IMXRT1050_CLK_PER_PDOF 58
> +#define IMXRT1050_CLK_DMA 59
> +#define IMXRT1050_CLK_DMA_MUX 60
> +#define IMXRT1050_CLK_END 61
>
> #endif /* __DT_BINDINGS_CLOCK_IMXRT1050_H */
More information about the U-Boot
mailing list