Commit 5187303fc8ae3f5e266e725c5b526381d2b77236

Authored by Adrian Alonso
Committed by Ye Li
1 parent e384b64424

MLK-23928: board: freescale: imx8mn audio board 2.0

Add support for imx8mn audio board 2.0 support
reuse common settings from imx8mn evk som
Rework for imx_v2020.04 defconfig, dts and SPL

Reviewed-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>

Showing 15 changed files with 4469 additions and 11 deletions Side-by-side Diff

arch/arm/dts/Makefile
... ... @@ -789,7 +789,9 @@
789 789 imx8mq-ddr4-val.dtb \
790 790 imx8mq-evk.dtb \
791 791 imx8mp-evk.dtb \
792   - imx8mm-ab2.dtb
  792 + imx8mm-ab2.dtb \
  793 + imx8mn-ddr4-ab2.dtb \
  794 + imx8mn-ab2.dtb
793 795  
794 796 dtb-$(CONFIG_ARCH_IMXRT) += imxrt1050-evk.dtb
795 797  
arch/arm/dts/imx8mn-ab2-u-boot.dtsi
  1 +// SPDX-License-Identifier: GPL-2.0+
  2 +/*
  3 + * Copyright 2020 NXP
  4 + */
  5 +
  6 +/ {
  7 + firmware {
  8 + optee {
  9 + compatible = "linaro,optee-tz";
  10 + method = "smc";
  11 + };
  12 + };
  13 +};
  14 +
  15 +&{/soc@0} {
  16 + u-boot,dm-pre-reloc;
  17 + u-boot,dm-spl;
  18 +};
  19 +
  20 +&clk {
  21 + u-boot,dm-spl;
  22 + u-boot,dm-pre-reloc;
  23 + /delete-property/ assigned-clocks;
  24 + /delete-property/ assigned-clock-parents;
  25 + /delete-property/ assigned-clock-rates;
  26 +};
  27 +
  28 +&osc_24m {
  29 + u-boot,dm-spl;
  30 + u-boot,dm-pre-reloc;
  31 +};
  32 +
  33 +&aips1 {
  34 + u-boot,dm-spl;
  35 + u-boot,dm-pre-reloc;
  36 +};
  37 +
  38 +&aips2 {
  39 + u-boot,dm-spl;
  40 +};
  41 +
  42 +&aips3 {
  43 + u-boot,dm-spl;
  44 +};
  45 +
  46 +&iomuxc {
  47 + u-boot,dm-spl;
  48 +};
  49 +
  50 +&reg_usdhc2_vmmc {
  51 + u-boot,dm-spl;
  52 +};
  53 +
  54 +&pinctrl_reg_usdhc2_vmmc {
  55 + u-boot,dm-spl;
  56 +};
  57 +
  58 +&pinctrl_uart2 {
  59 + u-boot,dm-spl;
  60 +};
  61 +
  62 +&pinctrl_usdhc2_gpio {
  63 + u-boot,dm-spl;
  64 +};
  65 +
  66 +&pinctrl_usdhc2 {
  67 + u-boot,dm-spl;
  68 +};
  69 +
  70 +&pinctrl_usdhc3 {
  71 + u-boot,dm-spl;
  72 +};
  73 +
  74 +&gpio1 {
  75 + u-boot,dm-spl;
  76 +};
  77 +
  78 +&gpio2 {
  79 + u-boot,dm-spl;
  80 +};
  81 +
  82 +&gpio3 {
  83 + u-boot,dm-spl;
  84 +};
  85 +
  86 +&gpio4 {
  87 + u-boot,dm-spl;
  88 +};
  89 +
  90 +&gpio5 {
  91 + u-boot,dm-spl;
  92 +};
  93 +
  94 +&uart2 {
  95 + u-boot,dm-spl;
  96 +};
  97 +
  98 +&usdhc1 {
  99 + u-boot,dm-spl;
  100 + assigned-clocks = <&clk IMX8MN_CLK_USDHC1>;
  101 + assigned-clock-rates = <400000000>;
  102 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_400M>;
  103 +};
  104 +
  105 +&usdhc2 {
  106 + u-boot,dm-spl;
  107 + sd-uhs-sdr104;
  108 + sd-uhs-ddr50;
  109 + assigned-clocks = <&clk IMX8MN_CLK_USDHC2>;
  110 + assigned-clock-rates = <400000000>;
  111 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_400M>;
  112 +};
  113 +
  114 +&usdhc3 {
  115 + u-boot,dm-spl;
  116 + mmc-hs400-1_8v;
  117 + mmc-hs400-enhanced-strobe;
  118 + assigned-clocks = <&clk IMX8MN_CLK_USDHC3>;
  119 + assigned-clock-rates = <400000000>;
  120 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_400M>;
  121 +};
  122 +
  123 +&flexspi {
  124 + assigned-clock-rates = <100000000>;
  125 + assigned-clocks = <&clk IMX8MN_CLK_QSPI>;
  126 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>;
  127 +};
arch/arm/dts/imx8mn-ab2.dts
  1 +// SPDX-License-Identifier: GPL-2.0+
  2 +/*
  3 + * Copyright 2020 NXP
  4 + */
  5 +
  6 +/dts-v1/;
  7 +
  8 +#include "imx8mn.dtsi"
  9 +
  10 +/ {
  11 + model = "NXP i.MX8MNano LPDDR4 Audio board 2.0";
  12 + compatible = "fsl,imx8mn-ab2", "fsl,imx8mn";
  13 +
  14 + chosen {
  15 + bootargs = "console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";
  16 + stdout-path = &uart2;
  17 + };
  18 +
  19 + reg_usdhc2_vmmc: regulator-usdhc2 {
  20 + compatible = "regulator-fixed";
  21 + pinctrl-names = "default";
  22 + pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
  23 + regulator-name = "VSD_3V3";
  24 + regulator-min-microvolt = <3300000>;
  25 + regulator-max-microvolt = <3300000>;
  26 + gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
  27 + enable-active-high;
  28 + startup-delay-us = <100>;
  29 + off-on-delay-us = <12000>;
  30 + };
  31 +
  32 + reg_ab2_ana_pwr: regulator-ab2-ana-pwr {
  33 + compatible = "regulator-fixed";
  34 + regulator-name = "ab2_ana_pwr";
  35 + pinctrl-names = "default";
  36 + pinctrl-0 = <&pinctrl_ab2_ana_pwr>;
  37 + regulator-min-microvolt = <3300000>;
  38 + regulator-max-microvolt = <3300000>;
  39 + gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
  40 + enable-active-high;
  41 + };
  42 +
  43 + reg_ab2_vdd_pwr_5v0: regulator-ab2-vdd-pwr-5v0 {
  44 + compatible = "regulator-fixed";
  45 + regulator-name = "ab2_vdd_pwr_5v0";
  46 + regulator-min-microvolt = <5000000>;
  47 + regulator-max-microvolt = <5000000>;
  48 + gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
  49 + enable-active-high;
  50 + startup-delay-us = <100>;
  51 + u-boot,off-on-delay-us = <12000>;
  52 + };
  53 +};
  54 +
  55 +&iomuxc {
  56 + pinctrl-names = "default";
  57 + pinctrl-0 = <&pinctrl_hog_1>;
  58 +
  59 + imx8mn-evk {
  60 + pinctrl_hog_1: hoggrp-1 {
  61 + fsl,pins = <
  62 + MX8MN_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x16
  63 + >;
  64 + };
  65 +
  66 + pinctrl_fec1: fec1grp {
  67 + fsl,pins = <
  68 + MX8MN_IOMUXC_ENET_MDC_ENET1_MDC 0x3
  69 + MX8MN_IOMUXC_ENET_MDIO_ENET1_MDIO 0x3
  70 + MX8MN_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
  71 + MX8MN_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
  72 + MX8MN_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
  73 + MX8MN_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
  74 + MX8MN_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
  75 + MX8MN_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
  76 + MX8MN_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
  77 + MX8MN_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
  78 + MX8MN_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
  79 + MX8MN_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
  80 + MX8MN_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
  81 + MX8MN_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
  82 + MX8MN_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x16
  83 + >;
  84 + };
  85 +
  86 + pinctrl_flexspi0: flexspi0grp {
  87 + fsl,pins = <
  88 + MX8MN_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x1c4
  89 + MX8MN_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x84
  90 +
  91 + MX8MN_IOMUXC_NAND_DQS_QSPI_A_DQS 0x40000084
  92 + MX8MN_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x84
  93 + MX8MN_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x84
  94 + MX8MN_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x84
  95 + MX8MN_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x84
  96 + >;
  97 + };
  98 +
  99 + pinctrl_i2c1: i2c1grp {
  100 + fsl,pins = <
  101 + MX8MN_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
  102 + MX8MN_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
  103 + >;
  104 + };
  105 +
  106 + pinctrl_i2c2: i2c2grp {
  107 + fsl,pins = <
  108 + MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
  109 + MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
  110 + >;
  111 + };
  112 +
  113 + pinctrl_i2c3: i2c3grp {
  114 + fsl,pins = <
  115 + MX8MN_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
  116 + MX8MN_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
  117 + >;
  118 + };
  119 +
  120 + pinctrl_i2c1_gpio: i2c1grp-gpio {
  121 + fsl,pins = <
  122 + MX8MN_IOMUXC_I2C1_SCL_GPIO5_IO14 0x1c3
  123 + MX8MN_IOMUXC_I2C1_SDA_GPIO5_IO15 0x1c3
  124 + >;
  125 + };
  126 +
  127 + pinctrl_i2c2_gpio: i2c2grp-gpio {
  128 + fsl,pins = <
  129 + MX8MN_IOMUXC_I2C2_SCL_GPIO5_IO16 0x1c3
  130 + MX8MN_IOMUXC_I2C2_SDA_GPIO5_IO17 0x1c3
  131 + >;
  132 + };
  133 +
  134 + pinctrl_i2c3_gpio: i2c3grp-gpio {
  135 + fsl,pins = <
  136 + MX8MN_IOMUXC_I2C3_SCL_GPIO5_IO18 0x1c3
  137 + MX8MN_IOMUXC_I2C3_SDA_GPIO5_IO19 0x1c3
  138 + >;
  139 + };
  140 +
  141 + pinctrl_pmic: pmicirq {
  142 + fsl,pins = <
  143 + MX8MN_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41
  144 + >;
  145 + };
  146 +
  147 +
  148 + pinctrl_reg_usdhc2_vmmc: regusdhc2vmmc {
  149 + fsl,pins = <
  150 + MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
  151 + >;
  152 + };
  153 +
  154 + pinctrl_ab2_ana_pwr: ab2anapwrgrp {
  155 + fsl,pins = <
  156 + MX8MN_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x41
  157 + >;
  158 + };
  159 +
  160 + pinctrl_ab2_vdd_pwr_5v0: ab2vddpwr5v0grp {
  161 + fsl,pins = <
  162 + MX8MN_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x41
  163 + >;
  164 + };
  165 +
  166 + pinctrl_uart2: uart1grp {
  167 + fsl,pins = <
  168 + MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX 0x49
  169 + MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX 0x49
  170 + >;
  171 + };
  172 +
  173 + pinctrl_usdhc2_gpio: usdhc2grpgpio {
  174 + fsl,pins = <
  175 + MX8MN_IOMUXC_SD2_CD_B_GPIO2_IO12 0x1c4
  176 + >;
  177 + };
  178 +
  179 + pinctrl_usdhc2: usdhc2grp {
  180 + fsl,pins = <
  181 + MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
  182 + MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
  183 + MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
  184 + MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
  185 + MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
  186 + MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
  187 + MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  188 + >;
  189 + };
  190 +
  191 + pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
  192 + fsl,pins = <
  193 + MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
  194 + MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
  195 + MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
  196 + MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
  197 + MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
  198 + MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
  199 + MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  200 + >;
  201 + };
  202 +
  203 + pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
  204 + fsl,pins = <
  205 + MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
  206 + MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
  207 + MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
  208 + MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
  209 + MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
  210 + MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
  211 + MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  212 + >;
  213 + };
  214 +
  215 + pinctrl_usdhc3: usdhc3grp {
  216 + fsl,pins = <
  217 + MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000190
  218 + MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0
  219 + MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0
  220 + MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0
  221 + MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0
  222 + MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0
  223 + MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d0
  224 + MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d0
  225 + MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d0
  226 + MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d0
  227 + MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x190
  228 + >;
  229 + };
  230 +
  231 + pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
  232 + fsl,pins = <
  233 + MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000194
  234 + MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
  235 + MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d4
  236 + MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d4
  237 + MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d4
  238 + MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d4
  239 + MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d4
  240 + MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d4
  241 + MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d4
  242 + MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d4
  243 + MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x194
  244 + >;
  245 + };
  246 +
  247 + pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
  248 + fsl,pins = <
  249 + MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000196
  250 + MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
  251 + MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d6
  252 + MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d6
  253 + MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d6
  254 + MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d6
  255 + MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d6
  256 + MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d6
  257 + MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d6
  258 + MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d6
  259 + MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x196
  260 + >;
  261 + };
  262 +
  263 + pinctrl_wdog: wdoggrp {
  264 + fsl,pins = <
  265 + MX8MN_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6
  266 + >;
  267 + };
  268 +
  269 + pinctrl_mipi_dsi_en: mipi_dsi_en {
  270 + fsl,pins = <
  271 + MX8MN_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x16
  272 + >;
  273 + };
  274 + };
  275 +};
  276 +
  277 +&i2c1 {
  278 + clock-frequency = <400000>;
  279 + pinctrl-names = "default", "gpio";
  280 + pinctrl-0 = <&pinctrl_i2c1>;
  281 + pinctrl-1 = <&pinctrl_i2c1_gpio>;
  282 + scl-gpios = <&gpio5 14 GPIO_ACTIVE_HIGH>;
  283 + sda-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>;
  284 + status = "okay";
  285 +
  286 + pmic: pca9450@25 {
  287 + reg = <0x25>;
  288 + compatible = "nxp,pca9450b";
  289 + /* PMIC PCA9450 PMIC_nINT GPIO1_IO3 */
  290 + pinctrl-0 = <&pinctrl_pmic>;
  291 + gpio_intr = <&gpio1 3 GPIO_ACTIVE_LOW>;
  292 +
  293 + regulators {
  294 + #address-cells = <1>;
  295 + #size-cells = <0>;
  296 +
  297 + pca9450,pmic-buck2-uses-i2c-dvs;
  298 + /* Run/Standby voltage */
  299 + pca9450,pmic-buck2-dvs-voltage = <950000>, <850000>;
  300 +
  301 + buck1_reg: regulator@0 {
  302 + reg = <0>;
  303 + regulator-compatible = "buck1";
  304 + regulator-min-microvolt = <600000>;
  305 + regulator-max-microvolt = <2187500>;
  306 + regulator-boot-on;
  307 + regulator-always-on;
  308 + regulator-ramp-delay = <3125>;
  309 + };
  310 +
  311 + buck2_reg: regulator@1 {
  312 + reg = <1>;
  313 + regulator-compatible = "buck2";
  314 + regulator-min-microvolt = <600000>;
  315 + regulator-max-microvolt = <2187500>;
  316 + regulator-boot-on;
  317 + regulator-always-on;
  318 + regulator-ramp-delay = <3125>;
  319 + };
  320 +
  321 + buck3_reg: regulator@2 {
  322 + reg = <2>;
  323 + regulator-compatible = "buck3";
  324 + regulator-min-microvolt = <600000>;
  325 + regulator-max-microvolt = <2187500>;
  326 + regulator-boot-on;
  327 + regulator-always-on;
  328 + };
  329 +
  330 + buck4_reg: regulator@3 {
  331 + reg = <3>;
  332 + regulator-compatible = "buck4";
  333 + regulator-min-microvolt = <600000>;
  334 + regulator-max-microvolt = <3400000>;
  335 + regulator-boot-on;
  336 + regulator-always-on;
  337 + };
  338 +
  339 + buck5_reg: regulator@4 {
  340 + reg = <4>;
  341 + regulator-compatible = "buck5";
  342 + regulator-min-microvolt = <600000>;
  343 + regulator-max-microvolt = <3400000>;
  344 + regulator-boot-on;
  345 + regulator-always-on;
  346 + };
  347 +
  348 + buck6_reg: regulator@5 {
  349 + reg = <5>;
  350 + regulator-compatible = "buck6";
  351 + regulator-min-microvolt = <600000>;
  352 + regulator-max-microvolt = <3400000>;
  353 + regulator-boot-on;
  354 + regulator-always-on;
  355 + };
  356 +
  357 + ldo1_reg: regulator@6 {
  358 + reg = <6>;
  359 + regulator-compatible = "ldo1";
  360 + regulator-min-microvolt = <1600000>;
  361 + regulator-max-microvolt = <3300000>;
  362 + regulator-boot-on;
  363 + regulator-always-on;
  364 + };
  365 +
  366 + ldo2_reg: regulator@7 {
  367 + reg = <7>;
  368 + regulator-compatible = "ldo2";
  369 + regulator-min-microvolt = <800000>;
  370 + regulator-max-microvolt = <1150000>;
  371 + regulator-boot-on;
  372 + regulator-always-on;
  373 + };
  374 +
  375 + ldo3_reg: regulator@8 {
  376 + reg = <8>;
  377 + regulator-compatible = "ldo3";
  378 + regulator-min-microvolt = <800000>;
  379 + regulator-max-microvolt = <3300000>;
  380 + regulator-boot-on;
  381 + regulator-always-on;
  382 + };
  383 +
  384 + ldo4_reg: regulator@9 {
  385 + reg = <9>;
  386 + regulator-compatible = "ldo4";
  387 + regulator-min-microvolt = <800000>;
  388 + regulator-max-microvolt = <3300000>;
  389 + regulator-boot-on;
  390 + regulator-always-on;
  391 + };
  392 +
  393 + ldo5_reg: regulator@10 {
  394 + reg = <10>;
  395 + regulator-compatible = "ldo5";
  396 + regulator-min-microvolt = <1800000>;
  397 + regulator-max-microvolt = <3300000>;
  398 + };
  399 +
  400 + };
  401 + };
  402 +};
  403 +
  404 +&i2c2 {
  405 + clock-frequency = <400000>;
  406 + pinctrl-names = "default", "gpio";
  407 + pinctrl-0 = <&pinctrl_i2c2>;
  408 + pinctrl-1 = <&pinctrl_i2c2_gpio>;
  409 + scl-gpios = <&gpio5 16 GPIO_ACTIVE_HIGH>;
  410 + sda-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
  411 + status = "okay";
  412 +};
  413 +
  414 +&i2c3 {
  415 + clock-frequency = <100000>;
  416 + pinctrl-names = "default", "gpio";
  417 + pinctrl-0 = <&pinctrl_i2c3>;
  418 + pinctrl-1 = <&pinctrl_i2c3_gpio>;
  419 + scl-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
  420 + sda-gpios = <&gpio5 19 GPIO_ACTIVE_HIGH>;
  421 + status = "okay";
  422 +};
  423 +
  424 +&flexspi {
  425 + pinctrl-names = "default";
  426 + pinctrl-0 = <&pinctrl_flexspi0>;
  427 + status = "okay";
  428 +
  429 + flash0: mt25qu256aba@0 {
  430 + reg = <0>;
  431 + compatible = "jedec,spi-nor";
  432 + spi-max-frequency = <80000000>;
  433 + spi-tx-bus-width = <4>;
  434 + spi-rx-bus-width = <4>;
  435 + };
  436 +};
  437 +
  438 +&fec1 {
  439 + pinctrl-names = "default";
  440 + pinctrl-0 = <&pinctrl_fec1>;
  441 + phy-mode = "rgmii-id";
  442 + phy-handle = <&ethphy0>;
  443 + phy-reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
  444 + phy-reset-post-delay = <150>;
  445 + phy-reset-duration = <10>;
  446 + fsl,magic-packet;
  447 + status = "okay";
  448 +
  449 + mdio {
  450 + #address-cells = <1>;
  451 + #size-cells = <0>;
  452 +
  453 + ethphy0: ethernet-phy@0 {
  454 + compatible = "ethernet-phy-ieee802.3-c22";
  455 + reg = <1>;
  456 + eee-broken-1000t;
  457 + };
  458 + };
  459 +};
  460 +
  461 +&snvs_pwrkey {
  462 + status = "okay";
  463 +};
  464 +
  465 +&uart2 { /* console */
  466 + pinctrl-names = "default";
  467 + pinctrl-0 = <&pinctrl_uart2>;
  468 + status = "okay";
  469 +};
  470 +
  471 +&usdhc2 {
  472 + pinctrl-names = "default", "state_100mhz", "state_200mhz";
  473 + pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
  474 + pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
  475 + pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
  476 + cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
  477 + bus-width = <4>;
  478 + vmmc-supply = <&reg_usdhc2_vmmc>;
  479 + status = "okay";
  480 +};
  481 +
  482 +&usdhc3 {
  483 + pinctrl-names = "default", "state_100mhz", "state_200mhz";
  484 + pinctrl-0 = <&pinctrl_usdhc3>;
  485 + pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
  486 + pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
  487 + bus-width = <8>;
  488 + non-removable;
  489 + status = "okay";
  490 +};
  491 +
  492 +&wdog1 {
  493 + pinctrl-names = "default";
  494 + pinctrl-0 = <&pinctrl_wdog>;
  495 + fsl,ext-reset-output;
  496 + status = "okay";
  497 +};
arch/arm/dts/imx8mn-ddr4-ab2-u-boot.dtsi
  1 +// SPDX-License-Identifier: GPL-2.0+
  2 +/*
  3 + * Copyright 2020 NXP
  4 + */
  5 +
  6 +/ {
  7 + firmware {
  8 + optee {
  9 + compatible = "linaro,optee-tz";
  10 + method = "smc";
  11 + };
  12 + };
  13 +};
  14 +
  15 +&{/soc@0} {
  16 + u-boot,dm-pre-reloc;
  17 + u-boot,dm-spl;
  18 +};
  19 +
  20 +&clk {
  21 + u-boot,dm-spl;
  22 + u-boot,dm-pre-reloc;
  23 + /delete-property/ assigned-clocks;
  24 + /delete-property/ assigned-clock-parents;
  25 + /delete-property/ assigned-clock-rates;
  26 +};
  27 +
  28 +&osc_24m {
  29 + u-boot,dm-spl;
  30 + u-boot,dm-pre-reloc;
  31 +};
  32 +
  33 +&aips1 {
  34 + u-boot,dm-spl;
  35 + u-boot,dm-pre-reloc;
  36 +};
  37 +
  38 +&aips2 {
  39 + u-boot,dm-spl;
  40 +};
  41 +
  42 +&aips3 {
  43 + u-boot,dm-spl;
  44 +};
  45 +
  46 +&iomuxc {
  47 + u-boot,dm-spl;
  48 +};
  49 +
  50 +&reg_usdhc2_vmmc {
  51 + u-boot,dm-spl;
  52 +};
  53 +
  54 +&pinctrl_reg_usdhc2_vmmc {
  55 + u-boot,dm-spl;
  56 +};
  57 +
  58 +&pinctrl_uart2 {
  59 + u-boot,dm-spl;
  60 +};
  61 +
  62 +&pinctrl_usdhc2_gpio {
  63 + u-boot,dm-spl;
  64 +};
  65 +
  66 +&pinctrl_usdhc2 {
  67 + u-boot,dm-spl;
  68 +};
  69 +
  70 +&pinctrl_usdhc3 {
  71 + u-boot,dm-spl;
  72 +};
  73 +
  74 +&gpio1 {
  75 + u-boot,dm-spl;
  76 +};
  77 +
  78 +&gpio2 {
  79 + u-boot,dm-spl;
  80 +};
  81 +
  82 +&gpio3 {
  83 + u-boot,dm-spl;
  84 +};
  85 +
  86 +&gpio4 {
  87 + u-boot,dm-spl;
  88 +};
  89 +
  90 +&gpio5 {
  91 + u-boot,dm-spl;
  92 +};
  93 +
  94 +&uart2 {
  95 + u-boot,dm-spl;
  96 +};
  97 +
  98 +&usdhc1 {
  99 + u-boot,dm-spl;
  100 + assigned-clocks = <&clk IMX8MN_CLK_USDHC1>;
  101 + assigned-clock-rates = <400000000>;
  102 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_400M>;
  103 +};
  104 +
  105 +&usdhc2 {
  106 + u-boot,dm-spl;
  107 + sd-uhs-sdr104;
  108 + sd-uhs-ddr50;
  109 + assigned-clocks = <&clk IMX8MN_CLK_USDHC2>;
  110 + assigned-clock-rates = <400000000>;
  111 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_400M>;
  112 +};
  113 +
  114 +&usdhc3 {
  115 + u-boot,dm-spl;
  116 + mmc-hs400-1_8v;
  117 + mmc-hs400-enhanced-strobe;
  118 + assigned-clocks = <&clk IMX8MN_CLK_USDHC3>;
  119 + assigned-clock-rates = <400000000>;
  120 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_400M>;
  121 +};
  122 +
  123 +&flexspi {
  124 + assigned-clock-rates = <100000000>;
  125 + assigned-clocks = <&clk IMX8MN_CLK_QSPI>;
  126 + assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>;
  127 +};
arch/arm/dts/imx8mn-ddr4-ab2.dts
  1 +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2 +/*
  3 + * Copyright 2020 NXP
  4 + */
  5 +
  6 +/dts-v1/;
  7 +
  8 +#include "imx8mn.dtsi"
  9 +
  10 +/ {
  11 + model = "NXP i.MX8MNano DDR4 Audio board 2.0";
  12 + compatible = "fsl,imx8mn-ab2", "fsl,imx8mn";
  13 +
  14 + chosen {
  15 + bootargs = "console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";
  16 + stdout-path = &uart2;
  17 + };
  18 +
  19 + reg_usdhc2_vmmc: regulator-usdhc2 {
  20 + compatible = "regulator-fixed";
  21 + pinctrl-names = "default";
  22 + pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
  23 + regulator-name = "VSD_3V3";
  24 + regulator-min-microvolt = <3300000>;
  25 + regulator-max-microvolt = <3300000>;
  26 + gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
  27 + enable-active-high;
  28 + startup-delay-us = <100>;
  29 + off-on-delay-us = <12000>;
  30 + };
  31 +
  32 + reg_ab2_ana_pwr: regulator-ab2-ana-pwr {
  33 + compatible = "regulator-fixed";
  34 + regulator-name = "ab2_ana_pwr";
  35 + pinctrl-names = "default";
  36 + pinctrl-0 = <&pinctrl_ab2_ana_pwr>;
  37 + regulator-min-microvolt = <3300000>;
  38 + regulator-max-microvolt = <3300000>;
  39 + gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
  40 + enable-active-high;
  41 + };
  42 +
  43 + reg_ab2_vdd_pwr_5v0: regulator-ab2-vdd-pwr-5v0 {
  44 + compatible = "regulator-fixed";
  45 + regulator-name = "ab2_vdd_pwr_5v0";
  46 + regulator-min-microvolt = <5000000>;
  47 + regulator-max-microvolt = <5000000>;
  48 + gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
  49 + enable-active-high;
  50 + startup-delay-us = <100>;
  51 + u-boot,off-on-delay-us = <12000>;
  52 + };
  53 +};
  54 +
  55 +&iomuxc {
  56 + pinctrl-names = "default";
  57 + pinctrl-0 = <&pinctrl_hog_1>;
  58 +
  59 + imx8mn-evk {
  60 + pinctrl_hog_1: hoggrp-1 {
  61 + fsl,pins = <
  62 + MX8MN_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x16
  63 + >;
  64 + };
  65 +
  66 + pinctrl_fec1: fec1grp {
  67 + fsl,pins = <
  68 + MX8MN_IOMUXC_ENET_MDC_ENET1_MDC 0x3
  69 + MX8MN_IOMUXC_ENET_MDIO_ENET1_MDIO 0x3
  70 + MX8MN_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
  71 + MX8MN_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
  72 + MX8MN_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
  73 + MX8MN_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
  74 + MX8MN_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
  75 + MX8MN_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
  76 + MX8MN_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
  77 + MX8MN_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
  78 + MX8MN_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
  79 + MX8MN_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
  80 + MX8MN_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
  81 + MX8MN_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
  82 + MX8MN_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x16
  83 + >;
  84 + };
  85 +
  86 + pinctrl_flexspi0: flexspi0grp {
  87 + fsl,pins = <
  88 + MX8MN_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x1c4
  89 + MX8MN_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x84
  90 +
  91 + MX8MN_IOMUXC_NAND_DQS_QSPI_A_DQS 0x40000084
  92 + MX8MN_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x84
  93 + MX8MN_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x84
  94 + MX8MN_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x84
  95 + MX8MN_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x84
  96 + >;
  97 + };
  98 +
  99 + pinctrl_i2c1: i2c1grp {
  100 + fsl,pins = <
  101 + MX8MN_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
  102 + MX8MN_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
  103 + >;
  104 + };
  105 +
  106 + pinctrl_i2c2: i2c2grp {
  107 + fsl,pins = <
  108 + MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
  109 + MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
  110 + >;
  111 + };
  112 +
  113 + pinctrl_i2c3: i2c3grp {
  114 + fsl,pins = <
  115 + MX8MN_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
  116 + MX8MN_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
  117 + >;
  118 + };
  119 +
  120 + pinctrl_i2c1_gpio: i2c1grp-gpio {
  121 + fsl,pins = <
  122 + MX8MN_IOMUXC_I2C1_SCL_GPIO5_IO14 0x1c3
  123 + MX8MN_IOMUXC_I2C1_SDA_GPIO5_IO15 0x1c3
  124 + >;
  125 + };
  126 +
  127 + pinctrl_i2c2_gpio: i2c2grp-gpio {
  128 + fsl,pins = <
  129 + MX8MN_IOMUXC_I2C2_SCL_GPIO5_IO16 0x1c3
  130 + MX8MN_IOMUXC_I2C2_SDA_GPIO5_IO17 0x1c3
  131 + >;
  132 + };
  133 +
  134 + pinctrl_i2c3_gpio: i2c3grp-gpio {
  135 + fsl,pins = <
  136 + MX8MN_IOMUXC_I2C3_SCL_GPIO5_IO18 0x1c3
  137 + MX8MN_IOMUXC_I2C3_SDA_GPIO5_IO19 0x1c3
  138 + >;
  139 + };
  140 +
  141 + pinctrl_pmic: pmicirq {
  142 + fsl,pins = <
  143 + MX8MN_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41
  144 + >;
  145 + };
  146 +
  147 + pinctrl_reg_usdhc2_vmmc: regusdhc2vmmc {
  148 + fsl,pins = <
  149 + MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
  150 + >;
  151 + };
  152 +
  153 + pinctrl_ab2_ana_pwr: ab2anapwrgrp {
  154 + fsl,pins = <
  155 + MX8MN_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x41
  156 + >;
  157 + };
  158 +
  159 + pinctrl_ab2_vdd_pwr_5v0: ab2vddpwr5v0grp {
  160 + fsl,pins = <
  161 + MX8MN_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x41
  162 + >;
  163 + };
  164 +
  165 + pinctrl_uart2: uart1grp {
  166 + fsl,pins = <
  167 + MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX 0x49
  168 + MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX 0x49
  169 + >;
  170 + };
  171 +
  172 + pinctrl_usdhc2_gpio: usdhc2grpgpio {
  173 + fsl,pins = <
  174 + MX8MN_IOMUXC_SD2_CD_B_GPIO2_IO12 0x1c4
  175 + >;
  176 + };
  177 +
  178 + pinctrl_usdhc2: usdhc2grp {
  179 + fsl,pins = <
  180 + MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
  181 + MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
  182 + MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
  183 + MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
  184 + MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
  185 + MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
  186 + MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  187 + >;
  188 + };
  189 +
  190 + pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
  191 + fsl,pins = <
  192 + MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
  193 + MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
  194 + MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
  195 + MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
  196 + MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
  197 + MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
  198 + MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  199 + >;
  200 + };
  201 +
  202 + pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
  203 + fsl,pins = <
  204 + MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
  205 + MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
  206 + MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
  207 + MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
  208 + MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
  209 + MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
  210 + MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  211 + >;
  212 + };
  213 +
  214 + pinctrl_usdhc3: usdhc3grp {
  215 + fsl,pins = <
  216 + MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000190
  217 + MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0
  218 + MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0
  219 + MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0
  220 + MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0
  221 + MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0
  222 + MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d0
  223 + MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d0
  224 + MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d0
  225 + MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d0
  226 + MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x190
  227 + >;
  228 + };
  229 +
  230 + pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
  231 + fsl,pins = <
  232 + MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000194
  233 + MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
  234 + MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d4
  235 + MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d4
  236 + MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d4
  237 + MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d4
  238 + MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d4
  239 + MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d4
  240 + MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d4
  241 + MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d4
  242 + MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x194
  243 + >;
  244 + };
  245 +
  246 + pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
  247 + fsl,pins = <
  248 + MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000196
  249 + MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
  250 + MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d6
  251 + MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d6
  252 + MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d6
  253 + MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d6
  254 + MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d6
  255 + MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d6
  256 + MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d6
  257 + MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d6
  258 + MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x196
  259 + >;
  260 + };
  261 +
  262 + pinctrl_wdog: wdoggrp {
  263 + fsl,pins = <
  264 + MX8MN_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6
  265 + >;
  266 + };
  267 + };
  268 +};
  269 +
  270 +&fec1 {
  271 + pinctrl-names = "default";
  272 + pinctrl-0 = <&pinctrl_fec1>;
  273 + phy-mode = "rgmii-id";
  274 + phy-handle = <&ethphy0>;
  275 + phy-reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
  276 + phy-reset-post-delay = <150>;
  277 + phy-reset-duration = <10>;
  278 + fsl,magic-packet;
  279 + status = "okay";
  280 +
  281 + mdio {
  282 + #address-cells = <1>;
  283 + #size-cells = <0>;
  284 +
  285 + ethphy0: ethernet-phy@0 {
  286 + compatible = "ethernet-phy-ieee802.3-c22";
  287 + reg = <1>;
  288 + eee-broken-1000t;
  289 + };
  290 + };
  291 +};
  292 +
  293 +
  294 +&flexspi {
  295 + pinctrl-names = "default";
  296 + pinctrl-0 = <&pinctrl_flexspi0>;
  297 + status = "okay";
  298 +
  299 + flash0: mt25qu256aba@0 {
  300 + reg = <0>;
  301 + compatible = "jedec,spi-nor";
  302 + spi-max-frequency = <80000000>;
  303 + spi-tx-bus-width = <4>;
  304 + spi-rx-bus-width = <4>;
  305 + };
  306 +};
  307 +
  308 +&i2c1 {
  309 + clock-frequency = <400000>;
  310 + pinctrl-names = "default", "gpio";
  311 + pinctrl-0 = <&pinctrl_i2c1>;
  312 + pinctrl-1 = <&pinctrl_i2c1_gpio>;
  313 + scl-gpios = <&gpio5 14 GPIO_ACTIVE_HIGH>;
  314 + sda-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>;
  315 + status = "okay";
  316 +
  317 + pmic@4b {
  318 + compatible = "rohm,bd71847";
  319 + reg = <0x4b>;
  320 + pinctrl-0 = <&pinctrl_pmic>;
  321 + interrupt-parent = <&gpio1>;
  322 + interrupts = <3 GPIO_ACTIVE_LOW>;
  323 + rohm,reset-snvs-powered;
  324 +
  325 + regulators {
  326 + buck1_reg: BUCK1 {
  327 + regulator-name = "BUCK1";
  328 + regulator-min-microvolt = <700000>;
  329 + regulator-max-microvolt = <1300000>;
  330 + regulator-boot-on;
  331 + regulator-always-on;
  332 + regulator-ramp-delay = <1250>;
  333 + };
  334 +
  335 + buck2_reg: BUCK2 {
  336 + regulator-name = "BUCK2";
  337 + regulator-min-microvolt = <700000>;
  338 + regulator-max-microvolt = <1300000>;
  339 + regulator-boot-on;
  340 + regulator-always-on;
  341 + regulator-ramp-delay = <1250>;
  342 + };
  343 +
  344 + buck3_reg: BUCK3 {
  345 + // BUCK5 in datasheet
  346 + regulator-name = "BUCK3";
  347 + regulator-min-microvolt = <700000>;
  348 + regulator-max-microvolt = <1350000>;
  349 + };
  350 +
  351 + buck4_reg: BUCK4 {
  352 + // BUCK6 in datasheet
  353 + regulator-name = "BUCK4";
  354 + regulator-min-microvolt = <3000000>;
  355 + regulator-max-microvolt = <3300000>;
  356 + regulator-boot-on;
  357 + regulator-always-on;
  358 + };
  359 +
  360 + buck5_reg: BUCK5 {
  361 + // BUCK7 in datasheet
  362 + regulator-name = "BUCK5";
  363 + regulator-min-microvolt = <1605000>;
  364 + regulator-max-microvolt = <1995000>;
  365 + regulator-boot-on;
  366 + regulator-always-on;
  367 + };
  368 +
  369 + buck6_reg: BUCK6 {
  370 + // BUCK8 in datasheet
  371 + regulator-name = "BUCK6";
  372 + regulator-min-microvolt = <800000>;
  373 + regulator-max-microvolt = <1400000>;
  374 + regulator-boot-on;
  375 + regulator-always-on;
  376 + };
  377 +
  378 + ldo1_reg: LDO1 {
  379 + regulator-name = "LDO1";
  380 + regulator-min-microvolt = <3000000>;
  381 + regulator-max-microvolt = <3300000>;
  382 + regulator-boot-on;
  383 + regulator-always-on;
  384 + };
  385 +
  386 + ldo2_reg: LDO2 {
  387 + regulator-name = "LDO2";
  388 + regulator-min-microvolt = <900000>;
  389 + regulator-max-microvolt = <900000>;
  390 + regulator-boot-on;
  391 + regulator-always-on;
  392 + };
  393 +
  394 + ldo3_reg: LDO3 {
  395 + regulator-name = "LDO3";
  396 + regulator-min-microvolt = <1800000>;
  397 + regulator-max-microvolt = <3300000>;
  398 + regulator-boot-on;
  399 + regulator-always-on;
  400 + };
  401 +
  402 + ldo4_reg: LDO4 {
  403 + regulator-name = "LDO4";
  404 + regulator-min-microvolt = <900000>;
  405 + regulator-max-microvolt = <1800000>;
  406 + regulator-boot-on;
  407 + regulator-always-on;
  408 + };
  409 +
  410 + ldo6_reg: LDO6 {
  411 + regulator-name = "LDO6";
  412 + regulator-min-microvolt = <900000>;
  413 + regulator-max-microvolt = <1800000>;
  414 + regulator-boot-on;
  415 + regulator-always-on;
  416 + };
  417 + };
  418 + };
  419 +};
  420 +
  421 +&i2c2 {
  422 + clock-frequency = <400000>;
  423 + pinctrl-names = "default", "gpio";
  424 + pinctrl-0 = <&pinctrl_i2c2>;
  425 + pinctrl-1 = <&pinctrl_i2c2_gpio>;
  426 + scl-gpios = <&gpio5 16 GPIO_ACTIVE_HIGH>;
  427 + sda-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
  428 + status = "okay";
  429 +};
  430 +
  431 +&i2c3 {
  432 + clock-frequency = <100000>;
  433 + pinctrl-names = "default", "gpio";
  434 + pinctrl-0 = <&pinctrl_i2c3>;
  435 + pinctrl-1 = <&pinctrl_i2c3_gpio>;
  436 + scl-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
  437 + sda-gpios = <&gpio5 19 GPIO_ACTIVE_HIGH>;
  438 + status = "okay";
  439 +};
  440 +
  441 +&snvs_pwrkey {
  442 + status = "okay";
  443 +};
  444 +
  445 +&uart2 { /* console */
  446 + pinctrl-names = "default";
  447 + pinctrl-0 = <&pinctrl_uart2>;
  448 + status = "okay";
  449 +};
  450 +
  451 +&usdhc2 {
  452 + pinctrl-names = "default", "state_100mhz", "state_200mhz";
  453 + pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
  454 + pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
  455 + pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
  456 + cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
  457 + bus-width = <4>;
  458 + vmmc-supply = <&reg_usdhc2_vmmc>;
  459 + status = "okay";
  460 +};
  461 +
  462 +&usdhc3 {
  463 + pinctrl-names = "default", "state_100mhz", "state_200mhz";
  464 + pinctrl-0 = <&pinctrl_usdhc3>;
  465 + pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
  466 + pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
  467 + bus-width = <8>;
  468 + non-removable;
  469 + status = "okay";
  470 +};
  471 +
  472 +&wdog1 {
  473 + pinctrl-names = "default";
  474 + pinctrl-0 = <&pinctrl_wdog>;
  475 + fsl,ext-reset-output;
  476 + status = "okay";
  477 +};
arch/arm/mach-imx/imx8m/Kconfig
... ... @@ -102,6 +102,18 @@
102 102 select SUPPORT_SPL
103 103 select IMX8M_LPDDR4
104 104  
  105 +config TARGET_IMX8MN_AB2
  106 + bool "imx8mn LPDDR4 Audio board 2.0"
  107 + select IMX8MN
  108 + select SUPPORT_SPL
  109 + select IMX8M_LPDDR4
  110 +
  111 +config TARGET_IMX8MN_DDR4_AB2
  112 + bool "imx8mn DDR4 Audio board 2.0"
  113 + select IMX8MN
  114 + select SUPPORT_SPL
  115 + select IMX8M_DDR4
  116 +
105 117 config TARGET_VERDIN_IMX8MM
106 118 bool "Support Toradex Verdin iMX8M Mini module"
107 119 select IMX8MM
board/freescale/imx8mm_ab2/Kconfig
1   -if TARGET_IMX8MM_AB2
  1 +if TARGET_IMX8MM_AB2 || TARGET_IMX8MN_AB2 || TARGET_IMX8MN_DDR4_AB2
2 2  
3 3 config SYS_BOARD
4 4 default "imx8mm_ab2"
... ... @@ -9,6 +9,11 @@
9 9 if TARGET_IMX8MM_AB2
10 10 config SYS_CONFIG_NAME
11 11 default "imx8mm_ab2"
  12 +endif
  13 +
  14 +if TARGET_IMX8MN_AB2 || TARGET_IMX8MN_DDR4_AB2
  15 +config SYS_CONFIG_NAME
  16 + default "imx8mn_ab2"
12 17 endif
13 18  
14 19 source "board/freescale/common/Kconfig"
board/freescale/imx8mm_ab2/Makefile
... ... @@ -9,5 +9,7 @@
9 9 ifdef CONFIG_SPL_BUILD
10 10 obj-y += spl.o
11 11 obj-$(CONFIG_TARGET_IMX8MM_AB2) += lpddr4_imx8mm_som.o
  12 +obj-$(CONFIG_TARGET_IMX8MN_AB2) += lpddr4_imx8mn_som.o
  13 +obj-$(CONFIG_TARGET_IMX8MN_DDR4_AB2) += ddr4_imx8mn_som.o
12 14 endif
board/freescale/imx8mm_ab2/ddr4_imx8mn_som.c
Changes suppressed. Click to show
  1 +/*
  2 + * Copyright 2019 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + *
  6 + * Generated code from MX8M_DDR_tool
  7 + * Align with uboot version:
  8 + * imx_v2018.03_4.14.78_1.0.0_ga ~ imx_v2018.04_4.19.35_1.0.0_ga
  9 + */
  10 +
  11 +#include <linux/kernel.h>
  12 +#include <asm/arch/ddr.h>
  13 +
  14 +struct dram_cfg_param ddr_ddrc_cfg[] = {
  15 + /** Initialize DDRC registers **/
  16 + { 0x3d400000, 0x81040010 },
  17 + { 0x3d400030, 0x20 },
  18 + { 0x3d400034, 0x221306 },
  19 + { 0x3d400050, 0x210070 },
  20 + { 0x3d400054, 0x10008 },
  21 + { 0x3d400060, 0x0 },
  22 + { 0x3d400064, 0x92014a },
  23 + { 0x3d4000c0, 0x0 },
  24 + { 0x3d4000c4, 0x1000 },
  25 + { 0x3d4000d0, 0xc0030126 },
  26 + { 0x3d4000d4, 0x770000 },
  27 + { 0x3d4000dc, 0x8340105 },
  28 + { 0x3d4000e0, 0x180200 },
  29 + { 0x3d4000e4, 0x110000 },
  30 + { 0x3d4000e8, 0x2000600 },
  31 + { 0x3d4000ec, 0x810 },
  32 + { 0x3d4000f0, 0x20 },
  33 + { 0x3d4000f4, 0xec7 },
  34 + { 0x3d400100, 0x11122914 },
  35 + { 0x3d400104, 0x4051c },
  36 + { 0x3d400108, 0x608050d },
  37 + { 0x3d40010c, 0x400c },
  38 + { 0x3d400110, 0x8030409 },
  39 + { 0x3d400114, 0x6060403 },
  40 + { 0x3d40011c, 0x606 },
  41 + { 0x3d400120, 0x7070d0c },
  42 + { 0x3d400124, 0x2040a },
  43 + { 0x3d40012c, 0x1809010e },
  44 + { 0x3d400130, 0x8 },
  45 + { 0x3d40013c, 0x0 },
  46 + { 0x3d400180, 0x1000040 },
  47 + { 0x3d400184, 0x493e },
  48 + { 0x3d400190, 0x38b8207 },
  49 + { 0x3d400194, 0x2020303 },
  50 + { 0x3d400198, 0x7f04011 },
  51 + { 0x3d40019c, 0xb0 },
  52 + { 0x3d4001a0, 0xe0400018 },
  53 + { 0x3d4001a4, 0x48005a },
  54 + { 0x3d4001a8, 0x80000000 },
  55 + { 0x3d4001b0, 0x1 },
  56 + { 0x3d4001b4, 0xb07 },
  57 + { 0x3d4001b8, 0x4 },
  58 + { 0x3d4001c0, 0x1 },
  59 + { 0x3d4001c4, 0x0 },
  60 + { 0x3d400200, 0x3f1f },
  61 + { 0x3d400204, 0x3f0909 },
  62 + { 0x3d400208, 0x700 },
  63 + { 0x3d40020c, 0x0 },
  64 + { 0x3d400210, 0x1f1f },
  65 + { 0x3d400214, 0x7070707 },
  66 + { 0x3d400218, 0x7070707 },
  67 + { 0x3d40021c, 0xf07 },
  68 + { 0x3d400220, 0x3f01 },
  69 + { 0x3d400240, 0x6000610 },
  70 + { 0x3d400244, 0x1323 },
  71 + { 0x3d400400, 0x100 },
  72 +
  73 + /* performance setting */
  74 + { 0x3d400250, 0x00001f05 },
  75 + { 0x3d400254, 0x1f },
  76 + { 0x3d400264, 0x900003ff },
  77 + { 0x3d40026c, 0x200003ff },
  78 + { 0x3d400494, 0x01000e00 },
  79 + { 0x3d400498, 0x03ff0000 },
  80 + { 0x3d40049c, 0x01000e00 },
  81 + { 0x3d4004a0, 0x03ff0000 },
  82 +
  83 + { 0x3d402050, 0x210070 },
  84 + { 0x3d402064, 0x400093 },
  85 + { 0x3d4020dc, 0x105 },
  86 + { 0x3d4020e0, 0x0 },
  87 + { 0x3d4020e8, 0x2000600 },
  88 + { 0x3d4020ec, 0x10 },
  89 + { 0x3d402100, 0xb081209 },
  90 + { 0x3d402104, 0x2020d },
  91 + { 0x3d402108, 0x5050309 },
  92 + { 0x3d40210c, 0x400c },
  93 + { 0x3d402110, 0x5030206 },
  94 + { 0x3d402114, 0x3030202 },
  95 + { 0x3d40211c, 0x303 },
  96 + { 0x3d402120, 0x4040d06 },
  97 + { 0x3d402124, 0x20208 },
  98 + { 0x3d40212c, 0x1205010e },
  99 + { 0x3d402130, 0x8 },
  100 + { 0x3d40213c, 0x0 },
  101 + { 0x3d402180, 0x1000040 },
  102 + { 0x3d402190, 0x3848204 },
  103 + { 0x3d402194, 0x2020303 },
  104 + { 0x3d4021b4, 0x404 },
  105 + { 0x3d4021b8, 0x4 },
  106 + { 0x3d402240, 0x6000600 },
  107 + { 0x3d4020f4, 0xec7 },
  108 +};
  109 +
  110 +/* PHY Initialize Configuration */
  111 +struct dram_cfg_param ddr_ddrphy_cfg[] = {
  112 + { 0x1005f, 0x2fd },
  113 + { 0x1015f, 0x2fd },
  114 + { 0x1105f, 0x2fd },
  115 + { 0x1115f, 0x2fd },
  116 + { 0x11005f, 0x2fd },
  117 + { 0x11015f, 0x2fd },
  118 + { 0x11105f, 0x2fd },
  119 + { 0x11115f, 0x2fd },
  120 + { 0x55, 0x355 },
  121 + { 0x1055, 0x355 },
  122 + { 0x2055, 0x355 },
  123 + { 0x3055, 0x355 },
  124 + { 0x4055, 0x55 },
  125 + { 0x5055, 0x55 },
  126 + { 0x6055, 0x355 },
  127 + { 0x7055, 0x355 },
  128 + { 0x8055, 0x355 },
  129 + { 0x9055, 0x355 },
  130 + { 0x200c5, 0xa },
  131 + { 0x1200c5, 0x6 },
  132 + { 0x2002e, 0x2 },
  133 + { 0x12002e, 0x1 },
  134 + { 0x20024, 0x8 },
  135 + { 0x2003a, 0x2 },
  136 + { 0x120024, 0x8 },
  137 + { 0x2003a, 0x2 },
  138 + { 0x20056, 0x6 },
  139 + { 0x120056, 0xa },
  140 + { 0x1004d, 0x1a },
  141 + { 0x1014d, 0x1a },
  142 + { 0x1104d, 0x1a },
  143 + { 0x1114d, 0x1a },
  144 + { 0x11004d, 0x1a },
  145 + { 0x11014d, 0x1a },
  146 + { 0x11104d, 0x1a },
  147 + { 0x11114d, 0x1a },
  148 + { 0x10049, 0xe38 },
  149 + { 0x10149, 0xe38 },
  150 + { 0x11049, 0xe38 },
  151 + { 0x11149, 0xe38 },
  152 + { 0x110049, 0xe38 },
  153 + { 0x110149, 0xe38 },
  154 + { 0x111049, 0xe38 },
  155 + { 0x111149, 0xe38 },
  156 + { 0x43, 0x63 },
  157 + { 0x1043, 0x63 },
  158 + { 0x2043, 0x63 },
  159 + { 0x3043, 0x63 },
  160 + { 0x4043, 0x63 },
  161 + { 0x5043, 0x63 },
  162 + { 0x6043, 0x63 },
  163 + { 0x7043, 0x63 },
  164 + { 0x8043, 0x63 },
  165 + { 0x9043, 0x63 },
  166 + { 0x20018, 0x1 },
  167 + { 0x20075, 0x2 },
  168 + { 0x20050, 0x0 },
  169 + { 0x20008, 0x258 },
  170 + { 0x120008, 0x10a },
  171 + { 0x20088, 0x9 },
  172 + { 0x200b2, 0x268 },
  173 + { 0x10043, 0x5b1 },
  174 + { 0x10143, 0x5b1 },
  175 + { 0x11043, 0x5b1 },
  176 + { 0x11143, 0x5b1 },
  177 + { 0x1200b2, 0x268 },
  178 + { 0x110043, 0x5b1 },
  179 + { 0x110143, 0x5b1 },
  180 + { 0x111043, 0x5b1 },
  181 + { 0x111143, 0x5b1 },
  182 + { 0x200fa, 0x1 },
  183 + { 0x1200fa, 0x1 },
  184 + { 0x20019, 0x5 },
  185 + { 0x120019, 0x5 },
  186 + { 0x200f0, 0x5555 },
  187 + { 0x200f1, 0x5555 },
  188 + { 0x200f2, 0x5555 },
  189 + { 0x200f3, 0x5555 },
  190 + { 0x200f4, 0x5555 },
  191 + { 0x200f5, 0x5555 },
  192 + { 0x200f6, 0x5555 },
  193 + { 0x200f7, 0xf000 },
  194 + { 0x20025, 0x0 },
  195 + { 0x2002d, 0x0 },
  196 + { 0x12002d, 0x0 },
  197 + { 0x2005b, 0x7529 },
  198 + { 0x2005c, 0x0 },
  199 + { 0x200c7, 0x21 },
  200 + { 0x200ca, 0x24 },
  201 + { 0x200cc, 0x1f7 },
  202 + { 0x1200c7, 0x21 },
  203 + { 0x1200ca, 0x24 },
  204 + { 0x1200cc, 0x1f7 },
  205 + { 0x2007d, 0x212 },
  206 + { 0x12007d, 0x212 },
  207 + { 0x2007c, 0x61 },
  208 + { 0x12007c, 0x61 },
  209 + { 0x1004a, 0x500 },
  210 + { 0x1104a, 0x500 },
  211 + { 0x2002c, 0x0 },
  212 +};
  213 +
  214 +/* ddr phy trained csr */
  215 +struct dram_cfg_param ddr_ddrphy_trained_csr[] = {
  216 + {0x0200b2, 0x0},
  217 + {0x1200b2, 0x0},
  218 + {0x2200b2, 0x0},
  219 + {0x0200cb, 0x0},
  220 + {0x010043, 0x0},
  221 + {0x110043, 0x0},
  222 + {0x210043, 0x0},
  223 + {0x010143, 0x0},
  224 + {0x110143, 0x0},
  225 + {0x210143, 0x0},
  226 + {0x011043, 0x0},
  227 + {0x111043, 0x0},
  228 + {0x211043, 0x0},
  229 + {0x011143, 0x0},
  230 + {0x111143, 0x0},
  231 + {0x211143, 0x0},
  232 + {0x000080, 0x0},
  233 + {0x100080, 0x0},
  234 + {0x200080, 0x0},
  235 + {0x001080, 0x0},
  236 + {0x101080, 0x0},
  237 + {0x201080, 0x0},
  238 + {0x002080, 0x0},
  239 + {0x102080, 0x0},
  240 + {0x202080, 0x0},
  241 + {0x003080, 0x0},
  242 + {0x103080, 0x0},
  243 + {0x203080, 0x0},
  244 + {0x004080, 0x0},
  245 + {0x104080, 0x0},
  246 + {0x204080, 0x0},
  247 + {0x005080, 0x0},
  248 + {0x105080, 0x0},
  249 + {0x205080, 0x0},
  250 + {0x006080, 0x0},
  251 + {0x106080, 0x0},
  252 + {0x206080, 0x0},
  253 + {0x007080, 0x0},
  254 + {0x107080, 0x0},
  255 + {0x207080, 0x0},
  256 + {0x008080, 0x0},
  257 + {0x108080, 0x0},
  258 + {0x208080, 0x0},
  259 + {0x009080, 0x0},
  260 + {0x109080, 0x0},
  261 + {0x209080, 0x0},
  262 + {0x010080, 0x0},
  263 + {0x110080, 0x0},
  264 + {0x210080, 0x0},
  265 + {0x010180, 0x0},
  266 + {0x110180, 0x0},
  267 + {0x210180, 0x0},
  268 + {0x010081, 0x0},
  269 + {0x110081, 0x0},
  270 + {0x210081, 0x0},
  271 + {0x010181, 0x0},
  272 + {0x110181, 0x0},
  273 + {0x210181, 0x0},
  274 + {0x010082, 0x0},
  275 + {0x110082, 0x0},
  276 + {0x210082, 0x0},
  277 + {0x010182, 0x0},
  278 + {0x110182, 0x0},
  279 + {0x210182, 0x0},
  280 + {0x010083, 0x0},
  281 + {0x110083, 0x0},
  282 + {0x210083, 0x0},
  283 + {0x010183, 0x0},
  284 + {0x110183, 0x0},
  285 + {0x210183, 0x0},
  286 + {0x011080, 0x0},
  287 + {0x111080, 0x0},
  288 + {0x211080, 0x0},
  289 + {0x011180, 0x0},
  290 + {0x111180, 0x0},
  291 + {0x211180, 0x0},
  292 + {0x011081, 0x0},
  293 + {0x111081, 0x0},
  294 + {0x211081, 0x0},
  295 + {0x011181, 0x0},
  296 + {0x111181, 0x0},
  297 + {0x211181, 0x0},
  298 + {0x011082, 0x0},
  299 + {0x111082, 0x0},
  300 + {0x211082, 0x0},
  301 + {0x011182, 0x0},
  302 + {0x111182, 0x0},
  303 + {0x211182, 0x0},
  304 + {0x011083, 0x0},
  305 + {0x111083, 0x0},
  306 + {0x211083, 0x0},
  307 + {0x011183, 0x0},
  308 + {0x111183, 0x0},
  309 + {0x211183, 0x0},
  310 + {0x0100d0, 0x0},
  311 + {0x1100d0, 0x0},
  312 + {0x2100d0, 0x0},
  313 + {0x0101d0, 0x0},
  314 + {0x1101d0, 0x0},
  315 + {0x2101d0, 0x0},
  316 + {0x0100d1, 0x0},
  317 + {0x1100d1, 0x0},
  318 + {0x2100d1, 0x0},
  319 + {0x0101d1, 0x0},
  320 + {0x1101d1, 0x0},
  321 + {0x2101d1, 0x0},
  322 + {0x0100d2, 0x0},
  323 + {0x1100d2, 0x0},
  324 + {0x2100d2, 0x0},
  325 + {0x0101d2, 0x0},
  326 + {0x1101d2, 0x0},
  327 + {0x2101d2, 0x0},
  328 + {0x0100d3, 0x0},
  329 + {0x1100d3, 0x0},
  330 + {0x2100d3, 0x0},
  331 + {0x0101d3, 0x0},
  332 + {0x1101d3, 0x0},
  333 + {0x2101d3, 0x0},
  334 + {0x0110d0, 0x0},
  335 + {0x1110d0, 0x0},
  336 + {0x2110d0, 0x0},
  337 + {0x0111d0, 0x0},
  338 + {0x1111d0, 0x0},
  339 + {0x2111d0, 0x0},
  340 + {0x0110d1, 0x0},
  341 + {0x1110d1, 0x0},
  342 + {0x2110d1, 0x0},
  343 + {0x0111d1, 0x0},
  344 + {0x1111d1, 0x0},
  345 + {0x2111d1, 0x0},
  346 + {0x0110d2, 0x0},
  347 + {0x1110d2, 0x0},
  348 + {0x2110d2, 0x0},
  349 + {0x0111d2, 0x0},
  350 + {0x1111d2, 0x0},
  351 + {0x2111d2, 0x0},
  352 + {0x0110d3, 0x0},
  353 + {0x1110d3, 0x0},
  354 + {0x2110d3, 0x0},
  355 + {0x0111d3, 0x0},
  356 + {0x1111d3, 0x0},
  357 + {0x2111d3, 0x0},
  358 + {0x010068, 0x0},
  359 + {0x010168, 0x0},
  360 + {0x010268, 0x0},
  361 + {0x010368, 0x0},
  362 + {0x010468, 0x0},
  363 + {0x010568, 0x0},
  364 + {0x010668, 0x0},
  365 + {0x010768, 0x0},
  366 + {0x010868, 0x0},
  367 + {0x010069, 0x0},
  368 + {0x010169, 0x0},
  369 + {0x010269, 0x0},
  370 + {0x010369, 0x0},
  371 + {0x010469, 0x0},
  372 + {0x010569, 0x0},
  373 + {0x010669, 0x0},
  374 + {0x010769, 0x0},
  375 + {0x010869, 0x0},
  376 + {0x01006a, 0x0},
  377 + {0x01016a, 0x0},
  378 + {0x01026a, 0x0},
  379 + {0x01036a, 0x0},
  380 + {0x01046a, 0x0},
  381 + {0x01056a, 0x0},
  382 + {0x01066a, 0x0},
  383 + {0x01076a, 0x0},
  384 + {0x01086a, 0x0},
  385 + {0x01006b, 0x0},
  386 + {0x01016b, 0x0},
  387 + {0x01026b, 0x0},
  388 + {0x01036b, 0x0},
  389 + {0x01046b, 0x0},
  390 + {0x01056b, 0x0},
  391 + {0x01066b, 0x0},
  392 + {0x01076b, 0x0},
  393 + {0x01086b, 0x0},
  394 + {0x011068, 0x0},
  395 + {0x011168, 0x0},
  396 + {0x011268, 0x0},
  397 + {0x011368, 0x0},
  398 + {0x011468, 0x0},
  399 + {0x011568, 0x0},
  400 + {0x011668, 0x0},
  401 + {0x011768, 0x0},
  402 + {0x011868, 0x0},
  403 + {0x011069, 0x0},
  404 + {0x011169, 0x0},
  405 + {0x011269, 0x0},
  406 + {0x011369, 0x0},
  407 + {0x011469, 0x0},
  408 + {0x011569, 0x0},
  409 + {0x011669, 0x0},
  410 + {0x011769, 0x0},
  411 + {0x011869, 0x0},
  412 + {0x01106a, 0x0},
  413 + {0x01116a, 0x0},
  414 + {0x01126a, 0x0},
  415 + {0x01136a, 0x0},
  416 + {0x01146a, 0x0},
  417 + {0x01156a, 0x0},
  418 + {0x01166a, 0x0},
  419 + {0x01176a, 0x0},
  420 + {0x01186a, 0x0},
  421 + {0x01106b, 0x0},
  422 + {0x01116b, 0x0},
  423 + {0x01126b, 0x0},
  424 + {0x01136b, 0x0},
  425 + {0x01146b, 0x0},
  426 + {0x01156b, 0x0},
  427 + {0x01166b, 0x0},
  428 + {0x01176b, 0x0},
  429 + {0x01186b, 0x0},
  430 + {0x01008c, 0x0},
  431 + {0x11008c, 0x0},
  432 + {0x21008c, 0x0},
  433 + {0x01018c, 0x0},
  434 + {0x11018c, 0x0},
  435 + {0x21018c, 0x0},
  436 + {0x01008d, 0x0},
  437 + {0x11008d, 0x0},
  438 + {0x21008d, 0x0},
  439 + {0x01018d, 0x0},
  440 + {0x11018d, 0x0},
  441 + {0x21018d, 0x0},
  442 + {0x01008e, 0x0},
  443 + {0x11008e, 0x0},
  444 + {0x21008e, 0x0},
  445 + {0x01018e, 0x0},
  446 + {0x11018e, 0x0},
  447 + {0x21018e, 0x0},
  448 + {0x01008f, 0x0},
  449 + {0x11008f, 0x0},
  450 + {0x21008f, 0x0},
  451 + {0x01018f, 0x0},
  452 + {0x11018f, 0x0},
  453 + {0x21018f, 0x0},
  454 + {0x01108c, 0x0},
  455 + {0x11108c, 0x0},
  456 + {0x21108c, 0x0},
  457 + {0x01118c, 0x0},
  458 + {0x11118c, 0x0},
  459 + {0x21118c, 0x0},
  460 + {0x01108d, 0x0},
  461 + {0x11108d, 0x0},
  462 + {0x21108d, 0x0},
  463 + {0x01118d, 0x0},
  464 + {0x11118d, 0x0},
  465 + {0x21118d, 0x0},
  466 + {0x01108e, 0x0},
  467 + {0x11108e, 0x0},
  468 + {0x21108e, 0x0},
  469 + {0x01118e, 0x0},
  470 + {0x11118e, 0x0},
  471 + {0x21118e, 0x0},
  472 + {0x01108f, 0x0},
  473 + {0x11108f, 0x0},
  474 + {0x21108f, 0x0},
  475 + {0x01118f, 0x0},
  476 + {0x11118f, 0x0},
  477 + {0x21118f, 0x0},
  478 + {0x0100c0, 0x0},
  479 + {0x1100c0, 0x0},
  480 + {0x2100c0, 0x0},
  481 + {0x0101c0, 0x0},
  482 + {0x1101c0, 0x0},
  483 + {0x2101c0, 0x0},
  484 + {0x0102c0, 0x0},
  485 + {0x1102c0, 0x0},
  486 + {0x2102c0, 0x0},
  487 + {0x0103c0, 0x0},
  488 + {0x1103c0, 0x0},
  489 + {0x2103c0, 0x0},
  490 + {0x0104c0, 0x0},
  491 + {0x1104c0, 0x0},
  492 + {0x2104c0, 0x0},
  493 + {0x0105c0, 0x0},
  494 + {0x1105c0, 0x0},
  495 + {0x2105c0, 0x0},
  496 + {0x0106c0, 0x0},
  497 + {0x1106c0, 0x0},
  498 + {0x2106c0, 0x0},
  499 + {0x0107c0, 0x0},
  500 + {0x1107c0, 0x0},
  501 + {0x2107c0, 0x0},
  502 + {0x0108c0, 0x0},
  503 + {0x1108c0, 0x0},
  504 + {0x2108c0, 0x0},
  505 + {0x0100c1, 0x0},
  506 + {0x1100c1, 0x0},
  507 + {0x2100c1, 0x0},
  508 + {0x0101c1, 0x0},
  509 + {0x1101c1, 0x0},
  510 + {0x2101c1, 0x0},
  511 + {0x0102c1, 0x0},
  512 + {0x1102c1, 0x0},
  513 + {0x2102c1, 0x0},
  514 + {0x0103c1, 0x0},
  515 + {0x1103c1, 0x0},
  516 + {0x2103c1, 0x0},
  517 + {0x0104c1, 0x0},
  518 + {0x1104c1, 0x0},
  519 + {0x2104c1, 0x0},
  520 + {0x0105c1, 0x0},
  521 + {0x1105c1, 0x0},
  522 + {0x2105c1, 0x0},
  523 + {0x0106c1, 0x0},
  524 + {0x1106c1, 0x0},
  525 + {0x2106c1, 0x0},
  526 + {0x0107c1, 0x0},
  527 + {0x1107c1, 0x0},
  528 + {0x2107c1, 0x0},
  529 + {0x0108c1, 0x0},
  530 + {0x1108c1, 0x0},
  531 + {0x2108c1, 0x0},
  532 + {0x0100c2, 0x0},
  533 + {0x1100c2, 0x0},
  534 + {0x2100c2, 0x0},
  535 + {0x0101c2, 0x0},
  536 + {0x1101c2, 0x0},
  537 + {0x2101c2, 0x0},
  538 + {0x0102c2, 0x0},
  539 + {0x1102c2, 0x0},
  540 + {0x2102c2, 0x0},
  541 + {0x0103c2, 0x0},
  542 + {0x1103c2, 0x0},
  543 + {0x2103c2, 0x0},
  544 + {0x0104c2, 0x0},
  545 + {0x1104c2, 0x0},
  546 + {0x2104c2, 0x0},
  547 + {0x0105c2, 0x0},
  548 + {0x1105c2, 0x0},
  549 + {0x2105c2, 0x0},
  550 + {0x0106c2, 0x0},
  551 + {0x1106c2, 0x0},
  552 + {0x2106c2, 0x0},
  553 + {0x0107c2, 0x0},
  554 + {0x1107c2, 0x0},
  555 + {0x2107c2, 0x0},
  556 + {0x0108c2, 0x0},
  557 + {0x1108c2, 0x0},
  558 + {0x2108c2, 0x0},
  559 + {0x0100c3, 0x0},
  560 + {0x1100c3, 0x0},
  561 + {0x2100c3, 0x0},
  562 + {0x0101c3, 0x0},
  563 + {0x1101c3, 0x0},
  564 + {0x2101c3, 0x0},
  565 + {0x0102c3, 0x0},
  566 + {0x1102c3, 0x0},
  567 + {0x2102c3, 0x0},
  568 + {0x0103c3, 0x0},
  569 + {0x1103c3, 0x0},
  570 + {0x2103c3, 0x0},
  571 + {0x0104c3, 0x0},
  572 + {0x1104c3, 0x0},
  573 + {0x2104c3, 0x0},
  574 + {0x0105c3, 0x0},
  575 + {0x1105c3, 0x0},
  576 + {0x2105c3, 0x0},
  577 + {0x0106c3, 0x0},
  578 + {0x1106c3, 0x0},
  579 + {0x2106c3, 0x0},
  580 + {0x0107c3, 0x0},
  581 + {0x1107c3, 0x0},
  582 + {0x2107c3, 0x0},
  583 + {0x0108c3, 0x0},
  584 + {0x1108c3, 0x0},
  585 + {0x2108c3, 0x0},
  586 + {0x0110c0, 0x0},
  587 + {0x1110c0, 0x0},
  588 + {0x2110c0, 0x0},
  589 + {0x0111c0, 0x0},
  590 + {0x1111c0, 0x0},
  591 + {0x2111c0, 0x0},
  592 + {0x0112c0, 0x0},
  593 + {0x1112c0, 0x0},
  594 + {0x2112c0, 0x0},
  595 + {0x0113c0, 0x0},
  596 + {0x1113c0, 0x0},
  597 + {0x2113c0, 0x0},
  598 + {0x0114c0, 0x0},
  599 + {0x1114c0, 0x0},
  600 + {0x2114c0, 0x0},
  601 + {0x0115c0, 0x0},
  602 + {0x1115c0, 0x0},
  603 + {0x2115c0, 0x0},
  604 + {0x0116c0, 0x0},
  605 + {0x1116c0, 0x0},
  606 + {0x2116c0, 0x0},
  607 + {0x0117c0, 0x0},
  608 + {0x1117c0, 0x0},
  609 + {0x2117c0, 0x0},
  610 + {0x0118c0, 0x0},
  611 + {0x1118c0, 0x0},
  612 + {0x2118c0, 0x0},
  613 + {0x0110c1, 0x0},
  614 + {0x1110c1, 0x0},
  615 + {0x2110c1, 0x0},
  616 + {0x0111c1, 0x0},
  617 + {0x1111c1, 0x0},
  618 + {0x2111c1, 0x0},
  619 + {0x0112c1, 0x0},
  620 + {0x1112c1, 0x0},
  621 + {0x2112c1, 0x0},
  622 + {0x0113c1, 0x0},
  623 + {0x1113c1, 0x0},
  624 + {0x2113c1, 0x0},
  625 + {0x0114c1, 0x0},
  626 + {0x1114c1, 0x0},
  627 + {0x2114c1, 0x0},
  628 + {0x0115c1, 0x0},
  629 + {0x1115c1, 0x0},
  630 + {0x2115c1, 0x0},
  631 + {0x0116c1, 0x0},
  632 + {0x1116c1, 0x0},
  633 + {0x2116c1, 0x0},
  634 + {0x0117c1, 0x0},
  635 + {0x1117c1, 0x0},
  636 + {0x2117c1, 0x0},
  637 + {0x0118c1, 0x0},
  638 + {0x1118c1, 0x0},
  639 + {0x2118c1, 0x0},
  640 + {0x0110c2, 0x0},
  641 + {0x1110c2, 0x0},
  642 + {0x2110c2, 0x0},
  643 + {0x0111c2, 0x0},
  644 + {0x1111c2, 0x0},
  645 + {0x2111c2, 0x0},
  646 + {0x0112c2, 0x0},
  647 + {0x1112c2, 0x0},
  648 + {0x2112c2, 0x0},
  649 + {0x0113c2, 0x0},
  650 + {0x1113c2, 0x0},
  651 + {0x2113c2, 0x0},
  652 + {0x0114c2, 0x0},
  653 + {0x1114c2, 0x0},
  654 + {0x2114c2, 0x0},
  655 + {0x0115c2, 0x0},
  656 + {0x1115c2, 0x0},
  657 + {0x2115c2, 0x0},
  658 + {0x0116c2, 0x0},
  659 + {0x1116c2, 0x0},
  660 + {0x2116c2, 0x0},
  661 + {0x0117c2, 0x0},
  662 + {0x1117c2, 0x0},
  663 + {0x2117c2, 0x0},
  664 + {0x0118c2, 0x0},
  665 + {0x1118c2, 0x0},
  666 + {0x2118c2, 0x0},
  667 + {0x0110c3, 0x0},
  668 + {0x1110c3, 0x0},
  669 + {0x2110c3, 0x0},
  670 + {0x0111c3, 0x0},
  671 + {0x1111c3, 0x0},
  672 + {0x2111c3, 0x0},
  673 + {0x0112c3, 0x0},
  674 + {0x1112c3, 0x0},
  675 + {0x2112c3, 0x0},
  676 + {0x0113c3, 0x0},
  677 + {0x1113c3, 0x0},
  678 + {0x2113c3, 0x0},
  679 + {0x0114c3, 0x0},
  680 + {0x1114c3, 0x0},
  681 + {0x2114c3, 0x0},
  682 + {0x0115c3, 0x0},
  683 + {0x1115c3, 0x0},
  684 + {0x2115c3, 0x0},
  685 + {0x0116c3, 0x0},
  686 + {0x1116c3, 0x0},
  687 + {0x2116c3, 0x0},
  688 + {0x0117c3, 0x0},
  689 + {0x1117c3, 0x0},
  690 + {0x2117c3, 0x0},
  691 + {0x0118c3, 0x0},
  692 + {0x1118c3, 0x0},
  693 + {0x2118c3, 0x0},
  694 + {0x010020, 0x0},
  695 + {0x110020, 0x0},
  696 + {0x210020, 0x0},
  697 + {0x011020, 0x0},
  698 + {0x111020, 0x0},
  699 + {0x211020, 0x0},
  700 + {0x02007d, 0x0},
  701 + {0x12007d, 0x0},
  702 + {0x22007d, 0x0},
  703 + {0x010040, 0x0},
  704 + {0x010140, 0x0},
  705 + {0x010240, 0x0},
  706 + {0x010340, 0x0},
  707 + {0x010440, 0x0},
  708 + {0x010540, 0x0},
  709 + {0x010640, 0x0},
  710 + {0x010740, 0x0},
  711 + {0x010840, 0x0},
  712 + {0x010030, 0x0},
  713 + {0x010130, 0x0},
  714 + {0x010230, 0x0},
  715 + {0x010330, 0x0},
  716 + {0x010430, 0x0},
  717 + {0x010530, 0x0},
  718 + {0x010630, 0x0},
  719 + {0x010730, 0x0},
  720 + {0x010830, 0x0},
  721 + {0x011040, 0x0},
  722 + {0x011140, 0x0},
  723 + {0x011240, 0x0},
  724 + {0x011340, 0x0},
  725 + {0x011440, 0x0},
  726 + {0x011540, 0x0},
  727 + {0x011640, 0x0},
  728 + {0x011740, 0x0},
  729 + {0x011840, 0x0},
  730 + {0x011030, 0x0},
  731 + {0x011130, 0x0},
  732 + {0x011230, 0x0},
  733 + {0x011330, 0x0},
  734 + {0x011430, 0x0},
  735 + {0x011530, 0x0},
  736 + {0x011630, 0x0},
  737 + {0x011730, 0x0},
  738 + {0x011830, 0x0},
  739 +};
  740 +
  741 +/* P0 message block paremeter for training firmware */
  742 +struct dram_cfg_param ddr_fsp0_cfg[] = {
  743 + { 0xd0000, 0x0 },
  744 + { 0x54003, 0x960 },
  745 + { 0x54004, 0x2 },
  746 + { 0x54005, 0x2830 },
  747 + { 0x54006, 0x25e },
  748 + { 0x54007, 0x1000 },
  749 + { 0x54008, 0x101 },
  750 + { 0x5400b, 0x31f },
  751 + { 0x5400c, 0xc8 },
  752 + { 0x5400d, 0x100 },
  753 + { 0x54012, 0x1 },
  754 + { 0x5402f, 0x834 },
  755 + { 0x54030, 0x105 },
  756 + { 0x54031, 0x18 },
  757 + { 0x54032, 0x200 },
  758 + { 0x54033, 0x200 },
  759 + { 0x54034, 0x600 },
  760 + { 0x54035, 0x810 },
  761 + { 0x54036, 0x101 },
  762 + { 0x5403f, 0x1221 },
  763 + { 0x541fc, 0x100 },
  764 + { 0xd0000, 0x1 },
  765 +};
  766 +
  767 +
  768 +/* P1 message block paremeter for training firmware */
  769 +struct dram_cfg_param ddr_fsp1_cfg[] = {
  770 + { 0xd0000, 0x0 },
  771 + { 0x54002, 0x1 },
  772 + { 0x54003, 0x42a },
  773 + { 0x54004, 0x2 },
  774 + { 0x54005, 0x2830 },
  775 + { 0x54006, 0x25e },
  776 + { 0x54007, 0x1000 },
  777 + { 0x54008, 0x101 },
  778 + { 0x5400b, 0x21f },
  779 + { 0x5400c, 0xc8 },
  780 + { 0x5400d, 0x100 },
  781 + { 0x54012, 0x1 },
  782 + { 0x54030, 0x105 },
  783 + { 0x54033, 0x200 },
  784 + { 0x54034, 0x600 },
  785 + { 0x54035, 0x10 },
  786 + { 0x54036, 0x101 },
  787 + { 0x5403f, 0x1221 },
  788 + { 0x541fc, 0x100 },
  789 + { 0xd0000, 0x1 },
  790 +};
  791 +
  792 +
  793 +/* P0 2D message block paremeter for training firmware */
  794 +struct dram_cfg_param ddr_fsp0_2d_cfg[] = {
  795 + { 0xd0000, 0x0 },
  796 + { 0x54003, 0x960 },
  797 + { 0x54004, 0x2 },
  798 + { 0x54005, 0x2830 },
  799 + { 0x54006, 0x25e },
  800 + { 0x54007, 0x1000 },
  801 + { 0x54008, 0x101 },
  802 + { 0x5400b, 0x61 },
  803 + { 0x5400c, 0xc8 },
  804 + { 0x5400d, 0x100 },
  805 + { 0x5400e, 0x1f7f },
  806 + { 0x54012, 0x1 },
  807 + { 0x5402f, 0x834 },
  808 + { 0x54030, 0x105 },
  809 + { 0x54031, 0x18 },
  810 + { 0x54032, 0x200 },
  811 + { 0x54033, 0x200 },
  812 + { 0x54034, 0x600 },
  813 + { 0x54035, 0x810 },
  814 + { 0x54036, 0x101 },
  815 + { 0x5403f, 0x1221 },
  816 + { 0x541fc, 0x100 },
  817 + { 0xd0000, 0x1 },
  818 +};
  819 +
  820 +/* DRAM PHY init engine image */
  821 +struct dram_cfg_param ddr_phy_pie[] = {
  822 + { 0xd0000, 0x0 },
  823 + { 0x90000, 0x10 },
  824 + { 0x90001, 0x400 },
  825 + { 0x90002, 0x10e },
  826 + { 0x90003, 0x0 },
  827 + { 0x90004, 0x0 },
  828 + { 0x90005, 0x8 },
  829 + { 0x90029, 0xb },
  830 + { 0x9002a, 0x480 },
  831 + { 0x9002b, 0x109 },
  832 + { 0x9002c, 0x8 },
  833 + { 0x9002d, 0x448 },
  834 + { 0x9002e, 0x139 },
  835 + { 0x9002f, 0x8 },
  836 + { 0x90030, 0x478 },
  837 + { 0x90031, 0x109 },
  838 + { 0x90032, 0x2 },
  839 + { 0x90033, 0x10 },
  840 + { 0x90034, 0x139 },
  841 + { 0x90035, 0xb },
  842 + { 0x90036, 0x7c0 },
  843 + { 0x90037, 0x139 },
  844 + { 0x90038, 0x44 },
  845 + { 0x90039, 0x633 },
  846 + { 0x9003a, 0x159 },
  847 + { 0x9003b, 0x14f },
  848 + { 0x9003c, 0x630 },
  849 + { 0x9003d, 0x159 },
  850 + { 0x9003e, 0x47 },
  851 + { 0x9003f, 0x633 },
  852 + { 0x90040, 0x149 },
  853 + { 0x90041, 0x4f },
  854 + { 0x90042, 0x633 },
  855 + { 0x90043, 0x179 },
  856 + { 0x90044, 0x8 },
  857 + { 0x90045, 0xe0 },
  858 + { 0x90046, 0x109 },
  859 + { 0x90047, 0x0 },
  860 + { 0x90048, 0x7c8 },
  861 + { 0x90049, 0x109 },
  862 + { 0x9004a, 0x0 },
  863 + { 0x9004b, 0x1 },
  864 + { 0x9004c, 0x8 },
  865 + { 0x9004d, 0x0 },
  866 + { 0x9004e, 0x45a },
  867 + { 0x9004f, 0x9 },
  868 + { 0x90050, 0x0 },
  869 + { 0x90051, 0x448 },
  870 + { 0x90052, 0x109 },
  871 + { 0x90053, 0x40 },
  872 + { 0x90054, 0x633 },
  873 + { 0x90055, 0x179 },
  874 + { 0x90056, 0x1 },
  875 + { 0x90057, 0x618 },
  876 + { 0x90058, 0x109 },
  877 + { 0x90059, 0x40c0 },
  878 + { 0x9005a, 0x633 },
  879 + { 0x9005b, 0x149 },
  880 + { 0x9005c, 0x8 },
  881 + { 0x9005d, 0x4 },
  882 + { 0x9005e, 0x48 },
  883 + { 0x9005f, 0x4040 },
  884 + { 0x90060, 0x633 },
  885 + { 0x90061, 0x149 },
  886 + { 0x90062, 0x0 },
  887 + { 0x90063, 0x4 },
  888 + { 0x90064, 0x48 },
  889 + { 0x90065, 0x40 },
  890 + { 0x90066, 0x633 },
  891 + { 0x90067, 0x149 },
  892 + { 0x90068, 0x10 },
  893 + { 0x90069, 0x4 },
  894 + { 0x9006a, 0x18 },
  895 + { 0x9006b, 0x0 },
  896 + { 0x9006c, 0x4 },
  897 + { 0x9006d, 0x78 },
  898 + { 0x9006e, 0x549 },
  899 + { 0x9006f, 0x633 },
  900 + { 0x90070, 0x159 },
  901 + { 0x90071, 0xd49 },
  902 + { 0x90072, 0x633 },
  903 + { 0x90073, 0x159 },
  904 + { 0x90074, 0x94a },
  905 + { 0x90075, 0x633 },
  906 + { 0x90076, 0x159 },
  907 + { 0x90077, 0x441 },
  908 + { 0x90078, 0x633 },
  909 + { 0x90079, 0x149 },
  910 + { 0x9007a, 0x42 },
  911 + { 0x9007b, 0x633 },
  912 + { 0x9007c, 0x149 },
  913 + { 0x9007d, 0x1 },
  914 + { 0x9007e, 0x633 },
  915 + { 0x9007f, 0x149 },
  916 + { 0x90080, 0x0 },
  917 + { 0x90081, 0xe0 },
  918 + { 0x90082, 0x109 },
  919 + { 0x90083, 0xa },
  920 + { 0x90084, 0x10 },
  921 + { 0x90085, 0x109 },
  922 + { 0x90086, 0x9 },
  923 + { 0x90087, 0x3c0 },
  924 + { 0x90088, 0x149 },
  925 + { 0x90089, 0x9 },
  926 + { 0x9008a, 0x3c0 },
  927 + { 0x9008b, 0x159 },
  928 + { 0x9008c, 0x18 },
  929 + { 0x9008d, 0x10 },
  930 + { 0x9008e, 0x109 },
  931 + { 0x9008f, 0x0 },
  932 + { 0x90090, 0x3c0 },
  933 + { 0x90091, 0x109 },
  934 + { 0x90092, 0x18 },
  935 + { 0x90093, 0x4 },
  936 + { 0x90094, 0x48 },
  937 + { 0x90095, 0x18 },
  938 + { 0x90096, 0x4 },
  939 + { 0x90097, 0x58 },
  940 + { 0x90098, 0xb },
  941 + { 0x90099, 0x10 },
  942 + { 0x9009a, 0x109 },
  943 + { 0x9009b, 0x1 },
  944 + { 0x9009c, 0x10 },
  945 + { 0x9009d, 0x109 },
  946 + { 0x9009e, 0x5 },
  947 + { 0x9009f, 0x7c0 },
  948 + { 0x900a0, 0x109 },
  949 + { 0x900a1, 0x0 },
  950 + { 0x900a2, 0x8140 },
  951 + { 0x900a3, 0x10c },
  952 + { 0x900a4, 0x10 },
  953 + { 0x900a5, 0x8138 },
  954 + { 0x900a6, 0x10c },
  955 + { 0x900a7, 0x8 },
  956 + { 0x900a8, 0x7c8 },
  957 + { 0x900a9, 0x101 },
  958 + { 0x900aa, 0x8 },
  959 + { 0x900ab, 0x448 },
  960 + { 0x900ac, 0x109 },
  961 + { 0x900ad, 0xf },
  962 + { 0x900ae, 0x7c0 },
  963 + { 0x900af, 0x109 },
  964 + { 0x900b0, 0x47 },
  965 + { 0x900b1, 0x630 },
  966 + { 0x900b2, 0x109 },
  967 + { 0x900b3, 0x8 },
  968 + { 0x900b4, 0x618 },
  969 + { 0x900b5, 0x109 },
  970 + { 0x900b6, 0x8 },
  971 + { 0x900b7, 0xe0 },
  972 + { 0x900b8, 0x109 },
  973 + { 0x900b9, 0x0 },
  974 + { 0x900ba, 0x7c8 },
  975 + { 0x900bb, 0x109 },
  976 + { 0x900bc, 0x8 },
  977 + { 0x900bd, 0x8140 },
  978 + { 0x900be, 0x10c },
  979 + { 0x900bf, 0x0 },
  980 + { 0x900c0, 0x1 },
  981 + { 0x900c1, 0x8 },
  982 + { 0x900c2, 0x8 },
  983 + { 0x900c3, 0x4 },
  984 + { 0x900c4, 0x8 },
  985 + { 0x900c5, 0x8 },
  986 + { 0x900c6, 0x7c8 },
  987 + { 0x900c7, 0x101 },
  988 + { 0x90006, 0x0 },
  989 + { 0x90007, 0x0 },
  990 + { 0x90008, 0x8 },
  991 + { 0x90009, 0x0 },
  992 + { 0x9000a, 0x0 },
  993 + { 0x9000b, 0x0 },
  994 + { 0xd00e7, 0x400 },
  995 + { 0x90017, 0x0 },
  996 + { 0x90026, 0x2b },
  997 + { 0x2000b, 0x4b },
  998 + { 0x2000c, 0x96 },
  999 + { 0x2000d, 0x5dc },
  1000 + { 0x2000e, 0x2c },
  1001 + { 0x12000b, 0x21 },
  1002 + { 0x12000c, 0x42 },
  1003 + { 0x12000d, 0x29a },
  1004 + { 0x12000e, 0x21 },
  1005 + { 0x9000c, 0x0 },
  1006 + { 0x9000d, 0x173 },
  1007 + { 0x9000e, 0x60 },
  1008 + { 0x9000f, 0x6110 },
  1009 + { 0x90010, 0x2152 },
  1010 + { 0x90011, 0xdfbd },
  1011 + { 0x90012, 0xffff },
  1012 + { 0x90013, 0x6152 },
  1013 + { 0x20089, 0x1 },
  1014 + { 0x20088, 0x19 },
  1015 + { 0xc0080, 0x0 },
  1016 + { 0xd0000, 0x1 }
  1017 +};
  1018 +
  1019 +struct dram_fsp_msg ddr_dram_fsp_msg[] = {
  1020 + {
  1021 + /* P0 2400mts 1D */
  1022 + .drate = 2400,
  1023 + .fw_type = FW_1D_IMAGE,
  1024 + .fsp_cfg = ddr_fsp0_cfg,
  1025 + .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg),
  1026 + },
  1027 + {
  1028 + /* P1 1066mts 1D */
  1029 + .drate = 1066,
  1030 + .fw_type = FW_1D_IMAGE,
  1031 + .fsp_cfg = ddr_fsp1_cfg,
  1032 + .fsp_cfg_num = ARRAY_SIZE(ddr_fsp1_cfg),
  1033 + },
  1034 + {
  1035 + /* P0 2400mts 2D */
  1036 + .drate = 2400,
  1037 + .fw_type = FW_2D_IMAGE,
  1038 + .fsp_cfg = ddr_fsp0_2d_cfg,
  1039 + .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg),
  1040 + },
  1041 +};
  1042 +
  1043 +/* ddr timing config params */
  1044 +struct dram_timing_info dram_timing = {
  1045 + .ddrc_cfg = ddr_ddrc_cfg,
  1046 + .ddrc_cfg_num = ARRAY_SIZE(ddr_ddrc_cfg),
  1047 + .ddrphy_cfg = ddr_ddrphy_cfg,
  1048 + .ddrphy_cfg_num = ARRAY_SIZE(ddr_ddrphy_cfg),
  1049 + .fsp_msg = ddr_dram_fsp_msg,
  1050 + .fsp_msg_num = ARRAY_SIZE(ddr_dram_fsp_msg),
  1051 + .ddrphy_trained_csr = ddr_ddrphy_trained_csr,
  1052 + .ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr),
  1053 + .ddrphy_pie = ddr_phy_pie,
  1054 + .ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie),
  1055 + .fsp_table = { 2400, 1066, },
  1056 +};
board/freescale/imx8mm_ab2/imx8mm_ab2.c
... ... @@ -14,6 +14,8 @@
14 14 #include <asm/arch/clock.h>
15 15 #ifdef CONFIG_TARGET_IMX8MM_AB2
16 16 #include <asm/arch/imx8mm_pins.h>
  17 +#else
  18 +#include <asm/arch/imx8mn_pins.h>
17 19 #endif
18 20 #include <asm/arch/sys_proto.h>
19 21 #include <asm-generic/gpio.h>
... ... @@ -49,6 +51,25 @@
49 51 };
50 52 #endif
51 53  
  54 +#if defined(CONFIG_TARGET_IMX8MN_AB2) || defined(CONFIG_TARGET_IMX8MN_DDR4_AB2)
  55 +static iomux_v3_cfg_t const uart_pads[] = {
  56 + IMX8MN_PAD_UART2_RXD__UART2_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
  57 + IMX8MN_PAD_UART2_TXD__UART2_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
  58 +};
  59 +
  60 +static iomux_v3_cfg_t const wdog_pads[] = {
  61 + IMX8MN_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL),
  62 +};
  63 +
  64 +static iomux_v3_cfg_t const pwr_en_5v0[] = {
  65 + IMX8MN_PAD_GPIO1_IO07__GPIO1_IO7 | MUX_PAD_CTRL(NO_PAD_CTRL),
  66 +};
  67 +
  68 +static iomux_v3_cfg_t const pwr_en_ana[] = {
  69 + IMX8MN_PAD_GPIO1_IO10__GPIO1_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
  70 +};
  71 +#endif
  72 +
52 73 #ifdef CONFIG_NAND_MXS
53 74 static void setup_gpmi_nand(void)
54 75 {
55 76  
... ... @@ -118,7 +139,11 @@
118 139 #endif
119 140 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
120 141 env_set("board_name", "AB2");
  142 +#ifdef CONFIG_TARGET_IMX8MM_AB2
121 143 env_set("board_rev", "iMX8MM");
  144 +#else
  145 + env_set("board_rev", "iMX8MN");
  146 +#endif
122 147 #endif
123 148 return 0;
124 149 }
board/freescale/imx8mm_ab2/lpddr4_imx8mn_som.c
Changes suppressed. Click to show
  1 +// SPDX-License-Identifier: GPL-2.0+
  2 +/*
  3 + * Copyright 2019 NXP
  4 + *
  5 + * Generated code from MX8M_DDR_tool
  6 + * Align with uboot-imx_v2018.03_4.14.78_1.0.0_ga
  7 + */
  8 +
  9 +#include <linux/kernel.h>
  10 +#include <asm/arch/ddr.h>
  11 +
  12 +struct dram_cfg_param ddr_ddrc_cfg[] = {
  13 + {0x3d400020, 0x00000213},
  14 + {0x3d400024, 0x0003e800},
  15 + {0x3d400030, 0x00000120},
  16 + {0x3d400000, 0xa3080020},
  17 + {0x3d400064, 0x006100e0},
  18 + {0x3d4000d0, 0xc003061c},
  19 + {0x3d4000d4, 0x009e0000},
  20 + {0x3d4000dc, 0x00d4002d},
  21 + {0x3d4000e0, 0x00310000},
  22 + {0x3d4000e8, 0x0066004d},
  23 + {0x3d4000ec, 0x0016004a},
  24 + {0x3d400100, 0x1a201b22},
  25 + {0x3d400104, 0x00060633},
  26 + {0x3d40010c, 0x00c0c000},
  27 + {0x3d400110, 0x0f04080f},
  28 + {0x3d400114, 0x02040c0c},
  29 + {0x3d400118, 0x01010007},
  30 + {0x3d40011c, 0x00000401},
  31 + {0x3d400130, 0x00020600},
  32 + {0x3d400134, 0x0c100002},
  33 + {0x3d400138, 0x000000e6},
  34 + {0x3d400144, 0x00a00050},
  35 + {0x3d400180, 0x03200018},
  36 + {0x3d400184, 0x028061a8},
  37 + {0x3d400188, 0x00000000},
  38 + {0x3d400190, 0x0497820a},
  39 + {0x3d4001b4, 0x0000170a},
  40 + {0x3d400108, 0x070e1617},
  41 + {0x3d4001c0, 0x00000001},
  42 + {0x3d400194, 0x00080303},
  43 + {0x3d4001a0, 0xe0400018},
  44 + {0x3d4001a4, 0x00df00e4},
  45 + {0x3d4001a8, 0x80000000},
  46 + {0x3d4001b0, 0x00000011},
  47 + {0x3d4001c4, 0x00000001},
  48 + {0x3d4000f4, 0x00000c99},
  49 + {0x3d400200, 0x00000017},
  50 + {0x3d400204, 0x00080808},
  51 + {0x3d400208, 0x00000000},
  52 + {0x3d40020c, 0x00000000},
  53 + {0x3d400210, 0x00001f1f},
  54 + {0x3d400214, 0x07070707},
  55 + {0x3d400218, 0x07070707},
  56 + {0x3d40021c, 0x00000f0f},
  57 + {0x3d400250, 0x29001701},
  58 + {0x3d400254, 0x0000002c},
  59 + {0x3d40025c, 0x04000030},
  60 + {0x3d400264, 0x900093e7},
  61 + {0x3d40026c, 0x20005574},
  62 + {0x3d400400, 0x00000111},
  63 + {0x3d400408, 0x000072ff},
  64 + {0x3d400494, 0x02100e07},
  65 + {0x3d400498, 0x00620096},
  66 + {0x3d40049c, 0x01100e07},
  67 + {0x3d4004a0, 0x00c8012c},
  68 + {0x3d402020, 0x00000011},
  69 + {0x3d402024, 0x00007d00},
  70 + {0x3d402050, 0x0020d040},
  71 + {0x3d402064, 0x000c001d},
  72 + {0x3d4020f4, 0x00000c99},
  73 + {0x3d402100, 0x0a040305},
  74 + {0x3d402104, 0x00030407},
  75 + {0x3d402108, 0x0203060b},
  76 + {0x3d40210c, 0x00505000},
  77 + {0x3d402110, 0x02040202},
  78 + {0x3d402114, 0x02030202},
  79 + {0x3d402118, 0x01010004},
  80 + {0x3d40211c, 0x00000301},
  81 + {0x3d402130, 0x00020300},
  82 + {0x3d402134, 0x0a100002},
  83 + {0x3d402138, 0x0000001d},
  84 + {0x3d402144, 0x0014000a},
  85 + {0x3d402180, 0x00650004},
  86 + {0x3d402190, 0x03818200},
  87 + {0x3d402194, 0x00080303},
  88 + {0x3d4021b4, 0x00000100},
  89 + {0x3d4020dc, 0x00840000},
  90 + {0x3d4020e0, 0x00310000},
  91 + {0x3d4020e8, 0x0066004d},
  92 + {0x3d4020ec, 0x0016004a},
  93 + {0x3d403020, 0x00000011},
  94 + {0x3d403024, 0x00001f40},
  95 + {0x3d403050, 0x0020d040},
  96 + {0x3d403064, 0x00030007},
  97 + {0x3d4030f4, 0x00000c99},
  98 + {0x3d403100, 0x0a010102},
  99 + {0x3d403104, 0x00030404},
  100 + {0x3d403108, 0x0203060b},
  101 + {0x3d40310c, 0x00505000},
  102 + {0x3d403110, 0x02040202},
  103 + {0x3d403114, 0x02030202},
  104 + {0x3d403118, 0x01010004},
  105 + {0x3d40311c, 0x00000301},
  106 + {0x3d403130, 0x00020300},
  107 + {0x3d403134, 0x0a100002},
  108 + {0x3d403138, 0x00000008},
  109 + {0x3d403144, 0x00050003},
  110 + {0x3d403180, 0x00190004},
  111 + {0x3d403190, 0x03818200},
  112 + {0x3d403194, 0x00080303},
  113 + {0x3d4031b4, 0x00000100},
  114 + {0x3d4030dc, 0x00840000},
  115 + {0x3d4030e0, 0x00310000},
  116 + {0x3d4030e8, 0x0066004d},
  117 + {0x3d4030ec, 0x0016004a},
  118 +
  119 + /* default boot point */
  120 + { 0x3d400028, 0x0 },
  121 +};
  122 +
  123 +/* PHY Initialize Configuration */
  124 +struct dram_cfg_param ddr_ddrphy_cfg[] = {
  125 + {0x000100a0, 0x00000000},
  126 + {0x000100a1, 0x00000001},
  127 + {0x000100a2, 0x00000002},
  128 + {0x000100a3, 0x00000003},
  129 + {0x000100a4, 0x00000004},
  130 + {0x000100a5, 0x00000005},
  131 + {0x000100a6, 0x00000006},
  132 + {0x000100a7, 0x00000007},
  133 + {0x000110a0, 0x00000000},
  134 + {0x000110a1, 0x00000001},
  135 + {0x000110a2, 0x00000003},
  136 + {0x000110a3, 0x00000004},
  137 + {0x000110a4, 0x00000005},
  138 + {0x000110a5, 0x00000002},
  139 + {0x000110a6, 0x00000007},
  140 + {0x000110a7, 0x00000006},
  141 + {0x0001005f, 0x0000015f},
  142 + {0x0001015f, 0x0000015f},
  143 + {0x0001105f, 0x0000015f},
  144 + {0x0001115f, 0x0000015f},
  145 + {0x0011005f, 0x0000015f},
  146 + {0x0011015f, 0x0000015f},
  147 + {0x0011105f, 0x0000015f},
  148 + {0x0011115f, 0x0000015f},
  149 + {0x0021005f, 0x0000015f},
  150 + {0x0021015f, 0x0000015f},
  151 + {0x0021105f, 0x0000015f},
  152 + {0x0021115f, 0x0000015f},
  153 + {0x00000055, 0x0000016f},
  154 + {0x00001055, 0x0000016f},
  155 + {0x00002055, 0x0000016f},
  156 + {0x00003055, 0x0000016f},
  157 + {0x00004055, 0x0000016f},
  158 + {0x00005055, 0x0000016f},
  159 + {0x00006055, 0x0000016f},
  160 + {0x00007055, 0x0000016f},
  161 + {0x00008055, 0x0000016f},
  162 + {0x00009055, 0x0000016f},
  163 + {0x000200c5, 0x00000019},
  164 + {0x001200c5, 0x00000007},
  165 + {0x002200c5, 0x00000007},
  166 + {0x0002002e, 0x00000002},
  167 + {0x0012002e, 0x00000002},
  168 + {0x0022002e, 0x00000002},
  169 + {0x00090204, 0x00000000},
  170 + {0x00190204, 0x00000000},
  171 + {0x00290204, 0x00000000},
  172 + {0x00020024, 0x000001a3},
  173 + {0x0002003a, 0x00000002},
  174 + {0x0002007d, 0x00000212},
  175 + {0x0002007c, 0x00000061},
  176 + {0x00120024, 0x000001a3},
  177 + {0x0002003a, 0x00000002},
  178 + {0x0012007d, 0x00000212},
  179 + {0x0012007c, 0x00000061},
  180 + {0x00220024, 0x000001a3},
  181 + {0x0002003a, 0x00000002},
  182 + {0x0022007d, 0x00000212},
  183 + {0x0022007c, 0x00000061},
  184 + {0x00020056, 0x00000003},
  185 + {0x00120056, 0x00000003},
  186 + {0x00220056, 0x00000003},
  187 + {0x0001004d, 0x00000f80},
  188 + {0x0001014d, 0x00000f80},
  189 + {0x0001104d, 0x00000f80},
  190 + {0x0001114d, 0x00000f80},
  191 + {0x0011004d, 0x00000f80},
  192 + {0x0011014d, 0x00000f80},
  193 + {0x0011104d, 0x00000f80},
  194 + {0x0011114d, 0x00000f80},
  195 + {0x0021004d, 0x00000f80},
  196 + {0x0021014d, 0x00000f80},
  197 + {0x0021104d, 0x00000f80},
  198 + {0x0021114d, 0x00000f80},
  199 + {0x00010049, 0x00000fbe},
  200 + {0x00010149, 0x00000fbe},
  201 + {0x00011049, 0x00000fbe},
  202 + {0x00011149, 0x00000fbe},
  203 + {0x00110049, 0x00000fbe},
  204 + {0x00110149, 0x00000fbe},
  205 + {0x00111049, 0x00000fbe},
  206 + {0x00111149, 0x00000fbe},
  207 + {0x00210049, 0x00000fbe},
  208 + {0x00210149, 0x00000fbe},
  209 + {0x00211049, 0x00000fbe},
  210 + {0x00211149, 0x00000fbe},
  211 + {0x00000043, 0x00000063},
  212 + {0x00001043, 0x00000063},
  213 + {0x00002043, 0x00000063},
  214 + {0x00003043, 0x00000063},
  215 + {0x00004043, 0x00000063},
  216 + {0x00005043, 0x00000063},
  217 + {0x00006043, 0x00000063},
  218 + {0x00007043, 0x00000063},
  219 + {0x00008043, 0x00000063},
  220 + {0x00009043, 0x00000063},
  221 + {0x00020018, 0x00000001},
  222 + {0x00020075, 0x00000004},
  223 + {0x00020050, 0x00000000},
  224 + {0x00020008, 0x00000320},
  225 + {0x00120008, 0x00000064},
  226 + {0x00220008, 0x00000019},
  227 + {0x00020088, 0x00000009},
  228 + {0x000200b2, 0x000000dc},
  229 + {0x00010043, 0x000005a1},
  230 + {0x00010143, 0x000005a1},
  231 + {0x00011043, 0x000005a1},
  232 + {0x00011143, 0x000005a1},
  233 + {0x001200b2, 0x000000dc},
  234 + {0x00110043, 0x000005a1},
  235 + {0x00110143, 0x000005a1},
  236 + {0x00111043, 0x000005a1},
  237 + {0x00111143, 0x000005a1},
  238 + {0x002200b2, 0x000000dc},
  239 + {0x00210043, 0x000005a1},
  240 + {0x00210143, 0x000005a1},
  241 + {0x00211043, 0x000005a1},
  242 + {0x00211143, 0x000005a1},
  243 + {0x000200fa, 0x00000001},
  244 + {0x001200fa, 0x00000001},
  245 + {0x002200fa, 0x00000001},
  246 + {0x00020019, 0x00000001},
  247 + {0x00120019, 0x00000001},
  248 + {0x00220019, 0x00000001},
  249 + {0x000200f0, 0x00000660},
  250 + {0x000200f1, 0x00000000},
  251 + {0x000200f2, 0x00004444},
  252 + {0x000200f3, 0x00008888},
  253 + {0x000200f4, 0x00005665},
  254 + {0x000200f5, 0x00000000},
  255 + {0x000200f6, 0x00000000},
  256 + {0x000200f7, 0x0000f000},
  257 + {0x0001004a, 0x00000500},
  258 + {0x0001104a, 0x00000500},
  259 + {0x00020025, 0x00000000},
  260 + {0x0002002d, 0x00000000},
  261 + {0x0012002d, 0x00000000},
  262 + {0x0022002d, 0x00000000},
  263 + {0x0002002c, 0x00000000},
  264 + {0x000200c7, 0x00000021},
  265 + {0x000200ca, 0x00000024},
  266 + {0x000200cc, 0x000001f7},
  267 + {0x001200c7, 0x00000021},
  268 + {0x001200ca, 0x00000024},
  269 + {0x001200cc, 0x000001f7},
  270 + {0x002200c7, 0x00000021},
  271 + {0x002200ca, 0x00000024},
  272 + {0x002200cc, 0x000001f7},
  273 +};
  274 +
  275 +/* ddr phy trained csr */
  276 +struct dram_cfg_param ddr_ddrphy_trained_csr[] = {
  277 + {0x0200b2, 0x0},
  278 + {0x1200b2, 0x0},
  279 + {0x2200b2, 0x0},
  280 + {0x0200cb, 0x0},
  281 + {0x010043, 0x0},
  282 + {0x110043, 0x0},
  283 + {0x210043, 0x0},
  284 + {0x010143, 0x0},
  285 + {0x110143, 0x0},
  286 + {0x210143, 0x0},
  287 + {0x011043, 0x0},
  288 + {0x111043, 0x0},
  289 + {0x211043, 0x0},
  290 + {0x011143, 0x0},
  291 + {0x111143, 0x0},
  292 + {0x211143, 0x0},
  293 + {0x000080, 0x0},
  294 + {0x100080, 0x0},
  295 + {0x200080, 0x0},
  296 + {0x001080, 0x0},
  297 + {0x101080, 0x0},
  298 + {0x201080, 0x0},
  299 + {0x002080, 0x0},
  300 + {0x102080, 0x0},
  301 + {0x202080, 0x0},
  302 + {0x003080, 0x0},
  303 + {0x103080, 0x0},
  304 + {0x203080, 0x0},
  305 + {0x004080, 0x0},
  306 + {0x104080, 0x0},
  307 + {0x204080, 0x0},
  308 + {0x005080, 0x0},
  309 + {0x105080, 0x0},
  310 + {0x205080, 0x0},
  311 + {0x006080, 0x0},
  312 + {0x106080, 0x0},
  313 + {0x206080, 0x0},
  314 + {0x007080, 0x0},
  315 + {0x107080, 0x0},
  316 + {0x207080, 0x0},
  317 + {0x008080, 0x0},
  318 + {0x108080, 0x0},
  319 + {0x208080, 0x0},
  320 + {0x009080, 0x0},
  321 + {0x109080, 0x0},
  322 + {0x209080, 0x0},
  323 + {0x010080, 0x0},
  324 + {0x110080, 0x0},
  325 + {0x210080, 0x0},
  326 + {0x010180, 0x0},
  327 + {0x110180, 0x0},
  328 + {0x210180, 0x0},
  329 + {0x011080, 0x0},
  330 + {0x111080, 0x0},
  331 + {0x211080, 0x0},
  332 + {0x011180, 0x0},
  333 + {0x111180, 0x0},
  334 + {0x211180, 0x0},
  335 + {0x010081, 0x0},
  336 + {0x110081, 0x0},
  337 + {0x210081, 0x0},
  338 + {0x010181, 0x0},
  339 + {0x110181, 0x0},
  340 + {0x210181, 0x0},
  341 + {0x011081, 0x0},
  342 + {0x111081, 0x0},
  343 + {0x211081, 0x0},
  344 + {0x011181, 0x0},
  345 + {0x111181, 0x0},
  346 + {0x211181, 0x0},
  347 + {0x0100d0, 0x0},
  348 + {0x1100d0, 0x0},
  349 + {0x2100d0, 0x0},
  350 + {0x0101d0, 0x0},
  351 + {0x1101d0, 0x0},
  352 + {0x2101d0, 0x0},
  353 + {0x0110d0, 0x0},
  354 + {0x1110d0, 0x0},
  355 + {0x2110d0, 0x0},
  356 + {0x0111d0, 0x0},
  357 + {0x1111d0, 0x0},
  358 + {0x2111d0, 0x0},
  359 + {0x0100d1, 0x0},
  360 + {0x1100d1, 0x0},
  361 + {0x2100d1, 0x0},
  362 + {0x0101d1, 0x0},
  363 + {0x1101d1, 0x0},
  364 + {0x2101d1, 0x0},
  365 + {0x0110d1, 0x0},
  366 + {0x1110d1, 0x0},
  367 + {0x2110d1, 0x0},
  368 + {0x0111d1, 0x0},
  369 + {0x1111d1, 0x0},
  370 + {0x2111d1, 0x0},
  371 + {0x010068, 0x0},
  372 + {0x010168, 0x0},
  373 + {0x010268, 0x0},
  374 + {0x010368, 0x0},
  375 + {0x010468, 0x0},
  376 + {0x010568, 0x0},
  377 + {0x010668, 0x0},
  378 + {0x010768, 0x0},
  379 + {0x010868, 0x0},
  380 + {0x011068, 0x0},
  381 + {0x011168, 0x0},
  382 + {0x011268, 0x0},
  383 + {0x011368, 0x0},
  384 + {0x011468, 0x0},
  385 + {0x011568, 0x0},
  386 + {0x011668, 0x0},
  387 + {0x011768, 0x0},
  388 + {0x011868, 0x0},
  389 + {0x010069, 0x0},
  390 + {0x010169, 0x0},
  391 + {0x010269, 0x0},
  392 + {0x010369, 0x0},
  393 + {0x010469, 0x0},
  394 + {0x010569, 0x0},
  395 + {0x010669, 0x0},
  396 + {0x010769, 0x0},
  397 + {0x010869, 0x0},
  398 + {0x011069, 0x0},
  399 + {0x011169, 0x0},
  400 + {0x011269, 0x0},
  401 + {0x011369, 0x0},
  402 + {0x011469, 0x0},
  403 + {0x011569, 0x0},
  404 + {0x011669, 0x0},
  405 + {0x011769, 0x0},
  406 + {0x011869, 0x0},
  407 + {0x01008c, 0x0},
  408 + {0x11008c, 0x0},
  409 + {0x21008c, 0x0},
  410 + {0x01018c, 0x0},
  411 + {0x11018c, 0x0},
  412 + {0x21018c, 0x0},
  413 + {0x01108c, 0x0},
  414 + {0x11108c, 0x0},
  415 + {0x21108c, 0x0},
  416 + {0x01118c, 0x0},
  417 + {0x11118c, 0x0},
  418 + {0x21118c, 0x0},
  419 + {0x01008d, 0x0},
  420 + {0x11008d, 0x0},
  421 + {0x21008d, 0x0},
  422 + {0x01018d, 0x0},
  423 + {0x11018d, 0x0},
  424 + {0x21018d, 0x0},
  425 + {0x01108d, 0x0},
  426 + {0x11108d, 0x0},
  427 + {0x21108d, 0x0},
  428 + {0x01118d, 0x0},
  429 + {0x11118d, 0x0},
  430 + {0x21118d, 0x0},
  431 + {0x0100c0, 0x0},
  432 + {0x1100c0, 0x0},
  433 + {0x2100c0, 0x0},
  434 + {0x0101c0, 0x0},
  435 + {0x1101c0, 0x0},
  436 + {0x2101c0, 0x0},
  437 + {0x0102c0, 0x0},
  438 + {0x1102c0, 0x0},
  439 + {0x2102c0, 0x0},
  440 + {0x0103c0, 0x0},
  441 + {0x1103c0, 0x0},
  442 + {0x2103c0, 0x0},
  443 + {0x0104c0, 0x0},
  444 + {0x1104c0, 0x0},
  445 + {0x2104c0, 0x0},
  446 + {0x0105c0, 0x0},
  447 + {0x1105c0, 0x0},
  448 + {0x2105c0, 0x0},
  449 + {0x0106c0, 0x0},
  450 + {0x1106c0, 0x0},
  451 + {0x2106c0, 0x0},
  452 + {0x0107c0, 0x0},
  453 + {0x1107c0, 0x0},
  454 + {0x2107c0, 0x0},
  455 + {0x0108c0, 0x0},
  456 + {0x1108c0, 0x0},
  457 + {0x2108c0, 0x0},
  458 + {0x0110c0, 0x0},
  459 + {0x1110c0, 0x0},
  460 + {0x2110c0, 0x0},
  461 + {0x0111c0, 0x0},
  462 + {0x1111c0, 0x0},
  463 + {0x2111c0, 0x0},
  464 + {0x0112c0, 0x0},
  465 + {0x1112c0, 0x0},
  466 + {0x2112c0, 0x0},
  467 + {0x0113c0, 0x0},
  468 + {0x1113c0, 0x0},
  469 + {0x2113c0, 0x0},
  470 + {0x0114c0, 0x0},
  471 + {0x1114c0, 0x0},
  472 + {0x2114c0, 0x0},
  473 + {0x0115c0, 0x0},
  474 + {0x1115c0, 0x0},
  475 + {0x2115c0, 0x0},
  476 + {0x0116c0, 0x0},
  477 + {0x1116c0, 0x0},
  478 + {0x2116c0, 0x0},
  479 + {0x0117c0, 0x0},
  480 + {0x1117c0, 0x0},
  481 + {0x2117c0, 0x0},
  482 + {0x0118c0, 0x0},
  483 + {0x1118c0, 0x0},
  484 + {0x2118c0, 0x0},
  485 + {0x0100c1, 0x0},
  486 + {0x1100c1, 0x0},
  487 + {0x2100c1, 0x0},
  488 + {0x0101c1, 0x0},
  489 + {0x1101c1, 0x0},
  490 + {0x2101c1, 0x0},
  491 + {0x0102c1, 0x0},
  492 + {0x1102c1, 0x0},
  493 + {0x2102c1, 0x0},
  494 + {0x0103c1, 0x0},
  495 + {0x1103c1, 0x0},
  496 + {0x2103c1, 0x0},
  497 + {0x0104c1, 0x0},
  498 + {0x1104c1, 0x0},
  499 + {0x2104c1, 0x0},
  500 + {0x0105c1, 0x0},
  501 + {0x1105c1, 0x0},
  502 + {0x2105c1, 0x0},
  503 + {0x0106c1, 0x0},
  504 + {0x1106c1, 0x0},
  505 + {0x2106c1, 0x0},
  506 + {0x0107c1, 0x0},
  507 + {0x1107c1, 0x0},
  508 + {0x2107c1, 0x0},
  509 + {0x0108c1, 0x0},
  510 + {0x1108c1, 0x0},
  511 + {0x2108c1, 0x0},
  512 + {0x0110c1, 0x0},
  513 + {0x1110c1, 0x0},
  514 + {0x2110c1, 0x0},
  515 + {0x0111c1, 0x0},
  516 + {0x1111c1, 0x0},
  517 + {0x2111c1, 0x0},
  518 + {0x0112c1, 0x0},
  519 + {0x1112c1, 0x0},
  520 + {0x2112c1, 0x0},
  521 + {0x0113c1, 0x0},
  522 + {0x1113c1, 0x0},
  523 + {0x2113c1, 0x0},
  524 + {0x0114c1, 0x0},
  525 + {0x1114c1, 0x0},
  526 + {0x2114c1, 0x0},
  527 + {0x0115c1, 0x0},
  528 + {0x1115c1, 0x0},
  529 + {0x2115c1, 0x0},
  530 + {0x0116c1, 0x0},
  531 + {0x1116c1, 0x0},
  532 + {0x2116c1, 0x0},
  533 + {0x0117c1, 0x0},
  534 + {0x1117c1, 0x0},
  535 + {0x2117c1, 0x0},
  536 + {0x0118c1, 0x0},
  537 + {0x1118c1, 0x0},
  538 + {0x2118c1, 0x0},
  539 + {0x010020, 0x0},
  540 + {0x110020, 0x0},
  541 + {0x210020, 0x0},
  542 + {0x011020, 0x0},
  543 + {0x111020, 0x0},
  544 + {0x211020, 0x0},
  545 + {0x020072, 0x0},
  546 + {0x020073, 0x0},
  547 + {0x020074, 0x0},
  548 + {0x0100aa, 0x0},
  549 + {0x0110aa, 0x0},
  550 + {0x020010, 0x0},
  551 + {0x120010, 0x0},
  552 + {0x220010, 0x0},
  553 + {0x020011, 0x0},
  554 + {0x120011, 0x0},
  555 + {0x220011, 0x0},
  556 + {0x0100ae, 0x0},
  557 + {0x1100ae, 0x0},
  558 + {0x2100ae, 0x0},
  559 + {0x0100af, 0x0},
  560 + {0x1100af, 0x0},
  561 + {0x2100af, 0x0},
  562 + {0x0110ae, 0x0},
  563 + {0x1110ae, 0x0},
  564 + {0x2110ae, 0x0},
  565 + {0x0110af, 0x0},
  566 + {0x1110af, 0x0},
  567 + {0x2110af, 0x0},
  568 + {0x020020, 0x0},
  569 + {0x120020, 0x0},
  570 + {0x220020, 0x0},
  571 + {0x0100a0, 0x0},
  572 + {0x0100a1, 0x0},
  573 + {0x0100a2, 0x0},
  574 + {0x0100a3, 0x0},
  575 + {0x0100a4, 0x0},
  576 + {0x0100a5, 0x0},
  577 + {0x0100a6, 0x0},
  578 + {0x0100a7, 0x0},
  579 + {0x0110a0, 0x0},
  580 + {0x0110a1, 0x0},
  581 + {0x0110a2, 0x0},
  582 + {0x0110a3, 0x0},
  583 + {0x0110a4, 0x0},
  584 + {0x0110a5, 0x0},
  585 + {0x0110a6, 0x0},
  586 + {0x0110a7, 0x0},
  587 + {0x02007c, 0x0},
  588 + {0x12007c, 0x0},
  589 + {0x22007c, 0x0},
  590 + {0x02007d, 0x0},
  591 + {0x12007d, 0x0},
  592 + {0x22007d, 0x0},
  593 + {0x0400fd, 0x0},
  594 + {0x0400c0, 0x0},
  595 + {0x090201, 0x0},
  596 + {0x190201, 0x0},
  597 + {0x290201, 0x0},
  598 + {0x090202, 0x0},
  599 + {0x190202, 0x0},
  600 + {0x290202, 0x0},
  601 + {0x090203, 0x0},
  602 + {0x190203, 0x0},
  603 + {0x290203, 0x0},
  604 + {0x090204, 0x0},
  605 + {0x190204, 0x0},
  606 + {0x290204, 0x0},
  607 + {0x090205, 0x0},
  608 + {0x190205, 0x0},
  609 + {0x290205, 0x0},
  610 + {0x090206, 0x0},
  611 + {0x190206, 0x0},
  612 + {0x290206, 0x0},
  613 + {0x090207, 0x0},
  614 + {0x190207, 0x0},
  615 + {0x290207, 0x0},
  616 + {0x090208, 0x0},
  617 + {0x190208, 0x0},
  618 + {0x290208, 0x0},
  619 + {0x010062, 0x0},
  620 + {0x010162, 0x0},
  621 + {0x010262, 0x0},
  622 + {0x010362, 0x0},
  623 + {0x010462, 0x0},
  624 + {0x010562, 0x0},
  625 + {0x010662, 0x0},
  626 + {0x010762, 0x0},
  627 + {0x010862, 0x0},
  628 + {0x011062, 0x0},
  629 + {0x011162, 0x0},
  630 + {0x011262, 0x0},
  631 + {0x011362, 0x0},
  632 + {0x011462, 0x0},
  633 + {0x011562, 0x0},
  634 + {0x011662, 0x0},
  635 + {0x011762, 0x0},
  636 + {0x011862, 0x0},
  637 + {0x020077, 0x0},
  638 + {0x010001, 0x0},
  639 + {0x011001, 0x0},
  640 + {0x010040, 0x0},
  641 + {0x010140, 0x0},
  642 + {0x010240, 0x0},
  643 + {0x010340, 0x0},
  644 + {0x010440, 0x0},
  645 + {0x010540, 0x0},
  646 + {0x010640, 0x0},
  647 + {0x010740, 0x0},
  648 + {0x010840, 0x0},
  649 + {0x010030, 0x0},
  650 + {0x010130, 0x0},
  651 + {0x010230, 0x0},
  652 + {0x010330, 0x0},
  653 + {0x010430, 0x0},
  654 + {0x010530, 0x0},
  655 + {0x010630, 0x0},
  656 + {0x010730, 0x0},
  657 + {0x010830, 0x0},
  658 + {0x011040, 0x0},
  659 + {0x011140, 0x0},
  660 + {0x011240, 0x0},
  661 + {0x011340, 0x0},
  662 + {0x011440, 0x0},
  663 + {0x011540, 0x0},
  664 + {0x011640, 0x0},
  665 + {0x011740, 0x0},
  666 + {0x011840, 0x0},
  667 + {0x011030, 0x0},
  668 + {0x011130, 0x0},
  669 + {0x011230, 0x0},
  670 + {0x011330, 0x0},
  671 + {0x011430, 0x0},
  672 + {0x011530, 0x0},
  673 + {0x011630, 0x0},
  674 + {0x011730, 0x0},
  675 + {0x011830, 0x0},
  676 +};
  677 +
  678 +/* P0 message block paremeter for training firmware */
  679 +struct dram_cfg_param ddr_fsp0_cfg[] = {
  680 + {0x000d0000, 0x00000000},
  681 + {0x00054000, 0x00000000},
  682 + {0x00054001, 0x00000000},
  683 + {0x00054002, 0x00000000},
  684 + {0x00054003, 0x00000c80},
  685 + {0x00054004, 0x00000002},
  686 + {0x00054005, 0x00000000},
  687 + {0x00054006, 0x00000011},
  688 + {0x00054007, 0x00000000},
  689 + {0x00054008, 0x0000131f},
  690 + {0x00054009, 0x000000c8},
  691 + {0x0005400a, 0x00000000},
  692 + {0x0005400b, 0x00000002},
  693 + {0x0005400c, 0x00000000},
  694 + {0x0005400d, 0x00000000},
  695 + {0x0005400e, 0x00000000},
  696 + {0x0005400f, 0x00000100},
  697 + {0x00054010, 0x00000000},
  698 + {0x00054011, 0x00000000},
  699 + {0x00054012, 0x00000310},
  700 + {0x00054013, 0x00000000},
  701 + {0x00054014, 0x00000000},
  702 + {0x00054015, 0x00000000},
  703 + {0x00054016, 0x00000000},
  704 + {0x00054017, 0x00000000},
  705 + {0x00054018, 0x00000000},
  706 + {0x00054019, 0x00002dd4},
  707 + {0x0005401a, 0x00000031},
  708 + {0x0005401b, 0x00004d66},
  709 + {0x0005401c, 0x00004a00},
  710 + {0x0005401d, 0x00000000},
  711 + {0x0005401e, 0x00000016},
  712 + {0x0005401f, 0x00002dd4},
  713 + {0x00054020, 0x00000031},
  714 + {0x00054021, 0x00004d66},
  715 + {0x00054022, 0x00004a00},
  716 + {0x00054023, 0x00000000},
  717 + {0x00054024, 0x0000002e},
  718 + {0x00054025, 0x00000000},
  719 + {0x00054026, 0x00000000},
  720 + {0x00054027, 0x00000000},
  721 + {0x00054028, 0x00000000},
  722 + {0x00054029, 0x00000000},
  723 + {0x0005402a, 0x00000000},
  724 + {0x0005402b, 0x00000000},
  725 + {0x0005402c, 0x00000000},
  726 + {0x0005402d, 0x00000000},
  727 + {0x0005402e, 0x00000000},
  728 + {0x0005402f, 0x00000000},
  729 + {0x00054030, 0x00000000},
  730 + {0x00054031, 0x00000000},
  731 + {0x00054032, 0x0000d400},
  732 + {0x00054033, 0x0000312d},
  733 + {0x00054034, 0x00006600},
  734 + {0x00054035, 0x0000004d},
  735 + {0x00054036, 0x0000004a},
  736 + {0x00054037, 0x00001600},
  737 + {0x00054038, 0x0000d400},
  738 + {0x00054039, 0x0000312d},
  739 + {0x0005403a, 0x00006600},
  740 + {0x0005403b, 0x0000004d},
  741 + {0x0005403c, 0x0000004a},
  742 + {0x0005403d, 0x00002e00},
  743 + {0x0005403e, 0x00000000},
  744 + {0x0005403f, 0x00000000},
  745 + {0x00054040, 0x00000000},
  746 + {0x00054041, 0x00000000},
  747 + {0x00054042, 0x00000000},
  748 + {0x00054043, 0x00000000},
  749 + {0x00054044, 0x00000000},
  750 + {0x000d0000, 0x00000001},
  751 +};
  752 +
  753 +/* P1 message block paremeter for training firmware */
  754 +struct dram_cfg_param ddr_fsp1_cfg[] = {
  755 + {0x000d0000, 0x00000000},
  756 + {0x00054000, 0x00000000},
  757 + {0x00054001, 0x00000000},
  758 + {0x00054002, 0x00000101},
  759 + {0x00054003, 0x00000190},
  760 + {0x00054004, 0x00000002},
  761 + {0x00054005, 0x00000000},
  762 + {0x00054006, 0x00000011},
  763 + {0x00054007, 0x00000000},
  764 + {0x00054008, 0x0000121f},
  765 + {0x00054009, 0x000000c8},
  766 + {0x0005400a, 0x00000000},
  767 + {0x0005400b, 0x00000002},
  768 + {0x0005400c, 0x00000000},
  769 + {0x0005400d, 0x00000000},
  770 + {0x0005400e, 0x00000000},
  771 + {0x0005400f, 0x00000100},
  772 + {0x00054010, 0x00000000},
  773 + {0x00054011, 0x00000000},
  774 + {0x00054012, 0x00000310},
  775 + {0x00054013, 0x00000000},
  776 + {0x00054014, 0x00000000},
  777 + {0x00054015, 0x00000000},
  778 + {0x00054016, 0x00000000},
  779 + {0x00054017, 0x00000000},
  780 + {0x00054018, 0x00000000},
  781 + {0x00054019, 0x00000084},
  782 + {0x0005401a, 0x00000031},
  783 + {0x0005401b, 0x00004d66},
  784 + {0x0005401c, 0x00004a00},
  785 + {0x0005401d, 0x00000000},
  786 + {0x0005401e, 0x00000016},
  787 + {0x0005401f, 0x00000084},
  788 + {0x00054020, 0x00000031},
  789 + {0x00054021, 0x00004d66},
  790 + {0x00054022, 0x00004a00},
  791 + {0x00054023, 0x00000000},
  792 + {0x00054024, 0x0000002e},
  793 + {0x00054025, 0x00000000},
  794 + {0x00054026, 0x00000000},
  795 + {0x00054027, 0x00000000},
  796 + {0x00054028, 0x00000000},
  797 + {0x00054029, 0x00000000},
  798 + {0x0005402a, 0x00000000},
  799 + {0x0005402b, 0x00000000},
  800 + {0x0005402c, 0x00000000},
  801 + {0x0005402d, 0x00000000},
  802 + {0x0005402e, 0x00000000},
  803 + {0x0005402f, 0x00000000},
  804 + {0x00054030, 0x00000000},
  805 + {0x00054031, 0x00000000},
  806 + {0x00054032, 0x00008400},
  807 + {0x00054033, 0x00003100},
  808 + {0x00054034, 0x00006600},
  809 + {0x00054035, 0x0000004d},
  810 + {0x00054036, 0x0000004a},
  811 + {0x00054037, 0x00001600},
  812 + {0x00054038, 0x00008400},
  813 + {0x00054039, 0x00003100},
  814 + {0x0005403a, 0x00006600},
  815 + {0x0005403b, 0x0000004d},
  816 + {0x0005403c, 0x0000004a},
  817 + {0x0005403d, 0x00002e00},
  818 + {0x0005403e, 0x00000000},
  819 + {0x0005403f, 0x00000000},
  820 + {0x00054040, 0x00000000},
  821 + {0x00054041, 0x00000000},
  822 + {0x00054042, 0x00000000},
  823 + {0x00054043, 0x00000000},
  824 + {0x00054044, 0x00000000},
  825 + {0x000d0000, 0x00000001},
  826 +};
  827 +
  828 +
  829 +/* P2 message block paremeter for training firmware */
  830 +struct dram_cfg_param ddr_fsp2_cfg[] = {
  831 + {0x000d0000, 0x00000000},
  832 + {0x00054000, 0x00000000},
  833 + {0x00054001, 0x00000000},
  834 + {0x00054002, 0x00000102},
  835 + {0x00054003, 0x00000064},
  836 + {0x00054004, 0x00000002},
  837 + {0x00054005, 0x00000000},
  838 + {0x00054006, 0x00000011},
  839 + {0x00054007, 0x00000000},
  840 + {0x00054008, 0x0000121f},
  841 + {0x00054009, 0x000000c8},
  842 + {0x0005400a, 0x00000000},
  843 + {0x0005400b, 0x00000002},
  844 + {0x0005400c, 0x00000000},
  845 + {0x0005400d, 0x00000000},
  846 + {0x0005400e, 0x00000000},
  847 + {0x0005400f, 0x00000100},
  848 + {0x00054010, 0x00000000},
  849 + {0x00054011, 0x00000000},
  850 + {0x00054012, 0x00000310},
  851 + {0x00054013, 0x00000000},
  852 + {0x00054014, 0x00000000},
  853 + {0x00054015, 0x00000000},
  854 + {0x00054016, 0x00000000},
  855 + {0x00054017, 0x00000000},
  856 + {0x00054018, 0x00000000},
  857 + {0x00054019, 0x00000084},
  858 + {0x0005401a, 0x00000031},
  859 + {0x0005401b, 0x00004d66},
  860 + {0x0005401c, 0x00004a00},
  861 + {0x0005401d, 0x00000000},
  862 + {0x0005401e, 0x00000016},
  863 + {0x0005401f, 0x00000084},
  864 + {0x00054020, 0x00000031},
  865 + {0x00054021, 0x00004d66},
  866 + {0x00054022, 0x00004a00},
  867 + {0x00054023, 0x00000000},
  868 + {0x00054024, 0x0000002e},
  869 + {0x00054025, 0x00000000},
  870 + {0x00054026, 0x00000000},
  871 + {0x00054027, 0x00000000},
  872 + {0x00054028, 0x00000000},
  873 + {0x00054029, 0x00000000},
  874 + {0x0005402a, 0x00000000},
  875 + {0x0005402b, 0x00000000},
  876 + {0x0005402c, 0x00000000},
  877 + {0x0005402d, 0x00000000},
  878 + {0x0005402e, 0x00000000},
  879 + {0x0005402f, 0x00000000},
  880 + {0x00054030, 0x00000000},
  881 + {0x00054031, 0x00000000},
  882 + {0x00054032, 0x00008400},
  883 + {0x00054033, 0x00003100},
  884 + {0x00054034, 0x00006600},
  885 + {0x00054035, 0x0000004d},
  886 + {0x00054036, 0x0000004a},
  887 + {0x00054037, 0x00001600},
  888 + {0x00054038, 0x00008400},
  889 + {0x00054039, 0x00003100},
  890 + {0x0005403a, 0x00006600},
  891 + {0x0005403b, 0x0000004d},
  892 + {0x0005403c, 0x0000004a},
  893 + {0x0005403d, 0x00002e00},
  894 + {0x0005403e, 0x00000000},
  895 + {0x0005403f, 0x00000000},
  896 + {0x00054040, 0x00000000},
  897 + {0x00054041, 0x00000000},
  898 + {0x00054042, 0x00000000},
  899 + {0x00054043, 0x00000000},
  900 + {0x00054044, 0x00000000},
  901 + {0x000d0000, 0x00000001},
  902 +};
  903 +
  904 +/* P0 2D message block paremeter for training firmware */
  905 +struct dram_cfg_param ddr_fsp0_2d_cfg[] = {
  906 + {0x000d0000, 0x00000000},
  907 + {0x00054000, 0x00000000},
  908 + {0x00054001, 0x00000000},
  909 + {0x00054002, 0x00000000},
  910 + {0x00054003, 0x00000c80},
  911 + {0x00054004, 0x00000002},
  912 + {0x00054005, 0x00000000},
  913 + {0x00054006, 0x00000011},
  914 + {0x00054007, 0x00000000},
  915 + {0x00054008, 0x00000061},
  916 + {0x00054009, 0x000000c8},
  917 + {0x0005400a, 0x00000000},
  918 + {0x0005400b, 0x00000002},
  919 + {0x0005400c, 0x00000000},
  920 + {0x0005400d, 0x00000000},
  921 + {0x0005400e, 0x00000000},
  922 + {0x0005400f, 0x00000100},
  923 + {0x00054010, 0x00001f7f},
  924 + {0x00054011, 0x00000000},
  925 + {0x00054012, 0x00000310},
  926 + {0x00054013, 0x00000000},
  927 + {0x00054014, 0x00000000},
  928 + {0x00054015, 0x00000000},
  929 + {0x00054016, 0x00000000},
  930 + {0x00054017, 0x00000000},
  931 + {0x00054018, 0x00000000},
  932 + {0x00054019, 0x00002dd4},
  933 + {0x0005401a, 0x00000031},
  934 + {0x0005401b, 0x00004d66},
  935 + {0x0005401c, 0x00004a00},
  936 + {0x0005401d, 0x00000000},
  937 + {0x0005401e, 0x00000016},
  938 + {0x0005401f, 0x00002dd4},
  939 + {0x00054020, 0x00000031},
  940 + {0x00054021, 0x00004d66},
  941 + {0x00054022, 0x00004a00},
  942 + {0x00054023, 0x00000000},
  943 + {0x00054024, 0x0000002e},
  944 + {0x00054025, 0x00000000},
  945 + {0x00054026, 0x00000000},
  946 + {0x00054027, 0x00000000},
  947 + {0x00054028, 0x00000000},
  948 + {0x00054029, 0x00000000},
  949 + {0x0005402a, 0x00000000},
  950 + {0x0005402b, 0x00000000},
  951 + {0x0005402c, 0x00000000},
  952 + {0x0005402d, 0x00000000},
  953 + {0x0005402e, 0x00000000},
  954 + {0x0005402f, 0x00000000},
  955 + {0x00054030, 0x00000000},
  956 + {0x00054031, 0x00000000},
  957 + {0x00054032, 0x0000d400},
  958 + {0x00054033, 0x0000312d},
  959 + {0x00054034, 0x00006600},
  960 + {0x00054035, 0x0000004d},
  961 + {0x00054036, 0x0000004a},
  962 + {0x00054037, 0x00001600},
  963 + {0x00054038, 0x0000d400},
  964 + {0x00054039, 0x0000312d},
  965 + {0x0005403a, 0x00006600},
  966 + {0x0005403b, 0x0000004d},
  967 + {0x0005403c, 0x0000004a},
  968 + {0x0005403d, 0x00002e00},
  969 + {0x0005403e, 0x00000000},
  970 + {0x0005403f, 0x00000000},
  971 + {0x00054040, 0x00000000},
  972 + {0x00054041, 0x00000000},
  973 + {0x00054042, 0x00000000},
  974 + {0x00054043, 0x00000000},
  975 + {0x00054044, 0x00000000},
  976 + {0x000d0000, 0x00000001},
  977 +};
  978 +
  979 +/* DRAM PHY init engine image */
  980 +struct dram_cfg_param ddr_phy_pie[] = {
  981 + {0xd0000, 0x0},
  982 + {0x90000, 0x10},
  983 + {0x90001, 0x400},
  984 + {0x90002, 0x10e},
  985 + {0x90003, 0x0},
  986 + {0x90004, 0x0},
  987 + {0x90005, 0x8},
  988 + {0x90029, 0xb},
  989 + {0x9002a, 0x480},
  990 + {0x9002b, 0x109},
  991 + {0x9002c, 0x8},
  992 + {0x9002d, 0x448},
  993 + {0x9002e, 0x139},
  994 + {0x9002f, 0x8},
  995 + {0x90030, 0x478},
  996 + {0x90031, 0x109},
  997 + {0x90032, 0x0},
  998 + {0x90033, 0xe8},
  999 + {0x90034, 0x109},
  1000 + {0x90035, 0x2},
  1001 + {0x90036, 0x10},
  1002 + {0x90037, 0x139},
  1003 + {0x90038, 0xb},
  1004 + {0x90039, 0x7c0},
  1005 + {0x9003a, 0x139},
  1006 + {0x9003b, 0x44},
  1007 + {0x9003c, 0x633},
  1008 + {0x9003d, 0x159},
  1009 + {0x9003e, 0x14f},
  1010 + {0x9003f, 0x630},
  1011 + {0x90040, 0x159},
  1012 + {0x90041, 0x47},
  1013 + {0x90042, 0x633},
  1014 + {0x90043, 0x149},
  1015 + {0x90044, 0x4f},
  1016 + {0x90045, 0x633},
  1017 + {0x90046, 0x179},
  1018 + {0x90047, 0x8},
  1019 + {0x90048, 0xe0},
  1020 + {0x90049, 0x109},
  1021 + {0x9004a, 0x0},
  1022 + {0x9004b, 0x7c8},
  1023 + {0x9004c, 0x109},
  1024 + {0x9004d, 0x0},
  1025 + {0x9004e, 0x1},
  1026 + {0x9004f, 0x8},
  1027 + {0x90050, 0x0},
  1028 + {0x90051, 0x45a},
  1029 + {0x90052, 0x9},
  1030 + {0x90053, 0x0},
  1031 + {0x90054, 0x448},
  1032 + {0x90055, 0x109},
  1033 + {0x90056, 0x40},
  1034 + {0x90057, 0x633},
  1035 + {0x90058, 0x179},
  1036 + {0x90059, 0x1},
  1037 + {0x9005a, 0x618},
  1038 + {0x9005b, 0x109},
  1039 + {0x9005c, 0x40c0},
  1040 + {0x9005d, 0x633},
  1041 + {0x9005e, 0x149},
  1042 + {0x9005f, 0x8},
  1043 + {0x90060, 0x4},
  1044 + {0x90061, 0x48},
  1045 + {0x90062, 0x4040},
  1046 + {0x90063, 0x633},
  1047 + {0x90064, 0x149},
  1048 + {0x90065, 0x0},
  1049 + {0x90066, 0x4},
  1050 + {0x90067, 0x48},
  1051 + {0x90068, 0x40},
  1052 + {0x90069, 0x633},
  1053 + {0x9006a, 0x149},
  1054 + {0x9006b, 0x10},
  1055 + {0x9006c, 0x4},
  1056 + {0x9006d, 0x18},
  1057 + {0x9006e, 0x0},
  1058 + {0x9006f, 0x4},
  1059 + {0x90070, 0x78},
  1060 + {0x90071, 0x549},
  1061 + {0x90072, 0x633},
  1062 + {0x90073, 0x159},
  1063 + {0x90074, 0xd49},
  1064 + {0x90075, 0x633},
  1065 + {0x90076, 0x159},
  1066 + {0x90077, 0x94a},
  1067 + {0x90078, 0x633},
  1068 + {0x90079, 0x159},
  1069 + {0x9007a, 0x441},
  1070 + {0x9007b, 0x633},
  1071 + {0x9007c, 0x149},
  1072 + {0x9007d, 0x42},
  1073 + {0x9007e, 0x633},
  1074 + {0x9007f, 0x149},
  1075 + {0x90080, 0x1},
  1076 + {0x90081, 0x633},
  1077 + {0x90082, 0x149},
  1078 + {0x90083, 0x0},
  1079 + {0x90084, 0xe0},
  1080 + {0x90085, 0x109},
  1081 + {0x90086, 0xa},
  1082 + {0x90087, 0x10},
  1083 + {0x90088, 0x109},
  1084 + {0x90089, 0x9},
  1085 + {0x9008a, 0x3c0},
  1086 + {0x9008b, 0x149},
  1087 + {0x9008c, 0x9},
  1088 + {0x9008d, 0x3c0},
  1089 + {0x9008e, 0x159},
  1090 + {0x9008f, 0x18},
  1091 + {0x90090, 0x10},
  1092 + {0x90091, 0x109},
  1093 + {0x90092, 0x0},
  1094 + {0x90093, 0x3c0},
  1095 + {0x90094, 0x109},
  1096 + {0x90095, 0x18},
  1097 + {0x90096, 0x4},
  1098 + {0x90097, 0x48},
  1099 + {0x90098, 0x18},
  1100 + {0x90099, 0x4},
  1101 + {0x9009a, 0x58},
  1102 + {0x9009b, 0xb},
  1103 + {0x9009c, 0x10},
  1104 + {0x9009d, 0x109},
  1105 + {0x9009e, 0x1},
  1106 + {0x9009f, 0x10},
  1107 + {0x900a0, 0x109},
  1108 + {0x900a1, 0x5},
  1109 + {0x900a2, 0x7c0},
  1110 + {0x900a3, 0x109},
  1111 + {0x40000, 0x811},
  1112 + {0x40020, 0x880},
  1113 + {0x40040, 0x0},
  1114 + {0x40060, 0x0},
  1115 + {0x40001, 0x4008},
  1116 + {0x40021, 0x83},
  1117 + {0x40041, 0x4f},
  1118 + {0x40061, 0x0},
  1119 + {0x40002, 0x4040},
  1120 + {0x40022, 0x83},
  1121 + {0x40042, 0x51},
  1122 + {0x40062, 0x0},
  1123 + {0x40003, 0x811},
  1124 + {0x40023, 0x880},
  1125 + {0x40043, 0x0},
  1126 + {0x40063, 0x0},
  1127 + {0x40004, 0x720},
  1128 + {0x40024, 0xf},
  1129 + {0x40044, 0x1740},
  1130 + {0x40064, 0x0},
  1131 + {0x40005, 0x16},
  1132 + {0x40025, 0x83},
  1133 + {0x40045, 0x4b},
  1134 + {0x40065, 0x0},
  1135 + {0x40006, 0x716},
  1136 + {0x40026, 0xf},
  1137 + {0x40046, 0x2001},
  1138 + {0x40066, 0x0},
  1139 + {0x40007, 0x716},
  1140 + {0x40027, 0xf},
  1141 + {0x40047, 0x2800},
  1142 + {0x40067, 0x0},
  1143 + {0x40008, 0x716},
  1144 + {0x40028, 0xf},
  1145 + {0x40048, 0xf00},
  1146 + {0x40068, 0x0},
  1147 + {0x40009, 0x720},
  1148 + {0x40029, 0xf},
  1149 + {0x40049, 0x1400},
  1150 + {0x40069, 0x0},
  1151 + {0x4000a, 0xe08},
  1152 + {0x4002a, 0xc15},
  1153 + {0x4004a, 0x0},
  1154 + {0x4006a, 0x0},
  1155 + {0x4000b, 0x625},
  1156 + {0x4002b, 0x15},
  1157 + {0x4004b, 0x0},
  1158 + {0x4006b, 0x0},
  1159 + {0x4000c, 0x4028},
  1160 + {0x4002c, 0x80},
  1161 + {0x4004c, 0x0},
  1162 + {0x4006c, 0x0},
  1163 + {0x4000d, 0xe08},
  1164 + {0x4002d, 0xc1a},
  1165 + {0x4004d, 0x0},
  1166 + {0x4006d, 0x0},
  1167 + {0x4000e, 0x625},
  1168 + {0x4002e, 0x1a},
  1169 + {0x4004e, 0x0},
  1170 + {0x4006e, 0x0},
  1171 + {0x4000f, 0x4040},
  1172 + {0x4002f, 0x80},
  1173 + {0x4004f, 0x0},
  1174 + {0x4006f, 0x0},
  1175 + {0x40010, 0x2604},
  1176 + {0x40030, 0x15},
  1177 + {0x40050, 0x0},
  1178 + {0x40070, 0x0},
  1179 + {0x40011, 0x708},
  1180 + {0x40031, 0x5},
  1181 + {0x40051, 0x0},
  1182 + {0x40071, 0x2002},
  1183 + {0x40012, 0x8},
  1184 + {0x40032, 0x80},
  1185 + {0x40052, 0x0},
  1186 + {0x40072, 0x0},
  1187 + {0x40013, 0x2604},
  1188 + {0x40033, 0x1a},
  1189 + {0x40053, 0x0},
  1190 + {0x40073, 0x0},
  1191 + {0x40014, 0x708},
  1192 + {0x40034, 0xa},
  1193 + {0x40054, 0x0},
  1194 + {0x40074, 0x2002},
  1195 + {0x40015, 0x4040},
  1196 + {0x40035, 0x80},
  1197 + {0x40055, 0x0},
  1198 + {0x40075, 0x0},
  1199 + {0x40016, 0x60a},
  1200 + {0x40036, 0x15},
  1201 + {0x40056, 0x1200},
  1202 + {0x40076, 0x0},
  1203 + {0x40017, 0x61a},
  1204 + {0x40037, 0x15},
  1205 + {0x40057, 0x1300},
  1206 + {0x40077, 0x0},
  1207 + {0x40018, 0x60a},
  1208 + {0x40038, 0x1a},
  1209 + {0x40058, 0x1200},
  1210 + {0x40078, 0x0},
  1211 + {0x40019, 0x642},
  1212 + {0x40039, 0x1a},
  1213 + {0x40059, 0x1300},
  1214 + {0x40079, 0x0},
  1215 + {0x4001a, 0x4808},
  1216 + {0x4003a, 0x880},
  1217 + {0x4005a, 0x0},
  1218 + {0x4007a, 0x0},
  1219 + {0x900a4, 0x0},
  1220 + {0x900a5, 0x790},
  1221 + {0x900a6, 0x11a},
  1222 + {0x900a7, 0x8},
  1223 + {0x900a8, 0x7aa},
  1224 + {0x900a9, 0x2a},
  1225 + {0x900aa, 0x10},
  1226 + {0x900ab, 0x7b2},
  1227 + {0x900ac, 0x2a},
  1228 + {0x900ad, 0x0},
  1229 + {0x900ae, 0x7c8},
  1230 + {0x900af, 0x109},
  1231 + {0x900b0, 0x10},
  1232 + {0x900b1, 0x10},
  1233 + {0x900b2, 0x109},
  1234 + {0x900b3, 0x10},
  1235 + {0x900b4, 0x2a8},
  1236 + {0x900b5, 0x129},
  1237 + {0x900b6, 0x8},
  1238 + {0x900b7, 0x370},
  1239 + {0x900b8, 0x129},
  1240 + {0x900b9, 0xa},
  1241 + {0x900ba, 0x3c8},
  1242 + {0x900bb, 0x1a9},
  1243 + {0x900bc, 0xc},
  1244 + {0x900bd, 0x408},
  1245 + {0x900be, 0x199},
  1246 + {0x900bf, 0x14},
  1247 + {0x900c0, 0x790},
  1248 + {0x900c1, 0x11a},
  1249 + {0x900c2, 0x8},
  1250 + {0x900c3, 0x4},
  1251 + {0x900c4, 0x18},
  1252 + {0x900c5, 0xe},
  1253 + {0x900c6, 0x408},
  1254 + {0x900c7, 0x199},
  1255 + {0x900c8, 0x8},
  1256 + {0x900c9, 0x8568},
  1257 + {0x900ca, 0x108},
  1258 + {0x900cb, 0x18},
  1259 + {0x900cc, 0x790},
  1260 + {0x900cd, 0x16a},
  1261 + {0x900ce, 0x8},
  1262 + {0x900cf, 0x1d8},
  1263 + {0x900d0, 0x169},
  1264 + {0x900d1, 0x10},
  1265 + {0x900d2, 0x8558},
  1266 + {0x900d3, 0x168},
  1267 + {0x900d4, 0x70},
  1268 + {0x900d5, 0x788},
  1269 + {0x900d6, 0x16a},
  1270 + {0x900d7, 0x1ff8},
  1271 + {0x900d8, 0x85a8},
  1272 + {0x900d9, 0x1e8},
  1273 + {0x900da, 0x50},
  1274 + {0x900db, 0x798},
  1275 + {0x900dc, 0x16a},
  1276 + {0x900dd, 0x60},
  1277 + {0x900de, 0x7a0},
  1278 + {0x900df, 0x16a},
  1279 + {0x900e0, 0x8},
  1280 + {0x900e1, 0x8310},
  1281 + {0x900e2, 0x168},
  1282 + {0x900e3, 0x8},
  1283 + {0x900e4, 0xa310},
  1284 + {0x900e5, 0x168},
  1285 + {0x900e6, 0xa},
  1286 + {0x900e7, 0x408},
  1287 + {0x900e8, 0x169},
  1288 + {0x900e9, 0x6e},
  1289 + {0x900ea, 0x0},
  1290 + {0x900eb, 0x68},
  1291 + {0x900ec, 0x0},
  1292 + {0x900ed, 0x408},
  1293 + {0x900ee, 0x169},
  1294 + {0x900ef, 0x0},
  1295 + {0x900f0, 0x8310},
  1296 + {0x900f1, 0x168},
  1297 + {0x900f2, 0x0},
  1298 + {0x900f3, 0xa310},
  1299 + {0x900f4, 0x168},
  1300 + {0x900f5, 0x1ff8},
  1301 + {0x900f6, 0x85a8},
  1302 + {0x900f7, 0x1e8},
  1303 + {0x900f8, 0x68},
  1304 + {0x900f9, 0x798},
  1305 + {0x900fa, 0x16a},
  1306 + {0x900fb, 0x78},
  1307 + {0x900fc, 0x7a0},
  1308 + {0x900fd, 0x16a},
  1309 + {0x900fe, 0x68},
  1310 + {0x900ff, 0x790},
  1311 + {0x90100, 0x16a},
  1312 + {0x90101, 0x8},
  1313 + {0x90102, 0x8b10},
  1314 + {0x90103, 0x168},
  1315 + {0x90104, 0x8},
  1316 + {0x90105, 0xab10},
  1317 + {0x90106, 0x168},
  1318 + {0x90107, 0xa},
  1319 + {0x90108, 0x408},
  1320 + {0x90109, 0x169},
  1321 + {0x9010a, 0x58},
  1322 + {0x9010b, 0x0},
  1323 + {0x9010c, 0x68},
  1324 + {0x9010d, 0x0},
  1325 + {0x9010e, 0x408},
  1326 + {0x9010f, 0x169},
  1327 + {0x90110, 0x0},
  1328 + {0x90111, 0x8b10},
  1329 + {0x90112, 0x168},
  1330 + {0x90113, 0x1},
  1331 + {0x90114, 0xab10},
  1332 + {0x90115, 0x168},
  1333 + {0x90116, 0x0},
  1334 + {0x90117, 0x1d8},
  1335 + {0x90118, 0x169},
  1336 + {0x90119, 0x80},
  1337 + {0x9011a, 0x790},
  1338 + {0x9011b, 0x16a},
  1339 + {0x9011c, 0x18},
  1340 + {0x9011d, 0x7aa},
  1341 + {0x9011e, 0x6a},
  1342 + {0x9011f, 0xa},
  1343 + {0x90120, 0x0},
  1344 + {0x90121, 0x1e9},
  1345 + {0x90122, 0x8},
  1346 + {0x90123, 0x8080},
  1347 + {0x90124, 0x108},
  1348 + {0x90125, 0xf},
  1349 + {0x90126, 0x408},
  1350 + {0x90127, 0x169},
  1351 + {0x90128, 0xc},
  1352 + {0x90129, 0x0},
  1353 + {0x9012a, 0x68},
  1354 + {0x9012b, 0x9},
  1355 + {0x9012c, 0x0},
  1356 + {0x9012d, 0x1a9},
  1357 + {0x9012e, 0x0},
  1358 + {0x9012f, 0x408},
  1359 + {0x90130, 0x169},
  1360 + {0x90131, 0x0},
  1361 + {0x90132, 0x8080},
  1362 + {0x90133, 0x108},
  1363 + {0x90134, 0x8},
  1364 + {0x90135, 0x7aa},
  1365 + {0x90136, 0x6a},
  1366 + {0x90137, 0x0},
  1367 + {0x90138, 0x8568},
  1368 + {0x90139, 0x108},
  1369 + {0x9013a, 0xb7},
  1370 + {0x9013b, 0x790},
  1371 + {0x9013c, 0x16a},
  1372 + {0x9013d, 0x1f},
  1373 + {0x9013e, 0x0},
  1374 + {0x9013f, 0x68},
  1375 + {0x90140, 0x8},
  1376 + {0x90141, 0x8558},
  1377 + {0x90142, 0x168},
  1378 + {0x90143, 0xf},
  1379 + {0x90144, 0x408},
  1380 + {0x90145, 0x169},
  1381 + {0x90146, 0xd},
  1382 + {0x90147, 0x0},
  1383 + {0x90148, 0x68},
  1384 + {0x90149, 0x0},
  1385 + {0x9014a, 0x408},
  1386 + {0x9014b, 0x169},
  1387 + {0x9014c, 0x0},
  1388 + {0x9014d, 0x8558},
  1389 + {0x9014e, 0x168},
  1390 + {0x9014f, 0x8},
  1391 + {0x90150, 0x3c8},
  1392 + {0x90151, 0x1a9},
  1393 + {0x90152, 0x3},
  1394 + {0x90153, 0x370},
  1395 + {0x90154, 0x129},
  1396 + {0x90155, 0x20},
  1397 + {0x90156, 0x2aa},
  1398 + {0x90157, 0x9},
  1399 + {0x90158, 0x0},
  1400 + {0x90159, 0x400},
  1401 + {0x9015a, 0x10e},
  1402 + {0x9015b, 0x8},
  1403 + {0x9015c, 0xe8},
  1404 + {0x9015d, 0x109},
  1405 + {0x9015e, 0x0},
  1406 + {0x9015f, 0x8140},
  1407 + {0x90160, 0x10c},
  1408 + {0x90161, 0x10},
  1409 + {0x90162, 0x8138},
  1410 + {0x90163, 0x10c},
  1411 + {0x90164, 0x8},
  1412 + {0x90165, 0x7c8},
  1413 + {0x90166, 0x101},
  1414 + {0x90167, 0x8},
  1415 + {0x90168, 0x448},
  1416 + {0x90169, 0x109},
  1417 + {0x9016a, 0xf},
  1418 + {0x9016b, 0x7c0},
  1419 + {0x9016c, 0x109},
  1420 + {0x9016d, 0x0},
  1421 + {0x9016e, 0xe8},
  1422 + {0x9016f, 0x109},
  1423 + {0x90170, 0x47},
  1424 + {0x90171, 0x630},
  1425 + {0x90172, 0x109},
  1426 + {0x90173, 0x8},
  1427 + {0x90174, 0x618},
  1428 + {0x90175, 0x109},
  1429 + {0x90176, 0x8},
  1430 + {0x90177, 0xe0},
  1431 + {0x90178, 0x109},
  1432 + {0x90179, 0x0},
  1433 + {0x9017a, 0x7c8},
  1434 + {0x9017b, 0x109},
  1435 + {0x9017c, 0x8},
  1436 + {0x9017d, 0x8140},
  1437 + {0x9017e, 0x10c},
  1438 + {0x9017f, 0x0},
  1439 + {0x90180, 0x1},
  1440 + {0x90181, 0x8},
  1441 + {0x90182, 0x8},
  1442 + {0x90183, 0x4},
  1443 + {0x90184, 0x8},
  1444 + {0x90185, 0x8},
  1445 + {0x90186, 0x7c8},
  1446 + {0x90187, 0x101},
  1447 + {0x90006, 0x0},
  1448 + {0x90007, 0x0},
  1449 + {0x90008, 0x8},
  1450 + {0x90009, 0x0},
  1451 + {0x9000a, 0x0},
  1452 + {0x9000b, 0x0},
  1453 + {0xd00e7, 0x400},
  1454 + {0x90017, 0x0},
  1455 + {0x9001f, 0x29},
  1456 + {0x90026, 0x6a},
  1457 + {0x400d0, 0x0},
  1458 + {0x400d1, 0x101},
  1459 + {0x400d2, 0x105},
  1460 + {0x400d3, 0x107},
  1461 + {0x400d4, 0x10f},
  1462 + {0x400d5, 0x202},
  1463 + {0x400d6, 0x20a},
  1464 + {0x400d7, 0x20b},
  1465 + {0x2003a, 0x2},
  1466 + {0x2000b, 0x64},
  1467 + {0x2000c, 0xc8},
  1468 + {0x2000d, 0x7d0},
  1469 + {0x2000e, 0x2c},
  1470 + {0x12000b, 0xc},
  1471 + {0x12000c, 0x19},
  1472 + {0x12000d, 0xfa},
  1473 + {0x12000e, 0x10},
  1474 + {0x22000b, 0x3},
  1475 + {0x22000c, 0x6},
  1476 + {0x22000d, 0x3e},
  1477 + {0x22000e, 0x10},
  1478 + {0x9000c, 0x0},
  1479 + {0x9000d, 0x173},
  1480 + {0x9000e, 0x60},
  1481 + {0x9000f, 0x6110},
  1482 + {0x90010, 0x2152},
  1483 + {0x90011, 0xdfbd},
  1484 + {0x90012, 0x2060},
  1485 + {0x90013, 0x6152},
  1486 + {0x20010, 0x5a},
  1487 + {0x20011, 0x3},
  1488 + {0x40080, 0xe0},
  1489 + {0x40081, 0x12},
  1490 + {0x40082, 0xe0},
  1491 + {0x40083, 0x12},
  1492 + {0x40084, 0xe0},
  1493 + {0x40085, 0x12},
  1494 + {0x140080, 0xe0},
  1495 + {0x140081, 0x12},
  1496 + {0x140082, 0xe0},
  1497 + {0x140083, 0x12},
  1498 + {0x140084, 0xe0},
  1499 + {0x140085, 0x12},
  1500 + {0x240080, 0xe0},
  1501 + {0x240081, 0x12},
  1502 + {0x240082, 0xe0},
  1503 + {0x240083, 0x12},
  1504 + {0x240084, 0xe0},
  1505 + {0x240085, 0x12},
  1506 + {0x400fd, 0xf},
  1507 + {0x10011, 0x1},
  1508 + {0x10012, 0x1},
  1509 + {0x10013, 0x180},
  1510 + {0x10018, 0x1},
  1511 + {0x10002, 0x6209},
  1512 + {0x100b2, 0x1},
  1513 + {0x101b4, 0x1},
  1514 + {0x102b4, 0x1},
  1515 + {0x103b4, 0x1},
  1516 + {0x104b4, 0x1},
  1517 + {0x105b4, 0x1},
  1518 + {0x106b4, 0x1},
  1519 + {0x107b4, 0x1},
  1520 + {0x108b4, 0x1},
  1521 + {0x11011, 0x1},
  1522 + {0x11012, 0x1},
  1523 + {0x11013, 0x180},
  1524 + {0x11018, 0x1},
  1525 + {0x11002, 0x6209},
  1526 + {0x110b2, 0x1},
  1527 + {0x111b4, 0x1},
  1528 + {0x112b4, 0x1},
  1529 + {0x113b4, 0x1},
  1530 + {0x114b4, 0x1},
  1531 + {0x115b4, 0x1},
  1532 + {0x116b4, 0x1},
  1533 + {0x117b4, 0x1},
  1534 + {0x118b4, 0x1},
  1535 + {0x20089, 0x1},
  1536 + {0x20088, 0x19},
  1537 + {0xc0080, 0x2},
  1538 + {0xd0000, 0x1},
  1539 +};
  1540 +
  1541 +struct dram_fsp_msg ddr_dram_fsp_msg[] = {
  1542 + {
  1543 + /* P0 3200mts 1D */
  1544 + .drate = 3200,
  1545 + .fw_type = FW_1D_IMAGE,
  1546 + .fsp_cfg = ddr_fsp0_cfg,
  1547 + .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg),
  1548 + },
  1549 + {
  1550 + /* P1 400mts 1D */
  1551 + .drate = 400,
  1552 + .fw_type = FW_1D_IMAGE,
  1553 + .fsp_cfg = ddr_fsp1_cfg,
  1554 + .fsp_cfg_num = ARRAY_SIZE(ddr_fsp1_cfg),
  1555 + },
  1556 + {
  1557 + /* P2 100mts 1D */
  1558 + .drate = 100,
  1559 + .fw_type = FW_1D_IMAGE,
  1560 + .fsp_cfg = ddr_fsp2_cfg,
  1561 + .fsp_cfg_num = ARRAY_SIZE(ddr_fsp2_cfg),
  1562 + },
  1563 + {
  1564 + /* P0 3200mts 2D */
  1565 + .drate = 3200,
  1566 + .fw_type = FW_2D_IMAGE,
  1567 + .fsp_cfg = ddr_fsp0_2d_cfg,
  1568 + .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg),
  1569 + },
  1570 +};
  1571 +
  1572 +/* ddr timing config params */
  1573 +struct dram_timing_info dram_timing = {
  1574 + .ddrc_cfg = ddr_ddrc_cfg,
  1575 + .ddrc_cfg_num = ARRAY_SIZE(ddr_ddrc_cfg),
  1576 + .ddrphy_cfg = ddr_ddrphy_cfg,
  1577 + .ddrphy_cfg_num = ARRAY_SIZE(ddr_ddrphy_cfg),
  1578 + .fsp_msg = ddr_dram_fsp_msg,
  1579 + .fsp_msg_num = ARRAY_SIZE(ddr_dram_fsp_msg),
  1580 + .ddrphy_trained_csr = ddr_ddrphy_trained_csr,
  1581 + .ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr),
  1582 + .ddrphy_pie = ddr_phy_pie,
  1583 + .ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie),
  1584 + .fsp_table = { 3200, 400, 100, },
  1585 +};
board/freescale/imx8mm_ab2/spl.c
... ... @@ -24,6 +24,8 @@
24 24  
25 25 #ifdef CONFIG_TARGET_IMX8MM_AB2
26 26 #include <asm/arch/imx8mm_pins.h>
  27 +#else
  28 +#include <asm/arch/imx8mn_pins.h>
27 29 #endif
28 30  
29 31 #ifdef CONFIG_POWER_PCA9450
... ... @@ -36,6 +38,7 @@
36 38  
37 39 int spl_board_boot_device(enum boot_device boot_dev_spl)
38 40 {
  41 +#ifdef CONFIG_TARGET_IMX8MM_AB2
39 42 switch (boot_dev_spl) {
40 43 case SD2_BOOT:
41 44 case MMC2_BOOT:
... ... @@ -52,6 +55,9 @@
52 55 default:
53 56 return BOOT_DEVICE_NONE;
54 57 }
  58 +#else
  59 + return BOOT_DEVICE_BOOTROM;
  60 +#endif
55 61 }
56 62  
57 63 void spl_dram_init(void)
... ... @@ -81,6 +87,21 @@
81 87 };
82 88 #endif
83 89  
  90 +#if defined(CONFIG_TARGET_IMX8MN_AB2) || defined(CONFIG_TARGET_IMX8MN_DDR4_AB2)
  91 +struct i2c_pads_info i2c_pad_info1 = {
  92 + .scl = {
  93 + .i2c_mode = IMX8MN_PAD_I2C1_SCL__I2C1_SCL | PC,
  94 + .gpio_mode = IMX8MN_PAD_I2C1_SCL__GPIO5_IO14 | PC,
  95 + .gp = IMX_GPIO_NR(5, 14),
  96 + },
  97 + .sda = {
  98 + .i2c_mode = IMX8MN_PAD_I2C1_SDA__I2C1_SDA | PC,
  99 + .gpio_mode = IMX8MN_PAD_I2C1_SDA__GPIO5_IO15 | PC,
  100 + .gp = IMX_GPIO_NR(5, 15),
  101 + },
  102 +};
  103 +#endif
  104 +
84 105 #define USDHC2_CD_GPIO IMX_GPIO_NR(2, 12)
85 106 #define USDHC2_PWR_GPIO IMX_GPIO_NR(2, 19)
86 107  
... ... @@ -110,6 +131,32 @@
110 131 };
111 132 #endif
112 133  
  134 +#if defined(CONFIG_TARGET_IMX8MN_AB2) || defined(CONFIG_TARGET_IMX8MN_DDR4_AB2)
  135 +static iomux_v3_cfg_t const usdhc3_pads[] = {
  136 + IMX8MN_PAD_NAND_WE_B__USDHC3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  137 + IMX8MN_PAD_NAND_WP_B__USDHC3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  138 + IMX8MN_PAD_NAND_DATA04__USDHC3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  139 + IMX8MN_PAD_NAND_DATA05__USDHC3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  140 + IMX8MN_PAD_NAND_DATA06__USDHC3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  141 + IMX8MN_PAD_NAND_DATA07__USDHC3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  142 + IMX8MN_PAD_NAND_RE_B__USDHC3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  143 + IMX8MN_PAD_NAND_CE2_B__USDHC3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  144 + IMX8MN_PAD_NAND_CE3_B__USDHC3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  145 + IMX8MN_PAD_NAND_CLE__USDHC3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  146 +};
  147 +
  148 +static iomux_v3_cfg_t const usdhc2_pads[] = {
  149 + IMX8MN_PAD_SD2_CLK__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  150 + IMX8MN_PAD_SD2_CMD__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  151 + IMX8MN_PAD_SD2_DATA0__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  152 + IMX8MN_PAD_SD2_DATA1__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  153 + IMX8MN_PAD_SD2_DATA2__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  154 + IMX8MN_PAD_SD2_DATA3__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
  155 + IMX8MN_PAD_SD2_RESET_B__GPIO2_IO19 | MUX_PAD_CTRL(USDHC_GPIO_PAD_CTRL),
  156 + IMX8MN_PAD_SD2_CD_B__GPIO2_IO12 | MUX_PAD_CTRL(USDHC_CD_PAD_CTRL),
  157 +};
  158 +#endif
  159 +
113 160 static struct fsl_esdhc_cfg usdhc_cfg[2] = {
114 161 {USDHC2_BASE_ADDR, 0, 4},
115 162 {USDHC3_BASE_ADDR, 0, 8},
116 163  
... ... @@ -177,12 +224,13 @@
177 224  
178 225 #ifdef CONFIG_POWER
179 226 #define I2C_PMIC 0
  227 +
  228 +#ifdef CONFIG_POWER_PCA9450
180 229 int power_init_board(void)
181 230 {
182 231 struct pmic *p;
183 232 int ret;
184 233  
185   -#ifdef CONFIG_POWER_PCA9450
186 234 ret = power_pca9450b_init(I2C_PMIC);
187 235 if (ret)
188 236 printf("power init failed");
189 237  
... ... @@ -202,14 +250,25 @@
202 250 pmic_reg_write(p, PCA9450_BUCK1OUT_DVS1, 0x14);
203 251 pmic_reg_write(p, PCA9450_BUCK1CTRL, 0x59);
204 252  
205   - /* Kernel uses OD/OD freq for SOC */
206   - /* To avoid timing risk from SOC to ARM,increase VDD_ARM to OD voltage 0.95v */
207   - pmic_reg_write(p, PCA9450_BUCK2OUT_DVS0, 0x1C);
208   -
  253 +#if defined(CONFIG_TARGET_IMX8MN_AB2) || defined(CONFIG_TARGET_IMX8MN_DDR4_AB2)
  254 + /* set VDD_SNVS_0V8 from default 0.85V */
  255 + pmic_reg_write(p, PCA9450_LDO2CTRL, 0xC0);
  256 + /* enable LDO4 to 1.2v */
  257 + pmic_reg_write(p, PCA9450_LDO4CTRL, 0x44);
  258 +#endif
209 259 /* set WDOG_B_CFG to cold reset */
210 260 pmic_reg_write(p, PCA9450_RESET_CTRL, 0xA1);
211 261  
212   -#else
  262 + return 0;
  263 +}
  264 +#endif /* CONFIG_POWER_PCA9450 */
  265 +
  266 +#ifdef CONFIG_POWER_BD71837
  267 +int power_init_board(void)
  268 +{
  269 + struct pmic *p;
  270 + int ret;
  271 +
213 272 ret = power_bd71837_init(I2C_PMIC);
214 273 if (ret)
215 274 printf("power init failed");
216 275  
217 276  
218 277  
219 278  
... ... @@ -220,21 +279,39 @@
220 279 pmic_reg_write(p, BD71837_PWRONCONFIG1, 0x0);
221 280 /* unlock the PMIC regs */
222 281 pmic_reg_write(p, BD71837_REGLOCK, 0x1);
  282 +#ifdef CONFIG_TARGET_IMX8MM_AB2
223 283 /* increase VDD_SOC to typical value 0.85v before first DRAM access */
224 284 pmic_reg_write(p, BD71837_BUCK1_VOLT_RUN, 0x0f);
225 285 /* increase VDD_DRAM to 0.975v for 3Ghz DDR */
226 286 pmic_reg_write(p, BD71837_BUCK5_VOLT, 0x83);
227   -#ifndef CONFIG_IMX8M_LPDDR4
  287 +#ifdef CONFIG_IMX8M_DDR4
228 288 /* increase NVCC_DRAM_1V2 to 1.2v for DDR4 */
229 289 pmic_reg_write(p, BD71837_BUCK8_VOLT, 0x28);
230 290 #endif
  291 +#endif /* CONFIG_TARGET_IMX8MM_AB2 */
  292 +
  293 +#if defined(CONFIG_TARGET_IMX8MN_AB2) || defined(CONFIG_TARGET_IMX8MN_DDR4_AB2)
  294 + /* Set VDD_ARM to typical value 0.85v for 1.2Ghz */
  295 + pmic_reg_write(p, BD71837_BUCK2_VOLT_RUN, 0xf);
  296 +#ifdef CONFIG_IMX8M_DDR4
  297 + /* Set VDD_SOC/VDD_DRAM to typical value 0.85v for nominal mode */
  298 + pmic_reg_write(p, BD71837_BUCK1_VOLT_RUN, 0xf);
  299 +#endif
  300 + /* Set VDD_SOC 0.85v for suspend */
  301 + pmic_reg_write(p, BD71837_BUCK1_VOLT_SUSP, 0xf);
  302 +#ifdef CONFIG_IMX8M_DDR4
  303 + /* increase NVCC_DRAM_1V2 to 1.2v for DDR4 */
  304 + pmic_reg_write(p, BD71837_BUCK8_VOLT, 0x28);
  305 +#endif
  306 +#endif /* CONFIG_TARGET_IMX8MN_AB2 */
  307 +
231 308 /* lock the PMIC regs */
232 309 pmic_reg_write(p, BD71837_REGLOCK, 0x11);
233   -#endif
234 310  
235 311 return 0;
236 312 }
237   -#endif
  313 +#endif /* CONFIG_POWER_BD71837 */
  314 +#endif /* CONFIG_POWER */
238 315  
239 316 void spl_board_init(void)
240 317 {
configs/imx8mn_ab2_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8M=y
  5 +CONFIG_SYS_TEXT_BASE=0x40200000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x2000
  10 +CONFIG_SYS_I2C_MXC_I2C1=y
  11 +CONFIG_SYS_I2C_MXC_I2C2=y
  12 +CONFIG_SYS_I2C_MXC_I2C3=y
  13 +CONFIG_ENV_SIZE=0x1000
  14 +CONFIG_ENV_OFFSET=0x400000
  15 +CONFIG_ENV_SECT_SIZE=0x10000
  16 +CONFIG_DM_GPIO=y
  17 +CONFIG_TARGET_IMX8MN_AB2=y
  18 +CONFIG_ARCH_MISC_INIT=y
  19 +CONFIG_SPL_SERIAL_SUPPORT=y
  20 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  21 +CONFIG_SPL=y
  22 +CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x48000000
  23 +CONFIG_CSF_SIZE=0x2000
  24 +CONFIG_SPL_TEXT_BASE=0x912000
  25 +CONFIG_FIT=y
  26 +CONFIG_FIT_EXTERNAL_OFFSET=0x3000
  27 +CONFIG_SPL_LOAD_FIT=y
  28 +CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
  29 +CONFIG_OF_SYSTEM_SETUP=y
  30 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/imx8m/imximage-8mn-lpddr4.cfg"
  31 +CONFIG_DEFAULT_DEVICE_TREE="imx8mn-ab2"
  32 +CONFIG_DEFAULT_FDT_FILE="imx8mn-ab2.dtb"
  33 +CONFIG_BOARD_LATE_INIT=y
  34 +CONFIG_BOARD_EARLY_INIT_F=y
  35 +CONFIG_SPL_BOARD_INIT=y
  36 +CONFIG_SPL_BOOTROM_SUPPORT=y
  37 +CONFIG_SPL_SEPARATE_BSS=y
  38 +CONFIG_SPL_I2C_SUPPORT=y
  39 +CONFIG_SPL_POWER_SUPPORT=y
  40 +CONFIG_NR_DRAM_BANKS=2
  41 +CONFIG_HUSH_PARSER=y
  42 +CONFIG_SYS_PROMPT="u-boot=> "
  43 +# CONFIG_CMD_EXPORTENV is not set
  44 +# CONFIG_CMD_IMPORTENV is not set
  45 +CONFIG_CMD_ERASEENV=y
  46 +# CONFIG_CMD_CRC32 is not set
  47 +# CONFIG_BOOTM_NETBSD is not set
  48 +CONFIG_CMD_CLK=y
  49 +CONFIG_CMD_FUSE=y
  50 +CONFIG_CMD_GPIO=y
  51 +CONFIG_CMD_I2C=y
  52 +CONFIG_CMD_MMC=y
  53 +CONFIG_CMD_DHCP=y
  54 +CONFIG_CMD_MII=y
  55 +CONFIG_CMD_PING=y
  56 +CONFIG_CMD_CACHE=y
  57 +CONFIG_CMD_REGULATOR=y
  58 +CONFIG_CMD_MEMTEST=y
  59 +CONFIG_CMD_EXT2=y
  60 +CONFIG_CMD_EXT4=y
  61 +CONFIG_CMD_EXT4_WRITE=y
  62 +CONFIG_CMD_FAT=y
  63 +CONFIG_CMD_SF=y
  64 +CONFIG_OF_CONTROL=y
  65 +CONFIG_ENV_IS_IN_MMC=y
  66 +CONFIG_ENV_IS_IN_SPI_FLASH=y
  67 +CONFIG_ENV_IS_NOWHERE=y
  68 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  69 +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
  70 +CONFIG_CLK_COMPOSITE_CCF=y
  71 +CONFIG_CLK_IMX8MN=y
  72 +CONFIG_MXC_GPIO=y
  73 +
  74 +CONFIG_DM_I2C=y
  75 +CONFIG_SYS_I2C_MXC=y
  76 +CONFIG_DM_MMC=y
  77 +CONFIG_MMC_IO_VOLTAGE=y
  78 +CONFIG_MMC_UHS_SUPPORT=y
  79 +CONFIG_MMC_HS400_SUPPORT=y
  80 +CONFIG_MMC_HS400_ES_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_SUPPORT_EMMC_BOOT=y
  83 +CONFIG_FSL_ESDHC_IMX=y
  84 +CONFIG_DM_SPI_FLASH=y
  85 +CONFIG_DM_SPI=y
  86 +CONFIG_FSL_FSPI=y
  87 +CONFIG_SPI=y
  88 +CONFIG_SPI_FLASH=y
  89 +CONFIG_SPI_FLASH_BAR=y
  90 +CONFIG_SPI_FLASH_STMICRO=y
  91 +CONFIG_SF_DEFAULT_BUS=0
  92 +CONFIG_SF_DEFAULT_CS=0
  93 +CONFIG_SF_DEFAULT_SPEED=40000000
  94 +CONFIG_SF_DEFAULT_MODE=0
  95 +
  96 +CONFIG_PHYLIB=y
  97 +CONFIG_PHY_REALTEK=y
  98 +CONFIG_DM_ETH=y
  99 +CONFIG_PHY_GIGE=y
  100 +CONFIG_FEC_MXC=y
  101 +CONFIG_MII=y
  102 +CONFIG_PINCTRL=y
  103 +CONFIG_PINCTRL_IMX8M=y
  104 +CONFIG_DM_REGULATOR=y
  105 +CONFIG_DM_REGULATOR_FIXED=y
  106 +CONFIG_DM_REGULATOR_GPIO=y
  107 +CONFIG_MXC_UART=y
  108 +CONFIG_SYSRESET=y
  109 +CONFIG_SYSRESET_PSCI=y
  110 +CONFIG_DM_THERMAL=y
  111 +CONFIG_NXP_TMU=y
  112 +
  113 +CONFIG_OF_LIBFDT_OVERLAY=y
configs/imx8mn_ddr4_ab2_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8M=y
  5 +CONFIG_SYS_TEXT_BASE=0x40200000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x2000
  10 +CONFIG_SYS_I2C_MXC_I2C1=y
  11 +CONFIG_SYS_I2C_MXC_I2C2=y
  12 +CONFIG_SYS_I2C_MXC_I2C3=y
  13 +CONFIG_ENV_SIZE=0x1000
  14 +CONFIG_ENV_OFFSET=0x400000
  15 +CONFIG_ENV_SECT_SIZE=0x10000
  16 +CONFIG_DM_GPIO=y
  17 +CONFIG_TARGET_IMX8MN_DDR4_AB2=y
  18 +CONFIG_ARCH_MISC_INIT=y
  19 +CONFIG_SPL_SERIAL_SUPPORT=y
  20 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  21 +CONFIG_SPL=y
  22 +CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x48000000
  23 +CONFIG_CSF_SIZE=0x2000
  24 +CONFIG_SPL_TEXT_BASE=0x912000
  25 +CONFIG_FIT=y
  26 +CONFIG_FIT_EXTERNAL_OFFSET=0x3000
  27 +CONFIG_SPL_LOAD_FIT=y
  28 +CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
  29 +CONFIG_OF_SYSTEM_SETUP=y
  30 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/imx8m/imximage-8mn-ddr4.cfg"
  31 +CONFIG_DEFAULT_DEVICE_TREE="imx8mn-ddr4-ab2"
  32 +CONFIG_DEFAULT_FDT_FILE="imx8mn-ddr4-ab2.dtb"
  33 +CONFIG_BOARD_LATE_INIT=y
  34 +CONFIG_BOARD_EARLY_INIT_F=y
  35 +CONFIG_SPL_BOARD_INIT=y
  36 +CONFIG_SPL_BOOTROM_SUPPORT=y
  37 +CONFIG_SPL_SEPARATE_BSS=y
  38 +CONFIG_SPL_I2C_SUPPORT=y
  39 +CONFIG_SPL_POWER_SUPPORT=y
  40 +CONFIG_NR_DRAM_BANKS=2
  41 +CONFIG_HUSH_PARSER=y
  42 +CONFIG_SYS_PROMPT="u-boot=> "
  43 +# CONFIG_CMD_EXPORTENV is not set
  44 +# CONFIG_CMD_IMPORTENV is not set
  45 +CONFIG_CMD_ERASEENV=y
  46 +# CONFIG_CMD_CRC32 is not set
  47 +# CONFIG_BOOTM_NETBSD is not set
  48 +CONFIG_CMD_CLK=y
  49 +CONFIG_CMD_FUSE=y
  50 +CONFIG_CMD_GPIO=y
  51 +CONFIG_CMD_I2C=y
  52 +CONFIG_CMD_MMC=y
  53 +CONFIG_CMD_DHCP=y
  54 +CONFIG_CMD_MII=y
  55 +CONFIG_CMD_PING=y
  56 +CONFIG_CMD_CACHE=y
  57 +CONFIG_CMD_REGULATOR=y
  58 +CONFIG_CMD_MEMTEST=y
  59 +CONFIG_CMD_EXT2=y
  60 +CONFIG_CMD_EXT4=y
  61 +CONFIG_CMD_EXT4_WRITE=y
  62 +CONFIG_CMD_FAT=y
  63 +CONFIG_CMD_SF=y
  64 +CONFIG_OF_CONTROL=y
  65 +CONFIG_ENV_IS_IN_MMC=y
  66 +CONFIG_ENV_IS_IN_SPI_FLASH=y
  67 +CONFIG_ENV_IS_NOWHERE=y
  68 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  69 +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
  70 +CONFIG_CLK_COMPOSITE_CCF=y
  71 +CONFIG_CLK_IMX8MN=y
  72 +CONFIG_MXC_GPIO=y
  73 +
  74 +CONFIG_DM_I2C=y
  75 +CONFIG_SYS_I2C_MXC=y
  76 +CONFIG_DM_MMC=y
  77 +CONFIG_MMC_IO_VOLTAGE=y
  78 +CONFIG_MMC_UHS_SUPPORT=y
  79 +CONFIG_MMC_HS400_SUPPORT=y
  80 +CONFIG_MMC_HS400_ES_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_SUPPORT_EMMC_BOOT=y
  83 +CONFIG_FSL_ESDHC_IMX=y
  84 +CONFIG_DM_SPI_FLASH=y
  85 +CONFIG_DM_SPI=y
  86 +CONFIG_FSL_FSPI=y
  87 +CONFIG_SPI=y
  88 +CONFIG_SPI_FLASH=y
  89 +CONFIG_SPI_FLASH_BAR=y
  90 +CONFIG_SPI_FLASH_STMICRO=y
  91 +CONFIG_SF_DEFAULT_BUS=0
  92 +CONFIG_SF_DEFAULT_CS=0
  93 +CONFIG_SF_DEFAULT_SPEED=40000000
  94 +CONFIG_SF_DEFAULT_MODE=0
  95 +
  96 +CONFIG_PHYLIB=y
  97 +CONFIG_PHY_REALTEK=y
  98 +CONFIG_DM_ETH=y
  99 +CONFIG_PHY_GIGE=y
  100 +CONFIG_FEC_MXC=y
  101 +CONFIG_MII=y
  102 +CONFIG_PINCTRL=y
  103 +CONFIG_PINCTRL_IMX8M=y
  104 +CONFIG_DM_REGULATOR=y
  105 +CONFIG_DM_REGULATOR_FIXED=y
  106 +CONFIG_DM_REGULATOR_GPIO=y
  107 +CONFIG_MXC_UART=y
  108 +CONFIG_SYSRESET=y
  109 +CONFIG_SYSRESET_PSCI=y
  110 +CONFIG_DM_THERMAL=y
  111 +CONFIG_NXP_TMU=y
  112 +
  113 +CONFIG_OF_LIBFDT_OVERLAY=y
include/configs/imx8mn_ab2.h
  1 +/* SPDX-License-Identifier: GPL-2.0+ */
  2 +/*
  3 + * Copyright 2020 NXP
  4 + */
  5 +
  6 +#ifndef __IMX8MN_AB2_H
  7 +#define __IMX8MN_AB2_H
  8 +
  9 +#include <linux/sizes.h>
  10 +#include <asm/arch/imx-regs.h>
  11 +
  12 +#include "imx_env.h"
  13 +
  14 +#define CONFIG_SPL_MAX_SIZE (208 * 1024)
  15 +#define CONFIG_SYS_MONITOR_LEN (512 * 1024)
  16 +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
  17 +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
  18 +#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
  19 +#define CONFIG_SYS_UBOOT_BASE \
  20 + (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
  21 +
  22 +#ifdef CONFIG_SPL_BUILD
  23 +#define CONFIG_SPL_STACK 0x187FF0
  24 +#define CONFIG_SPL_BSS_START_ADDR 0x0095e000
  25 +#define CONFIG_SPL_BSS_MAX_SIZE SZ_8K /* 8 KB */
  26 +#define CONFIG_SYS_SPL_MALLOC_START 0x42200000
  27 +#define CONFIG_SYS_SPL_MALLOC_SIZE SZ_64K /* 64 KB */
  28 +
  29 +/* malloc f used before GD_FLG_FULL_MALLOC_INIT set */
  30 +#define CONFIG_MALLOC_F_ADDR 0x184000
  31 +
  32 +/* For RAW image gives a error info not panic */
  33 +#define CONFIG_SPL_ABORT_ON_RAW_IMAGE
  34 +
  35 +#define CONFIG_POWER
  36 +#define CONFIG_POWER_I2C
  37 +#ifdef CONFIG_IMX8M_DDR4
  38 +#define CONFIG_POWER_BD71837
  39 +#else
  40 +#define CONFIG_POWER_PCA9450
  41 +#endif
  42 +
  43 +#define CONFIG_SYS_I2C
  44 +
  45 +#if defined(CONFIG_NAND_BOOT)
  46 +#define CONFIG_SPL_NAND_SUPPORT
  47 +#define CONFIG_SPL_DMA
  48 +#define CONFIG_SPL_NAND_MXS
  49 +#define CONFIG_SPL_NAND_BASE
  50 +#define CONFIG_SPL_NAND_IDENT
  51 +#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x4000000 /* Put the FIT out of first 64MB boot area */
  52 +
  53 +/* Set a redundant offset in nand FIT mtdpart. The new uuu will burn full boot image (not only FIT part) to the mtdpart, so we check both two offsets */
  54 +#define CONFIG_SYS_NAND_U_BOOT_OFFS_REDUND \
  55 + (CONFIG_SYS_NAND_U_BOOT_OFFS + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512 - 0x8400)
  56 +#endif
  57 +
  58 +#endif
  59 +
  60 +#define CONFIG_CMD_READ
  61 +#define CONFIG_SERIAL_TAG
  62 +
  63 +#define CONFIG_REMAKE_ELF
  64 +/* ENET Config */
  65 +/* ENET1 */
  66 +#if defined(CONFIG_FEC_MXC)
  67 +#define CONFIG_ETHPRIME "eth0"
  68 +
  69 +#define CONFIG_FEC_XCV_TYPE RGMII
  70 +#define CONFIG_FEC_MXC_PHYADDR 1
  71 +#define FEC_QUIRK_ENET_MAC
  72 +
  73 +#define IMX_FEC_BASE 0x30BE0000
  74 +#endif
  75 +
  76 +
  77 +/*
  78 + * Another approach is add the clocks for inmates into clks_init_on
  79 + * in clk-imx8mm.c, then clk_ingore_unused could be removed.
  80 + */
  81 +#define JAILHOUSE_ENV \
  82 + "jh_clk= \0 " \
  83 + "jh_mmcboot=mw 0x303d0518 0xff; setenv fdt_file imx8mn-ddr4-ab2-root.dtb;" \
  84 + "setenv jh_clk clk_ignore_unused; " \
  85 + "if run loadimage; then " \
  86 + "run mmcboot; " \
  87 + "else run jh_netboot; fi; \0" \
  88 + "jh_netboot=mw 0x303d0518 0xff; setenv fdt_file imx8mn-ddr4-ab2-root.dtb; setenv jh_clk clk_ignore_unused; run netboot; \0 "
  89 +
  90 +#define CONFIG_MFG_ENV_SETTINGS \
  91 + CONFIG_MFG_ENV_SETTINGS_DEFAULT \
  92 + "initrd_addr=0x43800000\0" \
  93 + "initrd_high=0xffffffffffffffff\0" \
  94 + "emmc_dev=2\0"\
  95 + "sd_dev=1\0" \
  96 +
  97 +/* Initial environment variables */
  98 +#define CONFIG_EXTRA_ENV_SETTINGS \
  99 + CONFIG_MFG_ENV_SETTINGS \
  100 + JAILHOUSE_ENV \
  101 + "script=boot.scr\0" \
  102 + "image=Image\0" \
  103 + "console=ttymxc1,115200\0" \
  104 + "fdt_addr=0x43000000\0" \
  105 + "fdt_high=0xffffffffffffffff\0" \
  106 + "boot_fit=no\0" \
  107 + "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
  108 + "initrd_addr=0x43800000\0" \
  109 + "initrd_high=0xffffffffffffffff\0" \
  110 + "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
  111 + "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
  112 + "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
  113 + "mmcautodetect=yes\0" \
  114 + "mmcargs=setenv bootargs ${jh_clk} console=${console} root=${mmcroot}\0 " \
  115 + "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
  116 + "bootscript=echo Running bootscript from mmc ...; " \
  117 + "source\0" \
  118 + "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
  119 + "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
  120 + "mmcboot=echo Booting from mmc ...; " \
  121 + "run mmcargs; " \
  122 + "if test ${boot_fit} = yes || test ${boot_fit} = try; then " \
  123 + "bootm ${loadaddr}; " \
  124 + "else " \
  125 + "if run loadfdt; then " \
  126 + "booti ${loadaddr} - ${fdt_addr}; " \
  127 + "else " \
  128 + "echo WARN: Cannot load the DT; " \
  129 + "fi; " \
  130 + "fi;\0" \
  131 + "netargs=setenv bootargs ${jh_clk} console=${console} " \
  132 + "root=/dev/nfs " \
  133 + "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
  134 + "netboot=echo Booting from net ...; " \
  135 + "run netargs; " \
  136 + "if test ${ip_dyn} = yes; then " \
  137 + "setenv get_cmd dhcp; " \
  138 + "else " \
  139 + "setenv get_cmd tftp; " \
  140 + "fi; " \
  141 + "${get_cmd} ${loadaddr} ${image}; " \
  142 + "if test ${boot_fit} = yes || test ${boot_fit} = try; then " \
  143 + "bootm ${loadaddr}; " \
  144 + "else " \
  145 + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
  146 + "booti ${loadaddr} - ${fdt_addr}; " \
  147 + "else " \
  148 + "echo WARN: Cannot load the DT; " \
  149 + "fi; " \
  150 + "fi;\0"
  151 +
  152 +#define CONFIG_BOOTCOMMAND \
  153 + "mmc dev ${mmcdev}; if mmc rescan; then " \
  154 + "if run loadbootscript; then " \
  155 + "run bootscript; " \
  156 + "else " \
  157 + "if run loadimage; then " \
  158 + "run mmcboot; " \
  159 + "else run netboot; " \
  160 + "fi; " \
  161 + "fi; " \
  162 + "fi;"
  163 +
  164 +/* Link Definitions */
  165 +#define CONFIG_LOADADDR 0x40480000
  166 +
  167 +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
  168 +
  169 +#define CONFIG_SYS_INIT_RAM_ADDR 0x40000000
  170 +#define CONFIG_SYS_INIT_RAM_SIZE 0x80000
  171 +#define CONFIG_SYS_INIT_SP_OFFSET \
  172 + (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
  173 +#define CONFIG_SYS_INIT_SP_ADDR \
  174 + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
  175 +
  176 +#define CONFIG_ENV_OVERWRITE
  177 +#if defined(CONFIG_ENV_IS_IN_SPI_FLASH)
  178 +#define CONFIG_ENV_SPI_BUS CONFIG_SF_DEFAULT_BUS
  179 +#define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS
  180 +#define CONFIG_ENV_SPI_MODE CONFIG_SF_DEFAULT_MODE
  181 +#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
  182 +#endif
  183 +#define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */
  184 +#define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC2 */
  185 +
  186 +/* Size of malloc() pool */
  187 +#define CONFIG_SYS_MALLOC_LEN SZ_32M
  188 +
  189 +#define CONFIG_SYS_SDRAM_BASE 0x40000000
  190 +#define PHYS_SDRAM 0x40000000
  191 +#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
  192 +
  193 +#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM
  194 +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + (PHYS_SDRAM_SIZE >> 1))
  195 +
  196 +#define CONFIG_MXC_UART_BASE UART2_BASE_ADDR
  197 +
  198 +/* Monitor Command Prompt */
  199 +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
  200 +#define CONFIG_SYS_CBSIZE 2048
  201 +#define CONFIG_SYS_MAXARGS 64
  202 +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
  203 +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
  204 + sizeof(CONFIG_SYS_PROMPT) + 16)
  205 +
  206 +#define CONFIG_IMX_BOOTAUX
  207 +
  208 +/* USDHC */
  209 +#define CONFIG_FSL_USDHC
  210 +
  211 +#define CONFIG_SYS_FSL_USDHC_NUM 2
  212 +#define CONFIG_SYS_FSL_ESDHC_ADDR 0
  213 +
  214 +#define CONFIG_SYS_MMC_IMG_LOAD_PART 1
  215 +
  216 +#ifdef CONFIG_FSL_FSPI
  217 +#define FSL_FSPI_FLASH_SIZE SZ_32M
  218 +#define FSL_FSPI_FLASH_NUM 1
  219 +#define FSPI0_BASE_ADDR 0x30bb0000
  220 +#define FSPI0_AMBA_BASE 0x0
  221 +#define CONFIG_FSPI_QUAD_SUPPORT
  222 +
  223 +#define CONFIG_SYS_FSL_FSPI_AHB
  224 +#endif
  225 +
  226 +#ifdef CONFIG_NAND_MXS
  227 +#define CONFIG_CMD_NAND_TRIMFFS
  228 +
  229 +/* NAND stuff */
  230 +#define CONFIG_SYS_MAX_NAND_DEVICE 1
  231 +#define CONFIG_SYS_NAND_BASE 0x20000000
  232 +#define CONFIG_SYS_NAND_5_ADDR_CYCLE
  233 +#define CONFIG_SYS_NAND_ONFI_DETECTION
  234 +#define CONFIG_SYS_NAND_USE_FLASH_BBT
  235 +#endif /* CONFIG_NAND_MXS */
  236 +
  237 +#define CONFIG_SYS_I2C_SPEED 100000
  238 +
  239 +#endif