Commit 3939f3996dfcaefdf5d43f128bd2fb3849239d48

Authored by Eric Lee
1 parent 185bdaaaf5

Add SMARC-iMX8QM U-Boot v2020.04_2.3.0_ga Support, Initial Release

Showing 32 changed files with 4806 additions and 3 deletions Side-by-side Diff

arch/arm/dts/Makefile
... ... @@ -760,6 +760,7 @@
760 760 dtb-$(CONFIG_ARCH_IMX8) += \
761 761 fsl-imx8qm-apalis.dtb \
762 762 fsl-imx8qm-mek.dtb \
  763 + fsl-smarcimx8qm.dtb \
763 764 fsl-imx8qm-ddr4-val.dtb \
764 765 fsl-imx8qm-lpddr4-val.dtb \
765 766 fsl-imx8qm-mek-xen.dtb \
arch/arm/dts/fsl-imx8qm-device.dtsi
... ... @@ -583,6 +583,24 @@
583 583 reg = <SC_R_SPI_1>;
584 584 #power-domain-cells = <0>;
585 585 power-domains = <&pd_dma>;
  586 + #address-cells = <1>;
  587 + #size-cells = <0>;
  588 +
  589 + pd_dma0_chan2: PD_LPSPI1_RX {
  590 + reg = <SC_R_DMA_0_CH2>;
  591 + power-domains =<&pd_dma_lpspi1>;
  592 + #power-domain-cells = <0>;
  593 + #address-cells = <1>;
  594 + #size-cells = <0>;
  595 +
  596 + pd_dma0_chan3: PD_LPSPI1_TX {
  597 + reg = <SC_R_DMA_0_CH3>;
  598 + power-domains =<&pd_dma0_chan2>;
  599 + #power-domain-cells = <0>;
  600 + #address-cells = <1>;
  601 + #size-cells = <0>;
  602 + };
  603 + };
586 604 };
587 605 pd_dma_lpspi2: PD_DMA_SPI_2 {
588 606 reg = <SC_R_SPI_2>;
... ... @@ -1584,6 +1602,22 @@
1584 1602 status = "disabled";
1585 1603 };
1586 1604  
  1605 + lpspi1: lpspi@5a100000 {
  1606 + compatible = "fsl,imx7ulp-spi";
  1607 + reg = <0x0 0x5a100000 0x0 0x10000>;
  1608 + interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
  1609 + interrupt-parent = <&gic>;
  1610 + clocks = <&clk IMX8QM_SPI1_CLK>,
  1611 + <&clk IMX8QM_SPI1_IPG_CLK>;
  1612 + clock-names = "per", "ipg";
  1613 + assigned-clocks = <&clk IMX8QM_SPI1_CLK>;
  1614 + assigned-clock-rates = <20000000>;
  1615 + power-domains = <&pd_dma0_chan3>;
  1616 + dma-names = "tx","rx";
  1617 + dmas = <&edma0 3 0 0>, <&edma0 2 0 1>;
  1618 + status = "disabled";
  1619 + };
  1620 +
1587 1621 lpspi3: lpspi@5a030000 {
1588 1622 compatible = "fsl,imx7ulp-spi";
1589 1623 reg = <0x0 0x5a030000 0x0 0x10000>;
1590 1624  
... ... @@ -1676,9 +1710,9 @@
1676 1710 assigned-clocks = <&clk IMX8QM_UART4_CLK>;
1677 1711 assigned-clock-rates = <80000000>;
1678 1712 power-domains = <&pd_dma0_chan21>;
1679   - dma-names = "tx","rx";
  1713 + /*dma-names = "tx","rx";
1680 1714 dmas = <&edma0 21 0 0>,
1681   - <&edma0 20 0 1>;
  1715 + <&edma0 20 0 1>;*/
1682 1716 status = "disabled";
1683 1717 };
1684 1718  
arch/arm/dts/fsl-imx8qm-mek-auto.dts
... ... @@ -95,6 +95,7 @@
95 95 /delete-node/ &irqsteer_lvds1;
96 96 /delete-node/ &i2c1_lvds1;
97 97 /delete-node/ &lpspi0;
  98 +/delete-node/ &lpspi1;
98 99 /delete-node/ &lpspi3;
99 100 /delete-node/ &lpuart1;
100 101 /delete-node/ &lpuart2;
arch/arm/dts/fsl-smarcimx8qm-u-boot.dtsi
  1 +// SPDX-License-Identifier: GPL-2.0+
  2 +/*
  3 + * Copyright 2018 NXP
  4 + * Copyright 2021 Embedian Inc.
  5 + */
  6 +
  7 +/ {
  8 +
  9 + aliases {
  10 + usbhost1 = &usbh3;
  11 + usbgadget0 = &usbg1;
  12 + };
  13 +
  14 + usbh3: usbh3 {
  15 + compatible = "Cadence,usb3-host";
  16 + dr_mode = "host";
  17 + cdns3,usb = <&usbotg3>;
  18 + status = "okay";
  19 + };
  20 +
  21 + usbg1: usbg1 {
  22 + compatible = "fsl,imx27-usb-gadget";
  23 + dr_mode = "peripheral";
  24 + chipidea,usb = <&usbotg1>;
  25 + status = "okay";
  26 + u-boot,dm-spl;
  27 + };
  28 +};
  29 +
  30 +&{/imx8qm-pm} {
  31 +
  32 + u-boot,dm-spl;
  33 +};
  34 +
  35 +&mu {
  36 + u-boot,dm-spl;
  37 +};
  38 +
  39 +&clk {
  40 + u-boot,dm-spl;
  41 +};
  42 +
  43 +&iomuxc {
  44 + u-boot,dm-spl;
  45 +};
  46 +
  47 +&{/regulators} {
  48 + u-boot,dm-spl;
  49 +};
  50 +
  51 +&reg_usdhc2_vmmc {
  52 + u-boot,dm-spl;
  53 +};
  54 +
  55 +&{/mu@5d1c0000/iomuxc/smarcimx8qm} {
  56 + u-boot,dm-spl;
  57 +};
  58 +
  59 +&pinctrl_usdhc2_gpio {
  60 + u-boot,dm-spl;
  61 +};
  62 +
  63 +&pinctrl_usdhc2 {
  64 + u-boot,dm-spl;
  65 +};
  66 +
  67 +&pinctrl_lpuart0 {
  68 + u-boot,dm-spl;
  69 +};
  70 +
  71 +&pinctrl_lpuart1 {
  72 + u-boot,dm-spl;
  73 +};
  74 +
  75 +&pinctrl_lpuart3 {
  76 + u-boot,dm-spl;
  77 +};
  78 +
  79 +&pinctrl_lpuart4 {
  80 + u-boot,dm-spl;
  81 +};
  82 +
  83 +&pinctrl_usdhc1 {
  84 + u-boot,dm-spl;
  85 +};
  86 +
  87 +&pinctrl_flexspi0 {
  88 + u-boot,dm-spl;
  89 +};
  90 +
  91 +&pd_lsio {
  92 + u-boot,dm-spl;
  93 +};
  94 +
  95 +&pd_lsio_gpio0 {
  96 + u-boot,dm-spl;
  97 +};
  98 +
  99 +&pd_lsio_gpio1 {
  100 + u-boot,dm-spl;
  101 +};
  102 +
  103 +&pd_lsio_gpio2 {
  104 + u-boot,dm-spl;
  105 +};
  106 +
  107 +&pd_lsio_gpio3 {
  108 + u-boot,dm-spl;
  109 +};
  110 +
  111 +&pd_lsio_gpio4 {
  112 + u-boot,dm-spl;
  113 +};
  114 +
  115 +&pd_lsio_gpio5 {
  116 + u-boot,dm-spl;
  117 +};
  118 +
  119 +&pd_lsio_gpio6 {
  120 + u-boot,dm-spl;
  121 +};
  122 +
  123 +&pd_lsio_gpio7 {
  124 + u-boot,dm-spl;
  125 +};
  126 +
  127 +&pd_lsio_flexspi0 {
  128 + u-boot,dm-spl;
  129 +};
  130 +
  131 +&pd_conn {
  132 + u-boot,dm-spl;
  133 +};
  134 +
  135 +&pd_conn_sdch0 {
  136 + u-boot,dm-spl;
  137 +};
  138 +
  139 +&pd_conn_sdch1 {
  140 + u-boot,dm-spl;
  141 +};
  142 +
  143 +&pd_conn_sdch2 {
  144 + u-boot,dm-spl;
  145 +};
  146 +
  147 +&pd_dma {
  148 + u-boot,dm-spl;
  149 +};
  150 +
  151 +&pd_dma_lpuart0 {
  152 + u-boot,dm-spl;
  153 +};
  154 +
  155 +&pd_dma_lpuart1 {
  156 + u-boot,dm-spl;
  157 +};
  158 +
  159 +&pd_dma_lpuart3 {
  160 + u-boot,dm-spl;
  161 +};
  162 +
  163 +&pd_dma_lpuart4 {
  164 + u-boot,dm-spl;
  165 +};
  166 +
  167 +&pd_conn_usbotg0 {
  168 + u-boot,dm-spl;
  169 +};
  170 +
  171 +&pd_conn_usbotg0_phy {
  172 + u-boot,dm-spl;
  173 +};
  174 +
  175 +&pd_conn_usb2 {
  176 + u-boot,dm-spl;
  177 +};
  178 +
  179 +&pd_conn_usb2_phy {
  180 + u-boot,dm-spl;
  181 +};
  182 +
  183 +&gpio0 {
  184 + u-boot,dm-spl;
  185 +};
  186 +
  187 +&gpio1 {
  188 + u-boot,dm-spl;
  189 +};
  190 +
  191 +&gpio2 {
  192 + u-boot,dm-spl;
  193 +};
  194 +
  195 +&gpio3 {
  196 + u-boot,dm-spl;
  197 +};
  198 +
  199 +&gpio4 {
  200 + u-boot,dm-spl;
  201 +};
  202 +
  203 +&gpio5 {
  204 + u-boot,dm-spl;
  205 +};
  206 +
  207 +&gpio6 {
  208 + u-boot,dm-spl;
  209 +};
  210 +
  211 +&gpio7 {
  212 + u-boot,dm-spl;
  213 +};
  214 +
  215 +&lpuart0 {
  216 + u-boot,dm-spl;
  217 +};
  218 +
  219 +&lpuart1 {
  220 + u-boot,dm-spl;
  221 +};
  222 +
  223 +&lpuart3 {
  224 + u-boot,dm-spl;
  225 +};
  226 +
  227 +&lpuart4 {
  228 + u-boot,dm-spl;
  229 +};
  230 +
  231 +&usbmisc1 {
  232 + u-boot,dm-spl;
  233 +};
  234 +
  235 +&usbphy1 {
  236 + u-boot,dm-spl;
  237 +};
  238 +
  239 +&usbotg1 {
  240 + u-boot,dm-spl;
  241 +};
  242 +
  243 +&usbotg3 {
  244 + phys = <&usbphynop1>;
  245 + u-boot,dm-spl;
  246 +};
  247 +
  248 +&usbphynop1 {
  249 + compatible = "cdns,usb3-phy";
  250 + reg = <0x0 0x5B160000 0x0 0x40000>;
  251 + #phy-cells = <0>;
  252 + u-boot,dm-spl;
  253 +};
  254 +
  255 +&usdhc1 {
  256 + u-boot,dm-spl;
  257 + mmc-hs400-1_8v;
  258 +};
  259 +
  260 +&usdhc2 {
  261 + u-boot,dm-spl;
  262 + sd-uhs-sdr104;
  263 + sd-uhs-ddr50;
  264 +};
  265 +
  266 +&flexspi0 {
  267 + u-boot,dm-spl;
  268 +};
  269 +
  270 +&wu {
  271 + u-boot,dm-spl;
  272 +};
arch/arm/dts/fsl-smarcimx8qm.dts
  1 +// SPDX-License-Identifier: GPL-2.0+
  2 +/*
  3 + * Copyright 2021 Embedian, Inc.
  4 + */
  5 +
  6 +/dts-v1/;
  7 +
  8 +#include "fsl-imx8qm.dtsi"
  9 +
  10 +/ {
  11 + model = "Embedian SMARC-iMX8QM CPU Module";
  12 + compatible = "embedian,smarc-imx8qm", "fsl,imx8qm";
  13 +
  14 + /* SER0 */
  15 + /*chosen {
  16 + stdout-path = &lpuart0;
  17 + };*/
  18 + /* SER1 */
  19 + /*chosen {
  20 + stdout-path = &lpuart3;
  21 + };*/
  22 + /* SER2 */
  23 + /*chosen {
  24 + stdout-path = &lpuart1;
  25 + };*/
  26 + /* SER3 */
  27 + chosen {
  28 + stdout-path = &lpuart4;
  29 + };
  30 +
  31 + aliases {
  32 + ethernet1 = &fec2; /* Let eth1addr mac address pass from U-Boot EEPROM */
  33 + };
  34 +
  35 + regulators {
  36 + compatible = "simple-bus";
  37 + #address-cells = <1>;
  38 + #size-cells = <0>;
  39 +
  40 + reg_usb_otg1_vbus: regulator@0 {
  41 + compatible = "regulator-fixed";
  42 + reg = <0>;
  43 + regulator-name = "usb_otg1_vbus";
  44 + regulator-min-microvolt = <5000000>;
  45 + regulator-max-microvolt = <5000000>;
  46 + gpio = <&gpio4 3 GPIO_ACTIVE_HIGH>;
  47 + enable-active-high;
  48 + };
  49 +
  50 + reg_usdhc2_vmmc: usdhc2_vmmc {
  51 + compatible = "regulator-fixed";
  52 + regulator-name = "sw-3p3-sd1";
  53 + regulator-min-microvolt = <3300000>;
  54 + regulator-max-microvolt = <3300000>;
  55 + gpio = <&gpio4 7 GPIO_ACTIVE_HIGH>;
  56 + off-on-delay-us = <4800>;
  57 + enable-active-high;
  58 + };
  59 + };
  60 +};
  61 +
  62 +&iomuxc {
  63 + pinctrl-names = "default";
  64 + pinctrl-0 = <&pinctrl_pcieb>, <&pinctrl_hdmisel>, <&pinctrl_lvds0_gpio>, <&pinctrl_lvds1_gpio>, <&pinctrl_edp0_gpio>, <&pinctrl_edp1_gpio>, <&pinctrl_hog>;
  65 +
  66 + smarcimx8qm {
  67 + pinctrl_hog: hoggrp {
  68 + fsl,pins = <
  69 + SC_P_MIPI_CSI0_GPIO0_01_LSIO_GPIO1_IO28 0x06000040 /* GPIO0 */
  70 + SC_P_MIPI_CSI1_GPIO0_01_LSIO_GPIO1_IO31 0x06000040 /* GPIO1 */
  71 + SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27 0x06000040 /* GPIO2 */
  72 + SC_P_MIPI_CSI1_GPIO0_00_LSIO_GPIO1_IO30 0x06000040 /* GPIO3 */
  73 + SC_P_GPT0_CLK_LSIO_GPIO0_IO14 0x06000040 /* GPIO4 */
  74 + SC_P_GPT0_COMPARE_LSIO_GPIO0_IO16 0x06000040 /* GPIO5 */
  75 + SC_P_GPT0_CAPTURE_LSIO_GPIO0_IO15 0x06000040 /* GPIO6 */
  76 + SC_P_GPT1_COMPARE_LSIO_GPIO0_IO19 0x06000040 /* GPIO7 */
  77 + SC_P_GPT1_CAPTURE_LSIO_GPIO0_IO18 0x06000040 /* GPIO8 */
  78 + SC_P_GPT1_CLK_LSIO_GPIO0_IO17 0x06000040 /* GPIO9 */
  79 + SC_P_FLEXCAN2_TX_LSIO_GPIO4_IO02 0x06000040 /* GPIO10 */
  80 + SC_P_FLEXCAN2_RX_LSIO_GPIO4_IO01 0x06000040 /* GPIO11 */
  81 + SC_P_SCU_GPIO0_03_LSIO_GPIO0_IO31 0x06000020 /* LID# */
  82 + SC_P_SCU_GPIO0_04_LSIO_GPIO1_IO00 0x06000020 /* SLEEP */
  83 + SC_P_SCU_GPIO0_05_LSIO_GPIO1_IO01 0x06000020 /* CHARGING */
  84 + SC_P_SCU_GPIO0_06_LSIO_GPIO1_IO02 0x06000020 /* CHARGER_PRSNT# */
  85 + SC_P_SCU_GPIO0_07_LSIO_GPIO1_IO03 0x06000020 /* BATLOW# */
  86 + SC_P_SCU_GPIO0_02_LSIO_GPIO0_IO30 0x06000020 /* CARRIER_STBY# */
  87 + SC_P_SPDIF0_TX_LSIO_GPIO2_IO15 0x06000020 /* WDT_TIME_OUT# */
  88 + >;
  89 + };
  90 +
  91 + pinctrl_hdmisel: hdmiselgrp {
  92 + fsl,pins = <
  93 + SC_P_SIM0_GPIO0_00_LSIO_GPIO0_IO05 0x06000020
  94 + >;
  95 + };
  96 +
  97 + pinctrl_lvds0_gpio: lvds0gpiogrp {
  98 + fsl,pins = <
  99 + SC_P_LVDS0_GPIO01_LSIO_GPIO1_IO05 0x06000020 /* LCD0_VDD_EN */
  100 + >;
  101 + };
  102 +
  103 + pinctrl_lvds1_gpio: lvds1gpiogrp {
  104 + fsl,pins = <
  105 + SC_P_LVDS1_GPIO01_LSIO_GPIO1_IO11 0x06000020 /* LCD1_VDD_EN */
  106 + >;
  107 + };
  108 +
  109 + pinctrl_backlight: backlightgrp {
  110 + fsl,pins = <
  111 + SC_P_LVDS0_I2C0_SCL_LSIO_GPIO1_IO06 0x06000020 /* LCD0_BKLT_EN */
  112 + SC_P_LVDS0_I2C0_SDA_LSIO_GPIO1_IO07 0x06000020 /* LCD1_BKLT_EN */
  113 + >;
  114 + };
  115 +
  116 + pinctrl_pwm_lvds0: pwmlvds0grp {
  117 + fsl,pins = <
  118 + SC_P_LVDS0_GPIO00_LVDS0_PWM0_OUT 0x00000020
  119 + >;
  120 + };
  121 +
  122 + pinctrl_edp0_gpio: edp0gpiogrp {
  123 + fsl,pins = <
  124 + SC_P_MIPI_DSI1_GPIO0_00_LSIO_GPIO1_IO22 0x06000020 /* eDP0_EN */
  125 + SC_P_MIPI_DSI1_GPIO0_01_LSIO_GPIO1_IO23 0x06000040 /* eDP0_IRQ */
  126 + >;
  127 + };
  128 +
  129 + pinctrl_edp1_gpio: edp1gpiogrp {
  130 + fsl,pins = <
  131 + SC_P_MIPI_DSI0_GPIO0_00_LSIO_GPIO1_IO18 0x06000020 /* eDP1_EN */
  132 + SC_P_MIPI_DSI0_GPIO0_01_LSIO_GPIO1_IO19 0x06000040 /* eDP1_IRQ */
  133 + >;
  134 + };
  135 +
  136 + pinctrl_fec1: fec1grp {
  137 + fsl,pins = <
  138 + SC_P_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB_PAD 0x000014a0
  139 + SC_P_ENET0_MDC_CONN_ENET0_MDC 0x06000020
  140 + SC_P_ENET0_MDIO_CONN_ENET0_MDIO 0x06000020
  141 + SC_P_ENET0_RGMII_TX_CTL_CONN_ENET0_RGMII_TX_CTL 0x00000061
  142 + SC_P_ENET0_RGMII_TXC_CONN_ENET0_RGMII_TXC 0x00000061
  143 + SC_P_ENET0_RGMII_TXD0_CONN_ENET0_RGMII_TXD0 0x00000061
  144 + SC_P_ENET0_RGMII_TXD1_CONN_ENET0_RGMII_TXD1 0x00000061
  145 + SC_P_ENET0_RGMII_TXD2_CONN_ENET0_RGMII_TXD2 0x00000061
  146 + SC_P_ENET0_RGMII_TXD3_CONN_ENET0_RGMII_TXD3 0x00000061
  147 + SC_P_ENET0_RGMII_RXC_CONN_ENET0_RGMII_RXC 0x00000061
  148 + SC_P_ENET0_RGMII_RX_CTL_CONN_ENET0_RGMII_RX_CTL 0x00000061
  149 + SC_P_ENET0_RGMII_RXD0_CONN_ENET0_RGMII_RXD0 0x00000061
  150 + SC_P_ENET0_RGMII_RXD1_CONN_ENET0_RGMII_RXD1 0x00000061
  151 + SC_P_ENET0_RGMII_RXD2_CONN_ENET0_RGMII_RXD2 0x00000061
  152 + SC_P_ENET0_RGMII_RXD3_CONN_ENET0_RGMII_RXD3 0x00000061
  153 + /* ETH IRQ */
  154 + SC_P_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x06000021
  155 + >;
  156 + };
  157 +
  158 + pinctrl_fec2: fec2grp {
  159 + fsl,pins = <
  160 + SC_P_COMP_CTL_GPIO_1V8_3V3_ENET_ENETA_PAD 0x000014a0
  161 + SC_P_ENET1_RGMII_TX_CTL_CONN_ENET1_RGMII_TX_CTL 0x00000060
  162 + SC_P_ENET1_RGMII_TXC_CONN_ENET1_RGMII_TXC 0x00000060
  163 + SC_P_ENET1_RGMII_TXD0_CONN_ENET1_RGMII_TXD0 0x00000060
  164 + SC_P_ENET1_RGMII_TXD1_CONN_ENET1_RGMII_TXD1 0x00000060
  165 + SC_P_ENET1_RGMII_TXD2_CONN_ENET1_RGMII_TXD2 0x00000060
  166 + SC_P_ENET1_RGMII_TXD3_CONN_ENET1_RGMII_TXD3 0x00000060
  167 + SC_P_ENET1_RGMII_RXC_CONN_ENET1_RGMII_RXC 0x00000060
  168 + SC_P_ENET1_RGMII_RX_CTL_CONN_ENET1_RGMII_RX_CTL 0x00000060
  169 + SC_P_ENET1_RGMII_RXD0_CONN_ENET1_RGMII_RXD0 0x00000060
  170 + SC_P_ENET1_RGMII_RXD1_CONN_ENET1_RGMII_RXD1 0x00000060
  171 + SC_P_ENET1_RGMII_RXD2_CONN_ENET1_RGMII_RXD2 0x00000060
  172 + SC_P_ENET1_RGMII_RXD3_CONN_ENET1_RGMII_RXD3 0x00000060
  173 + /* ETH IRQ */
  174 + SC_P_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x06000021
  175 + >;
  176 + };
  177 +
  178 + pinctrl_flexspi0: flexspi0grp {
  179 + fsl,pins = <
  180 + SC_P_QSPI0A_DATA0_LSIO_QSPI0A_DATA0 0x06000021
  181 + SC_P_QSPI0A_DATA1_LSIO_QSPI0A_DATA1 0x06000021
  182 + SC_P_QSPI0A_DATA2_LSIO_QSPI0A_DATA2 0x06000021
  183 + SC_P_QSPI0A_DATA3_LSIO_QSPI0A_DATA3 0x06000021
  184 + SC_P_QSPI0A_DQS_LSIO_QSPI0A_DQS 0x06000021
  185 + SC_P_QSPI0A_SS0_B_LSIO_QSPI0A_SS0_B 0x06000021
  186 + SC_P_QSPI0A_SCLK_LSIO_QSPI0A_SCLK 0x06000021
  187 + >;
  188 + };
  189 +
  190 + /* SER0 */
  191 + pinctrl_lpuart0: lpuart0grp {
  192 + fsl,pins = <
  193 + SC_P_UART0_RX_DMA_UART0_RX 0x06000020
  194 + SC_P_UART0_TX_DMA_UART0_TX 0x06000020
  195 + >;
  196 + };
  197 +
  198 + /* SER1 */
  199 + pinctrl_lpuart3: lpuart3grp {
  200 + fsl,pins = <
  201 + SC_P_M41_GPIO0_00_DMA_UART3_RX 0x06000020
  202 + SC_P_M41_GPIO0_01_DMA_UART3_TX 0x06000020
  203 + >;
  204 + };
  205 +
  206 + /* SER2 */
  207 + pinctrl_lpuart1: lpuart1grp {
  208 + fsl,pins = <
  209 + SC_P_UART1_RX_DMA_UART1_RX 0x06000020
  210 + SC_P_UART1_TX_DMA_UART1_TX 0x06000020
  211 + >;
  212 + };
  213 +
  214 + /* SER3 */
  215 + pinctrl_lpuart4: lpuart4grp {
  216 + fsl,pins = <
  217 + SC_P_M40_GPIO0_00_DMA_UART4_RX 0x06000020
  218 + SC_P_M40_GPIO0_01_DMA_UART4_TX 0x06000020
  219 + >;
  220 + };
  221 +
  222 + /* SPI1 */
  223 + pinctrl_lpspi1: lpspi1grp {
  224 + fsl,pins = <
  225 + SC_P_ADC_IN3_DMA_SPI1_SCK 0x0600004c
  226 + SC_P_ADC_IN4_DMA_SPI1_SDO 0x0600004c
  227 + SC_P_ADC_IN5_DMA_SPI1_SDI 0x0600004c
  228 + >;
  229 + };
  230 +
  231 + pinctrl_lpspi1_cs: lpspi1csgrp {
  232 + fsl,pins = <
  233 + SC_P_ADC_IN6_LSIO_GPIO3_IO24 0x00000021
  234 + SC_P_ADC_IN7_LSIO_GPIO3_IO25 0x00000021
  235 + >;
  236 + };
  237 +
  238 + /* SPI3 */
  239 + pinctrl_lpspi3: lpspi3grp {
  240 + fsl,pins = <
  241 + SC_P_SPI3_SCK_DMA_SPI3_SCK 0x0600004c
  242 + SC_P_SPI3_SDO_DMA_SPI3_SDO 0x0600004c
  243 + SC_P_SPI3_SDI_DMA_SPI3_SDI 0x0600004c
  244 + >;
  245 + };
  246 +
  247 + pinctrl_lpspi3_cs: lpspi3csgrp {
  248 + fsl,pins = <
  249 + SC_P_SPI3_CS0_LSIO_GPIO2_IO20 0x00000021
  250 + SC_P_SPI3_CS1_LSIO_GPIO2_IO21 0x00000021
  251 + >;
  252 + };
  253 +
  254 + pinctrl_i2c0: lpi2c0grp {
  255 + fsl,pins = <
  256 + SC_P_HDMI_TX0_TS_SCL_DMA_I2C0_SCL 0xc600004c
  257 + SC_P_HDMI_TX0_TS_SDA_DMA_I2C0_SDA 0xc600004c
  258 + >;
  259 + };
  260 +
  261 + pinctrl_mipi0_lpi2c0: mipi0_lpi2c0grp {
  262 + fsl,pins = <
  263 + SC_P_MIPI_DSI0_I2C0_SCL_MIPI_DSI0_I2C0_SCL 0xc6000020
  264 + SC_P_MIPI_DSI0_I2C0_SDA_MIPI_DSI0_I2C0_SDA 0xc6000020
  265 + >;
  266 + };
  267 +
  268 + /* I2C_PM */
  269 + pinctrl_i2c1: lpi2c1grp {
  270 + fsl,pins = <
  271 + SC_P_USB_HSIC0_STROBE_DMA_I2C1_SCL 0xc600004c
  272 + SC_P_USB_HSIC0_DATA_DMA_I2C1_SDA 0xc600004c
  273 + >;
  274 + };
  275 +
  276 + /* I2C_CAM0 */
  277 + pinctrl_i2c_mipi_csi0: i2c_mipi_csi0 {
  278 + fsl,pins = <
  279 + SC_P_MIPI_CSI0_I2C0_SCL_MIPI_CSI0_I2C0_SCL 0xc600004c
  280 + SC_P_MIPI_CSI0_I2C0_SDA_MIPI_CSI0_I2C0_SDA 0xc600004c
  281 + >;
  282 + };
  283 +
  284 + /* I2C_CAM1 */
  285 + pinctrl_i2c_mipi_csi1: i2c_mipi_csi1 {
  286 + fsl,pins = <
  287 + SC_P_MIPI_CSI1_I2C0_SCL_MIPI_CSI1_I2C0_SCL 0xc600004c
  288 + SC_P_MIPI_CSI1_I2C0_SDA_MIPI_CSI1_I2C0_SDA 0xc600004c
  289 + >;
  290 + };
  291 +
  292 + /* I2C_GP */
  293 + pinctrl_i2c3: lpi2c3grp {
  294 + fsl,pins = <
  295 + SC_P_SIM0_PD_DMA_I2C3_SCL 0xc600004c
  296 + SC_P_SIM0_POWER_EN_DMA_I2C3_SDA 0xc600004c
  297 + >;
  298 + };
  299 +
  300 + pinctrl_pciea: pcieagrp{
  301 + fsl,pins = <
  302 + SC_P_QSPI1A_SS0_B_LSIO_GPIO4_IO19 0x06000020
  303 + SC_P_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO28 0x04000021
  304 + SC_P_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO29 0x06000020
  305 + >;
  306 + };
  307 +
  308 + pinctrl_pcieb: pciebgrp{
  309 + fsl,pins = <
  310 + SC_P_QSPI1A_SS1_B_LSIO_GPIO4_IO20 0x06000020
  311 + SC_P_PCIE_CTRL1_WAKE_B_LSIO_GPIO4_IO31 0x04000021
  312 + SC_P_PCIE_CTRL1_PERST_B_LSIO_GPIO5_IO00 0x06000020
  313 + >;
  314 + };
  315 +
  316 + pinctrl_typec: typecgrp {
  317 + fsl,pins = <
  318 + SC_P_QSPI1A_SS0_B_LSIO_GPIO4_IO19 0x60
  319 + SC_P_USB_SS3_TC3_LSIO_GPIO4_IO06 0x60
  320 + SC_P_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x00000021
  321 + >;
  322 + };
  323 +
  324 + pinctrl_usbotg1: usbotg1 {
  325 + fsl,pins = <
  326 + SC_P_USB_SS3_TC0_LSIO_GPIO4_IO03 0x06000020
  327 + SC_P_USB_SS3_TC2_LSIO_GPIO4_IO05 0x06000020
  328 + >;
  329 + };
  330 +
  331 + pinctrl_usbotg3: usbotg3 {
  332 + fsl,pins = <
  333 + SC_P_USB_SS3_TC1_LSIO_GPIO4_IO04 0x06000020
  334 + SC_P_USB_SS3_TC3_LSIO_GPIO4_IO06 0x06000020
  335 + >;
  336 + };
  337 +
  338 + pinctrl_usdhc1: usdhc1grp {
  339 + fsl,pins = <
  340 + SC_P_EMMC0_CLK_CONN_EMMC0_CLK 0x06000041
  341 + SC_P_EMMC0_CMD_CONN_EMMC0_CMD 0x00000021
  342 + SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000021
  343 + SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000021
  344 + SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000021
  345 + SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000021
  346 + SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000021
  347 + SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000021
  348 + SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000021
  349 + SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000021
  350 + SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE 0x00000041
  351 + SC_P_EMMC0_RESET_B_CONN_EMMC0_RESET_B 0x00000021
  352 + >;
  353 + };
  354 +
  355 + pinctrl_usdhc2_gpio: usdhc2grpgpio {
  356 + fsl,pins = <
  357 + SC_P_USDHC1_DATA6_LSIO_GPIO5_IO21 0x00000021
  358 + SC_P_USDHC1_DATA7_LSIO_GPIO5_IO22 0x00000021
  359 + SC_P_USDHC1_RESET_B_LSIO_GPIO4_IO07 0x00000021
  360 + >;
  361 + };
  362 +
  363 + pinctrl_usdhc2: usdhc2grp {
  364 + fsl,pins = <
  365 + SC_P_USDHC1_CLK_CONN_USDHC1_CLK 0x06000041
  366 + SC_P_USDHC1_CMD_CONN_USDHC1_CMD 0x00000021
  367 + SC_P_USDHC1_DATA0_CONN_USDHC1_DATA0 0x00000021
  368 + SC_P_USDHC1_DATA1_CONN_USDHC1_DATA1 0x00000021
  369 + SC_P_USDHC1_DATA2_CONN_USDHC1_DATA2 0x00000021
  370 + SC_P_USDHC1_DATA3_CONN_USDHC1_DATA3 0x00000021
  371 + SC_P_USDHC1_VSELECT_CONN_USDHC1_VSELECT 0x00000021
  372 + >;
  373 + };
  374 +
  375 + pinctrl_lvds0_lpi2c1: lvds0lpi2c1grp {
  376 + fsl,pins = <
  377 + SC_P_LVDS0_I2C1_SCL_LVDS0_I2C1_SCL 0xc600004c
  378 + SC_P_LVDS0_I2C1_SDA_LVDS0_I2C1_SDA 0xc600004c
  379 + >;
  380 + };
  381 +
  382 + /* I2C_LCD */
  383 + pinctrl_lvds1_lpi2c0: lvds1lpi2c0grp {
  384 + fsl,pins = <
  385 + SC_P_LVDS1_I2C0_SCL_LVDS1_I2C0_SCL 0xc600004c
  386 + SC_P_LVDS1_I2C0_SDA_LVDS1_I2C0_SDA 0xc600004c
  387 + >;
  388 + };
  389 +
  390 + pinctrl_wlreg_on: wlregongrp{
  391 + fsl,pins = <
  392 + SC_P_LVDS1_I2C0_SDA_LSIO_GPIO1_IO13 0x06000000
  393 + >;
  394 + };
  395 +
  396 + pinctrl_wlreg_on_sleep: wlregon_sleepgrp{
  397 + fsl,pins = <
  398 + SC_P_LVDS1_I2C0_SDA_LSIO_GPIO1_IO13 0x07800000
  399 + >;
  400 + };
  401 + };
  402 +};
  403 +
  404 +&gpio1 {
  405 + status = "okay";
  406 +};
  407 +
  408 +&gpio2 {
  409 + status = "okay";
  410 +};
  411 +
  412 +&gpio4 {
  413 + status = "okay";
  414 +};
  415 +
  416 +&gpio5 {
  417 + status = "okay";
  418 +};
  419 +
  420 +&usbotg1 {
  421 + pinctrl-0 = <&pinctrl_usbotg1>;
  422 + vbus-supply = <&reg_usb_otg1_vbus>;
  423 + srp-disable;
  424 + hnp-disable;
  425 + adp-disable;
  426 + disable-over-current;
  427 + status = "okay";
  428 +};
  429 +
  430 +&usbotg3 {
  431 + pinctrl-0 = <&pinctrl_usbotg3>;
  432 + gpio = <&gpio4 4 GPIO_ACTIVE_HIGH>;
  433 + status = "okay";
  434 +};
  435 +
  436 +&usdhc1 {
  437 + pinctrl-names = "default", "state_100mhz", "state_200mhz";
  438 + pinctrl-0 = <&pinctrl_usdhc1>;
  439 + pinctrl-1 = <&pinctrl_usdhc1>;
  440 + pinctrl-2 = <&pinctrl_usdhc1>;
  441 + bus-width = <8>;
  442 + non-removable;
  443 + status = "okay";
  444 +};
  445 +
  446 +&usdhc2 {
  447 + pinctrl-names = "default", "state_100mhz", "state_200mhz";
  448 + pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
  449 + pinctrl-1 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
  450 + pinctrl-2 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
  451 + bus-width = <4>;
  452 + cd-gpios = <&gpio5 22 GPIO_ACTIVE_LOW>;
  453 + wp-gpios = <&gpio5 21 GPIO_ACTIVE_HIGH>;
  454 + vmmc-supply = <&reg_usdhc2_vmmc>;
  455 + status = "okay";
  456 +};
  457 +
  458 +&fec1 {
  459 + pinctrl-names = "default";
  460 + pinctrl-0 = <&pinctrl_fec1>;
  461 + phy-mode = "rgmii-txid";
  462 + phy-handle = <&ethphy0>;
  463 + fsl,magic-packet;
  464 + fsl,rgmii_rxc_dly;
  465 + status = "okay";
  466 +
  467 + mdio {
  468 + #address-cells = <1>;
  469 + #size-cells = <0>;
  470 +
  471 + ethphy0: ethernet-phy@6 {
  472 + compatible = "ethernet-phy-ieee802.3-c22";
  473 + reg = <0x6>;
  474 + at803x,eee-disabled;
  475 + at803x,vddio-1p8v;
  476 + };
  477 +
  478 + ethphy1: ethernet-phy@7 {
  479 + compatible = "ethernet-phy-ieee802.3-c22";
  480 + reg = <0x7>;
  481 + at803x,eee-disabled;
  482 + at803x,vddio-1p8v;
  483 + };
  484 + };
  485 +};
  486 +
  487 +&fec2 {
  488 + pinctrl-names = "default";
  489 + pinctrl-0 = <&pinctrl_fec2>;
  490 + phy-mode = "rgmii";
  491 + phy-handle = <&ethphy1>;
  492 + fsl,ar8031-phy-fixup;
  493 + fsl,magic-packet;
  494 + status = "okay";
  495 +};
  496 +
  497 +&flexspi0 {
  498 + pinctrl-names = "default";
  499 + pinctrl-0 = <&pinctrl_flexspi0>;
  500 + status = "okay";
  501 +
  502 + flash0: mx25u3235f@0 {
  503 + reg = <0>;
  504 + #address-cells = <1>;
  505 + #size-cells = <1>;
  506 + compatible = "spi-flash";
  507 + spi-max-frequency = <29000000>;
  508 + spi-nor,ddr-quad-read-dummy = <8>;
  509 + };
  510 +};
  511 +
  512 +&i2c0 {
  513 + #address-cells = <1>;
  514 + #size-cells = <0>;
  515 + clock-frequency = <100000>;
  516 + pinctrl-names = "default";
  517 + pinctrl-0 = <&pinctrl_i2c0>;
  518 + status = "okay";
  519 +
  520 + s35390a: s35390a@30 {
  521 + compatible = "sii,s35390a";
  522 + reg = <0x30>;
  523 + };
  524 +};
  525 +
  526 +&i2c0_mipi_dsi0 {
  527 + #address-cells = <1>;
  528 + #size-cells = <0>;
  529 + pinctrl-names = "default";
  530 + pinctrl-0 = <&pinctrl_mipi0_lpi2c0>;
  531 + clock-frequency = <400000>;
  532 + status = "okay";
  533 +};
  534 +
  535 +/* I2C_PM */
  536 +&i2c1 {
  537 + #address-cells = <1>;
  538 + #size-cells = <0>;
  539 + clock-frequency = <100000>;
  540 + pinctrl-names = "default";
  541 + pinctrl-0 = <&pinctrl_i2c1>;
  542 + status = "okay";
  543 +
  544 + cape_eeprom0: cape_eeprom@57 {
  545 + compatible = "at,24c256";
  546 + reg = <0x57>;
  547 + };
  548 +};
  549 +
  550 +/* I2C_GP */
  551 +&i2c3 {
  552 + #address-cells = <1>;
  553 + #size-cells = <0>;
  554 + clock-frequency = <100000>;
  555 + pinctrl-names = "default";
  556 + pinctrl-0 = <&pinctrl_i2c3>;
  557 + status = "okay";
  558 +
  559 + baseboard_eeprom: baseboard_eeprom@50 {
  560 + compatible = "at,24c256";
  561 + reg = <0x50>;
  562 + };
  563 +};
  564 +
  565 +&lpuart0 { /* console */
  566 + pinctrl-names = "default";
  567 + pinctrl-0 = <&pinctrl_lpuart0>;
  568 + status = "okay";
  569 +};
  570 +
  571 +&lpuart1 {
  572 + pinctrl-names = "default";
  573 + pinctrl-0 = <&pinctrl_lpuart1>;
  574 + status = "okay";
  575 +};
  576 +
  577 +&lpuart3 {
  578 + pinctrl-names = "default";
  579 + pinctrl-0 = <&pinctrl_lpuart3>;
  580 + status = "okay";
  581 +};
  582 +
  583 +&lpuart4 {
  584 + pinctrl-names = "default";
  585 + pinctrl-0 = <&pinctrl_lpuart4>;
  586 + status = "okay";
  587 +};
  588 +
  589 +/* SPI0 */
  590 +&lpspi1 {
  591 + #address-cells = <1>;
  592 + #size-cells = <0>;
  593 + fsl,spi-num-chipselects = <2>;
  594 + pinctrl-names = "default";
  595 + pinctrl-0 = <&pinctrl_lpspi1 &pinctrl_lpspi1_cs>;
  596 + cs-gpios = <&gpio3 24 0>, <&gpio3 25 0>;
  597 + status = "okay";
  598 +
  599 + spidev@0 {
  600 + compatible = "spidev";
  601 + spi-max-frequency = <12000000>;
  602 + reg = <0>;
  603 + status = "okay";
  604 + };
  605 +
  606 + spidev@1 {
  607 + compatible = "spidev";
  608 + spi-max-frequency = <12000000>;
  609 + reg = <1>;
  610 + status = "okay";
  611 + };
  612 +};
  613 +
  614 +/* eSPI */
  615 +&lpspi3 {
  616 + #address-cells = <1>;
  617 + #size-cells = <0>;
  618 + fsl,spi-num-chipselects = <2>;
  619 + pinctrl-names = "default";
  620 + pinctrl-0 = <&pinctrl_lpspi3 &pinctrl_lpspi3_cs>;
  621 + cs-gpios = <&gpio2 20 0>, <&gpio2 21 0>;
  622 + status = "okay";
  623 +
  624 + spidev@0 {
  625 + compatible = "spidev";
  626 + spi-max-frequency = <12000000>;
  627 + reg = <0>;
  628 + status = "okay";
  629 + };
  630 +
  631 + spidev@1 {
  632 + compatible = "spidev";
  633 + spi-max-frequency = <12000000>;
  634 + reg = <1>;
  635 + status = "okay";
  636 + };
  637 +};
  638 +
  639 +/* I2C_LCD */
  640 +&i2c1_lvds1 {
  641 + #address-cells = <1>;
  642 + #size-cells = <0>;
  643 + pinctrl-names = "default";
  644 + pinctrl-0 = <&pinctrl_lvds1_lpi2c0>;
  645 + clock-frequency = <100000>;
  646 + status = "okay";
  647 +};
  648 +
  649 +&pciea{
  650 + ext_osc = <1>;
  651 + pinctrl-names = "default";
  652 + pinctrl-0 = <&pinctrl_pciea>;
  653 + reset-gpio = <&gpio4 29 GPIO_ACTIVE_LOW>;
  654 + clkreq-gpio = <&gpio4 19 GPIO_ACTIVE_LOW>;
  655 + status = "okay";
  656 +};
  657 +
  658 +&sata {
  659 + pinctrl-names = "default";
  660 + status = "okay";
  661 +};
  662 +
  663 +&tsens {
  664 + tsens-num = <6>;
  665 +};
  666 +
  667 +&thermal_zones {
  668 + pmic-thermal0 {
  669 + polling-delay-passive = <250>;
  670 + polling-delay = <2000>;
  671 + thermal-sensors = <&tsens 5>;
  672 + trips {
  673 + pmic_alert0: trip0 {
  674 + temperature = <110000>;
  675 + hysteresis = <2000>;
  676 + type = "passive";
  677 + };
  678 + pmic_crit0: trip1 {
  679 + temperature = <125000>;
  680 + hysteresis = <2000>;
  681 + type = "critical";
  682 + };
  683 + };
  684 + cooling-maps {
  685 + map0 {
  686 + trip = <&pmic_alert0>;
  687 + cooling-device =
  688 + <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  689 + };
  690 + map1 {
  691 + trip = <&pmic_alert0>;
  692 + cooling-device =
  693 + <&A72_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  694 + };
  695 + };
  696 + };
  697 +};
  698 +
  699 +&dpu1 {
  700 + status = "okay";
  701 +};
  702 +
  703 +&gpio1 {
  704 + pinctrl-names = "default";
  705 + pinctrl-0 = <&pinctrl_backlight>;
  706 +
  707 + lvds_backlight_hog {
  708 + gpio-hog;
  709 + gpios = <1 5>, <1 6>;
  710 + output-high;
  711 + line-name = "lvds_backlight";
  712 + };
  713 +};
  714 +
  715 +&ldb2_phy {
  716 + status = "okay";
  717 +};
  718 +
  719 +&ldb2 {
  720 + status = "okay";
  721 +
  722 + lvds-channel@0 {
  723 + fsl,data-mapping = "jeida";
  724 + fsl,data-width = <24>;
  725 + status = "okay";
  726 +
  727 + display-timings {
  728 + native-mode = <&timing0>;
  729 +
  730 + timing0: timing0 {
  731 + clock-frequency = <33300000>;
  732 + hactive = <800>;
  733 + vactive = <480>;
  734 + hback-porch = <64>;
  735 + hfront-porch = <64>;
  736 + vback-porch = <12>;
  737 + vfront-porch = <4>;
  738 + hsync-len = <128>;
  739 + vsync-len = <2>;
  740 + };
  741 + };
  742 + };
  743 +};
arch/arm/mach-imx/imx8/Kconfig
... ... @@ -117,6 +117,11 @@
117 117 select BOARD_LATE_INIT
118 118 select IMX8QM
119 119  
  120 +config TARGET_SMARCIMX8QM
  121 + bool "Support SMARC-iMX8QM CPU Module"
  122 + select BOARD_LATE_INIT
  123 + select IMX8QM
  124 +
120 125 config TARGET_IMX8QM_LPDDR4_VAL
121 126 bool "Support i.MX8QM lpddr4 validation board"
122 127 select BOARD_LATE_INIT
... ... @@ -176,6 +181,7 @@
176 181  
177 182 endchoice
178 183  
  184 +source "board/embedian/smarcimx8qm/Kconfig"
179 185 source "board/freescale/imx8qm_mek/Kconfig"
180 186 source "board/freescale/imx8qxp_mek/Kconfig"
181 187 source "board/freescale/imx8qm_val/Kconfig"
arch/arm/mach-imx/imx8/clock.c
... ... @@ -25,8 +25,22 @@
25 25  
26 26 switch (clk) {
27 27 case MXC_UART_CLK:
  28 +#ifdef CONFIG_CONSOLE_SER0
28 29 err = sc_pm_get_clock_rate(-1,
29 30 SC_R_UART_0, 2, &clkrate);
  31 +#elif CONFIG_CONSOLE_SER1
  32 + err = sc_pm_get_clock_rate(-1,
  33 + SC_R_UART_3, 2, &clkrate);
  34 +#elif CONFIG_CONSOLE_SER2
  35 + err = sc_pm_get_clock_rate(-1,
  36 + SC_R_UART_1, 2, &clkrate);
  37 +#elif CONFIG_CONSOLE_SER3
  38 + err = sc_pm_get_clock_rate(-1,
  39 + SC_R_UART_4, 2, &clkrate);
  40 +#else
  41 + err = sc_pm_get_clock_rate(-1,
  42 + SC_R_UART_0, 2, &clkrate);
  43 +#endif
30 44 if (err != SC_ERR_NONE) {
31 45 printf("sc get UART clk failed! err=%d\n", err);
32 46 return 0;
arch/arm/mach-imx/imx8/snvs_security_sc_conf_8qm_smarc.h
  1 +/* SPDX-License-Identifier: GPL-2.0+ */
  2 +/*
  3 + * Copyright 2020 NXP.
  4 + */
  5 +
  6 +#ifndef SNVS_SECURITY_SC_CONF_8QM_SMARC_H_
  7 +#define SNVS_SECURITY_SC_CONF_8QM_SMARC_H_
  8 +
  9 +#include "snvs_security_sc_conf.h"
  10 +
  11 +/* Configuration */
  12 +
  13 +static __maybe_unused struct snvs_security_sc_conf snvs_default_config = {
  14 + .hp = {
  15 + .lock = 0x1f0703ff,
  16 + .secvio_intcfg = 0x8000002f,
  17 + .secvio_ctl = 0xC000007f,
  18 + },
  19 + .lp = {
  20 + .lock = 0x1f0003ff,
  21 + .secvio_ctl = 0x36,
  22 + .tamper_filt_cfg = 0,
  23 + .tamper_det_cfg = 0x76, /* analogic tampers
  24 + * + rollover tampers
  25 + */
  26 + .tamper_det_cfg2 = 0,
  27 + .tamper_filt1_cfg = 0,
  28 + .tamper_filt2_cfg = 0,
  29 + .act_tamper1_cfg = 0,
  30 + .act_tamper2_cfg = 0,
  31 + .act_tamper3_cfg = 0,
  32 + .act_tamper4_cfg = 0,
  33 + .act_tamper5_cfg = 0,
  34 + .act_tamper_ctl = 0,
  35 + .act_tamper_clk_ctl = 0,
  36 + .act_tamper_routing_ctl1 = 0,
  37 + .act_tamper_routing_ctl2 = 0,
  38 + }
  39 +};
  40 +
  41 +static __maybe_unused struct snvs_dgo_conf snvs_dgo_default_config = {
  42 + .tamper_misc_ctl = 0x80000000, /* Lock the DGO */
  43 +};
  44 +
  45 +static __maybe_unused struct snvs_security_sc_conf snvs_passive_vcc_config = {
  46 + .hp = {
  47 + .lock = 0x1f0703ff,
  48 + .secvio_intcfg = 0x8000002f,
  49 + .secvio_ctl = 0xC000007f,
  50 + },
  51 + .lp = {
  52 + .lock = 0x1f0003ff,
  53 + .secvio_ctl = 0x36,
  54 + .tamper_filt_cfg = 0,
  55 + .tamper_det_cfg = 0x276, /* ET1 will trig on line at GND
  56 + * + analogic tampers
  57 + * + rollover tampers
  58 + */
  59 + .tamper_det_cfg2 = 0,
  60 + .tamper_filt1_cfg = 0,
  61 + .tamper_filt2_cfg = 0,
  62 + .act_tamper1_cfg = 0,
  63 + .act_tamper2_cfg = 0,
  64 + .act_tamper3_cfg = 0,
  65 + .act_tamper4_cfg = 0,
  66 + .act_tamper5_cfg = 0,
  67 + .act_tamper_ctl = 0,
  68 + .act_tamper_clk_ctl = 0,
  69 + .act_tamper_routing_ctl1 = 0,
  70 + .act_tamper_routing_ctl2 = 0,
  71 + }
  72 +};
  73 +
  74 +static __maybe_unused struct snvs_security_sc_conf snvs_passive_gnd_config = {
  75 + .hp = {
  76 + .lock = 0x1f0703ff,
  77 + .secvio_intcfg = 0x8000002f,
  78 + .secvio_ctl = 0xC000007f,
  79 + },
  80 + .lp = {
  81 + .lock = 0x1f0003ff,
  82 + .secvio_ctl = 0x36,
  83 + .tamper_filt_cfg = 0,
  84 + .tamper_det_cfg = 0xa76, /* ET1 will trig on line at VCC
  85 + * + analogic tampers
  86 + * + rollover tampers
  87 + */
  88 + .tamper_det_cfg2 = 0,
  89 + .tamper_filt1_cfg = 0,
  90 + .tamper_filt2_cfg = 0,
  91 + .act_tamper1_cfg = 0,
  92 + .act_tamper2_cfg = 0,
  93 + .act_tamper3_cfg = 0,
  94 + .act_tamper4_cfg = 0,
  95 + .act_tamper5_cfg = 0,
  96 + .act_tamper_ctl = 0,
  97 + .act_tamper_clk_ctl = 0,
  98 + .act_tamper_routing_ctl1 = 0,
  99 + .act_tamper_routing_ctl2 = 0,
  100 + }
  101 +};
  102 +
  103 +static __maybe_unused struct snvs_security_sc_conf snvs_active_config = {
  104 + .hp = {
  105 + .lock = 0x1f0703ff,
  106 + .secvio_intcfg = 0x8000002f,
  107 + .secvio_ctl = 0xC000007f,
  108 + },
  109 + .lp = {
  110 + .lock = 0x1f0003ff,
  111 + .secvio_ctl = 0x36,
  112 + .tamper_filt_cfg = 0x00800000, /* Enable filtering */
  113 + .tamper_det_cfg = 0x276, /* ET1 enabled + analogic tampers
  114 + * + rollover tampers
  115 + */
  116 + .tamper_det_cfg2 = 0,
  117 + .tamper_filt1_cfg = 0,
  118 + .tamper_filt2_cfg = 0,
  119 + .act_tamper1_cfg = 0x84001111,
  120 + .act_tamper2_cfg = 0,
  121 + .act_tamper3_cfg = 0,
  122 + .act_tamper4_cfg = 0,
  123 + .act_tamper5_cfg = 0,
  124 + .act_tamper_ctl = 0x00010001,
  125 + .act_tamper_clk_ctl = 0,
  126 + .act_tamper_routing_ctl1 = 0x1,
  127 + .act_tamper_routing_ctl2 = 0,
  128 + }
  129 +};
  130 +
  131 +static __maybe_unused struct snvs_dgo_conf snvs_dgo_passive_vcc_config = {
  132 + .tamper_misc_ctl = 0x80000000, /* Lock the DGO */
  133 + .tamper_pull_ctl = 0x00000001, /* Pull down ET1 */
  134 +};
  135 +
  136 +static __maybe_unused struct snvs_dgo_conf snvs_dgo_passive_gnd_config = {
  137 + .tamper_misc_ctl = 0x80000000, /* Lock the DGO */
  138 + .tamper_pull_ctl = 0x00000401, /* Pull up ET1 */
  139 +};
  140 +
  141 +static __maybe_unused struct snvs_dgo_conf snvs_dgo_active_config = {
  142 + .tamper_misc_ctl = 0x80000000, /* Lock the DGO */
  143 +};
  144 +
  145 +static struct tamper_pin_cfg tamper_pin_list_default_config[] = {
  146 +};
  147 +
  148 +static __maybe_unused struct tamper_pin_cfg tamper_pin_list_passive_vcc_config[] = {
  149 +};
  150 +
  151 +static __maybe_unused struct tamper_pin_cfg tamper_pin_list_passive_gnd_config[] = {
  152 +};
  153 +
  154 +static __maybe_unused struct tamper_pin_cfg tamper_pin_list_active_config[] = {
  155 +};
  156 +
  157 +#endif /* SNVS_SECURITY_SC_CONF_8QM_SMARC_H_ */
arch/arm/mach-imx/imx8/snvs_security_sc_conf_board.h
... ... @@ -8,6 +8,8 @@
8 8  
9 9 #ifdef CONFIG_TARGET_IMX8QM_MEK
10 10 #include "snvs_security_sc_conf_8qm_mek.h"
  11 +#elif CONFIG_TARGET_SMARCIMX8QM
  12 +#include "snvs_security_sc_conf_8qm_smarc.h"
11 13 #elif CONFIG_TARGET_IMX8QXP_MEK
12 14 #include "snvs_security_sc_conf_8qxp_mek.h"
13 15 #elif CONFIG_TARGET_IMX8DXL_EVK
board/embedian/smarcimx8qm/Kconfig
  1 +if TARGET_SMARCIMX8QM
  2 +
  3 +config SYS_BOARD
  4 + default "smarcimx8qm"
  5 +
  6 +config SYS_VENDOR
  7 + default "embedian"
  8 +
  9 +config SYS_CONFIG_NAME
  10 + default "smarcimx8qm"
  11 +
  12 +source "board/freescale/common/Kconfig"
  13 +
  14 +endif
board/embedian/smarcimx8qm/MAINTAINERS
  1 +SMARC-iMX8QM CPU Module
  2 +M: Eric Lee <eric.lee@embedian.com>
  3 +S: Maintained
  4 +F: board/embedian/smarcimx8qm/
  5 +F: include/configs/smarcimx8qm.h
  6 +F: configs/smarcimx8qm_*_defconfig
board/embedian/smarcimx8qm/Makefile
  1 +#
  2 +# Copyright 2018 NXP
  3 +#
  4 +# SPDX-License-Identifier: GPL-2.0+
  5 +#
  6 +
  7 +obj-y += smarcimx8qm.o ../../freescale/common/mmc.o
  8 +obj-$(CONFIG_SPL_BUILD) += spl.o
board/embedian/smarcimx8qm/README
  1 +U-Boot for the Embedian SMARC-iMX8QM CPU Module
  2 +
  3 +Quick Start
  4 +===========
  5 +
  6 +- Build the ARM Trusted firmware binary
  7 +- Get scfw_tcm.bin and ahab-container.img
  8 +- Build U-Boot
  9 +- Flash the binary into the SD card
  10 +- Boot
  11 +
  12 +Get and Build the ARM Trusted firmware
  13 +======================================
  14 +
  15 +$ git clone https://source.codeaurora.org/external/imx/imx-atf
  16 +$ cd imx-atf/
  17 +$ git checkout origin/imx_4.14.78_1.0.0_ga -b imx_4.14.78_1.0.0_ga
  18 +$ make PLAT=imx8qm bl31
  19 +
  20 +Get scfw_tcm.bin and ahab-container.img
  21 +==============================
  22 +
  23 +$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx-sc-firmware-1.1.bin
  24 +$ chmod +x imx-sc-firmware-1.1.bin
  25 +$ ./imx-sc-firmware-1.1.bin
  26 +$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.0.bin
  27 +$ chmod +x firmware-imx-8.0.bin
  28 +$ ./firmware-imx-8.0.bin
  29 +
  30 +Copy the following binaries to U-Boot folder:
  31 +
  32 +$ cp imx-atf/build/imx8qm/release/bl31.bin .
  33 +$ cp u-boot/u-boot.bin .
  34 +
  35 +Copy the following firmwares U-Boot folder :
  36 +
  37 +$ cp firmware-imx-7.6/firmware/seco/ahab-container.img .
  38 +$ cp imx-sc-firmware-0.7/mx8qm-mek-scfw-tcm.bin .
  39 +
  40 +Build U-Boot
  41 +============
  42 +$ make imx8qm_mek_defconfig
  43 +$ make flash.bin
  44 +
  45 +Flash the binary into the SD card
  46 +=================================
  47 +
  48 +Burn the flash.bin binary to SD card offset 32KB:
  49 +
  50 +$ sudo dd if=flash.bin of=/dev/sd[x] bs=1024 seek=32
  51 +
  52 +Boot
  53 +====
  54 +Set Boot_SET to ON OFF OFF and shunt TEST# to GND
board/embedian/smarcimx8qm/imximage.cfg
  1 +/* SPDX-License-Identifier: GPL-2.0+ */
  2 +/*
  3 + * Copyright 2018 NXP
  4 + */
  5 +
  6 +#define __ASSEMBLY__
  7 +
  8 +/* Boot from SD, sector size 0x400 */
  9 +BOOT_FROM SD 0x400
  10 +/* SoC type IMX8QM */
  11 +SOC_TYPE IMX8QM
  12 +/* Append seco container image */
  13 +APPEND mx8qm-ahab-container.img
  14 +/* Create the 2nd container */
  15 +CONTAINER
  16 +/* Add scfw image with exec attribute */
  17 +IMAGE SCU mx8qm-mek-scfw-tcm.bin
  18 +/* Add ATF image with exec attribute */
  19 +IMAGE A35 spl/u-boot-spl.bin 0x00100000
board/embedian/smarcimx8qm/smarcimx8qm.c
Changes suppressed. Click to show
  1 +// SPDX-License-Identifier: GPL-2.0+
  2 +/*
  3 + * Copyright 2018 NXP
  4 + */
  5 +
  6 +#include <common.h>
  7 +#include <cpu_func.h>
  8 +#include <env.h>
  9 +#include <hang.h>
  10 +#include <errno.h>
  11 +#include <i2c.h>
  12 +#include <init.h>
  13 +#include <linux/libfdt.h>
  14 +#include <fdt_support.h>
  15 +#include <asm/io.h>
  16 +#include <asm/gpio.h>
  17 +#include <asm/arch/clock.h>
  18 +#include <asm/arch/sci/sci.h>
  19 +#include <asm/arch/imx8-pins.h>
  20 +#include <asm/arch/snvs_security_sc.h>
  21 +#include <usb.h>
  22 +#include <asm/arch/iomux.h>
  23 +#include <asm/arch/sys_proto.h>
  24 +#include "../../freescale/common/tcpc.h"
  25 +
  26 +DECLARE_GLOBAL_DATA_PTR;
  27 +
  28 +#define ENET_INPUT_PAD_CTRL ((SC_PAD_CONFIG_OD_IN << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \
  29 + | (SC_PAD_28FDSOI_DSE_18V_10MA << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
  30 +
  31 +#define ENET_NORMAL_PAD_CTRL ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \
  32 + | (SC_PAD_28FDSOI_DSE_18V_10MA << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
  33 +
  34 +
  35 +#define GPIO_PAD_CTRL ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \
  36 + | (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
  37 +
  38 +
  39 +#define UART_PAD_CTRL ((SC_PAD_CONFIG_OUT_IN << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \
  40 + | (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
  41 +
  42 +/* SER0 */
  43 +#ifdef CONFIG_CONSOLE_SER0
  44 +static iomux_cfg_t uart0_pads[] = {
  45 + SC_P_UART0_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
  46 + SC_P_UART0_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
  47 +};
  48 +#endif
  49 +
  50 +/* SER1 */
  51 +#ifdef CONFIG_CONSOLE_SER1
  52 +static iomux_cfg_t uart3_pads[] = {
  53 + SC_P_M41_GPIO0_00 | MUX_MODE_ALT(2) | MUX_PAD_CTRL(UART_PAD_CTRL), /* M41.GPIO0.IO00, M41.TPM0.CH0, DMA.UART3.RX, LSIO.GPIO0.IO12 */
  54 + SC_P_M41_GPIO0_01 | MUX_MODE_ALT(2) | MUX_PAD_CTRL(UART_PAD_CTRL), /* M41.GPIO0.IO01, M41.TPM0.CH1, DMA.UART3.TX, LSIO.GPIO0.IO13 */
  55 +};
  56 +#endif
  57 +
  58 +/* SER2 */
  59 +#ifdef CONFIG_CONSOLE_SER2
  60 +static iomux_cfg_t uart1_pads[] = {
  61 + SC_P_UART1_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
  62 + SC_P_UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
  63 +};
  64 +#endif
  65 +
  66 +/* SER3 */
  67 +#ifdef CONFIG_CONSOLE_SER3
  68 +static iomux_cfg_t uart4_pads[] = {
  69 + SC_P_M40_GPIO0_00 | MUX_MODE_ALT(2) | MUX_PAD_CTRL(UART_PAD_CTRL), /* M40.GPIO0.IO00, M40.TPM0.CH0, DMA.UART4.RX, LSIO.GPIO0.IO08 */
  70 + SC_P_M40_GPIO0_01 | MUX_MODE_ALT(2) | MUX_PAD_CTRL(UART_PAD_CTRL), /* M40.GPIO0.IO01, M40.TPM0.CH1, DMA.UART4.TX, LSIO.GPIO0.IO09 */
  71 +};
  72 +#endif
  73 +
  74 +#ifdef CONFIG_CONSOLE_SER0
  75 +static void setup_iomux_uart0(void)
  76 +{
  77 + imx8_iomux_setup_multiple_pads(uart0_pads, ARRAY_SIZE(uart0_pads));
  78 +}
  79 +#endif
  80 +
  81 +#ifdef CONFIG_CONSOLE_SER1
  82 +static void setup_iomux_uart3(void)
  83 +{
  84 + imx8_iomux_setup_multiple_pads(uart3_pads, ARRAY_SIZE(uart3_pads));
  85 +}
  86 +#endif
  87 +
  88 +#ifdef CONFIG_CONSOLE_SER2
  89 +static void setup_iomux_uart1(void)
  90 +{
  91 + imx8_iomux_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
  92 +}
  93 +#endif
  94 +
  95 +#ifdef CONFIG_CONSOLE_SER3
  96 +static void setup_iomux_uart4(void)
  97 +{
  98 + imx8_iomux_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads));
  99 +}
  100 +#endif
  101 +
  102 +int board_early_init_f(void)
  103 +{
  104 + sc_pm_clock_rate_t rate = SC_80MHZ;
  105 + int ret;
  106 +
  107 +#ifdef CONFIG_CONSOLE_SER0
  108 + /* Set UART0 clock root to 80 MHz */
  109 + ret = sc_pm_setup_uart(SC_R_UART_0, rate);
  110 + if (ret)
  111 + return ret;
  112 +
  113 + setup_iomux_uart0();
  114 +#endif
  115 +
  116 +#ifdef CONFIG_CONSOLE_SER1
  117 + /* Set UART3 clock root to 80 MHz */
  118 + ret = sc_pm_setup_uart(SC_R_UART_3, rate);
  119 + if (ret)
  120 + return ret;
  121 +
  122 + setup_iomux_uart3();
  123 +#endif
  124 +
  125 +#ifdef CONFIG_CONSOLE_SER2
  126 + /* Set UART1 clock root to 80 MHz */
  127 + ret = sc_pm_setup_uart(SC_R_UART_1, rate);
  128 + if (ret)
  129 + return ret;
  130 +
  131 + setup_iomux_uart1();
  132 +#endif
  133 +
  134 +#ifdef CONFIG_CONSOLE_SER3
  135 + /* Set UART4 clock root to 80 MHz */
  136 + ret = sc_pm_setup_uart(SC_R_UART_4, rate);
  137 + if (ret)
  138 + return ret;
  139 +
  140 + setup_iomux_uart4();
  141 +#endif
  142 +
  143 +/* Dual bootloader feature will require CAAM access, but JR0 and JR1 will be
  144 + * assigned to seco for imx8, use JR3 instead.
  145 + */
  146 +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_DUAL_BOOTLOADER)
  147 + sc_pm_set_resource_power_mode(-1, SC_R_CAAM_JR3, SC_PM_PW_MODE_ON);
  148 + sc_pm_set_resource_power_mode(-1, SC_R_CAAM_JR3_OUT, SC_PM_PW_MODE_ON);
  149 +#endif
  150 +
  151 + return 0;
  152 +}
  153 +
  154 +
  155 +#if IS_ENABLED(CONFIG_FEC_MXC)
  156 +#include <miiphy.h>
  157 +
  158 +#ifndef CONFIG_DM_ETH
  159 +static iomux_cfg_t pad_enet1[] = {
  160 + SC_P_ENET1_RGMII_RX_CTL | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  161 + SC_P_ENET1_RGMII_RXD0 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  162 + SC_P_ENET1_RGMII_RXD1 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  163 + SC_P_ENET1_RGMII_RXD2 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  164 + SC_P_ENET1_RGMII_RXD3 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  165 + SC_P_ENET1_RGMII_RXC | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  166 + SC_P_ENET1_RGMII_TX_CTL | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  167 + SC_P_ENET1_RGMII_TXD0 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  168 + SC_P_ENET1_RGMII_TXD1 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  169 + SC_P_ENET1_RGMII_TXD2 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  170 + SC_P_ENET1_RGMII_TXD3 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  171 + SC_P_ENET1_RGMII_TXC | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  172 +
  173 + /* Shared MDIO */
  174 + SC_P_ENET0_MDC | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  175 + SC_P_ENET0_MDIO | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  176 +};
  177 +
  178 +static iomux_cfg_t pad_enet0[] = {
  179 + SC_P_ENET0_RGMII_RX_CTL | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  180 + SC_P_ENET0_RGMII_RXD0 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  181 + SC_P_ENET0_RGMII_RXD1 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  182 + SC_P_ENET0_RGMII_RXD2 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  183 + SC_P_ENET0_RGMII_RXD3 | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  184 + SC_P_ENET0_RGMII_RXC | MUX_PAD_CTRL(ENET_INPUT_PAD_CTRL),
  185 + SC_P_ENET0_RGMII_TX_CTL | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  186 + SC_P_ENET0_RGMII_TXD0 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  187 + SC_P_ENET0_RGMII_TXD1 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  188 + SC_P_ENET0_RGMII_TXD2 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  189 + SC_P_ENET0_RGMII_TXD3 | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  190 + SC_P_ENET0_RGMII_TXC | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  191 +
  192 + /* Shared MDIO */
  193 + SC_P_ENET0_MDC | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  194 + SC_P_ENET0_MDIO | MUX_PAD_CTRL(ENET_NORMAL_PAD_CTRL),
  195 +};
  196 +
  197 +static void setup_iomux_fec(void)
  198 +{
  199 + if (0 == CONFIG_FEC_ENET_DEV)
  200 + imx8_iomux_setup_multiple_pads(pad_enet0, ARRAY_SIZE(pad_enet0));
  201 + else
  202 + imx8_iomux_setup_multiple_pads(pad_enet1, ARRAY_SIZE(pad_enet1));
  203 +}
  204 +
  205 +int board_eth_init(bd_t *bis)
  206 +{
  207 + int ret;
  208 + struct power_domain pd;
  209 +
  210 + printf("[%s] %d\n", __func__, __LINE__);
  211 +
  212 + if (CONFIG_FEC_ENET_DEV) {
  213 + if (!power_domain_lookup_name("conn_enet1", &pd))
  214 + power_domain_on(&pd);
  215 + } else {
  216 + if (!power_domain_lookup_name("conn_enet0", &pd))
  217 + power_domain_on(&pd);
  218 + }
  219 +
  220 + setup_iomux_fec();
  221 +
  222 + ret = fecmxc_initialize_multi(bis, CONFIG_FEC_ENET_DEV,
  223 + CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE);
  224 + if (ret)
  225 + printf("FEC1 MXC: %s:failed\n", __func__);
  226 +
  227 + return ret;
  228 +}
  229 +#endif
  230 +
  231 +int board_phy_config(struct phy_device *phydev)
  232 +{
  233 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f);
  234 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8);
  235 +
  236 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x00);
  237 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee);
  238 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
  239 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100);
  240 +
  241 + if (phydev->drv->config)
  242 + phydev->drv->config(phydev);
  243 +
  244 + return 0;
  245 +}
  246 +#endif
  247 +
  248 +static iomux_cfg_t smarc_gpio[] = {
  249 + SC_P_MIPI_CSI0_GPIO0_01 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO0 */
  250 + SC_P_MIPI_CSI1_GPIO0_01 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO1 */
  251 + SC_P_MIPI_CSI0_GPIO0_00 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO2 */
  252 + SC_P_MIPI_CSI1_GPIO0_00 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO3 */
  253 + SC_P_GPT0_CLK | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO4 */
  254 + SC_P_GPT0_COMPARE | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO5 */
  255 + SC_P_GPT0_CAPTURE | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO6 */
  256 + SC_P_GPT1_COMPARE | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO7 */
  257 + SC_P_GPT1_CAPTURE | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO8 */
  258 + SC_P_GPT1_CLK | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO9 */
  259 + SC_P_FLEXCAN2_TX | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO10 */
  260 + SC_P_FLEXCAN2_RX | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* GPIO11 */
  261 + SC_P_SCU_GPIO0_03 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* LID# */
  262 + SC_P_SCU_GPIO0_04 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* SLEEP# */
  263 + SC_P_SCU_GPIO0_05 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* CHARGING# */
  264 + SC_P_SCU_GPIO0_06 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* CHARGER_PRSNT# */
  265 + SC_P_SCU_GPIO0_07 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* BATLOW# */
  266 + SC_P_SCU_GPIO0_02 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* CARRIER_STBY# */
  267 + SC_P_QSPI1A_DATA0 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* RGMII0_INT# */
  268 + SC_P_QSPI1A_DATA1 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* RGMII1_INT# */
  269 + SC_P_USB_SS3_TC0 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL),
  270 + /* USB_OTG1_PWR_EN */
  271 + SC_P_USB_SS3_TC1 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* USB_OTG2_PWR_EN */
  272 + SC_P_USB_SS3_TC2 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* USB_OTG1_OC */
  273 + SC_P_USB_SS3_TC3 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* USB_OTG2_OC */
  274 + SC_P_SIM0_GPIO0_00 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* HDMI_SEL */
  275 + SC_P_MIPI_DSI1_GPIO0_00 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* EDP0_EN */
  276 + SC_P_MIPI_DSI0_GPIO0_00 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* EDP1_EN */
  277 + SC_P_MIPI_DSI1_GPIO0_01 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* EDP0_IRQ */
  278 + SC_P_MIPI_DSI0_GPIO0_01 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* EDP1_IRQ */
  279 + SC_P_LVDS0_GPIO01 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* LCD0_VDD_EN */
  280 + SC_P_LVDS1_GPIO01 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* LCD1_VDD_EN */
  281 + SC_P_LVDS0_I2C0_SCL | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* LCD0_BKLT_EN */
  282 + SC_P_LVDS0_I2C0_SDA | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* LCD1_BKLT_EN */
  283 + SC_P_ADC_IN0 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* BOOT_SEL0 */
  284 + SC_P_ADC_IN1 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* BOOT_SEL1 */
  285 + SC_P_ADC_IN2 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* BOOT_SEL2 */
  286 + SC_P_SPDIF0_TX | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* WDT_TIME_OUT# */
  287 +};
  288 +
  289 +/* GPIO0 */
  290 +#define GPIO0 IMX_GPIO_NR(1, 28) /* MIPI_CSI0.GPIO0.IO01, DMA.I2C0.SDA, MIPI_CSI1.I2C0.SDA, LSIO.GPIO1.IO28 */
  291 +/* GPIO1 */
  292 +#define GPIO1 IMX_GPIO_NR(1, 31) /* MIPI_CSI1.GPIO0.IO01, DMA.UART4.TX, LSIO.GPIO1.IO31 */
  293 +/* GPIO2 */
  294 +#define GPIO2 IMX_GPIO_NR(1, 27) /* MIPI_CSI0.GPIO0.IO00, DMA.I2C0.SCL, MIPI_CSI1.I2C0.SCL, LSIO.GPIO1.IO27 */
  295 +/* GPIO3 */
  296 +#define GPIO3 IMX_GPIO_NR(1, 30) /* MIPI_CSI1.GPIO0.IO00, DMA.UART4.RX, LSIO.GPIO1.IO30 */
  297 +/* GPIO4 */
  298 +#define GPIO4 IMX_GPIO_NR(0, 14) /* LSIO.GPT0.CLK, DMA.I2C1.SCL, LSIO.KPP0.COL4, LSIO.GPIO0.IO14 */
  299 +/* GPIO5 */
  300 +#define GPIO5 IMX_GPIO_NR(0, 16) /* LSIO.GPT0.COMPARE, LSIO.PWM3.OUT, LSIO.KPP0.COL6, LSIO.GPIO0.IO16 */
  301 +/* GPIO6 */
  302 +#define GPIO6 IMX_GPIO_NR(0, 15) /* LSIO.GPT0.CAPTURE, DMA.I2C1.SDA, LSIO.KPP0.COL5, LSIO.GPIO0.IO15 */
  303 +/* GPIO7 */
  304 +#define GPIO7 IMX_GPIO_NR(0, 19) /* LSIO.GPT1.COMPARE, LSIO.PWM2.OUT, LSIO.KPP0.ROW5, LSIO.GPIO0.IO19 */
  305 +/* GPIO8 */
  306 +#define GPIO8 IMX_GPIO_NR(0, 18) /* LSIO.GPT1.CAPTURE, DMA.I2C2.SDA, LSIO.KPP0.ROW4, LSIO.GPIO0.IO18 */
  307 +/* GPIO9 */
  308 +#define GPIO9 IMX_GPIO_NR(0, 17) /* LSIO.GPT1.CLK, DMA.I2C2.SCL, LSIO.KPP0.COL7, LSIO.GPIO0.IO17 */
  309 +/* GPIO10 */
  310 +#define GPIO10 IMX_GPIO_NR(4, 02) /* DMA.FLEXCAN2.TX, LSIO.GPIO4.IO02 */
  311 +/* GPIO11 */
  312 +#define GPIO11 IMX_GPIO_NR(4, 01) /* DMA.FLEXCAN2.RX, LSIO.GPIO4.IO01 */
  313 +/* LID# */
  314 +#define LID IMX_GPIO_NR(0, 31) /* SCU.GPIO0.IO03, SCU.GPIO0.IOXX_PMIC_GPU1_ON, LSIO.GPIO0.IO31 */
  315 +/* SLEEP# */
  316 +#define SLEEP IMX_GPIO_NR(1, 00) /* SCU.GPIO0.IO04, SCU.GPIO0.IOXX_PMIC_A72_ON, LSIO.GPIO1.IO00 */
  317 +/* CHARGING# */
  318 +#define CHARGING IMX_GPIO_NR(1, 01) /* SCU.GPIO0.IO05, SCU.GPIO0.IOXX_PMIC_A53_ON, LSIO.GPIO1.IO01 */
  319 +/* CHARGER_PRSNT# */
  320 +#define CHARGER_PRSNT IMX_GPIO_NR(1, 02) /* SCU.GPIO0.IO06, SCU.TPM0.CH0, LSIO.GPIO1.IO02 */
  321 +/* BATLOW# */
  322 +#define BATLOW IMX_GPIO_NR(1, 03) /* SCU.GPIO0.IO07, SCU.TPM0.CH1, SCU.DSC.RTC_CLOCK_OUTPUT_32K, LSIO.GPIO1.IO03 */
  323 +/* CARRIER_STBY# */
  324 +#define CARRIER_STBY IMX_GPIO_NR(0, 30) /* SCU.GPIO0.IO02, SCU.GPIO0.IOXX_PMIC_GPU0_ON, LSIO.GPIO0.IO30 */
  325 +/* RGMII0_INT# */
  326 +#define RGMII0_INT IMX_GPIO_NR(4, 26) /* LSIO.QSPI1A.DATA0, LSIO.GPIO4.IO26 */
  327 +/* RGMII1_INT# */
  328 +#define RGMII1_INT IMX_GPIO_NR(4, 25) /* LSIO.QSPI1A.DATA1, DMA.I2C1.SDA, CONN.USB_OTG2.OC, LSIO.GPIO4.IO25 */
  329 +/* USB_OTG1_PWR_EN */
  330 +#define USB_OTG1_PWR_EN IMX_GPIO_NR(4, 03) /* DMA.I2C1.SCL, CONN.USB_OTG1.PWR, LSIO.GPIO4.IO03 */
  331 +/* USB_OTG2_PWR_EN */
  332 +#define USB_OTG2_PWR_EN IMX_GPIO_NR(4, 04) /* DMA.I2C1.SCL, CONN.USB_OTG2.PWR, LSIO.GPIO4.IO04 */
  333 +/* USB_OTG1_OC# */
  334 +#define USB_OTG1_OC IMX_GPIO_NR(4, 05) /* DMA.I2C1.SDA, CONN.USB_OTG1.OC, LSIO.GPIO4.IO05 */
  335 +/* USB_OTG2_OC# */
  336 +#define USB_OTG2_OC IMX_GPIO_NR(4, 06) /* DMA.I2C1.SDA, CONN.USB_OTG2.OC, LSIO.GPIO4.IO06 */
  337 +/* HDMI_SEL */
  338 +#define HDMI_SEL IMX_GPIO_NR(0, 05) /* DMA.SIM0.POWER_EN, LSIO.GPIO0.IO05 */
  339 +/* EDP0_EN */
  340 +#define EDP0_EN IMX_GPIO_NR(1, 22) /* MIPI_DSI1.GPIO0.IO00, MIPI_DSI1.PWM0.OUT, LSIO.GPIO1.IO22 */
  341 +/* EDP1_EN */
  342 +#define EDP1_EN IMX_GPIO_NR(1, 18) /* MIPI_DSI0.GPIO0.IO00, MIPI_DSI0.PWM0.OUT, LSIO.GPIO1.IO18 */
  343 +/* EDP0_IRQ */
  344 +#define EDP0_IRQ IMX_GPIO_NR(1, 23) /* MIPI_DSI1.GPIO0.IO01, LSIO.GPIO1.IO23 */
  345 +/* EDP1_IRQ */
  346 +#define EDP1_IRQ IMX_GPIO_NR(1, 19) /* MIPI_DSI0.GPIO0.IO01, LSIO.GPIO1.IO19 */
  347 +/* LCD0_VDD_EN */
  348 +#define LCD0_VDD_EN IMX_GPIO_NR(1, 05) /* LVDS0.GPIO0.IO01, LSIO.GPIO1.IO05 */
  349 +/* LCD1_VDD_EN */
  350 +#define LCD1_VDD_EN IMX_GPIO_NR(1, 11) /* LVDS1.GPIO0.IO01, LSIO.GPIO1.IO11 */
  351 +/* LCD0_BKLT_EN */
  352 +#define LCD0_BKLT_EN IMX_GPIO_NR(1, 06) /* LVDS0.I2C0.SCL, LVDS0.GPIO0.IO02, LSIO.GPIO1.IO06 */
  353 +/* LCD1_BKLT_EN */
  354 +#define LCD1_BKLT_EN IMX_GPIO_NR(1, 07) /* LVDS0.I2C0.SDA, LVDS0.GPIO0.IO03, LSIO.GPIO1.IO07 */
  355 +/* WDT_TIME_OUT# */
  356 +#define WDT_TIME_OUT IMX_GPIO_NR(2, 15) /* AUD.SPDIF0.TX, AUD.MQS.L, AUD.ACM.MCLK_OUT1, LSIO.GPIO2.IO15 */
  357 +
  358 +static void board_gpio_init(void)
  359 +{
  360 + int ret;
  361 + struct gpio_desc desc;
  362 +
  363 + imx8_iomux_setup_multiple_pads(smarc_gpio, ARRAY_SIZE(smarc_gpio));
  364 + /* By SMARC definition, GPIO0~GPIO5 are set as Outpin Low by default */
  365 + /* GPIO0 */
  366 + ret = dm_gpio_lookup_name("GPIO1_28", &desc);
  367 + if (ret) {
  368 + printf("%s lookup GPIO@1_28 failed ret = %d\n", __func__, ret);
  369 + return;
  370 + }
  371 +
  372 + ret = dm_gpio_request(&desc, "gpio0");
  373 + if (ret) {
  374 + printf("%s request gpio0 failed ret = %d\n", __func__, ret);
  375 + return;
  376 + }
  377 +
  378 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
  379 + dm_gpio_set_value(&desc, 0);
  380 +
  381 + /* GPIO1 */
  382 + ret = dm_gpio_lookup_name("GPIO1_31", &desc);
  383 + if (ret) {
  384 + printf("%s lookup GPIO@1_31 failed ret = %d\n", __func__, ret);
  385 + return;
  386 + }
  387 +
  388 + ret = dm_gpio_request(&desc, "gpio1");
  389 + if (ret) {
  390 + printf("%s request gpio1 failed ret = %d\n", __func__, ret);
  391 + return;
  392 + }
  393 +
  394 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
  395 + dm_gpio_set_value(&desc, 0);
  396 +
  397 + /* GPIO2 */
  398 + ret = dm_gpio_lookup_name("GPIO1_27", &desc);
  399 + if (ret) {
  400 + printf("%s lookup GPIO@1_27 failed ret = %d\n", __func__, ret);
  401 + return;
  402 + }
  403 +
  404 + ret = dm_gpio_request(&desc, "gpio2");
  405 + if (ret) {
  406 + printf("%s request gpio2 failed ret = %d\n", __func__, ret);
  407 + return;
  408 + }
  409 +
  410 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
  411 + dm_gpio_set_value(&desc, 0);
  412 +
  413 + /* GPIO3 */
  414 + ret = dm_gpio_lookup_name("GPIO1_30", &desc);
  415 + if (ret) {
  416 + printf("%s lookup GPIO@1_30 failed ret = %d\n", __func__, ret);
  417 + return;
  418 + }
  419 +
  420 + ret = dm_gpio_request(&desc, "gpio3");
  421 + if (ret) {
  422 + printf("%s request gpio3 failed ret = %d\n", __func__, ret);
  423 + return;
  424 + }
  425 +
  426 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
  427 + dm_gpio_set_value(&desc, 0);
  428 +
  429 + /* GPIO4 */
  430 + ret = dm_gpio_lookup_name("GPIO0_14", &desc);
  431 + if (ret) {
  432 + printf("%s lookup GPIO@0_14 failed ret = %d\n", __func__, ret);
  433 + return;
  434 + }
  435 +
  436 + ret = dm_gpio_request(&desc, "gpio4");
  437 + if (ret) {
  438 + printf("%s request gpio4 failed ret = %d\n", __func__, ret);
  439 + return;
  440 + }
  441 +
  442 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
  443 + dm_gpio_set_value(&desc, 0);
  444 +
  445 + /* GPIO5 */
  446 + ret = dm_gpio_lookup_name("GPIO0_16", &desc);
  447 + if (ret) {
  448 + printf("%s lookup GPIO@0_16 failed ret = %d\n", __func__, ret);
  449 + return;
  450 + }
  451 +
  452 + ret = dm_gpio_request(&desc, "gpio5");
  453 + if (ret) {
  454 + printf("%s request gpio5 failed ret = %d\n", __func__, ret);
  455 + return;
  456 + }
  457 +
  458 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
  459 + dm_gpio_set_value(&desc, 0);
  460 +
  461 + /* GPIO6 */
  462 + ret = dm_gpio_lookup_name("GPIO0_15", &desc);
  463 + if (ret) {
  464 + printf("%s lookup GPIO@0_15 failed ret = %d\n", __func__, ret);
  465 + return;
  466 + }
  467 +
  468 + ret = dm_gpio_request(&desc, "gpio6");
  469 + if (ret) {
  470 + printf("%s request gpio6 failed ret = %d\n", __func__, ret);
  471 + return;
  472 + }
  473 +
  474 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  475 +
  476 + /* GPIO7 */
  477 + ret = dm_gpio_lookup_name("GPIO0_19", &desc);
  478 + if (ret) {
  479 + printf("%s lookup GPIO@0_19 failed ret = %d\n", __func__, ret);
  480 + return;
  481 + }
  482 +
  483 + ret = dm_gpio_request(&desc, "gpio7");
  484 + if (ret) {
  485 + printf("%s request gpio7 failed ret = %d\n", __func__, ret);
  486 + return;
  487 + }
  488 +
  489 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  490 +
  491 + /* GPIO8 */
  492 + ret = dm_gpio_lookup_name("GPIO0_18", &desc);
  493 + if (ret) {
  494 + printf("%s lookup GPIO@0_18 failed ret = %d\n", __func__, ret);
  495 + return;
  496 + }
  497 +
  498 + ret = dm_gpio_request(&desc, "gpio8");
  499 + if (ret) {
  500 + printf("%s request gpio8 failed ret = %d\n", __func__, ret);
  501 + return;
  502 + }
  503 +
  504 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  505 +
  506 + /* GPIO9 */
  507 + ret = dm_gpio_lookup_name("GPIO0_17", &desc);
  508 + if (ret) {
  509 + printf("%s lookup GPIO@0_17 failed ret = %d\n", __func__, ret);
  510 + return;
  511 + }
  512 +
  513 + ret = dm_gpio_request(&desc, "gpio9");
  514 + if (ret) {
  515 + printf("%s request gpio9 failed ret = %d\n", __func__, ret);
  516 + return;
  517 + }
  518 +
  519 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  520 +
  521 + /* GPIO10 */
  522 + ret = dm_gpio_lookup_name("GPIO4_02", &desc);
  523 + if (ret) {
  524 + printf("%s lookup GPIO@4_02 failed ret = %d\n", __func__, ret);
  525 + return;
  526 + }
  527 +
  528 + ret = dm_gpio_request(&desc, "gpio10");
  529 + if (ret) {
  530 + printf("%s request gpio10 failed ret = %d\n", __func__, ret);
  531 + return;
  532 + }
  533 +
  534 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  535 +
  536 + /* GPIO11 */
  537 + ret = dm_gpio_lookup_name("GPIO4_01", &desc);
  538 + if (ret) {
  539 + printf("%s lookup GPIO@4_01 failed ret = %d\n", __func__, ret);
  540 + return;
  541 + }
  542 +
  543 + ret = dm_gpio_request(&desc, "gpio11");
  544 + if (ret) {
  545 + printf("%s request gpio11 failed ret = %d\n", __func__, ret);
  546 + return;
  547 + }
  548 +
  549 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  550 +
  551 + /* Set LID# pin as Input Pin */
  552 + ret = dm_gpio_lookup_name("GPIO0_31", &desc);
  553 + if (ret) {
  554 + printf("%s lookup GPIO@0_31 failed ret = %d\n", __func__, ret);
  555 + return;
  556 + }
  557 +
  558 + ret = dm_gpio_request(&desc, "lid");
  559 + if (ret) {
  560 + printf("%s request lid failed ret = %d\n", __func__, ret);
  561 + return;
  562 + }
  563 +
  564 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  565 +
  566 + /* Set SLEEP# pin as Input Pin */
  567 + ret = dm_gpio_lookup_name("GPIO1_00", &desc);
  568 + if (ret) {
  569 + printf("%s lookup GPIO@1_00 failed ret = %d\n", __func__, ret);
  570 + return;
  571 + }
  572 +
  573 + ret = dm_gpio_request(&desc, "sleep");
  574 + if (ret) {
  575 + printf("%s request sleep failed ret = %d\n", __func__, ret);
  576 + return;
  577 + }
  578 +
  579 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  580 +
  581 + /* Set CHARGING# pin as Input Pin */
  582 + ret = dm_gpio_lookup_name("GPIO1_01", &desc);
  583 + if (ret) {
  584 + printf("%s lookup GPIO@1_01 failed ret = %d\n", __func__, ret);
  585 + return;
  586 + }
  587 +
  588 + ret = dm_gpio_request(&desc, "charging");
  589 + if (ret) {
  590 + printf("%s request charging failed ret = %d\n", __func__, ret);
  591 + return;
  592 + }
  593 +
  594 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  595 +
  596 + /* Set CHARGER_PRSNT# pin as Input Pin */
  597 + ret = dm_gpio_lookup_name("GPIO1_02", &desc);
  598 + if (ret) {
  599 + printf("%s lookup GPIO@1_02 failed ret = %d\n", __func__, ret);
  600 + return;
  601 + }
  602 +
  603 + ret = dm_gpio_request(&desc, "charger_prsnt");
  604 + if (ret) {
  605 + printf("%s request charger_prsnt failed ret = %d\n", __func__, ret);
  606 + return;
  607 + }
  608 +
  609 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  610 +
  611 + /* Set BATLOW# pin as Input Pin */
  612 + ret = dm_gpio_lookup_name("GPIO1_03", &desc);
  613 + if (ret) {
  614 + printf("%s lookup GPIO@1_03 failed ret = %d\n", __func__, ret);
  615 + return;
  616 + }
  617 +
  618 + ret = dm_gpio_request(&desc, "batlow");
  619 + if (ret) {
  620 + printf("%s request batlow failed ret = %d\n", __func__, ret);
  621 + return;
  622 + }
  623 +
  624 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  625 +
  626 + /* Set CARRIER_STBY# pin as Output High */
  627 + ret = dm_gpio_lookup_name("GPIO0_30", &desc);
  628 + if (ret) {
  629 + printf("%s lookup GPIO@0_30 failed ret = %d\n", __func__, ret);
  630 + return;
  631 + }
  632 +
  633 + ret = dm_gpio_request(&desc, "carrier_stby");
  634 + if (ret) {
  635 + printf("%s request carrier_stby failed ret = %d\n", __func__, ret);
  636 + return;
  637 + }
  638 +
  639 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  640 + dm_gpio_set_value(&desc, 1);
  641 +
  642 + /* Set RGMII0_INT# pin as Input pin*/
  643 + ret = dm_gpio_lookup_name("GPIO4_26", &desc);
  644 + if (ret) {
  645 + printf("%s lookup GPIO@4_26 failed ret = %d\n", __func__, ret);
  646 + return;
  647 + }
  648 +
  649 + ret = dm_gpio_request(&desc, "rgmii0_int");
  650 + if (ret) {
  651 + printf("%s request rgmii0_int failed ret = %d\n", __func__, ret);
  652 + return;
  653 + }
  654 +
  655 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  656 +
  657 + /* Set RGMII1_INT# pin as Input pin*/
  658 + ret = dm_gpio_lookup_name("GPIO4_25", &desc);
  659 + if (ret) {
  660 + printf("%s lookup GPIO@4_25 failed ret = %d\n", __func__, ret);
  661 + return;
  662 + }
  663 +
  664 + ret = dm_gpio_request(&desc, "rgmii1_int");
  665 + if (ret) {
  666 + printf("%s request rgmii1_int failed ret = %d\n", __func__, ret);
  667 + return;
  668 + }
  669 +
  670 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  671 +
  672 + /* Turn on USB0 Power */
  673 + ret = dm_gpio_lookup_name("GPIO4_03", &desc);
  674 + if (ret) {
  675 + printf("%s lookup GPIO@4_03 failed ret = %d\n", __func__, ret);
  676 + return;
  677 + }
  678 +
  679 + ret = dm_gpio_request(&desc, "usb_otg1_pwr_en");
  680 + if (ret) {
  681 + printf("%s request usb_otg1_pwr_en failed ret = %d\n", __func__, ret);
  682 + return;
  683 + }
  684 +
  685 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  686 + dm_gpio_set_value(&desc, 1);
  687 +
  688 + /* Turn on USB2514 Hub Power */
  689 + ret = dm_gpio_lookup_name("GPIO4_04", &desc);
  690 + if (ret) {
  691 + printf("%s lookup GPIO@4_04 failed ret = %d\n", __func__, ret);
  692 + return;
  693 + }
  694 +
  695 + ret = dm_gpio_request(&desc, "usb_otg2_pwr_en");
  696 + if (ret) {
  697 + printf("%s request usb_otg2_pwr_en failed ret = %d\n", __func__, ret);
  698 + return;
  699 + }
  700 +
  701 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  702 + dm_gpio_set_value(&desc, 1);
  703 +
  704 + /* Set USB0 OC# pin as Input pin*/
  705 + ret = dm_gpio_lookup_name("GPIO4_05", &desc);
  706 + if (ret) {
  707 + printf("%s lookup GPIO@4_05 failed ret = %d\n", __func__, ret);
  708 + return;
  709 + }
  710 +
  711 + ret = dm_gpio_request(&desc, "usb_otg1_oc");
  712 + if (ret) {
  713 + printf("%s request usb_otg1_oc failed ret = %d\n", __func__, ret);
  714 + return;
  715 + }
  716 +
  717 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  718 +
  719 + /* Set USB1 OC# pin as Input pin*/
  720 + ret = dm_gpio_lookup_name("GPIO4_06", &desc);
  721 + if (ret) {
  722 + printf("%s lookup GPIO@4_06 failed ret = %d\n", __func__, ret);
  723 + return;
  724 + }
  725 +
  726 + ret = dm_gpio_request(&desc, "usb_otg2_oc");
  727 + if (ret) {
  728 + printf("%s request usb_otg2_oc failed ret = %d\n", __func__, ret);
  729 + return;
  730 + }
  731 +
  732 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  733 +
  734 + /* Set HDMI_SEL pin as Input pin*/
  735 + ret = dm_gpio_lookup_name("GPIO0_05", &desc);
  736 + if (ret) {
  737 + printf("%s lookup GPIO@0_05 failed ret = %d\n", __func__, ret);
  738 + return;
  739 + }
  740 +
  741 + ret = dm_gpio_request(&desc, "hdmi_sel");
  742 + if (ret) {
  743 + printf("%s request usb_hdmi_sel failed ret = %d\n", __func__, ret);
  744 + return;
  745 + }
  746 +
  747 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  748 +
  749 + /* Turn on eDP0 Power */
  750 + ret = dm_gpio_lookup_name("GPIO1_22", &desc);
  751 + if (ret) {
  752 + printf("%s lookup GPIO@1_22 failed ret = %d\n", __func__, ret);
  753 + return;
  754 + }
  755 +
  756 + ret = dm_gpio_request(&desc, "edp0_en");
  757 + if (ret) {
  758 + printf("%s request edp0_en failed ret = %d\n", __func__, ret);
  759 + return;
  760 + }
  761 +
  762 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  763 + dm_gpio_set_value(&desc, 1);
  764 +
  765 + /* Turn off eDP1 Power */
  766 + ret = dm_gpio_lookup_name("GPIO1_18", &desc);
  767 + if (ret) {
  768 + printf("%s lookup GPIO@1_18 failed ret = %d\n", __func__, ret);
  769 + return;
  770 + }
  771 +
  772 + ret = dm_gpio_request(&desc, "edp1_en");
  773 + if (ret) {
  774 + printf("%s request edp1_en failed ret = %d\n", __func__, ret);
  775 + return;
  776 + }
  777 +
  778 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
  779 + dm_gpio_set_value(&desc, 0);
  780 +
  781 + /* Set eDP0_IRQ pin as Input Pin */
  782 + ret = dm_gpio_lookup_name("GPIO1_23", &desc);
  783 + if (ret) {
  784 + printf("%s lookup GPIO@1_23 failed ret = %d\n", __func__, ret);
  785 + return;
  786 + }
  787 +
  788 + ret = dm_gpio_request(&desc, "edp0_irq");
  789 + if (ret) {
  790 + printf("%s request edp0_irq failed ret = %d\n", __func__, ret);
  791 + return;
  792 + }
  793 +
  794 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  795 +
  796 + /* Set eDP1_IRQ pin as Input Pin */
  797 + ret = dm_gpio_lookup_name("GPIO1_19", &desc);
  798 + if (ret) {
  799 + printf("%s lookup GPIO@1_19 failed ret = %d\n", __func__, ret);
  800 + return;
  801 + }
  802 +
  803 + ret = dm_gpio_request(&desc, "edp1_irq");
  804 + if (ret) {
  805 + printf("%s request edp1_irq failed ret = %d\n", __func__, ret);
  806 + return;
  807 + }
  808 +
  809 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  810 +
  811 + /* Turn on LVDS0_VDD Power */
  812 + ret = dm_gpio_lookup_name("GPIO1_05", &desc);
  813 + if (ret) {
  814 + printf("%s lookup GPIO@1_05 failed ret = %d\n", __func__, ret);
  815 + return;
  816 + }
  817 +
  818 + ret = dm_gpio_request(&desc, "lcd0_vdd_en");
  819 + if (ret) {
  820 + printf("%s request lcd0_vdd_en failed ret = %d\n", __func__, ret);
  821 + return;
  822 + }
  823 +
  824 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  825 + dm_gpio_set_value(&desc, 1);
  826 +
  827 + /* Turn on LVDS1_VDD Power */
  828 + ret = dm_gpio_lookup_name("GPIO1_11", &desc);
  829 + if (ret) {
  830 + printf("%s lookup GPIO@1_11 failed ret = %d\n", __func__, ret);
  831 + return;
  832 + }
  833 +
  834 + ret = dm_gpio_request(&desc, "lcd1_vdd_en");
  835 + if (ret) {
  836 + printf("%s request lcd1_vdd_en failed ret = %d\n", __func__, ret);
  837 + return;
  838 + }
  839 +
  840 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  841 + dm_gpio_set_value(&desc, 1);
  842 +
  843 + /* Turn on LVDS0 Backlight Power */
  844 + ret = dm_gpio_lookup_name("GPIO1_06", &desc);
  845 + if (ret) {
  846 + printf("%s lookup GPIO@1_06 failed ret = %d\n", __func__, ret);
  847 + return;
  848 + }
  849 +
  850 + ret = dm_gpio_request(&desc, "lcd0_bklt_en");
  851 + if (ret) {
  852 + printf("%s request lcd0_bklt_en failed ret = %d\n", __func__, ret);
  853 + return;
  854 + }
  855 +
  856 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  857 + dm_gpio_set_value(&desc, 1);
  858 +
  859 + /* Turn on LVDS1 Backlight Power */
  860 + ret = dm_gpio_lookup_name("GPIO1_07", &desc);
  861 + if (ret) {
  862 + printf("%s lookup GPIO@1_07 failed ret = %d\n", __func__, ret);
  863 + return;
  864 + }
  865 +
  866 + ret = dm_gpio_request(&desc, "lcd1_bklt_en");
  867 + if (ret) {
  868 + printf("%s request lcd1_bklt_en failed ret = %d\n", __func__, ret);
  869 + return;
  870 + }
  871 +
  872 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  873 + dm_gpio_set_value(&desc, 1);
  874 +
  875 + /* Set WDT_TIME_OUT# pin as Output High */
  876 + ret = dm_gpio_lookup_name("GPIO2_15", &desc);
  877 + if (ret) {
  878 + printf("%s lookup GPIO@2_15 failed ret = %d\n", __func__, ret);
  879 + return;
  880 + }
  881 +
  882 + ret = dm_gpio_request(&desc, "wdt_time_out");
  883 + if (ret) {
  884 + printf("%s request wdt_time_out failed ret = %d\n", __func__, ret);
  885 + return;
  886 + }
  887 +
  888 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  889 + dm_gpio_set_value(&desc, 1);
  890 +}
  891 +
  892 +int checkboard(void)
  893 +{
  894 + puts("Board: SMARC-iMX8QM CPU Module\n");
  895 +
  896 + print_bootinfo();
  897 +
  898 + return 0;
  899 +}
  900 +
  901 +#ifdef CONFIG_USB
  902 +
  903 +#ifdef CONFIG_USB_TCPC
  904 +struct gpio_desc type_sel_desc;
  905 +
  906 +static iomux_cfg_t ss_mux_gpio[] = {
  907 + SC_P_USB_SS3_TC3 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL),
  908 + SC_P_QSPI1A_SS0_B | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL),
  909 +};
  910 +
  911 +struct tcpc_port port;
  912 +struct tcpc_port_config port_config = {
  913 + .i2c_bus = 0,
  914 + .addr = 0x51,
  915 + .port_type = TYPEC_PORT_DFP,
  916 +};
  917 +
  918 +void ss_mux_select(enum typec_cc_polarity pol)
  919 +{
  920 + if (pol == TYPEC_POLARITY_CC1)
  921 + dm_gpio_set_value(&type_sel_desc, 0);
  922 + else
  923 + dm_gpio_set_value(&type_sel_desc, 1);
  924 +}
  925 +
  926 +static void setup_typec(void)
  927 +{
  928 + int ret;
  929 + struct gpio_desc typec_en_desc;
  930 +
  931 + imx8_iomux_setup_multiple_pads(ss_mux_gpio, ARRAY_SIZE(ss_mux_gpio));
  932 + ret = dm_gpio_lookup_name("GPIO4_6", &type_sel_desc);
  933 + if (ret) {
  934 + printf("%s lookup GPIO4_6 failed ret = %d\n", __func__, ret);
  935 + return;
  936 + }
  937 +
  938 + ret = dm_gpio_request(&type_sel_desc, "typec_sel");
  939 + if (ret) {
  940 + printf("%s request typec_sel failed ret = %d\n", __func__, ret);
  941 + return;
  942 + }
  943 +
  944 + dm_gpio_set_dir_flags(&type_sel_desc, GPIOD_IS_OUT);
  945 +
  946 + ret = dm_gpio_lookup_name("GPIO4_19", &typec_en_desc);
  947 + if (ret) {
  948 + printf("%s lookup GPIO4_19 failed ret = %d\n", __func__, ret);
  949 + return;
  950 + }
  951 +
  952 + ret = dm_gpio_request(&typec_en_desc, "typec_en");
  953 + if (ret) {
  954 + printf("%s request typec_en failed ret = %d\n", __func__, ret);
  955 + return;
  956 + }
  957 +
  958 + /* Enable SS MUX */
  959 + dm_gpio_set_dir_flags(&typec_en_desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
  960 +
  961 + tcpc_init(&port, port_config, &ss_mux_select);
  962 +}
  963 +#endif
  964 +
  965 +int board_usb_init(int index, enum usb_init_type init)
  966 +{
  967 + int ret = 0;
  968 +
  969 + if (index == 1) {
  970 + if (init == USB_INIT_HOST) {
  971 +#ifdef CONFIG_USB_TCPC
  972 + ret = tcpc_setup_dfp_mode(&port);
  973 +#endif
  974 +#ifdef CONFIG_USB_CDNS3_GADGET
  975 + } else {
  976 +#ifdef CONFIG_USB_TCPC
  977 + ret = tcpc_setup_ufp_mode(&port);
  978 + printf("%d setufp mode %d\n", index, ret);
  979 +#endif
  980 +#endif
  981 + }
  982 + }
  983 +
  984 + return ret;
  985 +
  986 +}
  987 +
  988 +int board_usb_cleanup(int index, enum usb_init_type init)
  989 +{
  990 + int ret = 0;
  991 +
  992 + if (index == 1) {
  993 + if (init == USB_INIT_HOST) {
  994 +#ifdef CONFIG_USB_TCPC
  995 + ret = tcpc_disable_src_vbus(&port);
  996 +#endif
  997 + }
  998 + }
  999 +
  1000 + return ret;
  1001 +}
  1002 +#endif
  1003 +
  1004 +int board_init(void)
  1005 +{
  1006 + board_gpio_init();
  1007 +
  1008 +
  1009 +#if defined(CONFIG_USB) && defined(CONFIG_USB_TCPC)
  1010 + setup_typec();
  1011 +#endif
  1012 +
  1013 +#ifdef CONFIG_SNVS_SEC_SC_AUTO
  1014 + {
  1015 + int ret = snvs_security_sc_init();
  1016 +
  1017 + if (ret)
  1018 + return ret;
  1019 + }
  1020 +#endif
  1021 +
  1022 + return 0;
  1023 +}
  1024 +
  1025 +/*
  1026 + * Board specific reset that is system reset.
  1027 + */
  1028 +void reset_cpu(ulong addr)
  1029 +{
  1030 + sc_pm_reboot(-1, SC_PM_RESET_TYPE_COLD);
  1031 + while(1);
  1032 +}
  1033 +
  1034 +#ifdef CONFIG_OF_BOARD_SETUP
  1035 +int ft_board_setup(void *blob, bd_t *bd)
  1036 +{
  1037 + return 0;
  1038 +}
  1039 +#endif
  1040 +
  1041 +int board_mmc_get_env_dev(int devno)
  1042 +{
  1043 + return devno;
  1044 +}
  1045 +
  1046 +int mmc_map_to_kernel_blk(int dev_no)
  1047 +{
  1048 + return dev_no;
  1049 +}
  1050 +
  1051 +extern uint32_t _end_ofs;
  1052 +int board_late_init(void)
  1053 +{
  1054 +
  1055 + puts("---------Embedian SMARC-iMX8QM------------\n");
  1056 + /* Read Module Information from on module EEPROM and pass
  1057 + * mac address to kernel
  1058 + */
  1059 + struct gpio_desc desc;
  1060 + struct udevice *dev;
  1061 + char bootmode = 0;
  1062 + int ret;
  1063 + u8 name[8];
  1064 + u8 serial[12];
  1065 + u8 revision[4];
  1066 + u8 mac[6];
  1067 + u8 mac1[6];
  1068 +
  1069 + ret = i2c_get_chip_for_busnum(3, 0x50, 2, &dev);
  1070 + if (ret) {
  1071 + debug("failed to get eeprom\n");
  1072 + return 0;
  1073 + }
  1074 +
  1075 + /* Board ID */
  1076 + ret = dm_i2c_read(dev, 0x4, name, 8);
  1077 + if (ret) {
  1078 + debug("failed to read board ID from EEPROM\n");
  1079 + return 0;
  1080 + }
  1081 + printf(" Board ID: %c%c%c%c%c%c%c%c\n",
  1082 + name[0], name[1], name[2], name[3], name[4], name[5], name[6], name[7]);
  1083 +
  1084 + /* Board Hardware Revision */
  1085 + ret = dm_i2c_read(dev, 0xc, revision, 4);
  1086 + if (ret) {
  1087 + debug("failed to read hardware revison from EEPROM\n");
  1088 + return 0;
  1089 + }
  1090 + printf(" Hardware Revision: %c%c%c%c\n",
  1091 + revision[0], revision[1], revision[2], revision[3]);
  1092 +
  1093 + /* Serial number */
  1094 + ret = dm_i2c_read(dev, 0x10, serial, 12);
  1095 + if (ret) {
  1096 + debug("failed to read srial number from EEPROM\n");
  1097 + return 0;
  1098 + }
  1099 + printf(" Serial Number#: %c%c%c%c%c%c%c%c%c%c%c%c\n",
  1100 + serial[0], serial[1], serial[2], serial[3], serial[4], serial[5], serial[6], serial[7], serial[8], serial[9], serial[10], serial[11]);
  1101 +
  1102 + /*MAC1 address*/
  1103 + ret = dm_i2c_read(dev, 0x3c, mac, 6);
  1104 + if (ret) {
  1105 + debug("failed to read eth0 mac address from EEPROM\n");
  1106 + return 0;
  1107 + }
  1108 +
  1109 + if (is_valid_ethaddr(mac))
  1110 + printf(" MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
  1111 + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  1112 + eth_env_set_enetaddr("ethaddr", mac);
  1113 +
  1114 + /* MAC2 address */
  1115 + ret = dm_i2c_read(dev, 0x42, mac1, 6);
  1116 + if (ret) {
  1117 + debug("failed to read eth1 mac address from EEPROM\n");
  1118 + return 0;
  1119 + }
  1120 +
  1121 + if (is_valid_ethaddr(mac1))
  1122 + printf(" MAC1 Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
  1123 + mac1[0], mac1[1], mac1[2], mac1[3], mac1[4], mac1[5]);
  1124 + eth_env_set_enetaddr("eth1addr", mac1);
  1125 + puts("-----------------------------------------\n");
  1126 +
  1127 +#ifndef CONFIG_ANDROID_AUTO_SUPPORT
  1128 + build_info();
  1129 +#endif
  1130 +
  1131 +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
  1132 + env_set("board_name", "SMARC");
  1133 + env_set("board_rev", "iMX8QM");
  1134 +#endif
  1135 +
  1136 + env_set("sec_boot", "no");
  1137 +#ifdef CONFIG_AHAB_BOOT
  1138 + env_set("sec_boot", "yes");
  1139 +#endif
  1140 +
  1141 +#ifdef CONFIG_ENV_IS_IN_MMC
  1142 + board_late_mmc_env_init();
  1143 +#endif
  1144 +
  1145 +#if defined(CONFIG_IMX_LOAD_HDMI_FIMRWARE_RX) || defined(CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX)
  1146 + char *end_of_uboot;
  1147 + char command[256];
  1148 + end_of_uboot = (char *)(ulong)(CONFIG_SYS_TEXT_BASE + _end_ofs + fdt_totalsize(gd->fdt_blob));
  1149 + end_of_uboot += 9;
  1150 +
  1151 + /* load hdmitxfw.bin and hdmirxfw.bin*/
  1152 + memcpy((void *)IMX_HDMI_FIRMWARE_LOAD_ADDR, end_of_uboot,
  1153 + IMX_HDMITX_FIRMWARE_SIZE + IMX_HDMIRX_FIRMWARE_SIZE);
  1154 +
  1155 +#ifdef CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX
  1156 + sprintf(command, "hdp load 0x%x", IMX_HDMI_FIRMWARE_LOAD_ADDR);
  1157 + run_command(command, 0);
  1158 +#endif
  1159 +#ifdef CONFIG_IMX_LOAD_HDMI_FIMRWARE_RX
  1160 + sprintf(command, "hdprx load 0x%x",
  1161 + IMX_HDMI_FIRMWARE_LOAD_ADDR + IMX_HDMITX_FIRMWARE_SIZE);
  1162 + run_command(command, 0);
  1163 +#endif
  1164 +#endif /* CONFIG_IMX_LOAD_HDMI_FIMRWARE_RX || CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX */
  1165 +
  1166 + /* BOOT_SEL0 */
  1167 + ret = dm_gpio_lookup_name("GPIO3_18", &desc);
  1168 + if (ret) {
  1169 + printf("%s lookup GPIO@3_18 failed ret = %d\n", __func__, ret);
  1170 + return 0;
  1171 + }
  1172 +
  1173 + ret = dm_gpio_request(&desc, "bootsel0");
  1174 + if (ret) {
  1175 + printf("%s request bootsel0 failed ret = %d\n", __func__, ret);
  1176 + return 0;
  1177 + }
  1178 +
  1179 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  1180 + bootmode |= (dm_gpio_get_value(&desc) ? 1 : 0) << 0;
  1181 +
  1182 + /* BOOT_SEL1 */
  1183 + ret = dm_gpio_lookup_name("GPIO3_19", &desc);
  1184 + if (ret) {
  1185 + printf("%s lookup GPIO@3_19 failed ret = %d\n", __func__, ret);
  1186 + return 0;
  1187 + }
  1188 +
  1189 + ret = dm_gpio_request(&desc, "bootsel1");
  1190 + if (ret) {
  1191 + printf("%s request bootsel1 failed ret = %d\n", __func__, ret);
  1192 + return 0;
  1193 + }
  1194 +
  1195 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  1196 + bootmode |= (dm_gpio_get_value(&desc) ? 1 : 0) << 1;
  1197 +
  1198 + /* BOOT_SEL2 */
  1199 + ret = dm_gpio_lookup_name("GPIO3_20", &desc);
  1200 + if (ret) {
  1201 + printf("%s lookup GPIO@3_20 failed ret = %d\n", __func__, ret);
  1202 + return 0;
  1203 + }
  1204 +
  1205 + ret = dm_gpio_request(&desc, "bootsel2");
  1206 + if (ret) {
  1207 + printf("%s request bootsel2 failed ret = %d\n", __func__, ret);
  1208 + return 0;
  1209 + }
  1210 +
  1211 + dm_gpio_set_dir_flags(&desc, GPIOD_IS_IN);
  1212 + bootmode |= (dm_gpio_get_value(&desc) ? 1 : 0) << 2;
  1213 +
  1214 + if (bootmode == 0) {
  1215 + puts("BOOT_SEL Detected: OFF OFF OFF, Boot from Carrier SATA is not supported...\n");
  1216 + hang();
  1217 + } else if (bootmode == 4) {
  1218 + puts("BOOT_SEL Detected: OFF OFF ON, Load Image from USB0...\n");
  1219 + env_set_ulong("usb dev", 1);
  1220 + env_set("bootcmd", "usb start; run loadusbbootenv; run importusbbootenv; loadusbimage; run usbboot;");
  1221 + } else if (bootmode == 2) {
  1222 + puts("BOOT_SEL Detected: OFF ON OFF, Boot from Carrier eSPI is not supported...\n");
  1223 + hang();
  1224 + } else if (bootmode == 1) {
  1225 + puts("BOOT_SEL Detected: ON OFF OFF, Load Image from Carrier SD Card...\n");
  1226 + env_set_ulong("mmcdev", 1);
  1227 + env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run loadimage; run mmcboot;");
  1228 + } else if (bootmode == 6) {
  1229 + puts("BOOT_SEL Detected: OFF ON ON, Load Image from Module eMMC Flash...\n");
  1230 + env_set_ulong("mmcdev", 0);
  1231 + env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run loadimage; run mmcboot;");
  1232 + } else if (bootmode == 5) {
  1233 + puts("BOOT_SEL Detected: ON OFF ON, Load zImage from GBE...\n");
  1234 + env_set("bootcmd", "run netboot;");
  1235 + } else if (bootmode == 3) {
  1236 + puts("BOOT_SEL Detected: ON ON OFF, Boot from Carrier SPI is not supported...\n");
  1237 + hang();
  1238 + } else if (bootmode == 7) {
  1239 + puts("BOOT_SEL Detected: ON ON ON, Boot from Module SPI is not supported...\n");
  1240 + hang();
  1241 + } else {
  1242 + puts("unsupported boot devices\n");
  1243 + hang();
  1244 + }
  1245 +
  1246 + return 0;
  1247 +}
  1248 +
  1249 +#ifdef CONFIG_FSL_FASTBOOT
  1250 +#ifdef CONFIG_ANDROID_RECOVERY
  1251 +int is_recovery_key_pressing(void)
  1252 +{
  1253 + return 0; /*TODO*/
  1254 +}
  1255 +#endif /*CONFIG_ANDROID_RECOVERY*/
  1256 +#endif /*CONFIG_FSL_FASTBOOT*/
  1257 +
  1258 +#ifdef CONFIG_ANDROID_SUPPORT
  1259 +bool is_power_key_pressed(void) {
  1260 + sc_bool_t status = SC_FALSE;
  1261 +
  1262 + sc_misc_get_button_status(-1, &status);
  1263 + return (bool)status;
  1264 +}
  1265 +#endif
board/embedian/smarcimx8qm/spl.c
  1 +/*
  2 + * Copyright 2018 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +#include <common.h>
  8 +#include <dm.h>
  9 +#include <spl.h>
  10 +#include <dm/uclass.h>
  11 +#include <dm/device.h>
  12 +#include <dm/uclass-internal.h>
  13 +#include <dm/device-internal.h>
  14 +#include <dm/lists.h>
  15 +#include <bootm.h>
  16 +
  17 +DECLARE_GLOBAL_DATA_PTR;
  18 +
  19 +void spl_board_init(void)
  20 +{
  21 + struct udevice *dev;
  22 +
  23 + uclass_find_first_device(UCLASS_MISC, &dev);
  24 +
  25 + for (; dev; uclass_find_next_device(&dev)) {
  26 + if (device_probe(dev))
  27 + continue;
  28 + }
  29 +
  30 + board_early_init_f();
  31 +
  32 + timer_init();
  33 +
  34 +#ifdef CONFIG_SPL_SERIAL_SUPPORT
  35 + preloader_console_init();
  36 +
  37 + puts("Normal Boot\n");
  38 +#endif
  39 +
  40 +}
  41 +
  42 +#ifdef CONFIG_SPL_LOAD_FIT
  43 +int board_fit_config_name_match(const char *name)
  44 +{
  45 + /* Just empty function now - can't decide what to choose */
  46 + debug("%s: %s\n", __func__, name);
  47 +
  48 + return 0;
  49 +}
  50 +#endif
  51 +
  52 +void board_init_f(ulong dummy)
  53 +{
  54 + /* Clear the BSS. */
  55 + memset(__bss_start, 0, __bss_end - __bss_start);
  56 +
  57 + arch_cpu_init();
  58 +
  59 + board_init_r(NULL, 0);
  60 +}
board/embedian/smarcimx8qm/uboot-container.cfg
  1 +/* SPDX-License-Identifier: GPL-2.0+ */
  2 +/*
  3 + * Copyright 2019 NXP
  4 + */
  5 +
  6 +#define __ASSEMBLY__
  7 +
  8 +/* This file is to create a container image could be loaded by SPL */
  9 +BOOT_FROM SD 0x400
  10 +SOC_TYPE IMX8QM
  11 +CONTAINER
  12 +IMAGE A35 bl31.bin 0x80000000
  13 +IMAGE A35 u-boot.bin CONFIG_SYS_TEXT_BASE
configs/smarcimx8qm_4g_ser0_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,4GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER0=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
configs/smarcimx8qm_4g_ser1_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,4GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER1=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
configs/smarcimx8qm_4g_ser2_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,4GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER2=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
configs/smarcimx8qm_4g_ser3_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,4GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER3=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
configs/smarcimx8qm_8g_ser0_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,8GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER0=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
configs/smarcimx8qm_8g_ser1_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,8GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER1=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
configs/smarcimx8qm_8g_ser2_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,8GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER2=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
configs/smarcimx8qm_8g_ser3_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_SPL_SYS_ICACHE_OFF=y
  3 +CONFIG_SPL_SYS_DCACHE_OFF=y
  4 +CONFIG_ARCH_IMX8=y
  5 +CONFIG_SYS_TEXT_BASE=0x80020000
  6 +CONFIG_SPL_GPIO_SUPPORT=y
  7 +CONFIG_SPL_LIBCOMMON_SUPPORT=y
  8 +CONFIG_SPL_LIBGENERIC_SUPPORT=y
  9 +CONFIG_SYS_MALLOC_F_LEN=0x8000
  10 +CONFIG_ENV_SIZE=0x2000
  11 +CONFIG_ENV_OFFSET=0x400000
  12 +CONFIG_DM_GPIO=y
  13 +CONFIG_SPL_LOAD_IMX_CONTAINER=y
  14 +CONFIG_IMX_CONTAINER_CFG="board/embedian/smarcimx8qm/uboot-container.cfg,8GB_LPDDR4"
  15 +CONFIG_TARGET_SMARCIMX8QM=y
  16 +CONFIG_SPL_MMC_SUPPORT=y
  17 +CONFIG_SPL_EFI_PARTITION=n
  18 +CONFIG_SPL_DOS_PARTITION=n
  19 +CONFIG_SPL_DM_SEQ_ALIAS=y
  20 +CONFIG_SPL_SERIAL_SUPPORT=y
  21 +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  22 +CONFIG_USE_TINY_PRINTF=y
  23 +CONFIG_NR_DRAM_BANKS=4
  24 +CONFIG_SPL=y
  25 +CONFIG_PANIC_HANG=y
  26 +CONFIG_SPL_TEXT_BASE=0x100000
  27 +CONFIG_OF_SYSTEM_SETUP=y
  28 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcimx8qm/imximage.cfg"
  29 +CONFIG_CONSOLE_SER3=y
  30 +CONFIG_BOOTDELAY=1
  31 +CONFIG_LOG=y
  32 +CONFIG_SPL_BOARD_INIT=y
  33 +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
  34 +CONFIG_SPL_SEPARATE_BSS=y
  35 +CONFIG_SPL_POWER_SUPPORT=y
  36 +CONFIG_SPL_POWER_DOMAIN=y
  37 +CONFIG_SPL_WATCHDOG_SUPPORT=y
  38 +CONFIG_HUSH_PARSER=y
  39 +CONFIG_CMD_CPU=y
  40 +CONFIG_SYS_PROMPT="u-boot$ "
  41 +# CONFIG_BOOTM_NETBSD is not set
  42 +CONFIG_CMD_IMPORTENV=y
  43 +CONFIG_CMD_CLK=y
  44 +CONFIG_CMD_DM=y
  45 +CONFIG_CMD_GPIO=y
  46 +CONFIG_CMD_I2C=y
  47 +CONFIG_CMD_MMC=y
  48 +CONFIG_CMD_DHCP=y
  49 +CONFIG_CMD_MII=y
  50 +CONFIG_CMD_PING=y
  51 +CONFIG_CMD_CACHE=y
  52 +CONFIG_CMD_EXT2=y
  53 +CONFIG_CMD_EXT4=y
  54 +CONFIG_CMD_EXT4_WRITE=y
  55 +CONFIG_CMD_FAT=y
  56 +CONFIG_CMD_GPT=y
  57 +CONFIG_CMD_TIME=y
  58 +CONFIG_SPL_OF_CONTROL=y
  59 +CONFIG_DEFAULT_DEVICE_TREE="fsl-smarcimx8qm"
  60 +CONFIG_DEFAULT_FDT_FILE="imx8qm-smarc.dtb"
  61 +CONFIG_ENV_IS_IN_MMC=y
  62 +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  63 +CONFIG_NET_RANDOM_ETHADDR=y
  64 +CONFIG_SPL_DM=y
  65 +CONFIG_SPL_CLK=y
  66 +CONFIG_CLK_IMX8=y
  67 +CONFIG_CPU=y
  68 +CONFIG_MXC_GPIO=y
  69 +#CONFIG_DM_PCA953X=y
  70 +CONFIG_DM_I2C=y
  71 +CONFIG_SYS_I2C_IMX_LPI2C=y
  72 +CONFIG_I2C_MUX=y
  73 +#CONFIG_I2C_MUX_PCA954x=y
  74 +CONFIG_MISC=y
  75 +CONFIG_DM_MMC=y
  76 +CONFIG_SUPPORT_EMMC_BOOT=y
  77 +CONFIG_FSL_USDHC=y
  78 +CONFIG_MMC_IO_VOLTAGE=y
  79 +CONFIG_MMC_UHS_SUPPORT=y
  80 +CONFIG_MMC_HS400_SUPPORT=y
  81 +CONFIG_EFI_PARTITION=y
  82 +CONFIG_PHYLIB=y
  83 +CONFIG_PHY_ADDR_ENABLE=y
  84 +CONFIG_PHY_ATHEROS=y
  85 +CONFIG_DM_ETH=y
  86 +CONFIG_PHY_GIGE=y
  87 +CONFIG_FEC_MXC_SHARE_MDIO=y
  88 +CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
  89 +CONFIG_FEC_MXC=y
  90 +CONFIG_MII=y
  91 +CONFIG_PINCTRL=y
  92 +CONFIG_SPL_PINCTRL=y
  93 +CONFIG_PINCTRL_IMX8=y
  94 +CONFIG_POWER_DOMAIN=y
  95 +CONFIG_IMX8_POWER_DOMAIN=y
  96 +CONFIG_DM_REGULATOR=y
  97 +CONFIG_SPL_DM_REGULATOR=y
  98 +CONFIG_DM_REGULATOR_FIXED=y
  99 +CONFIG_DM_REGULATOR_GPIO=y
  100 +CONFIG_SPL_DM_REGULATOR_FIXED=y
  101 +CONFIG_DM_SERIAL=y
  102 +CONFIG_FSL_LPUART=y
  103 +CONFIG_SPL_TINY_MEMSET=y
  104 +# CONFIG_EFI_LOADER is not set
  105 +
  106 +CONFIG_CMD_FUSE=y
  107 +CONFIG_CMD_MEMTEST=y
  108 +
  109 +CONFIG_IMX_BOOTAUX=y
  110 +
  111 +CONFIG_DM_THERMAL=y
  112 +CONFIG_IMX_SCU_THERMAL=y
  113 +CONFIG_SPI=y
  114 +CONFIG_FSL_FSPI=y
  115 +CONFIG_DM_SPI=y
  116 +CONFIG_DM_SPI_FLASH=y
  117 +CONFIG_SPI_FLASH=y
  118 +CONFIG_SPI_FLASH_MACRONIX=y
  119 +CONFIG_CMD_SF=y
  120 +CONFIG_SF_DEFAULT_BUS=0
  121 +CONFIG_SF_DEFAULT_CS=0
  122 +CONFIG_SF_DEFAULT_SPEED=40000000
  123 +CONFIG_SF_DEFAULT_MODE=0
  124 +
  125 +CONFIG_USB_XHCI_HCD=y
  126 +CONFIG_USB_XHCI_IMX8=y
  127 +CONFIG_DM_USB=y
  128 +CONFIG_DM_USB_GADGET=y
  129 +CONFIG_SPL_DM_USB_GADGET=y
  130 +CONFIG_USB=y
  131 +#CONFIG_USB_TCPC=y
  132 +CONFIG_USB_GADGET=y
  133 +CONFIG_CI_UDC=y
  134 +CONFIG_USB_GADGET_DOWNLOAD=y
  135 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  136 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  137 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  138 +CONFIG_USB_CDNS3=y
  139 +CONFIG_USB_CDNS3_GADGET=y
  140 +CONFIG_USB_GADGET_DUALSPEED=y
  141 +CONFIG_CDNS3_USB_PHY=y
  142 +CONFIG_PHY=y
  143 +CONFIG_SPL_PHY=y
  144 +
  145 +CONFIG_SPL_USB_GADGET=y
  146 +CONFIG_SPL_USB_SDP_SUPPORT=y
  147 +CONFIG_SPL_SDP_USB_DEV=1
  148 +CONFIG_SDP_LOADADDR=0x80400000
  149 +
  150 +CONFIG_FASTBOOT=y
  151 +CONFIG_USB_FUNCTION_FASTBOOT=y
  152 +CONFIG_CMD_FASTBOOT=y
  153 +CONFIG_ANDROID_BOOT_IMAGE=y
  154 +CONFIG_FASTBOOT_UUU_SUPPORT=y
  155 +CONFIG_FASTBOOT_BUF_ADDR=0x82800000
  156 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  157 +CONFIG_FASTBOOT_FLASH=y
  158 +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
  159 +CONFIG_FASTBOOT_USB_DEV=1
  160 +
  161 +CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
  162 +CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
  163 +
  164 +CONFIG_REGMAP=y
  165 +CONFIG_SYSCON=y
  166 +CONFIG_AHCI=y
  167 +CONFIG_IMX_AHCI=y
  168 +CONFIG_DM_SCSI=y
  169 +CONFIG_SCSI=y
  170 +CONFIG_CMD_SCSI=y
  171 +
  172 +CONFIG_PCI=y
  173 +CONFIG_DM_PCI=y
  174 +
  175 +CONFIG_USB_PORT_AUTO=y
  176 +
  177 +CONFIG_SNVS_SEC_SC=y
  178 +
  179 +CONFIG_VIDEO_IMX_HDP_LOAD=y
  180 +CONFIG_OF_LIBFDT_OVERLAY=y
  181 +
  182 +CONFIG_VIDEO_IMXDPUV1=y
  183 +CONFIG_VIDEO_IMX8_LVDS=y
  184 +CONFIG_SYS_WHITE_ON_BLACK=y
drivers/clk/imx/clk-imx8qm.c
... ... @@ -40,6 +40,7 @@
40 40 CLK_4( IMX8QM_UART1_DIV, "UART1_DIV", SC_R_UART_1, SC_PM_CLK_PER ),
41 41 CLK_4( IMX8QM_UART2_DIV, "UART2_DIV", SC_R_UART_2, SC_PM_CLK_PER ),
42 42 CLK_4( IMX8QM_UART3_DIV, "UART3_DIV", SC_R_UART_3, SC_PM_CLK_PER ),
  43 + CLK_4( IMX8QM_UART4_DIV, "UART4_DIV", SC_R_UART_4, SC_PM_CLK_PER ),
43 44 CLK_4( IMX8QM_SDHC0_DIV, "SDHC0_DIV", SC_R_SDHC_0, SC_PM_CLK_PER ),
44 45 CLK_4( IMX8QM_SDHC1_DIV, "SDHC1_DIV", SC_R_SDHC_1, SC_PM_CLK_PER ),
45 46 CLK_4( IMX8QM_SDHC2_DIV, "SDHC2_DIV", SC_R_SDHC_2, SC_PM_CLK_PER ),
... ... @@ -139,7 +140,8 @@
139 140 CLK_5( IMX8QM_UART2_IPG_CLK, "UART2_IPG", 16, LPUART_2_LPCG, IMX8QM_IPG_DMA_CLK_ROOT ),
140 141 CLK_5( IMX8QM_UART3_CLK, "UART3_CLK", 0, LPUART_3_LPCG, IMX8QM_UART3_DIV ),
141 142 CLK_5( IMX8QM_UART3_IPG_CLK, "UART3_IPG", 16, LPUART_3_LPCG, IMX8QM_IPG_DMA_CLK_ROOT ),
142   -
  143 + CLK_5( IMX8QM_UART4_CLK, "UART4_CLK", 0, LPUART_4_LPCG, IMX8QM_UART4_DIV ),
  144 + CLK_5( IMX8QM_UART4_IPG_CLK, "UART4_IPG", 16, LPUART_4_LPCG, IMX8QM_IPG_DMA_CLK_ROOT ),
143 145 CLK_5( IMX8QM_SDHC0_CLK, "SDHC0_CLK", 0, USDHC_0_LPCG, IMX8QM_SDHC0_DIV ),
144 146 CLK_5( IMX8QM_SDHC0_IPG_CLK, "SDHC0_IPG", 16, USDHC_0_LPCG, IMX8QM_IPG_CONN_CLK_ROOT ),
145 147 CLK_5( IMX8QM_SDHC0_AHB_CLK, "SDHC0_AHB", 20, USDHC_0_LPCG, IMX8QM_AHB_CONN_CLK_ROOT ),
drivers/serial/Kconfig
... ... @@ -763,6 +763,26 @@
763 763 If you have a machine based on a Marvell XScale PXA2xx CPU you
764 764 can enable its onboard serial ports by enabling this option.
765 765  
  766 +config CONSOLE_SER0
  767 + bool "SMARC modules default console serial output port"
  768 + help
  769 + Select this to enable a debug UART port from SER0 of SMARC Modules.
  770 +
  771 +config CONSOLE_SER1
  772 + bool "SMARC modules default console serial output port"
  773 + help
  774 + Select this to enable a debug UART port from SER1 of SMARC Modules.
  775 +
  776 +config CONSOLE_SER2
  777 + bool "SMARC modules default console serial output port"
  778 + help
  779 + Select this to enable a debug UART port from SER2 of SMARC Modules.
  780 +
  781 +config CONSOLE_SER3
  782 + bool "SMARC modules default console serial output port"
  783 + help
  784 + Select this to enable a debug UART port from SER3 of SMARC Modules.
  785 +
766 786 config SIFIVE_SERIAL
767 787 bool "SiFive UART support"
768 788 depends on DM_SERIAL
include/configs/smarcimx8qm.h
  1 +/* SPDX-License-Identifier: GPL-2.0+ */
  2 +/*
  3 + * Copyright 2018 NXP
  4 + */
  5 +
  6 +#ifndef __SMARCIMX8QM_H
  7 +#define __SMARCIMX8QM_H
  8 +
  9 +#include <linux/sizes.h>
  10 +#include <asm/arch/imx-regs.h>
  11 +#include "imx_env.h"
  12 +
  13 +#ifdef CONFIG_SPL_BUILD
  14 +#define CONFIG_SPL_MAX_SIZE (192 * 1024)
  15 +#define CONFIG_SYS_MONITOR_LEN (1024 * 1024)
  16 +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
  17 +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x1040 /* (flash.bin_offset + 2Mb)/sector_size */
  18 +
  19 +/*
  20 + * 0x08081000 - 0x08180FFF is for m4_0 xip image,
  21 + * 0x08181000 - 0x008280FFF is for m4_1 xip image
  22 + * So 3rd container image may start from 0x8281000
  23 + */
  24 +#define CONFIG_SYS_UBOOT_BASE 0x08281000
  25 +#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 0
  26 +
  27 +#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.lds"
  28 +#define CONFIG_SPL_STACK 0x013fff0
  29 +#define CONFIG_SPL_BSS_START_ADDR 0x00130000
  30 +#define CONFIG_SPL_BSS_MAX_SIZE 0x1000 /* 4 KB */
  31 +#define CONFIG_SYS_SPL_MALLOC_START 0x82200000
  32 +#define CONFIG_SYS_SPL_MALLOC_SIZE 0x80000 /* 512 KB */
  33 +#ifdef CONFIG_CONSOLE_SER0
  34 +#define CONFIG_SERIAL_LPUART_BASE 0x5a060000 /* lpuart0 */
  35 +#endif
  36 +#ifdef CONFIG_CONSOLE_SER1
  37 +#define CONFIG_SERIAL_LPUART_BASE 0x5a090000 /* lpuart3 */
  38 +#endif
  39 +#ifdef CONFIG_CONSOLE_SER2
  40 +#define CONFIG_SERIAL_LPUART_BASE 0x5a070000 /* lpuart1 */
  41 +#endif
  42 +#ifdef CONFIG_CONSOLE_SER3
  43 +#define CONFIG_SERIAL_LPUART_BASE 0x5a0a0000 /* lpuart4 */
  44 +#endif
  45 +#define CONFIG_MALLOC_F_ADDR 0x00138000
  46 +
  47 +#define CONFIG_SPL_RAW_IMAGE_ARM_TRUSTED_FIRMWARE
  48 +
  49 +#define CONFIG_SPL_ABORT_ON_RAW_IMAGE
  50 +
  51 +#endif
  52 +
  53 +#define CONFIG_REMAKE_ELF
  54 +
  55 +#define CONFIG_BOARD_EARLY_INIT_F
  56 +
  57 +#define CONFIG_CMD_READ
  58 +
  59 +/* Flat Device Tree Definitions */
  60 +#define CONFIG_OF_BOARD_SETUP
  61 +
  62 +#undef CONFIG_CMD_EXPORTENV
  63 +/*#undef CONFIG_CMD_IMPORTENV*/
  64 +#undef CONFIG_CMD_IMLS
  65 +
  66 +#undef CONFIG_CMD_CRC32
  67 +
  68 +#define CONFIG_SYS_FSL_ESDHC_ADDR 0
  69 +#define USDHC1_BASE_ADDR 0x5B010000
  70 +#define USDHC2_BASE_ADDR 0x5B020000
  71 +
  72 +#define CONFIG_ENV_OVERWRITE
  73 +
  74 +#define CONFIG_PCIE_IMX
  75 +#define CONFIG_CMD_PCI
  76 +#define CONFIG_PCI_SCAN_SHOW
  77 +
  78 +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
  79 +
  80 +#define CONFIG_FEC_XCV_TYPE RGMII
  81 +#define FEC_QUIRK_ENET_MAC
  82 +#define PHY_ANEG_TIMEOUT 20000
  83 +
  84 +/* ENET0 connects AR8031 on CPU board, ENET1 connects to base board */
  85 +#define CONFIG_FEC_ENET_DEV 0
  86 +
  87 +#if (CONFIG_FEC_ENET_DEV == 0)
  88 +#define IMX_FEC_BASE 0x5B040000
  89 +#define CONFIG_FEC_MXC_PHYADDR 0x6
  90 +#define CONFIG_ETHPRIME "eth0"
  91 +#elif (CONFIG_FEC_ENET_DEV == 1)
  92 +#define IMX_FEC_BASE 0x5B050000
  93 +#define CONFIG_FEC_MXC_PHYADDR 0x7
  94 +#define CONFIG_ETHPRIME "eth1"
  95 +#endif
  96 +
  97 +#ifdef CONFIG_AHAB_BOOT
  98 +#define AHAB_ENV "sec_boot=yes\0"
  99 +#else
  100 +#define AHAB_ENV "sec_boot=no\0"
  101 +#endif
  102 +
  103 +
  104 +#define JAILHOUSE_ENV \
  105 + "jh_mmcboot=" \
  106 + "setenv fdt_file imx8qm-smarc.dtb;"\
  107 + "setenv boot_os 'scu_rm dtb ${fdt_addr}; booti ${loadaddr} - ${fdt_addr};'; " \
  108 + "run mmcboot; \0" \
  109 + "jh_netboot=" \
  110 + "setenv fdt_file imx8qm-smarc.dtb;"\
  111 + "setenv boot_os 'scu_rm dtb ${fdt_addr}; booti ${loadaddr} - ${fdt_addr};'; " \
  112 + "run netboot; \0"
  113 +
  114 +#define XEN_BOOT_ENV \
  115 + "domu-android-auto=no\0" \
  116 + "xenhyper_bootargs=console=dtuart dom0_mem=2048M dom0_max_vcpus=2 dom0_vcpus_pin=true hmp-unsafe=true\0" \
  117 + "xenlinux_bootargs= \0" \
  118 + "xenlinux_console=hvc0 earlycon=xen\0" \
  119 + "xenlinux_addr=0x9e000000\0" \
  120 + "dom0fdt_file=imx8qm-mek-dom0.dtb\0" \
  121 + "xenboot_common=" \
  122 + "${get_cmd} ${loadaddr} xen;" \
  123 + "${get_cmd} ${fdt_addr} ${dom0fdt_file};" \
  124 + "if ${get_cmd} ${hdp_addr} ${hdp_file}; then; hdp load ${hdp_addr}; fi;" \
  125 + "${get_cmd} ${xenlinux_addr} ${image};" \
  126 + "fdt addr ${fdt_addr};" \
  127 + "fdt resize 256;" \
  128 + "fdt set /chosen/module@0 reg <0x00000000 ${xenlinux_addr} 0x00000000 0x${filesize}>; " \
  129 + "fdt set /chosen/module@0 bootargs \"${bootargs} ${xenlinux_bootargs}\"; " \
  130 + "if test ${domu-android-auto} = yes; then; " \
  131 + "fdt set /domu/doma android-auto <1>;" \
  132 + "fdt rm /gpio@5d090000 power-domains;" \
  133 + "fi;" \
  134 + "setenv bootargs ${xenhyper_bootargs};" \
  135 + "booti ${loadaddr} - ${fdt_addr};" \
  136 + "\0" \
  137 + "xennetboot=" \
  138 + "setenv get_cmd dhcp;" \
  139 + "setenv console ${xenlinux_console};" \
  140 + "run netargs;" \
  141 + "run xenboot_common;" \
  142 + "\0" \
  143 + "xenmmcboot=" \
  144 + "setenv get_cmd \"fatload mmc ${mmcdev}:${mmcpart}\";" \
  145 + "setenv console ${xenlinux_console};" \
  146 + "run mmcargs;" \
  147 + "run xenboot_common;" \
  148 + "\0" \
  149 +/* Boot M4 */
  150 +#define M4_BOOT_ENV \
  151 + "m4_0_image=m4_0.bin\0" \
  152 + "m4_1_image=m4_1.bin\0" \
  153 + "loadm4image_0=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4_0_image}\0" \
  154 + "loadm4image_1=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4_1_image}\0" \
  155 + "m4boot_0=run loadm4image_0; dcache flush; bootaux ${loadaddr} 0\0" \
  156 + "m4boot_1=run loadm4image_1; dcache flush; bootaux ${loadaddr} 1\0" \
  157 +
  158 +#ifdef CONFIG_NAND_BOOT
  159 +#define MFG_NAND_PARTITION "mtdparts=gpmi-nand:128m(boot),32m(kernel),16m(dtb),8m(misc),-(rootfs) "
  160 +#else
  161 +#define MFG_NAND_PARTITION ""
  162 +#endif
  163 +
  164 +#define CONFIG_MFG_ENV_SETTINGS \
  165 + CONFIG_MFG_ENV_SETTINGS_DEFAULT \
  166 + "initrd_addr=0x83100000\0" \
  167 + "initrd_high=0xffffffffffffffff\0" \
  168 + "emmc_dev=0\0" \
  169 + "sd_dev=1\0" \
  170 +
  171 +/* Initial environment variables */
  172 +#define CONFIG_EXTRA_ENV_SETTINGS \
  173 + CONFIG_MFG_ENV_SETTINGS \
  174 + M4_BOOT_ENV \
  175 + XEN_BOOT_ENV \
  176 + JAILHOUSE_ENV\
  177 + AHAB_ENV \
  178 + "script=boot.scr\0" \
  179 + "image=Image\0" \
  180 + "splashimage=0x9e000000\0" \
  181 + "console=ttyLP1\0" \
  182 + "fdt_addr=0x83000000\0" \
  183 + "fdt_high=0xffffffffffffffff\0" \
  184 + "env_addr=0x83200000\0" \
  185 + "cntr_addr=0x98000000\0" \
  186 + "cntr_file=os_cntr_signed.bin\0" \
  187 + "boot_fdt=try\0" \
  188 + "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
  189 + "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
  190 + "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
  191 + "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
  192 + "usbroot=/dev/sda2 rootwait ro\0" \
  193 + "mmcrootfstype=ext4 \0" \
  194 + "loadbootenv=fatload mmc ${mmcdev}:${mmcpart} ${env_addr} uEnv.txt\0" \
  195 + "loadusbbootenv=fatload usb 0:1 ${env_addr} uEnv.txt\0" \
  196 + "mmcautodetect=yes\0" \
  197 + "importbootenv=echo Importing environment from mmc (uEnv.txt)...; " \
  198 + "env import -t ${env_addr} $filesize\0" \
  199 + "importusbbootenv=echo Importing environment from USB (uEnv.txt)...; " \
  200 + "env import -t $env_addr $filesize\0" \
  201 + "mmcargs=setenv bootargs console=${console} " \
  202 + "${optargs} rootfstype=${mmcrootfstype} root=${mmcroot}\0 " \
  203 + "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
  204 + "bootscript=echo Running bootscript from mmc ...; " \
  205 + "source\0" \
  206 + "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
  207 + "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} /dtbs/${fdt_file}\0" \
  208 + "loadusbfdt=fatload usb 0:1 ${fdt_addr} /dtbs/${fdt_file}\0" \
  209 + "hdp_addr=0x9c000000\0" \
  210 + "hdprx_addr=0x9c800000\0" \
  211 + "hdp_file=hdmitxfw.bin\0" \
  212 + "hdprx_file=hdmirxfw.bin\0" \
  213 + "loadhdp=fatload mmc ${mmcdev}:${mmcpart} ${hdp_addr} ${hdp_file}\0" \
  214 + "loadhdprx=fatload mmc ${mmcdev}:${mmcpart} ${hdprx_addr} ${hdprx_file}\0" \
  215 + "boot_os=booti ${loadaddr} - ${fdt_addr};\0" \
  216 + "loadcntr=fatload mmc ${mmcdev}:${mmcpart} ${cntr_addr} ${cntr_file}\0" \
  217 + "auth_os=auth_cntr ${cntr_addr}\0" \
  218 + "mmcboot=echo Booting from mmc ...; " \
  219 + "if run loadhdp; then; hdp load ${hdp_addr}; fi;" \
  220 + "run mmcargs; " \
  221 + "if test ${sec_boot} = yes; then " \
  222 + "if run auth_os; then " \
  223 + "run boot_os; " \
  224 + "else " \
  225 + "echo ERR: failed to authenticate; " \
  226 + "fi; " \
  227 + "else " \
  228 + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  229 + "if run loadfdt; then " \
  230 + "run boot_os; " \
  231 + "else " \
  232 + "echo WARN: Cannot load the DT; " \
  233 + "fi; " \
  234 + "else " \
  235 + "echo wait for boot; " \
  236 + "fi;" \
  237 + "fi;\0" \
  238 + "usbboot=echo Booting from usb ...; " \
  239 + "if run loadhdp; then; hdp load ${hdp_addr}; fi;" \
  240 + "run mmcargs; " \
  241 + "if test ${sec_boot} = yes; then " \
  242 + "if run auth_os; then " \
  243 + "run boot_os; " \
  244 + "else " \
  245 + "echo ERR: failed to authenticate; " \
  246 + "fi; " \
  247 + "else " \
  248 + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  249 + "if run loadusbfdt; then " \
  250 + "run boot_os; " \
  251 + "else " \
  252 + "echo WARN: Cannot load the DT; " \
  253 + "fi; " \
  254 + "else " \
  255 + "echo wait for boot; " \
  256 + "fi;" \
  257 + "fi;\0" \
  258 + "netargs=setenv bootargs console=${console},${baudrate} earlycon " \
  259 + "root=/dev/nfs " \
  260 + "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
  261 + "netboot=echo Booting from net ...; " \
  262 + "run netargs; " \
  263 + "if test ${ip_dyn} = yes; then " \
  264 + "setenv get_cmd dhcp; " \
  265 + "else " \
  266 + "setenv get_cmd tftp; " \
  267 + "fi; " \
  268 + "if ${get_cmd} ${hdp_addr} ${hdp_file}; then; hdp load ${hdp_addr}; fi;" \
  269 + "if test ${sec_boot} = yes; then " \
  270 + "${get_cmd} ${cntr_addr} ${cntr_file}; " \
  271 + "if run auth_os; then " \
  272 + "run boot_os; " \
  273 + "else " \
  274 + "echo ERR: failed to authenticate; " \
  275 + "fi; " \
  276 + "else " \
  277 + "${get_cmd} ${loadaddr} ${image}; " \
  278 + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  279 + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
  280 + "run boot_os; " \
  281 + "else " \
  282 + "echo WARN: Cannot load the DT; " \
  283 + "fi; " \
  284 + "else " \
  285 + "booti; " \
  286 + "fi;" \
  287 + "fi;\0"
  288 +
  289 +#define CONFIG_BOOTCOMMAND \
  290 + "mmc dev ${mmcdev}; if mmc rescan; then " \
  291 + "if test ${sec_boot} = yes; then " \
  292 + "if run loadcntr; then " \
  293 + "run mmcboot; " \
  294 + "else run netboot; " \
  295 + "fi; " \
  296 + "else " \
  297 + "echo Checking for: uEnv.txt ...; " \
  298 + "if test -e mmc ${bootpart} /uEnv.txt; then " \
  299 + "if run loadbootenv; then " \
  300 + "echo Loaded environment from uEnv.txt;" \
  301 + "run importbootenv;" \
  302 + "fi;" \
  303 + "echo Checking if uenvcmd is set ...;" \
  304 + "if test -n ${uenvcmd}; then " \
  305 + "echo Running uenvcmd ...;" \
  306 + "run uenvcmd;" \
  307 + "fi;" \
  308 + "fi; " \
  309 + "if run loadimage; then " \
  310 + "run mmcboot; " \
  311 + "else run netboot; " \
  312 + "fi; " \
  313 + "fi; " \
  314 + "else booti ${loadaddr} - ${fdt_addr}; fi"
  315 +
  316 +/* Link Definitions */
  317 +#define CONFIG_LOADADDR 0x80280000
  318 +
  319 +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
  320 +
  321 +#define CONFIG_SYS_INIT_SP_ADDR 0x80200000
  322 +
  323 +
  324 +#ifdef CONFIG_QSPI_BOOT
  325 +#define CONFIG_ENV_SECT_SIZE (128 * 1024)
  326 +#define CONFIG_ENV_SPI_BUS CONFIG_SF_DEFAULT_BUS
  327 +#define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS
  328 +#define CONFIG_ENV_SPI_MODE CONFIG_SF_DEFAULT_MODE
  329 +#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
  330 +#else
  331 +#define CONFIG_SYS_MMC_ENV_PART 0 /* user area */
  332 +#endif
  333 +
  334 +#define CONFIG_CMD_PART
  335 +#define CONFIG_CMD_FS_GENERIC
  336 +
  337 +#define CONFIG_SYS_MMC_IMG_LOAD_PART 1
  338 +
  339 +/* On LPDDR4 board, USDHC1 is for eMMC, USDHC2 is for SD on CPU board */
  340 +#define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */
  341 +#define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC2 */
  342 +#define CONFIG_SYS_FSL_USDHC_NUM 2
  343 +
  344 +/* Size of malloc() pool */
  345 +#define CONFIG_SYS_MALLOC_LEN ((CONFIG_ENV_SIZE + (32 * 1024)) * 1024)
  346 +
  347 +#define CONFIG_SYS_SDRAM_BASE 0x80000000
  348 +#define PHYS_SDRAM_1 0x80000000
  349 +#define PHYS_SDRAM_2 0x880000000
  350 +#define PHYS_SDRAM_1_SIZE 0x80000000 /* 2 GB */
  351 +#ifdef CONFIG_4GB_LPDDR4
  352 +#define PHYS_SDRAM_2_SIZE 0x80000000 /* 2 GB */
  353 +#else
  354 +#define PHYS_SDRAM_2_SIZE 0x180000000 /* 6 GB */
  355 +#endif
  356 +
  357 +#define CONFIG_SYS_MEMTEST_START 0xA0000000
  358 +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + (PHYS_SDRAM_1_SIZE >> 2))
  359 +
  360 +/* Serial */
  361 +#define CONFIG_BAUDRATE 115200
  362 +
  363 +/* Monitor Command Prompt */
  364 +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
  365 +#define CONFIG_SYS_CBSIZE 2048
  366 +#define CONFIG_SYS_MAXARGS 64
  367 +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
  368 +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
  369 + sizeof(CONFIG_SYS_PROMPT) + 16)
  370 +
  371 +/* Generic Timer Definitions */
  372 +#define COUNTER_FREQUENCY 8000000 /* 8MHz */
  373 +
  374 +/* MT35XU512ABA1G12 has only one Die, so QSPI0 B won't work */
  375 +#ifdef CONFIG_FSL_FSPI
  376 +#define FSL_FSPI_FLASH_SIZE SZ_64M
  377 +#define FSL_FSPI_FLASH_NUM 1
  378 +#define FSPI0_BASE_ADDR 0x5d120000
  379 +#define FSPI0_AMBA_BASE 0
  380 +#define CONFIG_SYS_FSL_FSPI_AHB
  381 +#endif
  382 +
  383 +#define CONFIG_SERIAL_TAG
  384 +
  385 +/* USB Config */
  386 +#ifndef CONFIG_SPL_BUILD
  387 +#ifdef CONFIG_HAS_FSL_XHCI_USB
  388 +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
  389 +#endif
  390 +#define CONFIG_CMD_USB
  391 +#define CONFIG_USB_STORAGE
  392 +#define CONFIG_USBD_HS
  393 +
  394 +#define CONFIG_CMD_USB_MASS_STORAGE
  395 +#define CONFIG_USB_GADGET_MASS_STORAGE
  396 +#define CONFIG_USB_FUNCTION_MASS_STORAGE
  397 +
  398 +#endif
  399 +
  400 +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
  401 +
  402 +/* USB OTG controller configs */
  403 +#ifdef CONFIG_USB_EHCI_HCD
  404 +#define CONFIG_USB_HOST_ETHER
  405 +#define CONFIG_USB_ETHER_ASIX
  406 +#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
  407 +#endif
  408 +
  409 +#ifdef CONFIG_DM_VIDEO
  410 +#define CONFIG_VIDEO_LOGO
  411 +#define CONFIG_SPLASH_SCREEN
  412 +#define CONFIG_SPLASH_SCREEN_ALIGN
  413 +#define CONFIG_CMD_BMP
  414 +#define CONFIG_BMP_16BPP
  415 +#define CONFIG_BMP_24BPP
  416 +#define CONFIG_BMP_32BPP
  417 +#define CONFIG_VIDEO_BMP_RLE8
  418 +#define CONFIG_VIDEO_BMP_LOGO
  419 +#endif
  420 +
  421 +#define IMX_HDMI_FIRMWARE_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_64M)
  422 +#define IMX_HDMITX_FIRMWARE_SIZE 0x20000
  423 +#define IMX_HDMIRX_FIRMWARE_SIZE 0x20000
  424 +
  425 +#if defined(CONFIG_ANDROID_SUPPORT)
  426 +#include "smarcimx8qm_android.h"
  427 +#elif defined (CONFIG_ANDROID_AUTO_SUPPORT)
  428 +#include "smarcimx8qm_android_auto.h"
  429 +#elif defined(CONFIG_IMX8_TRUSTY_XEN)
  430 +#include "smarcimx8qm_trusty_xen.h"
  431 +#endif
  432 +
  433 +#endif /* __SMARCIMX8QM_H */
include/configs/smarcimx8qm_android.h
  1 +/*
  2 + * Copyright 2020 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +#ifndef SMARCIMX8QM_ANDROID_H
  8 +#define SMARCIMX8QM_ANDROID_H
  9 +
  10 +#define CONFIG_USB_GADGET_VBUS_DRAW 2
  11 +
  12 +#define CONFIG_ANDROID_AB_SUPPORT
  13 +#ifdef CONFIG_ANDROID_AB_SUPPORT
  14 +#define CONFIG_SYSTEM_RAMDISK_SUPPORT
  15 +#endif
  16 +#define FSL_FASTBOOT_FB_DEV "mmc"
  17 +
  18 +#define IMX_HDMI_FIRMWARE_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_64M)
  19 +#define IMX_HDMITX_FIRMWARE_SIZE 0x20000
  20 +#define IMX_HDMIRX_FIRMWARE_SIZE 0x20000
  21 +
  22 +#define CONFIG_FASTBOOT_USB_DEV 1
  23 +
  24 +#undef CONFIG_EXTRA_ENV_SETTINGS
  25 +#undef CONFIG_BOOTCOMMAND
  26 +
  27 +#define CONFIG_EXTRA_ENV_SETTINGS \
  28 + "splashpos=m,m\0" \
  29 + "splashimage=0x9e000000\0" \
  30 + "fdt_high=0xffffffffffffffff\0" \
  31 + "initrd_high=0xffffffffffffffff\0" \
  32 +
  33 +#ifdef CONFIG_IMX_TRUSTY_OS
  34 +#define NS_ARCH_ARM64 1
  35 +#define KEYSLOT_HWPARTITION_ID 2
  36 +#define KEYSLOT_BLKS 0x3FFF
  37 +#define AVB_RPMB
  38 +
  39 +#ifdef CONFIG_SPL_BUILD
  40 +#undef CONFIG_BLK
  41 +#define CONFIG_FSL_CAAM_KB
  42 +#define CONFIG_SPL_CRYPTO_SUPPORT
  43 +#define CONFIG_SYS_FSL_SEC_LE
  44 +#endif
  45 +#endif
  46 +
  47 +#endif /* SMARCIMX8QM_ANDROID_H */
include/configs/smarcimx8qm_android_auto.h
  1 +/*
  2 + * Copyright 2020 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +#ifndef SMARCIMX8QM_ANDROID_AUTO_H
  8 +#define SMARCIMX8QM_ANDROID_AUTO_H
  9 +
  10 +#define CONFIG_USB_GADGET_VBUS_DRAW 2
  11 +#define CONFIG_SKIP_RESOURCE_CHECKING
  12 +
  13 +/* USB OTG controller configs */
  14 +#ifdef CONFIG_USB_EHCI_HCD
  15 +#ifndef CONFIG_MXC_USB_PORTSC
  16 +#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
  17 +#endif
  18 +#endif
  19 +
  20 +#define CONFIG_ANDROID_AB_SUPPORT
  21 +#ifdef CONFIG_ANDROID_AB_SUPPORT
  22 +#define CONFIG_SYSTEM_RAMDISK_SUPPORT
  23 +#endif
  24 +#define FSL_FASTBOOT_FB_DEV "mmc"
  25 +
  26 +#define IMX_HDMI_FIRMWARE_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_64M)
  27 +#define IMX_HDMITX_FIRMWARE_SIZE 0x20000
  28 +#define IMX_HDMIRX_FIRMWARE_SIZE 0x20000
  29 +
  30 +#undef CONFIG_EXTRA_ENV_SETTINGS
  31 +#undef CONFIG_BOOTCOMMAND
  32 +
  33 +#define CONFIG_EXTRA_ENV_SETTINGS \
  34 + "splashpos=m,m\0" \
  35 + "fdt_high=0xffffffffffffffff\0" \
  36 + "initrd_high=0xffffffffffffffff\0" \
  37 +
  38 +/* Undefine some macros to save boot time */
  39 +#undef CONFIG_FEC_MXC
  40 +#undef CONFIG_USB_HOST_ETHER
  41 +#undef CONFIG_ARCH_MISC_INIT
  42 +#undef CONFIG_SCSI
  43 +#undef CONFIG_SCSI_AHCI
  44 +#undef CONFIG_SCSI_AHCI_PLAT
  45 +#undef CONFIG_CMD_SCSI
  46 +#undef CONFIG_LIBATA
  47 +#undef CONFIG_SATA_IMX
  48 +#undef CONFIG_FSL_HSIO
  49 +#undef CONFIG_PCIE_IMX8X
  50 +#undef CONFIG_CMD_PCI
  51 +#undef CONFIG_PCI
  52 +#undef CONFIG_SYS_LONGHELP
  53 +#undef CONFIG_AUTO_COMPLETE
  54 +#undef CONFIG_MII
  55 +#undef CONFIG_PHYLIB
  56 +#undef CONFIG_PHY_ATHEROS
  57 +#undef CONFIG_CMD_FUSE
  58 +#undef CONFIG_USB_FUNCTION_MASS_STORAGE
  59 +#undef CONFIG_CMD_USB
  60 +#undef CONFIG_CMD_USB_MASS_STORAGE
  61 +#undef CONFIG_FAT_WRITE
  62 +
  63 +#ifdef CONFIG_IMX_TRUSTY_OS
  64 +#define AVB_RPMB
  65 +#define NS_ARCH_ARM64 1
  66 +#define KEYSLOT_HWPARTITION_ID 2
  67 +#define KEYSLOT_BLKS 0x3FFF
  68 +#endif
  69 +
  70 +#ifdef CONFIG_DUAL_BOOTLOADER
  71 +#define BOOTLOADER_RBIDX_OFFSET 0x3FE000
  72 +#define BOOTLOADER_RBIDX_START 0x3FF000
  73 +#define BOOTLOADER_RBIDX_LEN 0x08
  74 +#define BOOTLOADER_RBIDX_INITVAL 0
  75 +#define CONFIG_SYS_SPL_PTE_RAM_BASE 0x801F8000
  76 +#endif
  77 +
  78 +
  79 +#ifdef CONFIG_SPL_BUILD
  80 +#undef CONFIG_BLK
  81 +#define CONFIG_FSL_CAAM_KB
  82 +#define CONFIG_SPL_CRYPTO_SUPPORT
  83 +#define CONFIG_SYS_FSL_SEC_LE
  84 +#endif
  85 +
  86 +#if defined(CONFIG_XEN)
  87 +#include "smarcimx8qm_android_auto_xen.h"
  88 +#endif
  89 +
  90 +#endif /* SMARCIMX8QM_ANDROID_AUTO_H */
include/configs/smarcimx8qm_android_auto_xen.h
  1 +/*
  2 + * Copyright 2018 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +#ifndef SMARCIMX8QM_ANDROID_AUTO_XEN_H
  8 +#define SMARCIMX8QM_ANDROID_AUTO_XEN_H
  9 +
  10 +#undef CONFIG_SYS_SDRAM_BASE
  11 +#undef CONFIG_NR_DRAM_BANKS
  12 +#undef PHYS_SDRAM_1
  13 +#undef PHYS_SDRAM_2
  14 +#undef PHYS_SDRAM_1_SIZE
  15 +#undef PHYS_SDRAM_2_SIZE
  16 +
  17 +#define CONFIG_SYS_SDRAM_BASE 0x80000000
  18 +#define CONFIG_NR_DRAM_BANKS 2
  19 +#define PHYS_SDRAM_1 0x80000000
  20 +#define PHYS_SDRAM_2 0x200000000
  21 +#define PHYS_SDRAM_1_SIZE 0x80000000 /* 2 GB */
  22 +#define PHYS_SDRAM_2_SIZE 0x50000000 /* 1024 + 256 MB */
  23 +
  24 +#undef CONFIG_LOADADDR
  25 +#define CONFIG_LOADADDR 0x80080000
  26 +#undef CONFIG_SYS_INIT_SP_ADDR
  27 +#define CONFIG_SYS_INIT_SP_ADDR 0x81200000
  28 +
  29 +#undef CONFIG_REQUIRE_SERIAL_CONSOLE
  30 +#undef CONFIG_IMX_SMMU
  31 +
  32 +#undef CONFIG_FASTBOOT_USB_DEV
  33 +#define CONFIG_FASTBOOT_USB_DEV 0 /* Use OTG port, not typec port */
  34 +
  35 +#ifdef CONFIG_SPL_BUILD
  36 +#undef CONFIG_SPL_BSS_START_ADDR
  37 +#undef CONFIG_SYS_SPL_MALLOC_START
  38 +#undef CONFIG_MALLOC_F_ADDR
  39 +#undef CONFIG_SPL_TEXT_BASE
  40 +#undef CONFIG_SPL_STACK
  41 +
  42 +#define CONFIG_MALLOC_F_ADDR 0x80100000
  43 +#define CONFIG_SYS_SPL_MALLOC_START 0x80200000
  44 +#define CONFIG_SPL_BSS_START_ADDR 0x80300000
  45 +#define CONFIG_SPL_STACK 0x80400000
  46 +
  47 +#undef CONFIG_SYS_SPL_PTE_RAM_BASE
  48 +#define CONFIG_SYS_SPL_PTE_RAM_BASE 0x80500000
  49 +#endif
  50 +
  51 +#endif /* SMARCIMX8QM_ANDROID_AUTO_XEN_H */
include/configs/smarcimx8qm_trusty_xen.h
  1 +/*
  2 + * Copyright 2020 NXP
  3 + *
  4 + */
  5 +
  6 +#ifndef __SMARCIMX8QM_XEN_TRUSTY_H__
  7 +#define __SMARCIMX8QM_XEN_TRUSTY_H__
  8 +
  9 +#ifdef CONFIG_SPL_BUILD
  10 +#define CONFIG_AVB_SUPPORT
  11 +#define AVB_RPMB
  12 +#define CONFIG_SHA256
  13 +#define KEYSLOT_HWPARTITION_ID 2
  14 +#define KEYSLOT_BLKS 0x3FFF
  15 +#define CONFIG_SUPPORT_EMMC_RPMB
  16 +#endif
  17 +
  18 +#endif