Commit 7b055443be6b03583bdb3f3110c30803cdf872dd

Authored by Eric Lee
1 parent 0d6d880779

Initial Release, U-Boot v2018.03 for SMARC-FiMX7 CPU Modules

Showing 38 changed files with 5764 additions and 12 deletions Side-by-side Diff

arch/arm/dts/Makefile
... ... @@ -447,6 +447,8 @@
447 447 imx7d-sdb-gpmi-weim.dtb \
448 448 imx7d-sdb-qspi.dtb \
449 449 imx7d-sdb-reva.dtb \
  450 + imx7d-smarcfimx7.dtb \
  451 + imx7s-smarcfimx7.dtb \
450 452 imx7d-12x12-lpddr3-arm2.dtb \
451 453 imx7d-12x12-lpddr3-arm2-ecspi.dtb \
452 454 imx7d-12x12-lpddr3-arm2-qspi.dtb \
arch/arm/dts/imx7d-smarcfimx7.dts
Changes suppressed. Click to show
  1 +/*
  2 + * Copyright 2017 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +/dts-v1/;
  8 +
  9 +#include "imx7d.dtsi"
  10 +
  11 +/ {
  12 + model = "Embedian i.MX7D SMARC 2.0 Module";
  13 + compatible = "fsl,imx7d-smarcfimx7", "fsl,imx7d";
  14 +
  15 + memory {
  16 + reg = <0x80000000 0x80000000>;
  17 + };
  18 +
  19 + aliases {
  20 + ethernet1 = &fec2; /* Let eth1addr mac address pass from U-Boot EEPROM */
  21 + };
  22 +
  23 + regulators {
  24 + compatible = "simple-bus";
  25 + #address-cells = <1>;
  26 + #size-cells = <0>;
  27 +
  28 + reg_usb_otg1_vbus: regulator@0 {
  29 + compatible = "regulator-fixed";
  30 + reg = <0>;
  31 + regulator-name = "usb_otg1_vbus";
  32 + regulator-min-microvolt = <5000000>;
  33 + regulator-max-microvolt = <5000000>;
  34 + gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
  35 + enable-active-high;
  36 + };
  37 +
  38 + reg_usb_otg2_vbus: regulator@1 {
  39 + compatible = "regulator-fixed";
  40 + reg = <1>;
  41 + regulator-name = "usb_otg2_vbus";
  42 + regulator-min-microvolt = <5000000>;
  43 + regulator-max-microvolt = <5000000>;
  44 + gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
  45 + enable-active-high;
  46 + };
  47 +
  48 + reg_sd1_vmmc: regulator@3 {
  49 + compatible = "regulator-fixed";
  50 + regulator-name = "VDD_SD1";
  51 + regulator-min-microvolt = <3300000>;
  52 + regulator-max-microvolt = <3300000>;
  53 + startup-delay-us = <70000>;
  54 + off-on-delay = <20000>;
  55 + enable-active-high;
  56 + };
  57 +
  58 + reg_aud_3v3: regulator@4 {
  59 + compatible = "regulator-fixed";
  60 + reg = <4>;
  61 + regulator-name = "aud-3v3";
  62 + regulator-min-microvolt = <3300000>;
  63 + regulator-max-microvolt = <3300000>;
  64 + };
  65 +
  66 + reg_vref_1v8: regulator@5 {
  67 + compatible = "regulator-fixed";
  68 + reg = <5>;
  69 + regulator-name = "vref-1v8";
  70 + regulator-min-microvolt = <1800000>;
  71 + regulator-max-microvolt = <1800000>;
  72 + };
  73 + };
  74 +
  75 + backlight {
  76 + compatible = "pwm-backlight";
  77 + enable-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>; /* Backlight Enable Pin*/
  78 + pwms = <&pwm2 0 5000000>;
  79 + brightness-levels = <0 4 8 16 32 64 128 255>;
  80 + default-brightness-level = <7>;
  81 + status = "okay";
  82 + };
  83 +
  84 + pxp_v4l2_out {
  85 + compatible = "fsl,imx7d-pxp-v4l2", "fsl,imx6sx-pxp-v4l2", "fsl,imx6sl-pxp-v4l2";
  86 + status = "okay";
  87 + };
  88 +
  89 + sound {
  90 + compatible = "fsl,imx7d-smarcfimx7-sgtl5000",
  91 + "fsl,imx-audio-sgtl5000";
  92 + model = "sgtl5000-audio";
  93 + cpu-dai = <&sai1>;
  94 + audio-codec = <&codec>;
  95 + codec-master;
  96 + audio-routing =
  97 + "LINE_IN", "Line In Jack",
  98 + "MIC_IN", "Mic Jack",
  99 + "Mic Jack", "Mic Bias",
  100 + "Headphone Jack", "HP_OUT";
  101 + };
  102 +};
  103 +
  104 +&cpu0 {
  105 + arm-supply = <&sw1a_reg>;
  106 +};
  107 +
  108 +/* SPI0 */
  109 +&ecspi1 {
  110 + fsl,spi-num-chipselects = <2>;
  111 + cs-gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>, <&gpio4 0 GPIO_ACTIVE_HIGH>;
  112 + pinctrl-names = "default";
  113 + pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>;
  114 + dmas = <&sdma 36 4 0>, <&sdma 37 4 0>;
  115 + dma-names = "rx", "tx";
  116 + status = "okay";
  117 +
  118 + spidev1: spidev@0 {
  119 + compatible = "spidev";
  120 + spi-max-frequency = <24000000>;
  121 + reg = <0>;
  122 + };
  123 + spidev2: spidev@1 {
  124 + compatible = "spidev";
  125 + spi-max-frequency = <24000000>;
  126 + reg = <1>;
  127 + };
  128 +};
  129 +
  130 +/* SPINOR */
  131 +&ecspi2 {
  132 + fsl,spi-num-chipselects = <1>;
  133 + pinctrl-names = "default";
  134 + pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>;
  135 + cs-gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
  136 + dmas = <&sdma 38 4 0>, <&sdma 39 4 0>;
  137 + dma-names = "rx", "tx";
  138 + status = "okay";
  139 +
  140 + flash: mx25u3235f@0 {
  141 + #address-cells = <1>;
  142 + #size-cells = <1>;
  143 + compatible = "macronix,mx25u3235f", "jedec,spi-nor";
  144 + spi-max-frequency = <24000000>;
  145 + reg = <0>;
  146 + partition@0 {
  147 + label = "U-Boot";
  148 + reg = <0x0 0x100000>;
  149 + };
  150 +
  151 + partition@100000 {
  152 + label = "U-Boot Environment";
  153 + reg = <0x100000 0x080000>;
  154 + };
  155 +
  156 + partition@180000 {
  157 + label = "Flattened Device Tree";
  158 + reg = <0x180000 0x200000>;
  159 + };
  160 +
  161 + };
  162 +};
  163 +
  164 +/* ECSPI */
  165 +&ecspi3 {
  166 + fsl,spi-num-chipselects = <2>;
  167 + pinctrl-names = "default";
  168 + pinctrl-0 = <&pinctrl_ecspi3 &pinctrl_ecspi3_cs>;
  169 + cs-gpios = <&gpio6 22 GPIO_ACTIVE_HIGH>, <&gpio5 9 GPIO_ACTIVE_HIGH>;
  170 + dmas = <&sdma 40 4 0>, <&sdma 41 4 0>;
  171 + dma-names = "rx", "tx";
  172 + status = "okay";
  173 +
  174 + spidev3: spidev@0 {
  175 + compatible = "spidev";
  176 + spi-max-frequency = <24000000>;
  177 + reg = <0>;
  178 + };
  179 + spidev4: spidev@4 {
  180 + compatible = "spidev";
  181 + spi-max-frequency = <24000000>;
  182 + reg = <1>;
  183 + };
  184 +};
  185 +
  186 +&clks {
  187 + assigned-clocks = <&clks IMX7D_PLL_AUDIO_POST_DIV>;
  188 + assigned-clock-rates = <884736000>;
  189 +};
  190 +
  191 +&csi1 {
  192 + csi-mux-mipi = <&gpr 0x14 4>;
  193 + fsl,mipi-mode;
  194 + status = "okay";
  195 +
  196 + port {
  197 + csi_ep: endpoint {
  198 + remote-endpoint = <&csi_mipi_ep>;
  199 + };
  200 + };
  201 +};
  202 +
  203 +&epxp {
  204 + status = "okay";
  205 +};
  206 +
  207 +&fec1 {
  208 + pinctrl-names = "default";
  209 + pinctrl-0 = <&pinctrl_enet1>;
  210 + assigned-clocks = <&clks IMX7D_ENET_PHY_REF_ROOT_SRC>,
  211 + <&clks IMX7D_ENET_AXI_ROOT_SRC>,
  212 + <&clks IMX7D_ENET1_TIME_ROOT_SRC>,
  213 + <&clks IMX7D_ENET1_TIME_ROOT_CLK>,
  214 + <&clks IMX7D_ENET_AXI_ROOT_CLK>;
  215 + assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_25M_CLK>,
  216 + <&clks IMX7D_PLL_ENET_MAIN_250M_CLK>,
  217 + <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
  218 + assigned-clock-rates = <0>, <0>, <0>, <100000000>, <250000000>;
  219 + phy-mode = "rgmii";
  220 + phy-handle = <&ethphy0>;
  221 + fsl,magic-packet;
  222 + status = "okay";
  223 +
  224 + mdio {
  225 + #address-cells = <1>;
  226 + #size-cells = <0>;
  227 +
  228 + ethphy0: ethernet-phy@6 {
  229 + compatible = "ethernet-phy-ieee802.3-c22";
  230 + reg = <0>;
  231 + };
  232 +
  233 + ethphy1: ethernet-phy@7 {
  234 + compatible = "ethernet-phy-ieee802.3-c22";
  235 + reg = <1>;
  236 + };
  237 + };
  238 +};
  239 +
  240 +&fec2 {
  241 + pinctrl-names = "default";
  242 + pinctrl-0 = <&pinctrl_enet2>;
  243 + assigned-clocks = <&clks IMX7D_ENET_PHY_REF_ROOT_SRC>,
  244 + <&clks IMX7D_ENET_AXI_ROOT_SRC>,
  245 + <&clks IMX7D_ENET2_TIME_ROOT_SRC>,
  246 + <&clks IMX7D_ENET2_TIME_ROOT_CLK>,
  247 + <&clks IMX7D_ENET_AXI_ROOT_CLK>;
  248 + assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_25M_CLK>,
  249 + <&clks IMX7D_PLL_ENET_MAIN_250M_CLK>,
  250 + <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
  251 + assigned-clock-rates = <0>, <0>, <0>, <100000000>, <250000000>;
  252 + phy-mode = "rgmii";
  253 + phy-handle = <&ethphy1>;
  254 + fsl,magic-packet;
  255 + status = "okay";
  256 +};
  257 +
  258 +&mipi_csi {
  259 + clock-frequency = <240000000>;
  260 + status = "okay";
  261 + port {
  262 + mipi_sensor_ep: endpoint1 {
  263 + remote-endpoint = <&ov5640_mipi_ep>;
  264 + data-lanes = <2>;
  265 + csis-hs-settle = <13>;
  266 + csis-clk-settle = <2>;
  267 + csis-wclk;
  268 + };
  269 +
  270 + csi_mipi_ep: endpoint2 {
  271 + remote-endpoint = <&csi_ep>;
  272 + };
  273 + };
  274 +};
  275 +
  276 +&flexcan1 {
  277 + pinctrl-names = "default";
  278 + pinctrl-0 = <&pinctrl_flexcan1>;
  279 + xceiver-supply = <&reg_vref_1v8>;
  280 + status = "okay";
  281 +};
  282 +
  283 +&flexcan2 {
  284 + pinctrl-names = "default";
  285 + pinctrl-0 = <&pinctrl_flexcan2>;
  286 + xceiver-supply = <&reg_vref_1v8>;
  287 + status = "okay";
  288 +};
  289 +
  290 +&i2c1 {
  291 + clock-frequency = <100000>;
  292 + pinctrl-names = "default", "gpio";
  293 + pinctrl-0 = <&pinctrl_i2c1>;
  294 + pinctrl-1 = <&pinctrl_i2c1_gpio>;
  295 + scl-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
  296 + sda-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
  297 + status = "okay";
  298 +
  299 + pmic: pfuze3000@08 {
  300 + compatible = "fsl,pfuze3000";
  301 + reg = <0x08>;
  302 +
  303 + regulators {
  304 + sw1a_reg: sw1a {
  305 + regulator-min-microvolt = <700000>;
  306 + regulator-max-microvolt = <3300000>;
  307 + regulator-boot-on;
  308 + regulator-always-on;
  309 + regulator-ramp-delay = <6250>;
  310 + };
  311 +
  312 + /* use sw1c_reg to align with pfuze100/pfuze200 */
  313 + sw1c_reg: sw1b {
  314 + regulator-min-microvolt = <700000>;
  315 + regulator-max-microvolt = <1475000>;
  316 + regulator-boot-on;
  317 + regulator-always-on;
  318 + regulator-ramp-delay = <6250>;
  319 + };
  320 +
  321 + sw2_reg: sw2 {
  322 + regulator-min-microvolt = <1500000>;
  323 + regulator-max-microvolt = <1850000>;
  324 + regulator-boot-on;
  325 + regulator-always-on;
  326 + };
  327 +
  328 + sw3a_reg: sw3 {
  329 + regulator-min-microvolt = <900000>;
  330 + regulator-max-microvolt = <1650000>;
  331 + regulator-boot-on;
  332 + regulator-always-on;
  333 + };
  334 +
  335 + swbst_reg: swbst {
  336 + regulator-min-microvolt = <5000000>;
  337 + regulator-max-microvolt = <5150000>;
  338 + };
  339 +
  340 + snvs_reg: vsnvs {
  341 + regulator-min-microvolt = <1000000>;
  342 + regulator-max-microvolt = <3000000>;
  343 + regulator-boot-on;
  344 + regulator-always-on;
  345 + };
  346 +
  347 + vref_reg: vrefddr {
  348 + regulator-boot-on;
  349 + regulator-always-on;
  350 + };
  351 +
  352 + vgen1_reg: vldo1 {
  353 + regulator-min-microvolt = <1800000>;
  354 + regulator-max-microvolt = <3300000>;
  355 + regulator-always-on;
  356 + };
  357 +
  358 + vgen2_reg: vldo2 {
  359 + regulator-min-microvolt = <800000>;
  360 + regulator-max-microvolt = <1550000>;
  361 + regulator-always-on;
  362 + };
  363 +
  364 + vgen3_reg: vccsd {
  365 + regulator-min-microvolt = <2850000>;
  366 + regulator-max-microvolt = <3300000>;
  367 + regulator-always-on;
  368 + };
  369 +
  370 + vgen4_reg: v33 {
  371 + regulator-min-microvolt = <2850000>;
  372 + regulator-max-microvolt = <3300000>;
  373 + regulator-always-on;
  374 + };
  375 +
  376 + vgen5_reg: vldo3 {
  377 + regulator-min-microvolt = <1800000>;
  378 + regulator-max-microvolt = <3300000>;
  379 + regulator-always-on;
  380 + };
  381 +
  382 + vgen6_reg: vldo4 {
  383 + regulator-min-microvolt = <1800000>;
  384 + regulator-max-microvolt = <3300000>;
  385 + regulator-always-on;
  386 + };
  387 + };
  388 + };
  389 +
  390 + s35390a: s35390a@30 {
  391 + compatible = "s35390a";
  392 + reg = <0x30>;
  393 + };
  394 +
  395 + cape_eeprom0: cape_eeprom@57 {
  396 + compatible = "at,24c256";
  397 + reg = <0x57>;
  398 + };
  399 +
  400 + codec: sgtl5000@0a {
  401 + compatible = "fsl,sgtl5000";
  402 + reg = <0x0a>;
  403 + pinctrl-names = "default";
  404 + pinctrl-0 = <&pinctrl_sai1_mclk>;
  405 + VDDA-supply = <&reg_aud_3v3>;
  406 + VDDIO-supply = <&reg_vref_1v8>;
  407 + clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
  408 + clock-names = "mclk";
  409 + };
  410 +};
  411 +
  412 +&i2c2 {
  413 + clock-frequency = <100000>;
  414 + pinctrl-names = "default", "gpio";
  415 + pinctrl-0 = <&pinctrl_i2c2>;
  416 + pinctrl-1 = <&pinctrl_i2c2_gpio>;
  417 + scl-gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;
  418 + sda-gpios = <&gpio4 11 GPIO_ACTIVE_HIGH>;
  419 + status = "okay";
  420 +
  421 + baseboard_eeprom: baseboard_eeprom@50 {
  422 + compatible = "at,24c256";
  423 + reg = <0x50>;
  424 + };
  425 +};
  426 +
  427 +&i2c3 {
  428 + clock-frequency = <100000>;
  429 + pinctrl-names = "default", "gpio";
  430 + pinctrl-0 = <&pinctrl_i2c3>;
  431 + pinctrl-1 = <&pinctrl_i2c3_gpio>;
  432 + scl-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
  433 + sda-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
  434 + status = "okay";
  435 +};
  436 +
  437 +&i2c4 {
  438 + clock-frequency = <100000>;
  439 + pinctrl-names = "default", "gpio";
  440 + pinctrl-0 = <&pinctrl_i2c4>;
  441 + pinctrl-1 = <&pinctrl_i2c4_gpio>;
  442 + scl-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
  443 + sda-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>;
  444 + status = "okay";
  445 +
  446 + ov5640_mipi: ov5640_mipi@3c {
  447 + compatible = "ovti,ov5640_mipi";
  448 + reg = <0x3c>;
  449 + clocks = <&clks IMX7D_CLK_DUMMY>;
  450 + clock-names = "csi_mclk";
  451 + csi_id = <0>;
  452 + pwn-gpios = <&gpio2 0 GPIO_ACTIVE_HIGH>; /* GPIO0 */
  453 + AVDD-supply = <&vgen6_reg>;
  454 + mclk = <24000000>;
  455 + mclk_source = <0>;
  456 + port {
  457 + ov5640_mipi_ep: endpoint {
  458 + remote-endpoint = <&mipi_sensor_ep>;
  459 + };
  460 + };
  461 + };
  462 +};
  463 +
  464 +&lcdif {
  465 + pinctrl-names = "default";
  466 + pinctrl-0 = <&pinctrl_lcdif>;
  467 + enable-gpios = <&gpio3 4 0>; /* Enable LCD_VDD_EN pin */
  468 + display = <&display0>;
  469 + status = "okay";
  470 +
  471 + display0: display@0 {
  472 + bits-per-pixel = <32>;
  473 + bus-width = <24>;
  474 +
  475 + display-timings {
  476 + native-mode = <&timing0>;
  477 + /*timing0: g070vw01 {*/
  478 + timing0: timing0 {
  479 + clock-frequency = <33300000>;
  480 + hactive = <800>;
  481 + vactive = <480>;
  482 + hfront-porch = <64>;
  483 + hback-porch = <64>;
  484 + hsync-len = <128>;
  485 + vback-porch = <12>;
  486 + vfront-porch = <4>;
  487 + vsync-len = <12>;
  488 + hsync-active = <0>;
  489 + vsync-active = <0>;
  490 + de-active = <1>;
  491 + pixelclk-active = <0>;
  492 + };
  493 + };
  494 + };
  495 +};
  496 +
  497 +&pcie_phy{
  498 + status = "okay";
  499 +};
  500 +
  501 +&pcie {
  502 + pinctrl-names = "default";
  503 + reset-gpio = <&gpio2 28 GPIO_ACTIVE_LOW>;
  504 + status = "okay";
  505 +};
  506 +
  507 +&sai1 {
  508 + pinctrl-names = "default";
  509 + pinctrl-0 = <&pinctrl_sai1>;
  510 + assigned-clocks = <&clks IMX7D_SAI1_ROOT_SRC>,
  511 + <&clks IMX7D_SAI1_ROOT_CLK>;
  512 + assigned-clock-parents = <&clks IMX7D_PLL_AUDIO_POST_DIV>;
  513 + assigned-clock-rates = <0>, <36864000>;
  514 + status = "okay";
  515 +};
  516 +
  517 +&sdma {
  518 + status = "okay";
  519 +};
  520 +
  521 +&pwm1 {
  522 + pinctrl-names = "default";
  523 + pinctrl-0 = <&pinctrl_pwm1>;
  524 + status = "okay";
  525 +};
  526 +
  527 +&pwm2 {
  528 + pinctrl-names = "default";
  529 + pinctrl-0 = <&pinctrl_pwm2>;
  530 + status = "okay";
  531 +};
  532 +
  533 +&iomuxc_lpsr {
  534 + pinctrl-names = "default";
  535 + pinctrl-0 = <&pinctrl_hog_2 &pinctrl_usbotg2_pwr_2>;
  536 +
  537 + imx7d-smarcfimx7 {
  538 + pinctrl_hog_2: hoggrp-2 {
  539 + fsl,pins = <
  540 + MX7D_PAD_GPIO1_IO05__GPIO1_IO5 0x14
  541 + >;
  542 + };
  543 +
  544 + pinctrl_pwm1: pwm1grp {
  545 + fsl,pins = <
  546 + MX7D_PAD_GPIO1_IO01__PWM1_OUT 0x30
  547 + >;
  548 + };
  549 +
  550 + pinctrl_pwm2: pwm2grp {
  551 + fsl,pins = <
  552 + MX7D_PAD_GPIO1_IO02__PWM2_OUT 0x30
  553 + >;
  554 + };
  555 +
  556 + pinctrl_usbotg2_pwr_2: usbotg2-2 {
  557 + fsl,pins = <
  558 + MX7D_PAD_GPIO1_IO07__GPIO1_IO7 0x14
  559 + >;
  560 + };
  561 +
  562 + pinctrl_wdog: wdoggrp {
  563 + fsl,pins = <
  564 + MX7D_PAD_GPIO1_IO00__WDOD1_WDOG_B 0x74
  565 + >;
  566 + };
  567 +
  568 + pinctrl_enet2_epdc0_en: enet2_epdc0_grp {
  569 + fsl,pins = <
  570 + MX7D_PAD_GPIO1_IO04__GPIO1_IO4 0x80000000
  571 + >;
  572 + };
  573 +
  574 + pinctrl_sai3_mclk: sai3grp_mclk {
  575 + fsl,pins = <
  576 + MX7D_PAD_GPIO1_IO03__SAI3_MCLK 0x1f
  577 + >;
  578 + };
  579 + };
  580 +};
  581 +
  582 +/* SER0/UART6 */
  583 +&uart6 {
  584 + pinctrl-names = "default";
  585 + pinctrl-0 = <&pinctrl_uart6>;
  586 + assigned-clocks = <&clks IMX7D_UART6_ROOT_SRC>;
  587 + assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
  588 + fsl,uart-has-rtscts;
  589 + status = "okay";
  590 +};
  591 +
  592 +/* SER1/UART2 */
  593 +&uart2 {
  594 + pinctrl-names = "default";
  595 + pinctrl-0 = <&pinctrl_uart2>;
  596 + assigned-clocks = <&clks IMX7D_UART2_ROOT_SRC>;
  597 + assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
  598 + status = "okay";
  599 +};
  600 +
  601 +/* SER2/UART7 */
  602 +&uart7 {
  603 + pinctrl-names = "default";
  604 + pinctrl-0 = <&pinctrl_uart7>;
  605 + assigned-clocks = <&clks IMX7D_UART7_ROOT_SRC>;
  606 + assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
  607 + fsl,uart-has-rtscts;
  608 + status = "okay";
  609 +};
  610 +
  611 +/* SER3/UART3 */
  612 +&uart3 {
  613 + pinctrl-names = "default";
  614 + pinctrl-0 = <&pinctrl_uart3>;
  615 + assigned-clocks = <&clks IMX7D_UART3_ROOT_SRC>;
  616 + assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
  617 + status = "okay";
  618 +};
  619 +
  620 +&usbotg1 {
  621 + vbus-supply = <&reg_usb_otg1_vbus>;
  622 + gpios = <&gpio1 4 2>;
  623 + srp-disable;
  624 + hnp-disable;
  625 + adp-disable;
  626 + status = "okay";
  627 +};
  628 +
  629 +&usbotg2 {
  630 + vbus-supply = <&reg_usb_otg2_vbus>;
  631 + gpios = <&gpio1 6 2>;
  632 + dr_mode = "host";
  633 + status = "okay";
  634 +};
  635 +
  636 +&usdhc1 {
  637 + pinctrl-names = "default";
  638 + pinctrl-0 = <&pinctrl_usdhc1>;
  639 + cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
  640 + wp-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
  641 + no-1-8-v;
  642 + vmmc-supply = <&reg_sd1_vmmc>;
  643 + enable-sdio-wakeup;
  644 + keep-power-in-suspend;
  645 + status = "okay";
  646 +};
  647 +
  648 +&usdhc3 {
  649 + pinctrl-names = "default";
  650 + pinctrl-0 = <&pinctrl_usdhc3>;
  651 + assigned-clocks = <&clks IMX7D_USDHC3_ROOT_CLK>;
  652 + assigned-clock-rates = <400000000>;
  653 + bus-width = <8>;
  654 + fsl,tuning-step = <2>;
  655 + non-removable;
  656 + status = "okay";
  657 +};
  658 +
  659 +&wdog1 {
  660 + pinctrl-names = "default";
  661 + pinctrl-0 = <&pinctrl_wdog>;
  662 + fsl,ext-reset-output;
  663 +};
  664 +
  665 +&iomuxc {
  666 + pinctrl-names = "default";
  667 + pinctrl-0 = <&pinctrl_hog_1>;
  668 +
  669 + imx7d-smarcfimx7 {
  670 +
  671 + pinctrl_hog_1: hoggrp-1 {
  672 + fsl,pins = <
  673 + MX7D_PAD_SD2_CMD__GPIO5_IO13 0x80000000 /* lvds channel select */
  674 + MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31 0x80000000 /* pcie_wake# */
  675 + MX7D_PAD_EPDC_DATA00__GPIO2_IO0 0x80000000 /* GPIO0 */
  676 + MX7D_PAD_EPDC_DATA01__GPIO2_IO1 0x80000000 /* GPIO1 */
  677 + MX7D_PAD_EPDC_DATA02__GPIO2_IO2 0x80000000 /* GPIO2 */
  678 + MX7D_PAD_EPDC_DATA03__GPIO2_IO3 0x80000000 /* GPIO3 */
  679 + MX7D_PAD_EPDC_DATA04__GPIO2_IO4 0x80000000 /* GPIO4 */
  680 + MX7D_PAD_EPDC_DATA05__GPIO2_IO5 0x80000000 /* GPIO6 */
  681 + MX7D_PAD_EPDC_DATA07__GPIO2_IO7 0x80000000 /* GPIO7 */
  682 + MX7D_PAD_EPDC_DATA06__GPIO2_IO6 0x80000000 /* GPIO8 */
  683 + MX7D_PAD_UART1_TX_DATA__GPIO4_IO1 0x80000000 /* GPIO9 */
  684 + MX7D_PAD_UART3_RTS_B__GPIO4_IO6 0x80000000 /* GPIO10 */
  685 + MX7D_PAD_UART3_CTS_B__GPIO4_IO7 0x80000000 /* GPIO11 */
  686 + MX7D_PAD_SD2_DATA0__GPIO5_IO14 0x80000000 /* SLEEP# */
  687 + MX7D_PAD_GPIO1_IO09__GPIO1_IO9 0x80000000 /* CHARGER_PRSNT# */
  688 + MX7D_PAD_GPIO1_IO08__GPIO1_IO8 0x80000000 /* CHARGING# */
  689 + MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16 0x80000000 /* CARRIER_STBY# */
  690 + MX7D_PAD_SD2_RESET_B__GPIO5_IO11 0x80000000 /* BATLOW# */
  691 + MX7D_PAD_SD1_RESET_B__GPIO5_IO2 0x80000000 /* SDIO_PWR_EN */
  692 + MX7D_PAD_LCD_RESET__GPIO3_IO4 0x80000000 /* LCD POWER */
  693 + MX7D_PAD_EPDC_BDR1__GPIO2_IO29 0x80000000 /* RESET_OUT# */
  694 + MX7D_PAD_ENET1_COL__GPIO7_IO15 0x80000000 /* ENET1_INT# */
  695 + MX7D_PAD_ENET1_RX_CLK__GPIO7_IO13 0x80000000 /* ENET2_INT# */
  696 + MX7D_PAD_ENET1_CRS__GPIO7_IO14 0x80000000 /* WDT_TIME_OUT# */
  697 + MX7D_PAD_SD3_RESET_B__GPIO6_IO11 0x5d /* eMMC_Reset# */
  698 + >;
  699 + };
  700 +
  701 + pinctrl_ecspi1_cs: ecspi1_cs_grp {
  702 + fsl,pins = <
  703 + MX7D_PAD_ECSPI1_SS0__GPIO4_IO19 0x14
  704 + MX7D_PAD_UART1_RX_DATA__GPIO4_IO0 0x14
  705 + >;
  706 + };
  707 +
  708 + pinctrl_ecspi1: ecspi1grp {
  709 + fsl,pins = <
  710 + MX7D_PAD_ECSPI1_MISO__ECSPI1_MISO 0x2
  711 + MX7D_PAD_ECSPI1_MOSI__ECSPI1_MOSI 0x2
  712 + MX7D_PAD_ECSPI1_SCLK__ECSPI1_SCLK 0x2
  713 + >;
  714 + };
  715 +
  716 + pinctrl_ecspi2_cs: ecspi2_cs_grp {
  717 + fsl,pins = <
  718 + MX7D_PAD_ECSPI2_SS0__GPIO4_IO23 0x14
  719 + >;
  720 + };
  721 +
  722 + pinctrl_ecspi2: ecspi2grp {
  723 + fsl,pins = <
  724 + MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO 0x2
  725 + MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI 0x2
  726 + MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK 0x2
  727 + >;
  728 + };
  729 +
  730 + pinctrl_ecspi3_cs: ecspi3_cs_grp {
  731 + fsl,pins = <
  732 + MX7D_PAD_SAI2_TX_DATA__GPIO6_IO22 0x14
  733 + MX7D_PAD_SD2_CD_B__GPIO5_IO9 0x14
  734 + >;
  735 + };
  736 +
  737 + pinctrl_ecspi3: ecspi3grp {
  738 + fsl,pins = <
  739 + MX7D_PAD_SAI2_TX_SYNC__ECSPI3_MISO 0x2
  740 + MX7D_PAD_SAI2_TX_BCLK__ECSPI3_MOSI 0x2
  741 + MX7D_PAD_SAI2_RX_DATA__ECSPI3_SCLK 0x2
  742 + >;
  743 + };
  744 +
  745 + pinctrl_enet1: enet1grp {
  746 + fsl,pins = <
  747 + MX7D_PAD_GPIO1_IO10__ENET1_MDIO 0x3
  748 + MX7D_PAD_GPIO1_IO11__ENET1_MDC 0x3
  749 + MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC 0x1
  750 + MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 0x1
  751 + MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 0x1
  752 + MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2 0x1
  753 + MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3 0x1
  754 + MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x1
  755 + MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC 0x1
  756 + MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 0x1
  757 + MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 0x1
  758 + MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2 0x1
  759 + MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3 0x1
  760 + MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x1
  761 + >;
  762 + };
  763 +
  764 + pinctrl_enet2: enet2grp {
  765 + fsl,pins = <
  766 + MX7D_PAD_EPDC_GDSP__ENET2_RGMII_TXC 0x1
  767 + MX7D_PAD_EPDC_SDCE2__ENET2_RGMII_TD0 0x1
  768 + MX7D_PAD_EPDC_SDCE3__ENET2_RGMII_TD1 0x1
  769 + MX7D_PAD_EPDC_GDCLK__ENET2_RGMII_TD2 0x1
  770 + MX7D_PAD_EPDC_GDOE__ENET2_RGMII_TD3 0x1
  771 + MX7D_PAD_EPDC_GDRL__ENET2_RGMII_TX_CTL 0x1
  772 + MX7D_PAD_EPDC_SDCE1__ENET2_RGMII_RXC 0x1
  773 + MX7D_PAD_EPDC_SDCLK__ENET2_RGMII_RD0 0x1
  774 + MX7D_PAD_EPDC_SDLE__ENET2_RGMII_RD1 0x1
  775 + MX7D_PAD_EPDC_SDOE__ENET2_RGMII_RD2 0x1
  776 + MX7D_PAD_EPDC_SDSHR__ENET2_RGMII_RD3 0x1
  777 + MX7D_PAD_EPDC_SDCE0__ENET2_RGMII_RX_CTL 0x1
  778 + >;
  779 + };
  780 +
  781 + pinctrl_epdc0: epdcgrp0 {
  782 + fsl,pins = <
  783 + MX7D_PAD_EPDC_DATA00__EPDC_DATA0 0x2
  784 + MX7D_PAD_EPDC_DATA01__EPDC_DATA1 0x2
  785 + MX7D_PAD_EPDC_DATA02__EPDC_DATA2 0x2
  786 + MX7D_PAD_EPDC_DATA03__EPDC_DATA3 0x2
  787 + MX7D_PAD_EPDC_DATA04__EPDC_DATA4 0x2
  788 + MX7D_PAD_EPDC_DATA05__EPDC_DATA5 0x2
  789 + MX7D_PAD_EPDC_DATA06__EPDC_DATA6 0x2
  790 + MX7D_PAD_EPDC_DATA07__EPDC_DATA7 0x2
  791 + MX7D_PAD_EPDC_DATA08__EPDC_DATA8 0x2
  792 + MX7D_PAD_EPDC_DATA09__EPDC_DATA9 0x2
  793 + MX7D_PAD_EPDC_DATA10__EPDC_DATA10 0x2
  794 + MX7D_PAD_EPDC_DATA11__EPDC_DATA11 0x2
  795 + MX7D_PAD_EPDC_DATA12__EPDC_DATA12 0x2
  796 + MX7D_PAD_EPDC_DATA13__EPDC_DATA13 0x2
  797 + MX7D_PAD_EPDC_DATA14__EPDC_DATA14 0x2
  798 + MX7D_PAD_EPDC_DATA15__EPDC_DATA15 0x2
  799 + MX7D_PAD_EPDC_SDCLK__EPDC_SDCLK 0x2
  800 + MX7D_PAD_EPDC_SDLE__EPDC_SDLE 0x2
  801 + MX7D_PAD_EPDC_SDOE__EPDC_SDOE 0x2
  802 + MX7D_PAD_EPDC_SDSHR__EPDC_SDSHR 0x2
  803 + MX7D_PAD_EPDC_SDCE0__EPDC_SDCE0 0x2
  804 + MX7D_PAD_EPDC_SDCE1__EPDC_SDCE1 0x2
  805 + MX7D_PAD_EPDC_GDCLK__EPDC_GDCLK 0x2
  806 + MX7D_PAD_EPDC_GDOE__EPDC_GDOE 0x2
  807 + MX7D_PAD_EPDC_GDRL__EPDC_GDRL 0x2
  808 + MX7D_PAD_EPDC_GDSP__EPDC_GDSP 0x2
  809 + >;
  810 + };
  811 +
  812 + pinctrl_flexcan1: flexcan1grp {
  813 + fsl,pins = <
  814 + MX7D_PAD_GPIO1_IO12__FLEXCAN1_RX 0x59
  815 + MX7D_PAD_GPIO1_IO13__FLEXCAN1_TX 0x59
  816 + >;
  817 + };
  818 +
  819 + pinctrl_flexcan2: flexcan2grp {
  820 + fsl,pins = <
  821 + MX7D_PAD_GPIO1_IO14__FLEXCAN2_RX 0x59
  822 + MX7D_PAD_GPIO1_IO15__FLEXCAN2_TX 0x59
  823 + >;
  824 + };
  825 +
  826 + pinctrl_gpmi_nand_1: gpmi-nand-1 {
  827 + fsl,pins = <
  828 + MX7D_PAD_SD3_CLK__NAND_CLE 0x71
  829 + MX7D_PAD_SD3_CMD__NAND_ALE 0x71
  830 + MX7D_PAD_SAI1_MCLK__NAND_WP_B 0x71
  831 + MX7D_PAD_SAI1_TX_BCLK__NAND_CE0_B 0x71
  832 + MX7D_PAD_SAI1_RX_DATA__NAND_CE1_B 0x71
  833 + MX7D_PAD_SAI1_TX_DATA__NAND_READY_B 0x74
  834 + MX7D_PAD_SD3_STROBE__NAND_RE_B 0x71
  835 + MX7D_PAD_SD3_RESET_B__NAND_WE_B 0x71
  836 + MX7D_PAD_SD3_DATA0__NAND_DATA00 0x71
  837 + MX7D_PAD_SD3_DATA1__NAND_DATA01 0x71
  838 + MX7D_PAD_SD3_DATA2__NAND_DATA02 0x71
  839 + MX7D_PAD_SD3_DATA3__NAND_DATA03 0x71
  840 + MX7D_PAD_SD3_DATA4__NAND_DATA04 0x71
  841 + MX7D_PAD_SD3_DATA5__NAND_DATA05 0x71
  842 + MX7D_PAD_SD3_DATA6__NAND_DATA06 0x71
  843 + MX7D_PAD_SD3_DATA7__NAND_DATA07 0x71
  844 + >;
  845 + };
  846 +
  847 + pinctrl_i2c1: i2c1grp {
  848 + fsl,pins = <
  849 + MX7D_PAD_I2C1_SDA__I2C1_SDA 0x4000007f
  850 + MX7D_PAD_I2C1_SCL__I2C1_SCL 0x4000007f
  851 + >;
  852 + };
  853 +
  854 + pinctrl_i2c1_gpio: i2c1grp_gpio {
  855 + fsl,pins = <
  856 + MX7D_PAD_I2C1_SDA__GPIO4_IO9 0x7f
  857 + MX7D_PAD_I2C1_SCL__GPIO4_IO8 0x7f
  858 + >;
  859 + };
  860 +
  861 + pinctrl_i2c2: i2c2grp {
  862 + fsl,pins = <
  863 + MX7D_PAD_I2C2_SDA__I2C2_SDA 0x4000007f
  864 + MX7D_PAD_I2C2_SCL__I2C2_SCL 0x4000007f
  865 + >;
  866 + };
  867 +
  868 + pinctrl_i2c2_gpio: i2c2grp_gpio {
  869 + fsl,pins = <
  870 + MX7D_PAD_I2C2_SDA__GPIO4_IO11 0x7f
  871 + MX7D_PAD_I2C2_SCL__GPIO4_IO10 0x7f
  872 + >;
  873 + };
  874 +
  875 + pinctrl_i2c3: i2c3grp {
  876 + fsl,pins = <
  877 + MX7D_PAD_I2C3_SDA__I2C3_SDA 0x4000007f
  878 + MX7D_PAD_I2C3_SCL__I2C3_SCL 0x4000007f
  879 + >;
  880 + };
  881 +
  882 + pinctrl_i2c3_gpio: i2c3grp_gpio {
  883 + fsl,pins = <
  884 + MX7D_PAD_I2C3_SDA__GPIO4_IO13 0x7f
  885 + MX7D_PAD_I2C3_SCL__GPIO4_IO12 0x7f
  886 + >;
  887 + };
  888 +
  889 + pinctrl_i2c4: i2c4grp {
  890 + fsl,pins = <
  891 + MX7D_PAD_SAI1_RX_BCLK__I2C4_SDA 0x4000007f
  892 + MX7D_PAD_SAI1_RX_SYNC__I2C4_SCL 0x4000007f
  893 + >;
  894 + };
  895 +
  896 + pinctrl_i2c4_gpio: i2c4grp_gpio {
  897 + fsl,pins = <
  898 + MX7D_PAD_SAI1_RX_BCLK__GPIO6_IO17 0x7f
  899 + MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16 0x7f
  900 + >;
  901 + };
  902 +
  903 + pinctrl_lcdif: lcdifgrp {
  904 + fsl,pins = <
  905 + MX7D_PAD_LCD_DATA00__LCD_DATA0 0x79
  906 + MX7D_PAD_LCD_DATA01__LCD_DATA1 0x79
  907 + MX7D_PAD_LCD_DATA02__LCD_DATA2 0x79
  908 + MX7D_PAD_LCD_DATA03__LCD_DATA3 0x79
  909 + MX7D_PAD_LCD_DATA04__LCD_DATA4 0x79
  910 + MX7D_PAD_LCD_DATA05__LCD_DATA5 0x79
  911 + MX7D_PAD_LCD_DATA06__LCD_DATA6 0x79
  912 + MX7D_PAD_LCD_DATA07__LCD_DATA7 0x79
  913 + MX7D_PAD_LCD_DATA08__LCD_DATA8 0x79
  914 + MX7D_PAD_LCD_DATA09__LCD_DATA9 0x79
  915 + MX7D_PAD_LCD_DATA10__LCD_DATA10 0x79
  916 + MX7D_PAD_LCD_DATA11__LCD_DATA11 0x79
  917 + MX7D_PAD_LCD_DATA12__LCD_DATA12 0x79
  918 + MX7D_PAD_LCD_DATA13__LCD_DATA13 0x79
  919 + MX7D_PAD_LCD_DATA14__LCD_DATA14 0x79
  920 + MX7D_PAD_LCD_DATA15__LCD_DATA15 0x79
  921 + MX7D_PAD_LCD_DATA16__LCD_DATA16 0x79
  922 + MX7D_PAD_LCD_DATA17__LCD_DATA17 0x79
  923 + MX7D_PAD_LCD_DATA18__LCD_DATA18 0x79
  924 + MX7D_PAD_LCD_DATA19__LCD_DATA19 0x79
  925 + MX7D_PAD_LCD_DATA20__LCD_DATA20 0x79
  926 + MX7D_PAD_LCD_DATA21__LCD_DATA21 0x79
  927 + MX7D_PAD_LCD_DATA22__LCD_DATA22 0x79
  928 + MX7D_PAD_LCD_DATA23__LCD_DATA23 0x79
  929 + MX7D_PAD_LCD_CLK__LCD_CLK 0x79
  930 + MX7D_PAD_LCD_ENABLE__LCD_ENABLE 0x79
  931 + MX7D_PAD_LCD_VSYNC__LCD_VSYNC 0x79
  932 + MX7D_PAD_LCD_HSYNC__LCD_HSYNC 0x79
  933 + >;
  934 + };
  935 +
  936 + pinctrl_sai1: sai1grp {
  937 + fsl,pins = <
  938 + MX7D_PAD_SAI1_TX_BCLK__SAI1_TX_BCLK 0x1f
  939 + MX7D_PAD_SAI1_TX_SYNC__SAI1_TX_SYNC 0x1f
  940 + MX7D_PAD_SAI1_TX_DATA__SAI1_TX_DATA0 0x30
  941 + MX7D_PAD_SAI1_RX_DATA__SAI1_RX_DATA0 0x1f
  942 + >;
  943 + };
  944 +
  945 + pinctrl_sai1_mclk: sai1grp_mclk {
  946 + fsl,pins = <
  947 + MX7D_PAD_SAI1_MCLK__SAI1_MCLK 0x1f
  948 + >;
  949 + };
  950 +
  951 + pinctrl_sai2: sai2grp {
  952 + fsl,pins = <
  953 + MX7D_PAD_SAI2_TX_BCLK__SAI2_TX_BCLK 0x1f
  954 + MX7D_PAD_SAI2_TX_SYNC__SAI2_TX_SYNC 0x1f
  955 + MX7D_PAD_SAI2_TX_DATA__SAI2_TX_DATA0 0x30
  956 + MX7D_PAD_SAI2_RX_DATA__SAI2_RX_DATA0 0x1f
  957 + >;
  958 + };
  959 +
  960 + pinctrl_sai3: sai3grp {
  961 + fsl,pins = <
  962 + MX7D_PAD_UART3_TX_DATA__SAI3_TX_BCLK 0x1f
  963 + MX7D_PAD_UART3_CTS_B__SAI3_TX_SYNC 0x1f
  964 + MX7D_PAD_UART3_RTS_B__SAI3_TX_DATA0 0x30
  965 + >;
  966 + };
  967 +
  968 + pinctrl_uart1: uart1grp {
  969 + fsl,pins = <
  970 + MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX 0x79
  971 + MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX 0x79
  972 + >;
  973 + };
  974 +
  975 + pinctrl_uart2: uart2grp {
  976 + fsl,pins = <
  977 + MX7D_PAD_UART2_RX_DATA__UART2_DCE_RX 0x79
  978 + MX7D_PAD_UART2_TX_DATA__UART2_DCE_TX 0x79
  979 + >;
  980 + };
  981 +
  982 + pinctrl_uart3: uart3grp {
  983 + fsl,pins = <
  984 + MX7D_PAD_UART3_RX_DATA__UART3_DCE_RX 0x79
  985 + MX7D_PAD_UART3_TX_DATA__UART3_DCE_TX 0x79
  986 + >;
  987 + };
  988 +
  989 + pinctrl_uart5: uart5grp {
  990 + fsl,pins = <
  991 + MX7D_PAD_SAI1_TX_BCLK__UART5_DCE_TX 0x79
  992 + MX7D_PAD_SAI1_RX_DATA__UART5_DCE_RX 0x79
  993 + >;
  994 + };
  995 +
  996 + pinctrl_uart5dte: uart5dtegrp {
  997 + fsl,pins = <
  998 + MX7D_PAD_SAI1_TX_BCLK__UART5_DTE_RX 0x79
  999 + MX7D_PAD_SAI1_RX_DATA__UART5_DTE_TX 0x79
  1000 + >;
  1001 + };
  1002 +
  1003 + pinctrl_uart6: uart6grp {
  1004 + fsl,pins = <
  1005 + MX7D_PAD_EPDC_DATA09__UART6_DCE_TX 0x79
  1006 + MX7D_PAD_EPDC_DATA08__UART6_DCE_RX 0x79
  1007 + MX7D_PAD_EPDC_DATA10__UART6_DTE_CTS 0x79
  1008 + MX7D_PAD_EPDC_DATA11__UART6_DTE_RTS 0x79
  1009 + >;
  1010 + };
  1011 +
  1012 + pinctrl_uart7: uart7grp {
  1013 + fsl,pins = <
  1014 + MX7D_PAD_EPDC_DATA13__UART7_DCE_TX 0x79
  1015 + MX7D_PAD_EPDC_DATA12__UART7_DCE_RX 0x79
  1016 + MX7D_PAD_EPDC_DATA14__UART7_DTE_CTS 0x79
  1017 + MX7D_PAD_EPDC_DATA15__UART7_DTE_RTS 0x79
  1018 + >;
  1019 + };
  1020 +
  1021 + pinctrl_usdhc1_gpio: usdhc1_gpiogrp {
  1022 + fsl,pins = <
  1023 + MX7D_PAD_SD1_CD_B__GPIO5_IO0 0x59 /* CD */
  1024 + MX7D_PAD_SD1_WP__GPIO5_IO1 0x59 /* WP */
  1025 + >;
  1026 + };
  1027 +
  1028 + pinctrl_usbotg2_pwr_1: usbotg2-1 {
  1029 + fsl,pins = <
  1030 + MX7D_PAD_UART3_CTS_B__GPIO4_IO7 0x14
  1031 + >;
  1032 + };
  1033 +
  1034 + pinctrl_usdhc1: usdhc1grp {
  1035 + fsl,pins = <
  1036 + MX7D_PAD_SD1_CMD__SD1_CMD 0x59
  1037 + MX7D_PAD_SD1_CLK__SD1_CLK 0x19
  1038 + MX7D_PAD_SD1_DATA0__SD1_DATA0 0x59
  1039 + MX7D_PAD_SD1_DATA1__SD1_DATA1 0x59
  1040 + MX7D_PAD_SD1_DATA2__SD1_DATA2 0x59
  1041 + MX7D_PAD_SD1_DATA3__SD1_DATA3 0x59
  1042 +
  1043 + >;
  1044 + };
  1045 +
  1046 + pinctrl_usdhc1_100mhz: usdhc1grp_100mhz {
  1047 + fsl,pins = <
  1048 + MX7D_PAD_SD1_CMD__SD1_CMD 0x5a
  1049 + MX7D_PAD_SD1_CLK__SD1_CLK 0x1a
  1050 + MX7D_PAD_SD1_DATA0__SD1_DATA0 0x5a
  1051 + MX7D_PAD_SD1_DATA1__SD1_DATA1 0x5a
  1052 + MX7D_PAD_SD1_DATA2__SD1_DATA2 0x5a
  1053 + MX7D_PAD_SD1_DATA3__SD1_DATA3 0x5a
  1054 + >;
  1055 + };
  1056 +
  1057 + pinctrl_usdhc1_200mhz: usdhc1grp_200mhz {
  1058 + fsl,pins = <
  1059 + MX7D_PAD_SD1_CMD__SD1_CMD 0x5b
  1060 + MX7D_PAD_SD1_CLK__SD1_CLK 0x1b
  1061 + MX7D_PAD_SD1_DATA0__SD1_DATA0 0x5b
  1062 + MX7D_PAD_SD1_DATA1__SD1_DATA1 0x5b
  1063 + MX7D_PAD_SD1_DATA2__SD1_DATA2 0x5b
  1064 + MX7D_PAD_SD1_DATA3__SD1_DATA3 0x5b
  1065 + >;
  1066 + };
  1067 +
  1068 + pinctrl_usdhc2: usdhc2grp {
  1069 + fsl,pins = <
  1070 + MX7D_PAD_SD2_CMD__SD2_CMD 0x59
  1071 + MX7D_PAD_SD2_CLK__SD2_CLK 0x19
  1072 + MX7D_PAD_SD2_DATA0__SD2_DATA0 0x59
  1073 + MX7D_PAD_SD2_DATA1__SD2_DATA1 0x59
  1074 + MX7D_PAD_SD2_DATA2__SD2_DATA2 0x59
  1075 + MX7D_PAD_SD2_DATA3__SD2_DATA3 0x59
  1076 + MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21 0x19 /* WL_REG_ON */
  1077 + MX7D_PAD_ECSPI2_SCLK__GPIO4_IO20 0x19 /* WL_HOST_WAKE */
  1078 + >;
  1079 + };
  1080 +
  1081 + pinctrl_usdhc2_100mhz: usdhc2grp_100mhz {
  1082 + fsl,pins = <
  1083 + MX7D_PAD_SD2_CMD__SD2_CMD 0x5a
  1084 + MX7D_PAD_SD2_CLK__SD2_CLK 0x1a
  1085 + MX7D_PAD_SD2_DATA0__SD2_DATA0 0x5a
  1086 + MX7D_PAD_SD2_DATA1__SD2_DATA1 0x5a
  1087 + MX7D_PAD_SD2_DATA2__SD2_DATA2 0x5a
  1088 + MX7D_PAD_SD2_DATA3__SD2_DATA3 0x5a
  1089 + >;
  1090 + };
  1091 +
  1092 + pinctrl_usdhc2_200mhz: usdhc2grp_200mhz {
  1093 + fsl,pins = <
  1094 + MX7D_PAD_SD2_CMD__SD2_CMD 0x5b
  1095 + MX7D_PAD_SD2_CLK__SD2_CLK 0x1b
  1096 + MX7D_PAD_SD2_DATA0__SD2_DATA0 0x5b
  1097 + MX7D_PAD_SD2_DATA1__SD2_DATA1 0x5b
  1098 + MX7D_PAD_SD2_DATA2__SD2_DATA2 0x5b
  1099 + MX7D_PAD_SD2_DATA3__SD2_DATA3 0x5b
  1100 + >;
  1101 + };
  1102 +
  1103 +
  1104 + pinctrl_usdhc3: usdhc3grp {
  1105 + fsl,pins = <
  1106 + MX7D_PAD_SD3_CMD__SD3_CMD 0x59
  1107 + MX7D_PAD_SD3_CLK__SD3_CLK 0x19
  1108 + MX7D_PAD_SD3_DATA0__SD3_DATA0 0x59
  1109 + MX7D_PAD_SD3_DATA1__SD3_DATA1 0x59
  1110 + MX7D_PAD_SD3_DATA2__SD3_DATA2 0x59
  1111 + MX7D_PAD_SD3_DATA3__SD3_DATA3 0x59
  1112 + MX7D_PAD_SD3_DATA4__SD3_DATA4 0x59
  1113 + MX7D_PAD_SD3_DATA5__SD3_DATA5 0x59
  1114 + MX7D_PAD_SD3_DATA6__SD3_DATA6 0x59
  1115 + MX7D_PAD_SD3_DATA7__SD3_DATA7 0x59
  1116 + MX7D_PAD_SD3_STROBE__SD3_STROBE 0x19
  1117 + >;
  1118 + };
  1119 +
  1120 + pinctrl_usdhc3_100mhz: usdhc3grp_100mhz {
  1121 + fsl,pins = <
  1122 + MX7D_PAD_SD3_CMD__SD3_CMD 0x5a
  1123 + MX7D_PAD_SD3_CLK__SD3_CLK 0x1a
  1124 + MX7D_PAD_SD3_DATA0__SD3_DATA0 0x5a
  1125 + MX7D_PAD_SD3_DATA1__SD3_DATA1 0x5a
  1126 + MX7D_PAD_SD3_DATA2__SD3_DATA2 0x5a
  1127 + MX7D_PAD_SD3_DATA3__SD3_DATA3 0x5a
  1128 + MX7D_PAD_SD3_DATA4__SD3_DATA4 0x5a
  1129 + MX7D_PAD_SD3_DATA5__SD3_DATA5 0x5a
  1130 + MX7D_PAD_SD3_DATA6__SD3_DATA6 0x5a
  1131 + MX7D_PAD_SD3_DATA7__SD3_DATA7 0x5a
  1132 + MX7D_PAD_SD3_STROBE__SD3_STROBE 0x1a
  1133 + >;
  1134 + };
  1135 +
  1136 + pinctrl_usdhc3_200mhz: usdhc3grp_200mhz {
  1137 + fsl,pins = <
  1138 + MX7D_PAD_SD3_CMD__SD3_CMD 0x5b
  1139 + MX7D_PAD_SD3_CLK__SD3_CLK 0x1b
  1140 + MX7D_PAD_SD3_DATA0__SD3_DATA0 0x5b
  1141 + MX7D_PAD_SD3_DATA1__SD3_DATA1 0x5b
  1142 + MX7D_PAD_SD3_DATA2__SD3_DATA2 0x5b
  1143 + MX7D_PAD_SD3_DATA3__SD3_DATA3 0x5b
  1144 + MX7D_PAD_SD3_DATA4__SD3_DATA4 0x5b
  1145 + MX7D_PAD_SD3_DATA5__SD3_DATA5 0x5b
  1146 + MX7D_PAD_SD3_DATA6__SD3_DATA6 0x5b
  1147 + MX7D_PAD_SD3_DATA7__SD3_DATA7 0x5b
  1148 + MX7D_PAD_SD3_STROBE__SD3_STROBE 0x1b
  1149 + >;
  1150 + };
  1151 +
  1152 + };
  1153 +};
arch/arm/dts/imx7s-smarcfimx7.dts
  1 +/*
  2 + * Copyright 2017 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +/dts-v1/;
  8 +
  9 +#include "imx7s.dtsi"
  10 +
  11 +/ {
  12 + model = "Embedian i.MX7S SMARC 2.0 Module";
  13 + compatible = "fsl,imx7s-smarcfimx7", "fsl,imx7s";
  14 +
  15 + memory {
  16 + reg = <0x80000000 0x20000000>;
  17 + };
  18 +
  19 + regulators {
  20 + compatible = "simple-bus";
  21 + #address-cells = <1>;
  22 + #size-cells = <0>;
  23 +
  24 + reg_usb_otg1_vbus: regulator@0 {
  25 + compatible = "regulator-fixed";
  26 + reg = <0>;
  27 + regulator-name = "usb_otg1_vbus";
  28 + regulator-min-microvolt = <5000000>;
  29 + regulator-max-microvolt = <5000000>;
  30 + gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
  31 + enable-active-high;
  32 + };
  33 +
  34 + reg_sd1_vmmc: regulator@3 {
  35 + compatible = "regulator-fixed";
  36 + regulator-name = "VDD_SD1";
  37 + regulator-min-microvolt = <3300000>;
  38 + regulator-max-microvolt = <3300000>;
  39 + startup-delay-us = <70000>;
  40 + off-on-delay = <20000>;
  41 + enable-active-high;
  42 + };
  43 +
  44 + reg_aud_3v3: regulator@4 {
  45 + compatible = "regulator-fixed";
  46 + reg = <4>;
  47 + regulator-name = "aud-3v3";
  48 + regulator-min-microvolt = <3300000>;
  49 + regulator-max-microvolt = <3300000>;
  50 + };
  51 +
  52 + reg_vref_1v8: regulator@5 {
  53 + compatible = "regulator-fixed";
  54 + reg = <5>;
  55 + regulator-name = "vref-1v8";
  56 + regulator-min-microvolt = <1800000>;
  57 + regulator-max-microvolt = <1800000>;
  58 + };
  59 + };
  60 +
  61 + backlight {
  62 + compatible = "pwm-backlight";
  63 + enable-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>; /* Backlight Enable Pin*/
  64 + pwms = <&pwm2 0 5000000>;
  65 + brightness-levels = <0 4 8 16 32 64 128 255>;
  66 + default-brightness-level = <7>;
  67 + status = "okay";
  68 + };
  69 +
  70 + sound {
  71 + compatible = "fsl,imx7d-smarcfimx7-sgtl5000",
  72 + "fsl,imx-audio-sgtl5000";
  73 + model = "sgtl5000-audio";
  74 + cpu-dai = <&sai1>;
  75 + audio-codec = <&codec>;
  76 + codec-master;
  77 + audio-routing =
  78 + "LINE_IN", "Line In Jack",
  79 + "MIC_IN", "Mic Jack",
  80 + "Mic Jack", "Mic Bias",
  81 + "Headphone Jack", "HP_OUT";
  82 + };
  83 +};
  84 +
  85 +&cpu0 {
  86 + arm-supply = <&sw1a_reg>;
  87 +};
  88 +
  89 +/* SPI0 */
  90 +&ecspi1 {
  91 + fsl,spi-num-chipselects = <2>;
  92 + cs-gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>, <&gpio4 0 GPIO_ACTIVE_HIGH>;
  93 + pinctrl-names = "default";
  94 + pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>;
  95 + dmas = <&sdma 36 4 0>, <&sdma 37 4 0>;
  96 + dma-names = "rx", "tx";
  97 + status = "okay";
  98 +
  99 + spidev1: spidev@0 {
  100 + compatible = "spidev";
  101 + spi-max-frequency = <24000000>;
  102 + reg = <0>;
  103 + };
  104 + spidev2: spidev@1 {
  105 + compatible = "spidev";
  106 + spi-max-frequency = <24000000>;
  107 + reg = <1>;
  108 + };
  109 +};
  110 +
  111 +/* SPINOR */
  112 +&ecspi2 {
  113 + fsl,spi-num-chipselects = <1>;
  114 + pinctrl-names = "default";
  115 + pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>;
  116 + cs-gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
  117 + dmas = <&sdma 38 4 0>, <&sdma 39 4 0>;
  118 + dma-names = "rx", "tx";
  119 + status = "okay";
  120 +
  121 + flash: mx25u3235f@0 {
  122 + #address-cells = <1>;
  123 + #size-cells = <1>;
  124 + compatible = "macronix,mx25u3235f", "jedec,spi-nor";
  125 + spi-max-frequency = <24000000>;
  126 + reg = <0>;
  127 + partition@0 {
  128 + label = "U-Boot";
  129 + reg = <0x0 0x100000>;
  130 + };
  131 +
  132 + partition@100000 {
  133 + label = "U-Boot Environment";
  134 + reg = <0x100000 0x080000>;
  135 + };
  136 +
  137 + partition@180000 {
  138 + label = "Flattened Device Tree";
  139 + reg = <0x180000 0x200000>;
  140 + };
  141 +
  142 + };
  143 +};
  144 +
  145 +/* ECSPI */
  146 +&ecspi3 {
  147 + fsl,spi-num-chipselects = <2>;
  148 + pinctrl-names = "default";
  149 + pinctrl-0 = <&pinctrl_ecspi3 &pinctrl_ecspi3_cs>;
  150 + cs-gpios = <&gpio6 22 GPIO_ACTIVE_HIGH>, <&gpio5 9 GPIO_ACTIVE_HIGH>;
  151 + dmas = <&sdma 40 4 0>, <&sdma 41 4 0>;
  152 + dma-names = "rx", "tx";
  153 + status = "okay";
  154 +
  155 + spidev3: spidev@0 {
  156 + compatible = "spidev";
  157 + spi-max-frequency = <24000000>;
  158 + reg = <0>;
  159 + };
  160 + spidev4: spidev@4 {
  161 + compatible = "spidev";
  162 + spi-max-frequency = <24000000>;
  163 + reg = <1>;
  164 + };
  165 +};
  166 +
  167 +&clks {
  168 + assigned-clocks = <&clks IMX7D_PLL_AUDIO_POST_DIV>;
  169 + assigned-clock-rates = <884736000>;
  170 +};
  171 +
  172 +&fec1 {
  173 + pinctrl-names = "default";
  174 + pinctrl-0 = <&pinctrl_enet1>;
  175 + assigned-clocks = <&clks IMX7D_ENET_PHY_REF_ROOT_SRC>,
  176 + <&clks IMX7D_ENET_AXI_ROOT_SRC>,
  177 + <&clks IMX7D_ENET1_TIME_ROOT_SRC>,
  178 + <&clks IMX7D_ENET1_TIME_ROOT_CLK>,
  179 + <&clks IMX7D_ENET_AXI_ROOT_CLK>;
  180 + assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_25M_CLK>,
  181 + <&clks IMX7D_PLL_ENET_MAIN_250M_CLK>,
  182 + <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
  183 + assigned-clock-rates = <0>, <0>, <0>, <100000000>, <250000000>;
  184 + phy-mode = "rgmii";
  185 + phy-handle = <&ethphy0>;
  186 + fsl,magic-packet;
  187 + status = "okay";
  188 +
  189 + mdio {
  190 + #address-cells = <1>;
  191 + #size-cells = <0>;
  192 +
  193 + ethphy0: ethernet-phy@6 {
  194 + compatible = "ethernet-phy-ieee802.3-c22";
  195 + reg = <0>;
  196 + };
  197 + };
  198 +};
  199 +
  200 +&flexcan1 {
  201 + pinctrl-names = "default";
  202 + pinctrl-0 = <&pinctrl_flexcan1>;
  203 + xceiver-supply = <&reg_vref_1v8>;
  204 + status = "okay";
  205 +};
  206 +
  207 +&flexcan2 {
  208 + pinctrl-names = "default";
  209 + pinctrl-0 = <&pinctrl_flexcan2>;
  210 + xceiver-supply = <&reg_vref_1v8>;
  211 + status = "okay";
  212 +};
  213 +
  214 +&i2c1 {
  215 + clock-frequency = <100000>;
  216 + pinctrl-names = "default", "gpio";
  217 + pinctrl-0 = <&pinctrl_i2c1>;
  218 + pinctrl-1 = <&pinctrl_i2c1_gpio>;
  219 + scl-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
  220 + sda-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
  221 + status = "okay";
  222 +
  223 + pmic: pfuze3000@08 {
  224 + compatible = "fsl,pfuze3000";
  225 + reg = <0x08>;
  226 +
  227 + regulators {
  228 + sw1a_reg: sw1a {
  229 + regulator-min-microvolt = <700000>;
  230 + regulator-max-microvolt = <3300000>;
  231 + regulator-boot-on;
  232 + regulator-always-on;
  233 + regulator-ramp-delay = <6250>;
  234 + };
  235 +
  236 + /* use sw1c_reg to align with pfuze100/pfuze200 */
  237 + sw1c_reg: sw1b {
  238 + regulator-min-microvolt = <700000>;
  239 + regulator-max-microvolt = <1475000>;
  240 + regulator-boot-on;
  241 + regulator-always-on;
  242 + regulator-ramp-delay = <6250>;
  243 + };
  244 +
  245 + sw2_reg: sw2 {
  246 + regulator-min-microvolt = <1500000>;
  247 + regulator-max-microvolt = <1850000>;
  248 + regulator-boot-on;
  249 + regulator-always-on;
  250 + };
  251 +
  252 + sw3a_reg: sw3 {
  253 + regulator-min-microvolt = <900000>;
  254 + regulator-max-microvolt = <1650000>;
  255 + regulator-boot-on;
  256 + regulator-always-on;
  257 + };
  258 +
  259 + swbst_reg: swbst {
  260 + regulator-min-microvolt = <5000000>;
  261 + regulator-max-microvolt = <5150000>;
  262 + };
  263 +
  264 + snvs_reg: vsnvs {
  265 + regulator-min-microvolt = <1000000>;
  266 + regulator-max-microvolt = <3000000>;
  267 + regulator-boot-on;
  268 + regulator-always-on;
  269 + };
  270 +
  271 + vref_reg: vrefddr {
  272 + regulator-boot-on;
  273 + regulator-always-on;
  274 + };
  275 +
  276 + vgen1_reg: vldo1 {
  277 + regulator-min-microvolt = <1800000>;
  278 + regulator-max-microvolt = <3300000>;
  279 + regulator-always-on;
  280 + };
  281 +
  282 + vgen2_reg: vldo2 {
  283 + regulator-min-microvolt = <800000>;
  284 + regulator-max-microvolt = <1550000>;
  285 + regulator-always-on;
  286 + };
  287 +
  288 + vgen3_reg: vccsd {
  289 + regulator-min-microvolt = <2850000>;
  290 + regulator-max-microvolt = <3300000>;
  291 + regulator-always-on;
  292 + };
  293 +
  294 + vgen4_reg: v33 {
  295 + regulator-min-microvolt = <2850000>;
  296 + regulator-max-microvolt = <3300000>;
  297 + regulator-always-on;
  298 + };
  299 +
  300 + vgen5_reg: vldo3 {
  301 + regulator-min-microvolt = <1800000>;
  302 + regulator-max-microvolt = <3300000>;
  303 + regulator-always-on;
  304 + };
  305 +
  306 + vgen6_reg: vldo4 {
  307 + regulator-min-microvolt = <1800000>;
  308 + regulator-max-microvolt = <3300000>;
  309 + regulator-always-on;
  310 + };
  311 + };
  312 + };
  313 +
  314 + s35390a: s35390a@30 {
  315 + compatible = "s35390a";
  316 + reg = <0x30>;
  317 + };
  318 +
  319 + cape_eeprom0: cape_eeprom@57 {
  320 + compatible = "at,24c256";
  321 + reg = <0x57>;
  322 + };
  323 +
  324 + codec: sgtl5000@0a {
  325 + compatible = "fsl,sgtl5000";
  326 + reg = <0x0a>;
  327 + pinctrl-names = "default";
  328 + pinctrl-0 = <&pinctrl_sai1_mclk>;
  329 + VDDA-supply = <&reg_aud_3v3>;
  330 + VDDIO-supply = <&reg_vref_1v8>;
  331 + clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
  332 + clock-names = "mclk";
  333 + };
  334 +};
  335 +
  336 +&i2c2 {
  337 + clock-frequency = <100000>;
  338 + pinctrl-names = "default", "gpio";
  339 + pinctrl-0 = <&pinctrl_i2c2>;
  340 + pinctrl-1 = <&pinctrl_i2c2_gpio>;
  341 + scl-gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;
  342 + sda-gpios = <&gpio4 11 GPIO_ACTIVE_HIGH>;
  343 + status = "okay";
  344 +
  345 + baseboard_eeprom: baseboard_eeprom@50 {
  346 + compatible = "at,24c256";
  347 + reg = <0x50>;
  348 + };
  349 +};
  350 +
  351 +&i2c3 {
  352 + clock-frequency = <100000>;
  353 + pinctrl-names = "default", "gpio";
  354 + pinctrl-0 = <&pinctrl_i2c3>;
  355 + pinctrl-1 = <&pinctrl_i2c3_gpio>;
  356 + scl-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
  357 + sda-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
  358 + status = "okay";
  359 +};
  360 +
  361 +&i2c4 {
  362 + clock-frequency = <100000>;
  363 + pinctrl-names = "default", "gpio";
  364 + pinctrl-0 = <&pinctrl_i2c4>;
  365 + pinctrl-1 = <&pinctrl_i2c4_gpio>;
  366 + scl-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
  367 + sda-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>;
  368 + status = "okay";
  369 +};
  370 +
  371 +&lcdif {
  372 + pinctrl-names = "default";
  373 + pinctrl-0 = <&pinctrl_lcdif>;
  374 + enable-gpios = <&gpio3 4 0>; /* Enable LCD_VDD_EN pin */
  375 + display = <&display0>;
  376 + status = "okay";
  377 +
  378 + display0: display@0 {
  379 + bits-per-pixel = <32>;
  380 + bus-width = <24>;
  381 +
  382 + display-timings {
  383 + native-mode = <&timing0>;
  384 + /*timing0: g070vw01 {*/
  385 + timing0: timing0 {
  386 + clock-frequency = <33300000>;
  387 + hactive = <800>;
  388 + vactive = <480>;
  389 + hfront-porch = <64>;
  390 + hback-porch = <64>;
  391 + hsync-len = <128>;
  392 + vback-porch = <12>;
  393 + vfront-porch = <4>;
  394 + vsync-len = <12>;
  395 + hsync-active = <0>;
  396 + vsync-active = <0>;
  397 + de-active = <1>;
  398 + pixelclk-active = <0>;
  399 + };
  400 + };
  401 + };
  402 +};
  403 +
  404 +&sai1 {
  405 + pinctrl-names = "default";
  406 + pinctrl-0 = <&pinctrl_sai1>;
  407 + assigned-clocks = <&clks IMX7D_SAI1_ROOT_SRC>,
  408 + <&clks IMX7D_SAI1_ROOT_CLK>;
  409 + assigned-clock-parents = <&clks IMX7D_PLL_AUDIO_POST_DIV>;
  410 + assigned-clock-rates = <0>, <36864000>;
  411 + status = "okay";
  412 +};
  413 +
  414 +&sdma {
  415 + status = "okay";
  416 +};
  417 +
  418 +&pwm1 {
  419 + pinctrl-names = "default";
  420 + pinctrl-0 = <&pinctrl_pwm1>;
  421 + status = "okay";
  422 +};
  423 +
  424 +&pwm2 {
  425 + pinctrl-names = "default";
  426 + pinctrl-0 = <&pinctrl_pwm2>;
  427 + status = "okay";
  428 +};
  429 +
  430 +&iomuxc_lpsr {
  431 + pinctrl-names = "default";
  432 + pinctrl-0 = <&pinctrl_hog_2>;
  433 +
  434 + imx7d-smarcfimx7 {
  435 + pinctrl_hog_2: hoggrp-2 {
  436 + fsl,pins = <
  437 + MX7D_PAD_GPIO1_IO05__GPIO1_IO5 0x14
  438 + >;
  439 + };
  440 +
  441 + pinctrl_pwm1: pwm1grp {
  442 + fsl,pins = <
  443 + MX7D_PAD_GPIO1_IO01__PWM1_OUT 0x30
  444 + >;
  445 + };
  446 +
  447 + pinctrl_pwm2: pwm2grp {
  448 + fsl,pins = <
  449 + MX7D_PAD_GPIO1_IO02__PWM2_OUT 0x30
  450 + >;
  451 + };
  452 +
  453 + pinctrl_wdog: wdoggrp {
  454 + fsl,pins = <
  455 + MX7D_PAD_GPIO1_IO00__WDOD1_WDOG_B 0x74
  456 + >;
  457 + };
  458 +
  459 + pinctrl_sai3_mclk: sai3grp_mclk {
  460 + fsl,pins = <
  461 + MX7D_PAD_GPIO1_IO03__SAI3_MCLK 0x1f
  462 + >;
  463 + };
  464 + };
  465 +};
  466 +
  467 +/* SER0/UART6 */
  468 +&uart6 {
  469 + pinctrl-names = "default";
  470 + pinctrl-0 = <&pinctrl_uart6>;
  471 + assigned-clocks = <&clks IMX7D_UART6_ROOT_SRC>;
  472 + assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
  473 + fsl,uart-has-rtscts;
  474 + status = "okay";
  475 +};
  476 +
  477 +/* SER1/UART2 */
  478 +&uart2 {
  479 + pinctrl-names = "default";
  480 + pinctrl-0 = <&pinctrl_uart2>;
  481 + assigned-clocks = <&clks IMX7D_UART2_ROOT_SRC>;
  482 + assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
  483 + status = "okay";
  484 +};
  485 +
  486 +/* SER2/UART7 */
  487 +&uart7 {
  488 + pinctrl-names = "default";
  489 + pinctrl-0 = <&pinctrl_uart7>;
  490 + assigned-clocks = <&clks IMX7D_UART7_ROOT_SRC>;
  491 + assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
  492 + fsl,uart-has-rtscts;
  493 + status = "okay";
  494 +};
  495 +
  496 +/* SER3/UART3 */
  497 +&uart3 {
  498 + pinctrl-names = "default";
  499 + pinctrl-0 = <&pinctrl_uart3>;
  500 + assigned-clocks = <&clks IMX7D_UART3_ROOT_SRC>;
  501 + assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
  502 + status = "okay";
  503 +};
  504 +
  505 +&usbotg1 {
  506 + vbus-supply = <&reg_usb_otg1_vbus>;
  507 + gpios = <&gpio1 4 2>;
  508 + srp-disable;
  509 + hnp-disable;
  510 + adp-disable;
  511 + status = "okay";
  512 +};
  513 +
  514 +&usdhc1 {
  515 + pinctrl-names = "default";
  516 + pinctrl-0 = <&pinctrl_usdhc1>;
  517 + cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
  518 + wp-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
  519 + no-1-8-v;
  520 + vmmc-supply = <&reg_sd1_vmmc>;
  521 + enable-sdio-wakeup;
  522 + keep-power-in-suspend;
  523 + status = "okay";
  524 +};
  525 +
  526 +&usdhc3 {
  527 + pinctrl-names = "default";
  528 + pinctrl-0 = <&pinctrl_usdhc3>;
  529 + assigned-clocks = <&clks IMX7D_USDHC3_ROOT_CLK>;
  530 + assigned-clock-rates = <400000000>;
  531 + bus-width = <8>;
  532 + fsl,tuning-step = <2>;
  533 + non-removable;
  534 + status = "okay";
  535 +};
  536 +
  537 +&wdog1 {
  538 + pinctrl-names = "default";
  539 + pinctrl-0 = <&pinctrl_wdog>;
  540 + fsl,ext-reset-output;
  541 +};
  542 +
  543 +&iomuxc {
  544 + pinctrl-names = "default";
  545 + pinctrl-0 = <&pinctrl_hog_1>;
  546 +
  547 + imx7d-smarcfimx7 {
  548 +
  549 + pinctrl_hog_1: hoggrp-1 {
  550 + fsl,pins = <
  551 + MX7D_PAD_SD2_CMD__GPIO5_IO13 0x80000000 /* lvds channel select */
  552 + MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31 0x80000000 /* pcie_wake# */
  553 + MX7D_PAD_EPDC_DATA00__GPIO2_IO0 0x80000000 /* GPIO0 */
  554 + MX7D_PAD_EPDC_DATA01__GPIO2_IO1 0x80000000 /* GPIO1 */
  555 + MX7D_PAD_EPDC_DATA02__GPIO2_IO2 0x80000000 /* GPIO2 */
  556 + MX7D_PAD_EPDC_DATA03__GPIO2_IO3 0x80000000 /* GPIO3 */
  557 + MX7D_PAD_EPDC_DATA04__GPIO2_IO4 0x80000000 /* GPIO4 */
  558 + MX7D_PAD_EPDC_DATA05__GPIO2_IO5 0x80000000 /* GPIO6 */
  559 + MX7D_PAD_EPDC_DATA07__GPIO2_IO7 0x80000000 /* GPIO7 */
  560 + MX7D_PAD_EPDC_DATA06__GPIO2_IO6 0x80000000 /* GPIO8 */
  561 + MX7D_PAD_UART1_TX_DATA__GPIO4_IO1 0x80000000 /* GPIO9 */
  562 + MX7D_PAD_UART3_RTS_B__GPIO4_IO6 0x80000000 /* GPIO10 */
  563 + MX7D_PAD_UART3_CTS_B__GPIO4_IO7 0x80000000 /* GPIO11 */
  564 + MX7D_PAD_SD2_DATA0__GPIO5_IO14 0x80000000 /* SLEEP# */
  565 + MX7D_PAD_GPIO1_IO09__GPIO1_IO9 0x80000000 /* CHARGER_PRSNT# */
  566 + MX7D_PAD_GPIO1_IO08__GPIO1_IO8 0x80000000 /* CHARGING# */
  567 + MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16 0x80000000 /* CARRIER_STBY# */
  568 + MX7D_PAD_SD2_RESET_B__GPIO5_IO11 0x80000000 /* BATLOW# */
  569 + MX7D_PAD_SD1_RESET_B__GPIO5_IO2 0x80000000 /* SDIO_PWR_EN */
  570 + MX7D_PAD_LCD_RESET__GPIO3_IO4 0x80000000 /* LCD POWER */
  571 + MX7D_PAD_EPDC_BDR1__GPIO2_IO29 0x80000000 /* RESET_OUT# */
  572 + MX7D_PAD_ENET1_COL__GPIO7_IO15 0x80000000 /* ENET1_INT# */
  573 + MX7D_PAD_ENET1_RX_CLK__GPIO7_IO13 0x80000000 /* ENET2_INT# */
  574 + MX7D_PAD_ENET1_CRS__GPIO7_IO14 0x80000000 /* WDT_TIME_OUT# */
  575 + MX7D_PAD_SD3_RESET_B__GPIO6_IO11 0x5d /* eMMC_Reset# */
  576 + >;
  577 + };
  578 +
  579 + pinctrl_ecspi1_cs: ecspi1_cs_grp {
  580 + fsl,pins = <
  581 + MX7D_PAD_ECSPI1_SS0__GPIO4_IO19 0x14
  582 + MX7D_PAD_UART1_RX_DATA__GPIO4_IO0 0x14
  583 + >;
  584 + };
  585 +
  586 + pinctrl_ecspi1: ecspi1grp {
  587 + fsl,pins = <
  588 + MX7D_PAD_ECSPI1_MISO__ECSPI1_MISO 0x2
  589 + MX7D_PAD_ECSPI1_MOSI__ECSPI1_MOSI 0x2
  590 + MX7D_PAD_ECSPI1_SCLK__ECSPI1_SCLK 0x2
  591 + >;
  592 + };
  593 +
  594 + pinctrl_ecspi2_cs: ecspi2_cs_grp {
  595 + fsl,pins = <
  596 + MX7D_PAD_ECSPI2_SS0__GPIO4_IO23 0x14
  597 + >;
  598 + };
  599 +
  600 + pinctrl_ecspi2: ecspi2grp {
  601 + fsl,pins = <
  602 + MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO 0x2
  603 + MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI 0x2
  604 + MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK 0x2
  605 + >;
  606 + };
  607 +
  608 + pinctrl_ecspi3_cs: ecspi3_cs_grp {
  609 + fsl,pins = <
  610 + MX7D_PAD_SAI2_TX_DATA__GPIO6_IO22 0x14
  611 + MX7D_PAD_SD2_CD_B__GPIO5_IO9 0x14
  612 + >;
  613 + };
  614 +
  615 + pinctrl_ecspi3: ecspi3grp {
  616 + fsl,pins = <
  617 + MX7D_PAD_SAI2_TX_SYNC__ECSPI3_MISO 0x2
  618 + MX7D_PAD_SAI2_TX_BCLK__ECSPI3_MOSI 0x2
  619 + MX7D_PAD_SAI2_RX_DATA__ECSPI3_SCLK 0x2
  620 + >;
  621 + };
  622 +
  623 + pinctrl_enet1: enet1grp {
  624 + fsl,pins = <
  625 + MX7D_PAD_GPIO1_IO10__ENET1_MDIO 0x3
  626 + MX7D_PAD_GPIO1_IO11__ENET1_MDC 0x3
  627 + MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC 0x1
  628 + MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 0x1
  629 + MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 0x1
  630 + MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2 0x1
  631 + MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3 0x1
  632 + MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x1
  633 + MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC 0x1
  634 + MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 0x1
  635 + MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 0x1
  636 + MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2 0x1
  637 + MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3 0x1
  638 + MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x1
  639 + >;
  640 + };
  641 +
  642 + pinctrl_flexcan1: flexcan1grp {
  643 + fsl,pins = <
  644 + MX7D_PAD_GPIO1_IO12__FLEXCAN1_RX 0x59
  645 + MX7D_PAD_GPIO1_IO13__FLEXCAN1_TX 0x59
  646 + >;
  647 + };
  648 +
  649 + pinctrl_flexcan2: flexcan2grp {
  650 + fsl,pins = <
  651 + MX7D_PAD_GPIO1_IO14__FLEXCAN2_RX 0x59
  652 + MX7D_PAD_GPIO1_IO15__FLEXCAN2_TX 0x59
  653 + >;
  654 + };
  655 +
  656 + pinctrl_gpmi_nand_1: gpmi-nand-1 {
  657 + fsl,pins = <
  658 + MX7D_PAD_SD3_CLK__NAND_CLE 0x71
  659 + MX7D_PAD_SD3_CMD__NAND_ALE 0x71
  660 + MX7D_PAD_SAI1_MCLK__NAND_WP_B 0x71
  661 + MX7D_PAD_SAI1_TX_BCLK__NAND_CE0_B 0x71
  662 + MX7D_PAD_SAI1_RX_DATA__NAND_CE1_B 0x71
  663 + MX7D_PAD_SAI1_TX_DATA__NAND_READY_B 0x74
  664 + MX7D_PAD_SD3_STROBE__NAND_RE_B 0x71
  665 + MX7D_PAD_SD3_RESET_B__NAND_WE_B 0x71
  666 + MX7D_PAD_SD3_DATA0__NAND_DATA00 0x71
  667 + MX7D_PAD_SD3_DATA1__NAND_DATA01 0x71
  668 + MX7D_PAD_SD3_DATA2__NAND_DATA02 0x71
  669 + MX7D_PAD_SD3_DATA3__NAND_DATA03 0x71
  670 + MX7D_PAD_SD3_DATA4__NAND_DATA04 0x71
  671 + MX7D_PAD_SD3_DATA5__NAND_DATA05 0x71
  672 + MX7D_PAD_SD3_DATA6__NAND_DATA06 0x71
  673 + MX7D_PAD_SD3_DATA7__NAND_DATA07 0x71
  674 + >;
  675 + };
  676 +
  677 + pinctrl_i2c1: i2c1grp {
  678 + fsl,pins = <
  679 + MX7D_PAD_I2C1_SDA__I2C1_SDA 0x4000007f
  680 + MX7D_PAD_I2C1_SCL__I2C1_SCL 0x4000007f
  681 + >;
  682 + };
  683 +
  684 + pinctrl_i2c1_gpio: i2c1grp_gpio {
  685 + fsl,pins = <
  686 + MX7D_PAD_I2C1_SDA__GPIO4_IO9 0x7f
  687 + MX7D_PAD_I2C1_SCL__GPIO4_IO8 0x7f
  688 + >;
  689 + };
  690 +
  691 + pinctrl_i2c2: i2c2grp {
  692 + fsl,pins = <
  693 + MX7D_PAD_I2C2_SDA__I2C2_SDA 0x4000007f
  694 + MX7D_PAD_I2C2_SCL__I2C2_SCL 0x4000007f
  695 + >;
  696 + };
  697 +
  698 + pinctrl_i2c2_gpio: i2c2grp_gpio {
  699 + fsl,pins = <
  700 + MX7D_PAD_I2C2_SDA__GPIO4_IO11 0x7f
  701 + MX7D_PAD_I2C2_SCL__GPIO4_IO10 0x7f
  702 + >;
  703 + };
  704 +
  705 + pinctrl_i2c3: i2c3grp {
  706 + fsl,pins = <
  707 + MX7D_PAD_I2C3_SDA__I2C3_SDA 0x4000007f
  708 + MX7D_PAD_I2C3_SCL__I2C3_SCL 0x4000007f
  709 + >;
  710 + };
  711 +
  712 + pinctrl_i2c3_gpio: i2c3grp_gpio {
  713 + fsl,pins = <
  714 + MX7D_PAD_I2C3_SDA__GPIO4_IO13 0x7f
  715 + MX7D_PAD_I2C3_SCL__GPIO4_IO12 0x7f
  716 + >;
  717 + };
  718 +
  719 + pinctrl_i2c4: i2c4grp {
  720 + fsl,pins = <
  721 + MX7D_PAD_SAI1_RX_BCLK__I2C4_SDA 0x4000007f
  722 + MX7D_PAD_SAI1_RX_SYNC__I2C4_SCL 0x4000007f
  723 + >;
  724 + };
  725 +
  726 + pinctrl_i2c4_gpio: i2c4grp_gpio {
  727 + fsl,pins = <
  728 + MX7D_PAD_SAI1_RX_BCLK__GPIO6_IO17 0x7f
  729 + MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16 0x7f
  730 + >;
  731 + };
  732 +
  733 + pinctrl_lcdif: lcdifgrp {
  734 + fsl,pins = <
  735 + MX7D_PAD_LCD_DATA00__LCD_DATA0 0x79
  736 + MX7D_PAD_LCD_DATA01__LCD_DATA1 0x79
  737 + MX7D_PAD_LCD_DATA02__LCD_DATA2 0x79
  738 + MX7D_PAD_LCD_DATA03__LCD_DATA3 0x79
  739 + MX7D_PAD_LCD_DATA04__LCD_DATA4 0x79
  740 + MX7D_PAD_LCD_DATA05__LCD_DATA5 0x79
  741 + MX7D_PAD_LCD_DATA06__LCD_DATA6 0x79
  742 + MX7D_PAD_LCD_DATA07__LCD_DATA7 0x79
  743 + MX7D_PAD_LCD_DATA08__LCD_DATA8 0x79
  744 + MX7D_PAD_LCD_DATA09__LCD_DATA9 0x79
  745 + MX7D_PAD_LCD_DATA10__LCD_DATA10 0x79
  746 + MX7D_PAD_LCD_DATA11__LCD_DATA11 0x79
  747 + MX7D_PAD_LCD_DATA12__LCD_DATA12 0x79
  748 + MX7D_PAD_LCD_DATA13__LCD_DATA13 0x79
  749 + MX7D_PAD_LCD_DATA14__LCD_DATA14 0x79
  750 + MX7D_PAD_LCD_DATA15__LCD_DATA15 0x79
  751 + MX7D_PAD_LCD_DATA16__LCD_DATA16 0x79
  752 + MX7D_PAD_LCD_DATA17__LCD_DATA17 0x79
  753 + MX7D_PAD_LCD_DATA18__LCD_DATA18 0x79
  754 + MX7D_PAD_LCD_DATA19__LCD_DATA19 0x79
  755 + MX7D_PAD_LCD_DATA20__LCD_DATA20 0x79
  756 + MX7D_PAD_LCD_DATA21__LCD_DATA21 0x79
  757 + MX7D_PAD_LCD_DATA22__LCD_DATA22 0x79
  758 + MX7D_PAD_LCD_DATA23__LCD_DATA23 0x79
  759 + MX7D_PAD_LCD_CLK__LCD_CLK 0x79
  760 + MX7D_PAD_LCD_ENABLE__LCD_ENABLE 0x79
  761 + MX7D_PAD_LCD_VSYNC__LCD_VSYNC 0x79
  762 + MX7D_PAD_LCD_HSYNC__LCD_HSYNC 0x79
  763 + >;
  764 + };
  765 +
  766 + pinctrl_sai1: sai1grp {
  767 + fsl,pins = <
  768 + MX7D_PAD_SAI1_TX_BCLK__SAI1_TX_BCLK 0x1f
  769 + MX7D_PAD_SAI1_TX_SYNC__SAI1_TX_SYNC 0x1f
  770 + MX7D_PAD_SAI1_TX_DATA__SAI1_TX_DATA0 0x30
  771 + MX7D_PAD_SAI1_RX_DATA__SAI1_RX_DATA0 0x1f
  772 + >;
  773 + };
  774 +
  775 + pinctrl_sai1_mclk: sai1grp_mclk {
  776 + fsl,pins = <
  777 + MX7D_PAD_SAI1_MCLK__SAI1_MCLK 0x1f
  778 + >;
  779 + };
  780 +
  781 + pinctrl_sai2: sai2grp {
  782 + fsl,pins = <
  783 + MX7D_PAD_SAI2_TX_BCLK__SAI2_TX_BCLK 0x1f
  784 + MX7D_PAD_SAI2_TX_SYNC__SAI2_TX_SYNC 0x1f
  785 + MX7D_PAD_SAI2_TX_DATA__SAI2_TX_DATA0 0x30
  786 + MX7D_PAD_SAI2_RX_DATA__SAI2_RX_DATA0 0x1f
  787 + >;
  788 + };
  789 +
  790 + pinctrl_sai3: sai3grp {
  791 + fsl,pins = <
  792 + MX7D_PAD_UART3_TX_DATA__SAI3_TX_BCLK 0x1f
  793 + MX7D_PAD_UART3_CTS_B__SAI3_TX_SYNC 0x1f
  794 + MX7D_PAD_UART3_RTS_B__SAI3_TX_DATA0 0x30
  795 + >;
  796 + };
  797 +
  798 + pinctrl_uart1: uart1grp {
  799 + fsl,pins = <
  800 + MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX 0x79
  801 + MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX 0x79
  802 + >;
  803 + };
  804 +
  805 + pinctrl_uart2: uart2grp {
  806 + fsl,pins = <
  807 + MX7D_PAD_UART2_RX_DATA__UART2_DCE_RX 0x79
  808 + MX7D_PAD_UART2_TX_DATA__UART2_DCE_TX 0x79
  809 + >;
  810 + };
  811 +
  812 + pinctrl_uart3: uart3grp {
  813 + fsl,pins = <
  814 + MX7D_PAD_UART3_RX_DATA__UART3_DCE_RX 0x79
  815 + MX7D_PAD_UART3_TX_DATA__UART3_DCE_TX 0x79
  816 + >;
  817 + };
  818 +
  819 + pinctrl_uart5: uart5grp {
  820 + fsl,pins = <
  821 + MX7D_PAD_SAI1_TX_BCLK__UART5_DCE_TX 0x79
  822 + MX7D_PAD_SAI1_RX_DATA__UART5_DCE_RX 0x79
  823 + >;
  824 + };
  825 +
  826 + pinctrl_uart5dte: uart5dtegrp {
  827 + fsl,pins = <
  828 + MX7D_PAD_SAI1_TX_BCLK__UART5_DTE_RX 0x79
  829 + MX7D_PAD_SAI1_RX_DATA__UART5_DTE_TX 0x79
  830 + >;
  831 + };
  832 +
  833 + pinctrl_uart6: uart6grp {
  834 + fsl,pins = <
  835 + MX7D_PAD_EPDC_DATA09__UART6_DCE_TX 0x79
  836 + MX7D_PAD_EPDC_DATA08__UART6_DCE_RX 0x79
  837 + MX7D_PAD_EPDC_DATA10__UART6_DTE_CTS 0x79
  838 + MX7D_PAD_EPDC_DATA11__UART6_DTE_RTS 0x79
  839 + >;
  840 + };
  841 +
  842 + pinctrl_uart7: uart7grp {
  843 + fsl,pins = <
  844 + MX7D_PAD_EPDC_DATA13__UART7_DCE_TX 0x79
  845 + MX7D_PAD_EPDC_DATA12__UART7_DCE_RX 0x79
  846 + MX7D_PAD_EPDC_DATA14__UART7_DTE_CTS 0x79
  847 + MX7D_PAD_EPDC_DATA15__UART7_DTE_RTS 0x79
  848 + >;
  849 + };
  850 +
  851 + pinctrl_usdhc1_gpio: usdhc1_gpiogrp {
  852 + fsl,pins = <
  853 + MX7D_PAD_SD1_CD_B__GPIO5_IO0 0x59 /* CD */
  854 + MX7D_PAD_SD1_WP__GPIO5_IO1 0x59 /* WP */
  855 + >;
  856 + };
  857 +
  858 + pinctrl_usdhc1: usdhc1grp {
  859 + fsl,pins = <
  860 + MX7D_PAD_SD1_CMD__SD1_CMD 0x59
  861 + MX7D_PAD_SD1_CLK__SD1_CLK 0x19
  862 + MX7D_PAD_SD1_DATA0__SD1_DATA0 0x59
  863 + MX7D_PAD_SD1_DATA1__SD1_DATA1 0x59
  864 + MX7D_PAD_SD1_DATA2__SD1_DATA2 0x59
  865 + MX7D_PAD_SD1_DATA3__SD1_DATA3 0x59
  866 +
  867 + >;
  868 + };
  869 +
  870 + pinctrl_usdhc1_100mhz: usdhc1grp_100mhz {
  871 + fsl,pins = <
  872 + MX7D_PAD_SD1_CMD__SD1_CMD 0x5a
  873 + MX7D_PAD_SD1_CLK__SD1_CLK 0x1a
  874 + MX7D_PAD_SD1_DATA0__SD1_DATA0 0x5a
  875 + MX7D_PAD_SD1_DATA1__SD1_DATA1 0x5a
  876 + MX7D_PAD_SD1_DATA2__SD1_DATA2 0x5a
  877 + MX7D_PAD_SD1_DATA3__SD1_DATA3 0x5a
  878 + >;
  879 + };
  880 +
  881 + pinctrl_usdhc1_200mhz: usdhc1grp_200mhz {
  882 + fsl,pins = <
  883 + MX7D_PAD_SD1_CMD__SD1_CMD 0x5b
  884 + MX7D_PAD_SD1_CLK__SD1_CLK 0x1b
  885 + MX7D_PAD_SD1_DATA0__SD1_DATA0 0x5b
  886 + MX7D_PAD_SD1_DATA1__SD1_DATA1 0x5b
  887 + MX7D_PAD_SD1_DATA2__SD1_DATA2 0x5b
  888 + MX7D_PAD_SD1_DATA3__SD1_DATA3 0x5b
  889 + >;
  890 + };
  891 +
  892 + pinctrl_usdhc2: usdhc2grp {
  893 + fsl,pins = <
  894 + MX7D_PAD_SD2_CMD__SD2_CMD 0x59
  895 + MX7D_PAD_SD2_CLK__SD2_CLK 0x19
  896 + MX7D_PAD_SD2_DATA0__SD2_DATA0 0x59
  897 + MX7D_PAD_SD2_DATA1__SD2_DATA1 0x59
  898 + MX7D_PAD_SD2_DATA2__SD2_DATA2 0x59
  899 + MX7D_PAD_SD2_DATA3__SD2_DATA3 0x59
  900 + MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21 0x19 /* WL_REG_ON */
  901 + MX7D_PAD_ECSPI2_SCLK__GPIO4_IO20 0x19 /* WL_HOST_WAKE */
  902 + >;
  903 + };
  904 +
  905 + pinctrl_usdhc2_100mhz: usdhc2grp_100mhz {
  906 + fsl,pins = <
  907 + MX7D_PAD_SD2_CMD__SD2_CMD 0x5a
  908 + MX7D_PAD_SD2_CLK__SD2_CLK 0x1a
  909 + MX7D_PAD_SD2_DATA0__SD2_DATA0 0x5a
  910 + MX7D_PAD_SD2_DATA1__SD2_DATA1 0x5a
  911 + MX7D_PAD_SD2_DATA2__SD2_DATA2 0x5a
  912 + MX7D_PAD_SD2_DATA3__SD2_DATA3 0x5a
  913 + >;
  914 + };
  915 +
  916 + pinctrl_usdhc2_200mhz: usdhc2grp_200mhz {
  917 + fsl,pins = <
  918 + MX7D_PAD_SD2_CMD__SD2_CMD 0x5b
  919 + MX7D_PAD_SD2_CLK__SD2_CLK 0x1b
  920 + MX7D_PAD_SD2_DATA0__SD2_DATA0 0x5b
  921 + MX7D_PAD_SD2_DATA1__SD2_DATA1 0x5b
  922 + MX7D_PAD_SD2_DATA2__SD2_DATA2 0x5b
  923 + MX7D_PAD_SD2_DATA3__SD2_DATA3 0x5b
  924 + >;
  925 + };
  926 +
  927 +
  928 + pinctrl_usdhc3: usdhc3grp {
  929 + fsl,pins = <
  930 + MX7D_PAD_SD3_CMD__SD3_CMD 0x59
  931 + MX7D_PAD_SD3_CLK__SD3_CLK 0x19
  932 + MX7D_PAD_SD3_DATA0__SD3_DATA0 0x59
  933 + MX7D_PAD_SD3_DATA1__SD3_DATA1 0x59
  934 + MX7D_PAD_SD3_DATA2__SD3_DATA2 0x59
  935 + MX7D_PAD_SD3_DATA3__SD3_DATA3 0x59
  936 + MX7D_PAD_SD3_DATA4__SD3_DATA4 0x59
  937 + MX7D_PAD_SD3_DATA5__SD3_DATA5 0x59
  938 + MX7D_PAD_SD3_DATA6__SD3_DATA6 0x59
  939 + MX7D_PAD_SD3_DATA7__SD3_DATA7 0x59
  940 + MX7D_PAD_SD3_STROBE__SD3_STROBE 0x19
  941 + >;
  942 + };
  943 +
  944 + pinctrl_usdhc3_100mhz: usdhc3grp_100mhz {
  945 + fsl,pins = <
  946 + MX7D_PAD_SD3_CMD__SD3_CMD 0x5a
  947 + MX7D_PAD_SD3_CLK__SD3_CLK 0x1a
  948 + MX7D_PAD_SD3_DATA0__SD3_DATA0 0x5a
  949 + MX7D_PAD_SD3_DATA1__SD3_DATA1 0x5a
  950 + MX7D_PAD_SD3_DATA2__SD3_DATA2 0x5a
  951 + MX7D_PAD_SD3_DATA3__SD3_DATA3 0x5a
  952 + MX7D_PAD_SD3_DATA4__SD3_DATA4 0x5a
  953 + MX7D_PAD_SD3_DATA5__SD3_DATA5 0x5a
  954 + MX7D_PAD_SD3_DATA6__SD3_DATA6 0x5a
  955 + MX7D_PAD_SD3_DATA7__SD3_DATA7 0x5a
  956 + MX7D_PAD_SD3_STROBE__SD3_STROBE 0x1a
  957 + >;
  958 + };
  959 +
  960 + pinctrl_usdhc3_200mhz: usdhc3grp_200mhz {
  961 + fsl,pins = <
  962 + MX7D_PAD_SD3_CMD__SD3_CMD 0x5b
  963 + MX7D_PAD_SD3_CLK__SD3_CLK 0x1b
  964 + MX7D_PAD_SD3_DATA0__SD3_DATA0 0x5b
  965 + MX7D_PAD_SD3_DATA1__SD3_DATA1 0x5b
  966 + MX7D_PAD_SD3_DATA2__SD3_DATA2 0x5b
  967 + MX7D_PAD_SD3_DATA3__SD3_DATA3 0x5b
  968 + MX7D_PAD_SD3_DATA4__SD3_DATA4 0x5b
  969 + MX7D_PAD_SD3_DATA5__SD3_DATA5 0x5b
  970 + MX7D_PAD_SD3_DATA6__SD3_DATA6 0x5b
  971 + MX7D_PAD_SD3_DATA7__SD3_DATA7 0x5b
  972 + MX7D_PAD_SD3_STROBE__SD3_STROBE 0x1b
  973 + >;
  974 + };
  975 +
  976 + };
  977 +};
arch/arm/dts/imx7s.dtsi
... ... @@ -80,11 +80,10 @@
80 80 serial4 = &uart5;
81 81 serial5 = &uart6;
82 82 serial6 = &uart7;
83   - spi1 = &qspi1;
84   - spi2 = &ecspi1;
85   - spi3 = &ecspi2;
86   - spi4 = &ecspi3;
87   - spi5 = &ecspi4;
  83 + spi1 = &ecspi1;
  84 + spi2 = &ecspi2;
  85 + spi3 = &ecspi3;
  86 + spi4 = &ecspi4;
88 87 usb0 = &usbotg1;
89 88 };
90 89  
arch/arm/include/asm/arch-mx7/imx-rdc.h
... ... @@ -7,7 +7,7 @@
7 7 #ifndef __IMX_RDC_H__
8 8 #define __IMX_RDC_H__
9 9  
10   -#if defined(CONFIG_MX7D)
  10 +#if defined(CONFIG_MX7D) || defined(CONFIG_MX7S)
11 11 #include "mx7d_rdc.h"
12 12 #else
13 13 #error "Please select cpu"
arch/arm/mach-imx/init.c
... ... @@ -70,7 +70,7 @@
70 70 struct wdog_regs *wdog1 = (struct wdog_regs *)WDOG1_BASE_ADDR;
71 71 struct wdog_regs *wdog2 = (struct wdog_regs *)WDOG2_BASE_ADDR;
72 72 struct wdog_regs *wdog3 = (struct wdog_regs *)WDOG3_BASE_ADDR;
73   -#ifdef CONFIG_MX7D
  73 +#if defined(CONFIG_MX7D) || defined(CONFIG_MX7S)
74 74 struct wdog_regs *wdog4 = (struct wdog_regs *)WDOG4_BASE_ADDR;
75 75 #endif
76 76  
... ... @@ -80,7 +80,7 @@
80 80  
81 81 if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx7())
82 82 writew(0, &wdog3->wmcr);
83   -#ifdef CONFIG_MX7D
  83 +#if defined(CONFIG_MX7D) || defined(CONFIG_MX7S)
84 84 writew(0, &wdog4->wmcr);
85 85 #endif
86 86 }
arch/arm/mach-imx/mx7/Kconfig
... ... @@ -16,6 +16,12 @@
16 16 imply CMD_FUSE
17 17 bool
18 18  
  19 +config MX7S
  20 + select HAS_CAAM
  21 + select ROM_UNIFIED_SECTIONS
  22 + imply CMD_FUSE
  23 + bool
  24 +
19 25 config IMX_TAMPER
20 26 bool "Enable commands for SNVS tamper pin configuration and test"
21 27 help
... ... @@ -39,6 +45,13 @@
39 45 select DM
40 46 select DM_THERMAL
41 47  
  48 +config TARGET_SMARCFIMX7
  49 + bool "smarcfimx7"
  50 + select BOARD_LATE_INIT
  51 + select MX7D
  52 + select DM
  53 + select DM_THERMAL
  54 +
42 55 config TARGET_MX7D_12X12_LPDDR3_ARM2
43 56 bool "Support mx7d_12x12_lpddr3_arm2"
44 57 select BOARD_LATE_INIT
... ... @@ -107,6 +120,7 @@
107 120 config SYS_SOC
108 121 default "mx7"
109 122  
  123 +source "board/embedian/smarcfimx7/Kconfig"
110 124 source "board/compulab/cl-som-imx7/Kconfig"
111 125 source "board/freescale/mx7dsabresd/Kconfig"
112 126 source "board/freescale/mx7d_12x12_lpddr3_arm2/Kconfig"
arch/arm/mach-imx/mx7/soc.c
... ... @@ -323,7 +323,7 @@
323 323 }
324 324  
325 325 #ifdef CONFIG_IMX_TRUSTY_OS
326   -#ifdef CONFIG_MX7D
  326 +#ifdef (CONFIG_MX7D)||(CONFIG_MX7S)
327 327 void smp_set_core_boot_addr(unsigned long addr, int corenr)
328 328 {
329 329 return;
board/embedian/smarcfimx7/Kconfig
  1 +if TARGET_SMARCFIMX7
  2 +
  3 +config SYS_BOARD
  4 + default "smarcfimx7"
  5 +
  6 +config SYS_VENDOR
  7 + default "embedian"
  8 +
  9 +config SYS_CONFIG_NAME
  10 + default "smarcfimx7"
  11 +
  12 +config SYS_TEXT_BASE
  13 + default 0x87800000
  14 +endif
board/embedian/smarcfimx7/MAINTAINERS
  1 +SMARCFIMX7D BOARD
  2 +M: Eric Lee <eric.lee@embedian.com>
  3 +S: Maintained
  4 +F: board/embedian/smarcfimx7
  5 +F: include/configs/smarcfimx7.h
  6 +F: include/configs/mx7smarc_common.h
  7 +F: configs/smarcfimx7d_ser0_defconfig
  8 +F: configs/smarcfimx7d_ser1_defconfig
  9 +F: configs/smarcfimx7d_ser2_defconfig
  10 +F: configs/smarcfimx7d_ser3_defconfig
  11 +F: configs/smarcfimx7s_ser0_defconfig
  12 +F: configs/smarcfimx7s_ser1_defconfig
  13 +F: configs/smarcfimx7s_ser2_defconfig
  14 +F: configs/smarcfimx7s_ser3_defconfig
board/embedian/smarcfimx7/Makefile
  1 +# (C) Copyright 2015 Freescale Semiconductor, Inc.
  2 +#
  3 +# SPDX-License-Identifier: GPL-2.0+
  4 +#
  5 +
  6 +obj-y := ../../freescale/common/mmc.o smarcfimx7.o
board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg
  1 +/*
  2 + * Copyright (C) 2015-2016 Freescale Semiconductor, Inc.
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + *
  6 + * Refer docs/README.imxmage for more details about how-to configure
  7 + * and create imximage boot image
  8 + *
  9 + * The syntax is taken as close as possible with the kwbimage
  10 + */
  11 +
  12 +#define __ASSEMBLY__
  13 +#include <config.h>
  14 +
  15 +/* image version */
  16 +
  17 +IMAGE_VERSION 2
  18 +
  19 +/*
  20 + * Boot Device : one of
  21 + * spi/sd/nand/onenand, qspi/nor
  22 + */
  23 +
  24 +BOOT_FROM spi
  25 +
  26 +/*
  27 + * Secure boot support
  28 + */
  29 +#ifdef CONFIG_SECURE_BOOT
  30 +CSF CONFIG_CSF_SIZE
  31 +#endif
  32 +
  33 +/*
  34 + * Device Configuration Data (DCD)
  35 + *
  36 + * Each entry must have the format:
  37 + * Addr-type Address Value
  38 + *
  39 + * where:
  40 + * Addr-type register length (1,2 or 4 bytes)
  41 + * Address absolute address of the register
  42 + * value value to be stored in the register
  43 + */
  44 +
  45 +/* IOMUXC_GPR_GPR1 */
  46 +DATA 4 0x30340004 0x4F400005
  47 +/* Clear then set bit30 to ensure exit from DDR retention */
  48 +DATA 4 0x30360388 0x40000000
  49 +DATA 4 0x30360384 0x40000000
  50 +/* SRC_DDRC_RCR */
  51 +DATA 4 0x30391000 0x00000002
  52 +/* DDRC_MSTR */
  53 +DATA 4 0x307a0000 0x01040001
  54 +/* DDRC_DFIUPD0 */
  55 +DATA 4 0x307a01a0 0x80400003
  56 +/* DDRC_DFIUPD1 */
  57 +DATA 4 0x307a01a4 0x00100020
  58 +/* DDRC_DFIUPD2 */
  59 +DATA 4 0x307a01a8 0x80100004
  60 +/* DDRC_RFSHTMG */
  61 +DATA 4 0x307a0064 0x00400046
  62 +/* DDRC_MP_PCTRL_0 */
  63 +DATA 4 0x307a0490 0x00000001
  64 +/* DDRC_INIT0 */
  65 +DATA 4 0x307a00d0 0x00020083
  66 +/* DDRC_INIT1 */
  67 +DATA 4 0x307a00d4 0x00690000
  68 +/* DDRC_INIT3 MR0/MR1 */
  69 +DATA 4 0x307a00dc 0x09300004
  70 +/* DDRC_INIT4 MR2/MR3 */
  71 +DATA 4 0x307a00e0 0x04080000
  72 +/* DDRC_INIT5 */
  73 +DATA 4 0x307a00e4 0x00100004
  74 +/* DDRC_RANKCTL */
  75 +DATA 4 0x307a00f4 0x0000033f
  76 +/* DDRC_DRAMTMG0 */
  77 +DATA 4 0x307a0100 0x09081109
  78 +/* DDRC_DRAMTMG1 */
  79 +DATA 4 0x307a0104 0x0007020d
  80 +/* DDRC_DRAMTMG2 */
  81 +DATA 4 0x307a0108 0x03040407
  82 +/* DDRC_DRAMTMG3 */
  83 +DATA 4 0x307a010c 0x00002006
  84 +/* DDRC_DRAMTMG4 */
  85 +DATA 4 0x307a0110 0x04020205
  86 +/* DDRC_DRAMTMG5 */
  87 +DATA 4 0x307a0114 0x03030202
  88 +/* DDRC_DRAMTMG8 */
  89 +DATA 4 0x307a0120 0x00000803
  90 +/* DDRC_ZQCTL0 */
  91 +DATA 4 0x307a0180 0x00800020
  92 +/* DDRC_ZQCTL1 */
  93 +DATA 4 0x307a0184 0x02001000
  94 +/* DDRC_DFITMG0 */
  95 +DATA 4 0x307a0190 0x02098204
  96 +/* DDRC_DFITMG1 */
  97 +DATA 4 0x307a0194 0x00030303
  98 +/* DDRC_ADDRMAP0 */
  99 +DATA 4 0x307a0200 0x0000001f
  100 +/* DDRC_ADDRMAP1 */
  101 +DATA 4 0x307a0204 0x00080808
  102 +/* DDRC_ADDRMAP4 */
  103 +DATA 4 0x307a0210 0x00000f0f
  104 +/* DDRC_ADDRMAP5 */
  105 +DATA 4 0x307a0214 0x07070707
  106 +/* DDRC_ADDRMAP6 */
  107 +DATA 4 0x307a0218 0x0f070707
  108 +/* DDRC_ODTCFG */
  109 +DATA 4 0x307a0240 0x06000604
  110 +/* DDRC_ODTMAP */
  111 +DATA 4 0x307a0244 0x00000001
  112 +/* SRC_DDRC_RCR */
  113 +DATA 4 0x30391000 0x00000000
  114 +/* DDR_PHY_PHY_CON0 */
  115 +DATA 4 0x30790000 0x17420f40
  116 +/* DDR_PHY_PHY_CON1 */
  117 +DATA 4 0x30790004 0x10210100
  118 +/* DDR_PHY_PHY_CON4 */
  119 +DATA 4 0x30790010 0x00060807
  120 +/* DDR_PHY_MDLL_CON0 */
  121 +DATA 4 0x307900b0 0x1010007e
  122 +/* DDR_PHY_DRVDS_CON0 */
  123 +DATA 4 0x3079009c 0x00000d6e
  124 +/* DDR_PHY_OFFSET_RD_CON0 */
  125 +DATA 4 0x30790020 0x0a0a0a0a
  126 +/* DDR_PHY_OFFSET_WR_CON0 */
  127 +DATA 4 0x30790030 0x04040404
  128 +/* DDR_PHY_OFFSETD_CON0 */
  129 +DATA 4 0x30790050 0x01000010
  130 +DATA 4 0x30790050 0x00000010
  131 +
  132 +/* DDR_PHY_ZQ_CON0 */
  133 +DATA 4 0x307900c0 0x0e407304
  134 +DATA 4 0x307900c0 0x0e447304
  135 +DATA 4 0x307900c0 0x0e447306
  136 +
  137 +/* DDR_PHY_ZQ_CON1 */
  138 +CHECK_BITS_SET 4 0x307900c4 0x1
  139 +
  140 +/* DDR_PHY_ZQ_CON0 */
  141 +DATA 4 0x307900c0 0x0e447304
  142 +DATA 4 0x307900c0 0x0e407304
  143 +
  144 +/* CCM_CCGRn */
  145 +DATA 4 0x30384130 0x00000000
  146 +/* IOMUXC_GPR_GPR8 */
  147 +DATA 4 0x30340020 0x00000178
  148 +/* CCM_CCGRn */
  149 +DATA 4 0x30384130 0x00000002
  150 +/* DDR_PHY_LP_CON0 */
  151 +DATA 4 0x30790018 0x0000000f
  152 +
  153 +/* DDRC_STAT */
  154 +CHECK_BITS_SET 4 0x307a0004 0x1
board/embedian/smarcfimx7/ddr3l/mx7d_2x_mt41k512m16ha.cfg
  1 +/*
  2 + * Copyright (C) 2015-2016 Freescale Semiconductor, Inc.
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + *
  6 + * Refer docs/README.imxmage for more details about how-to configure
  7 + * and create imximage boot image
  8 + *
  9 + * The syntax is taken as close as possible with the kwbimage
  10 + */
  11 +
  12 +#define __ASSEMBLY__
  13 +#include <config.h>
  14 +
  15 +/* image version */
  16 +
  17 +IMAGE_VERSION 2
  18 +
  19 +/*
  20 + * Boot Device : one of
  21 + * spi/sd/nand/onenand, qspi/nor
  22 + */
  23 +
  24 +BOOT_FROM spi
  25 +
  26 +/*
  27 + * Secure boot support
  28 + */
  29 +#ifdef CONFIG_SECURE_BOOT
  30 +CSF CONFIG_CSF_SIZE
  31 +#endif
  32 +
  33 +/*
  34 + * Device Configuration Data (DCD)
  35 + *
  36 + * Each entry must have the format:
  37 + * Addr-type Address Value
  38 + *
  39 + * where:
  40 + * Addr-type register length (1,2 or 4 bytes)
  41 + * Address absolute address of the register
  42 + * value value to be stored in the register
  43 + */
  44 +
  45 +/* IOMUXC_GPR_GPR1 */
  46 +DATA 4 0x30340004 0x4F400005
  47 +/* Clear then set bit30 to ensure exit from DDR retention */
  48 +DATA 4 0x30360388 0x40000000
  49 +DATA 4 0x30360384 0x40000000
  50 +/* SRC_DDRC_RCR */
  51 +DATA 4 0x30391000 0x00000002
  52 +/* DDRC_MSTR */
  53 +DATA 4 0x307a0000 0x01040001
  54 +/* DDRC_DFIUPD0 */
  55 +DATA 4 0x307a01a0 0x80400003
  56 +/* DDRC_DFIUPD1 */
  57 +DATA 4 0x307a01a4 0x00100020
  58 +/* DDRC_DFIUPD2 */
  59 +DATA 4 0x307a01a8 0x80100004
  60 +/* DDRC_RFSHTMG */
  61 +DATA 4 0x307a0064 0x0040005e
  62 +/* DDRC_MP_PCTRL_0 */
  63 +DATA 4 0x307a0490 0x00000001
  64 +/* DDRC_INIT0 */
  65 +DATA 4 0x307a00d0 0x00020083
  66 +/* DDRC_INIT1 */
  67 +DATA 4 0x307a00d4 0x00690000
  68 +/* DDRC_INIT2 */
  69 +DATA 4 0x307a00d8 0x00000000
  70 +/* DDRC_INIT3 MR0/MR1 */
  71 +DATA 4 0x307a00dc 0x09300004
  72 +/* DDRC_INIT4 MR2/MR3 */
  73 +DATA 4 0x307a00e0 0x04080000
  74 +/* DDRC_INIT5 */
  75 +DATA 4 0x307a00e4 0x00100004
  76 +/* DDRC_RANKCTL */
  77 +DATA 4 0x307a00f4 0x0000033f
  78 +/* DDRC_DRAMTMG0 */
  79 +DATA 4 0x307a0100 0x090a1109
  80 +/* DDRC_DRAMTMG1 */
  81 +DATA 4 0x307a0104 0x0007020d
  82 +/* DDRC_DRAMTMG2 */
  83 +DATA 4 0x307a0108 0x03040407
  84 +/* DDRC_DRAMTMG3 */
  85 +DATA 4 0x307a010c 0x00002006
  86 +/* DDRC_DRAMTMG4 */
  87 +DATA 4 0x307a0110 0x04020205
  88 +/* DDRC_DRAMTMG5 */
  89 +DATA 4 0x307a0114 0x03030202
  90 +/* DDRC_DRAMTMG8 */
  91 +DATA 4 0x307a0120 0x00000803
  92 +/* DDRC_ZQCTL0 */
  93 +DATA 4 0x307a0180 0x00800020
  94 +/* DDRC_DFITMG0 */
  95 +DATA 4 0x307a0190 0x02098204
  96 +/* DDRC_DFITMG1 */
  97 +DATA 4 0x307a0194 0x00030303
  98 +/* DDRC_ADDRMAP0 */
  99 +DATA 4 0x307a0200 0x0000001f
  100 +/* DDRC_ADDRMAP1 */
  101 +DATA 4 0x307a0204 0x00181818
  102 +/* DDRC_ADDRMAP4 */
  103 +DATA 4 0x307a0210 0x00000f0f
  104 +/* DDRC_ADDRMAP5 */
  105 +DATA 4 0x307a0214 0x04040404
  106 +/* DDRC_ADDRMAP6 */
  107 +DATA 4 0x307a0218 0x04040404
  108 +/* DDRC_ODTCFG */
  109 +DATA 4 0x307a0240 0x06000604
  110 +/* DDRC_ODTMAP */
  111 +DATA 4 0x307a0244 0x00000001
  112 +/* SRC_DDRC_RCR */
  113 +DATA 4 0x30391000 0x00000000
  114 +/* DDR_PHY_PHY_CON0 */
  115 +DATA 4 0x30790000 0x17420f40
  116 +/* DDR_PHY_PHY_CON1 */
  117 +DATA 4 0x30790004 0x10210100
  118 +/* DDR_PHY_PHY_CON4 */
  119 +DATA 4 0x30790010 0x00060807
  120 +/* DDR_PHY_MDLL_CON0 */
  121 +DATA 4 0x307900b0 0x1010007e
  122 +/* DDR_PHY_DRVDS_CON0 */
  123 +DATA 4 0x3079009c 0x00000d6e
  124 +/* DDR_PHY_OFFSET_RD_CON0 */
  125 +DATA 4 0x30790020 0x0c0c0c0c
  126 +/* DDR_PHY_OFFSET_WR_CON0 */
  127 +DATA 4 0x30790030 0x04040404
  128 +/* DDR_PHY_OFFSETD_CON0 */
  129 +DATA 4 0x30790050 0x01000010
  130 +DATA 4 0x30790050 0x00000010
  131 +
  132 +/* DDR_PHY_ZQ_CON0 */
  133 +DATA 4 0x307900c0 0x0e407304
  134 +DATA 4 0x307900c0 0x0e447304
  135 +DATA 4 0x307900c0 0x0e447306
  136 +
  137 +/* DDR_PHY_ZQ_CON1 */
  138 +CHECK_BITS_SET 4 0x307900c4 0x1
  139 +
  140 +/* DDR_PHY_ZQ_CON0 */
  141 +DATA 4 0x307900c0 0x0e447304
  142 +DATA 4 0x307900c0 0x0e407304
  143 +
  144 +/* CCM_CCGRn */
  145 +DATA 4 0x30384130 0x00000000
  146 +/* IOMUXC_GPR_GPR8 */
  147 +DATA 4 0x30340020 0x00000178
  148 +/* CCM_CCGRn */
  149 +DATA 4 0x30384130 0x00000002
  150 +/* DDR_PHY_LP_CON0 */
  151 +DATA 4 0x30790018 0x0000000f
  152 +
  153 +/* DDRC_STAT */
  154 +CHECK_BITS_SET 4 0x307a0004 0x1
board/embedian/smarcfimx7/ddr3l/mx7s_2x_k4b2g1646q.cfg
  1 +/*
  2 + * Copyright (C) 2015-2016 Freescale Semiconductor, Inc.
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + *
  6 + * Refer docs/README.imxmage for more details about how-to configure
  7 + * and create imximage boot image
  8 + *
  9 + * The syntax is taken as close as possible with the kwbimage
  10 + */
  11 +
  12 +#define __ASSEMBLY__
  13 +#include <config.h>
  14 +
  15 +/* image version */
  16 +
  17 +IMAGE_VERSION 2
  18 +
  19 +/*
  20 + * Boot Device : one of
  21 + * spi/sd/nand/onenand, qspi/nor
  22 + */
  23 +
  24 +BOOT_FROM spi
  25 +
  26 +/*
  27 + * Secure boot support
  28 + */
  29 +#ifdef CONFIG_SECURE_BOOT
  30 +CSF CONFIG_CSF_SIZE
  31 +#endif
  32 +
  33 +/*
  34 + * Device Configuration Data (DCD)
  35 + *
  36 + * Each entry must have the format:
  37 + * Addr-type Address Value
  38 + *
  39 + * where:
  40 + * Addr-type register length (1,2 or 4 bytes)
  41 + * Address absolute address of the register
  42 + * value value to be stored in the register
  43 + */
  44 +
  45 +/* IOMUXC_GPR_GPR1 */
  46 +DATA 4 0x30340004 0x4F400005
  47 +/* Clear then set bit30 to ensure exit from DDR retention */
  48 +DATA 4 0x30360388 0x40000000
  49 +DATA 4 0x30360384 0x40000000
  50 +/* SRC_DDRC_RCR */
  51 +DATA 4 0x30391000 0x00000002
  52 +/* DDRC_MSTR */
  53 +DATA 4 0x307a0000 0x01040001
  54 +/* DDRC_DFIUPD0 */
  55 +DATA 4 0x307a01a0 0x80400003
  56 +/* DDRC_DFIUPD1 */
  57 +DATA 4 0x307a01a4 0x00100020
  58 +/* DDRC_DFIUPD2 */
  59 +DATA 4 0x307a01a8 0x80100004
  60 +/* DDRC_RFSHTMG */
  61 +DATA 4 0x307a0064 0x00400046
  62 +/* DDRC_MP_PCTRL_0 */
  63 +DATA 4 0x307a0490 0x00000001
  64 +/* DDRC_INIT0 */
  65 +DATA 4 0x307a00d0 0x00020083
  66 +/* DDRC_INIT1 */
  67 +DATA 4 0x307a00d4 0x00690000
  68 +/* DDRC_INIT3 MR0/MR1 */
  69 +DATA 4 0x307a00dc 0x09300004
  70 +/* DDRC_INIT4 MR2/MR3 */
  71 +DATA 4 0x307a00e0 0x04080000
  72 +/* DDRC_INIT5 */
  73 +DATA 4 0x307a00e4 0x00100004
  74 +/* DDRC_RANKCTL */
  75 +DATA 4 0x307a00f4 0x0000033f
  76 +/* DDRC_DRAMTMG0 */
  77 +DATA 4 0x307a0100 0x09081109
  78 +/* DDRC_DRAMTMG1 */
  79 +DATA 4 0x307a0104 0x0007020d
  80 +/* DDRC_DRAMTMG2 */
  81 +DATA 4 0x307a0108 0x03040407
  82 +/* DDRC_DRAMTMG3 */
  83 +DATA 4 0x307a010c 0x00002006
  84 +/* DDRC_DRAMTMG4 */
  85 +DATA 4 0x307a0110 0x04020205
  86 +/* DDRC_DRAMTMG5 */
  87 +DATA 4 0x307a0114 0x03030202
  88 +/* DDRC_DRAMTMG8 */
  89 +DATA 4 0x307a0120 0x00000803
  90 +/* DDRC_ZQCTL0 */
  91 +DATA 4 0x307a0180 0x00800020
  92 +/* DDRC_ZQCTL1 */
  93 +DATA 4 0x307a0184 0x02001000
  94 +/* DDRC_DFITMG0 */
  95 +DATA 4 0x307a0190 0x02098204
  96 +/* DDRC_DFITMG1 */
  97 +DATA 4 0x307a0194 0x00030303
  98 +/* DDRC_ADDRMAP0 */
  99 +DATA 4 0x307a0200 0x0000001f
  100 +/* DDRC_ADDRMAP1 */
  101 +DATA 4 0x307a0204 0x00080808
  102 +/* DDRC_ADDRMAP4 */
  103 +DATA 4 0x307a0210 0x00000f0f
  104 +/* DDRC_ADDRMAP5 */
  105 +DATA 4 0x307a0214 0x07070707
  106 +/* DDRC_ADDRMAP6 */
  107 +DATA 4 0x307a0218 0x0f070707
  108 +/* DDRC_ODTCFG */
  109 +DATA 4 0x307a0240 0x06000604
  110 +/* DDRC_ODTMAP */
  111 +DATA 4 0x307a0244 0x00000001
  112 +/* SRC_DDRC_RCR */
  113 +DATA 4 0x30391000 0x00000000
  114 +/* DDR_PHY_PHY_CON0 */
  115 +DATA 4 0x30790000 0x17420f40
  116 +/* DDR_PHY_PHY_CON1 */
  117 +DATA 4 0x30790004 0x10210100
  118 +/* DDR_PHY_PHY_CON4 */
  119 +DATA 4 0x30790010 0x00060807
  120 +/* DDR_PHY_MDLL_CON0 */
  121 +DATA 4 0x307900b0 0x1010007e
  122 +/* DDR_PHY_DRVDS_CON0 */
  123 +DATA 4 0x3079009c 0x00000d6e
  124 +/* DDR_PHY_OFFSET_RD_CON0 */
  125 +DATA 4 0x30790020 0x0c0c0c0c
  126 +/* DDR_PHY_OFFSET_WR_CON0 */
  127 +DATA 4 0x30790030 0x04040404
  128 +/* DDR_PHY_OFFSETD_CON0 */
  129 +DATA 4 0x30790050 0x01000010
  130 +DATA 4 0x30790050 0x00000010
  131 +
  132 +/* DDR_PHY_ZQ_CON0 */
  133 +DATA 4 0x307900c0 0x0e407304
  134 +DATA 4 0x307900c0 0x0e447304
  135 +DATA 4 0x307900c0 0x0e447306
  136 +
  137 +/* DDR_PHY_ZQ_CON1 */
  138 +CHECK_BITS_SET 4 0x307900c4 0x1
  139 +
  140 +/* DDR_PHY_ZQ_CON0 */
  141 +DATA 4 0x307900c0 0x0e447304
  142 +DATA 4 0x307900c0 0x0e407304
  143 +
  144 +/* CCM_CCGRn */
  145 +DATA 4 0x30384130 0x00000000
  146 +/* IOMUXC_GPR_GPR8 */
  147 +DATA 4 0x30340020 0x00000178
  148 +/* CCM_CCGRn */
  149 +DATA 4 0x30384130 0x00000002
  150 +/* DDR_PHY_LP_CON0 */
  151 +DATA 4 0x30790018 0x0000000f
  152 +
  153 +/* DDRC_STAT */
  154 +CHECK_BITS_SET 4 0x307a0004 0x1
board/embedian/smarcfimx7/plugin.S
  1 +/*
  2 + * Copyright (C) 2014-2016 Freescale Semiconductor, Inc.
  3 + * Copyright 2017 NXP
  4 + *
  5 + * SPDX-License-Identifier: GPL-2.0+
  6 + */
  7 +
  8 +#include <config.h>
  9 +
  10 +/* DDR script */
  11 +.macro imx7d_ddrphy_latency_setting
  12 + ldr r2, =ANATOP_BASE_ADDR
  13 + ldr r3, [r2, #0x800]
  14 + and r3, r3, #0xFF
  15 + cmp r3, #0x11
  16 + bne NO_DELAY
  17 +
  18 + /*TO 1.1*/
  19 + ldr r1, =0x00000dee
  20 + str r1, [r0, #0x9c]
  21 + ldr r1, =0x18181818
  22 + str r1, [r0, #0x7c]
  23 + ldr r1, =0x18181818
  24 + str r1, [r0, #0x80]
  25 + ldr r1, =0x40401818
  26 + str r1, [r0, #0x84]
  27 + ldr r1, =0x00000040
  28 + str r1, [r0, #0x88]
  29 + ldr r1, =0x40404040
  30 + str r1, [r0, #0x6c]
  31 + b TUNE_END
  32 +
  33 +NO_DELAY:
  34 + /*TO 1.0*/
  35 + ldr r1, =0x00000b24
  36 + str r1, [r0, #0x9c]
  37 +
  38 +TUNE_END:
  39 +.endm
  40 +
  41 +.macro imx7d_ddr_freq_setting
  42 + ldr r2, =ANATOP_BASE_ADDR
  43 + ldr r3, [r2, #0x800]
  44 + and r3, r3, #0xFF
  45 + cmp r3, #0x11
  46 + bne FREQ_DEFAULT_533
  47 +
  48 + /* Change to 400Mhz for TO1.1 */
  49 + ldr r0, =ANATOP_BASE_ADDR
  50 + ldr r1, =0x70
  51 + ldr r2, =0x00703021
  52 + str r2, [r0, r1]
  53 + ldr r1, =0x90
  54 + ldr r2, =0x0
  55 + str r2, [r0, r1]
  56 + ldr r1, =0x70
  57 + ldr r2, =0x00603021
  58 + str r2, [r0, r1]
  59 +
  60 + ldr r3, =0x80000000
  61 +wait_lock:
  62 + ldr r2, [r0, r1]
  63 + and r2, r3
  64 + cmp r2, r3
  65 + bne wait_lock
  66 +
  67 + ldr r0, =CCM_BASE_ADDR
  68 + ldr r1, =0x9880
  69 + ldr r2, =0x1
  70 + str r2, [r0, r1]
  71 +
  72 +FREQ_DEFAULT_533:
  73 +.endm
  74 +
  75 +.macro imx7d_sabresd_ddr_setting
  76 + imx7d_ddr_freq_setting
  77 +
  78 + /* Configure ocram_epdc */
  79 + ldr r0, =IOMUXC_GPR_BASE_ADDR
  80 + ldr r1, =0x4f400005
  81 + str r1, [r0, #0x4]
  82 +
  83 + /* clear/set bit30 of SNVS_MISC_CTRL to ensure exit from ddr retention */
  84 + ldr r0, =ANATOP_BASE_ADDR
  85 + ldr r1, =(0x1 << 30)
  86 + str r1, [r0, #0x388]
  87 + str r1, [r0, #0x384]
  88 +
  89 + ldr r0, =SRC_BASE_ADDR
  90 + ldr r1, =0x2
  91 + ldr r2, =0x1000
  92 + str r1, [r0, r2]
  93 +
  94 + ldr r0, =DDRC_IPS_BASE_ADDR
  95 + ldr r1, =0x01040001
  96 + str r1, [r0]
  97 + ldr r1, =0x80400003
  98 + str r1, [r0, #0x1a0]
  99 + ldr r1, =0x00100020
  100 + str r1, [r0, #0x1a4]
  101 + ldr r1, =0x80100004
  102 + str r1, [r0, #0x1a8]
  103 + ldr r1, =0x00400046
  104 + str r1, [r0, #0x64]
  105 + ldr r1, =0x1
  106 + str r1, [r0, #0x490]
  107 + ldr r1, =0x00020001
  108 + str r1, [r0, #0xd0]
  109 + ldr r1, =0x00690000
  110 + str r1, [r0, #0xd4]
  111 + ldr r1, =0x09300004
  112 + str r1, [r0, #0xdc]
  113 + ldr r1, =0x04080000
  114 + str r1, [r0, #0xe0]
  115 + ldr r1, =0x00100004
  116 + str r1, [r0, #0xe4]
  117 + ldr r1, =0x33f
  118 + str r1, [r0, #0xf4]
  119 + ldr r1, =0x09081109
  120 + str r1, [r0, #0x100]
  121 + ldr r1, =0x0007020d
  122 + str r1, [r0, #0x104]
  123 + ldr r1, =0x03040407
  124 + str r1, [r0, #0x108]
  125 + ldr r1, =0x00002006
  126 + str r1, [r0, #0x10c]
  127 + ldr r1, =0x04020205
  128 + str r1, [r0, #0x110]
  129 + ldr r1, =0x03030202
  130 + str r1, [r0, #0x114]
  131 + ldr r1, =0x00000803
  132 + str r1, [r0, #0x120]
  133 + ldr r1, =0x00800020
  134 + str r1, [r0, #0x180]
  135 + ldr r1, =0x02000100
  136 + str r1, [r0, #0x184]
  137 + ldr r1, =0x02098204
  138 + str r1, [r0, #0x190]
  139 + ldr r1, =0x00030303
  140 + str r1, [r0, #0x194]
  141 +
  142 + ldr r1, =0x00000016
  143 + str r1, [r0, #0x200]
  144 + ldr r1, =0x00080808
  145 + str r1, [r0, #0x204]
  146 + ldr r1, =0x00000f0f
  147 + str r1, [r0, #0x210]
  148 + ldr r1, =0x07070707
  149 + str r1, [r0, #0x214]
  150 + ldr r1, =0x0f070707
  151 + str r1, [r0, #0x218]
  152 +
  153 + ldr r1, =0x06000604
  154 + str r1, [r0, #0x240]
  155 + ldr r1, =0x00000001
  156 + str r1, [r0, #0x244]
  157 +
  158 + ldr r0, =SRC_BASE_ADDR
  159 + mov r1, #0x0
  160 + ldr r2, =0x1000
  161 + str r1, [r0, r2]
  162 +
  163 + ldr r0, =DDRPHY_IPS_BASE_ADDR
  164 + ldr r1, =0x17420f40
  165 + str r1, [r0]
  166 + ldr r1, =0x10210100
  167 + str r1, [r0, #0x4]
  168 + ldr r1, =0x00060807
  169 + str r1, [r0, #0x10]
  170 + ldr r1, =0x1010007e
  171 + str r1, [r0, #0xb0]
  172 + imx7d_ddrphy_latency_setting
  173 + ldr r1, =0x08080808
  174 + str r1, [r0, #0x20]
  175 + ldr r1, =0x08080808
  176 + str r1, [r0, #0x30]
  177 + ldr r1, =0x01000010
  178 + str r1, [r0, #0x50]
  179 +
  180 + ldr r1, =0x0e407304
  181 + str r1, [r0, #0xc0]
  182 + ldr r1, =0x0e447304
  183 + str r1, [r0, #0xc0]
  184 + ldr r1, =0x0e447306
  185 + str r1, [r0, #0xc0]
  186 +
  187 +wait_zq:
  188 + ldr r1, [r0, #0xc4]
  189 + tst r1, #0x1
  190 + beq wait_zq
  191 +
  192 + ldr r1, =0x0e407304
  193 + str r1, [r0, #0xc0]
  194 +
  195 + ldr r0, =CCM_BASE_ADDR
  196 + mov r1, #0x0
  197 + ldr r2, =0x4130
  198 + str r1, [r0, r2]
  199 + ldr r0, =IOMUXC_GPR_BASE_ADDR
  200 + mov r1, #0x178
  201 + str r1, [r0, #0x20]
  202 + ldr r0, =CCM_BASE_ADDR
  203 + mov r1, #0x2
  204 + ldr r2, =0x4130
  205 + str r1, [r0, r2]
  206 + ldr r0, =DDRPHY_IPS_BASE_ADDR
  207 + ldr r1, =0x0000000f
  208 + str r1, [r0, #0x18]
  209 +
  210 + ldr r0, =DDRC_IPS_BASE_ADDR
  211 +wait_stat:
  212 + ldr r1, [r0, #0x4]
  213 + tst r1, #0x1
  214 + beq wait_stat
  215 +.endm
  216 +
  217 +.macro imx7_clock_gating
  218 +#ifdef CONFIG_IMX_OPTEE
  219 + ldr r0, =0x30340024
  220 + ldr r1, =0x1
  221 + str r1, [r0]
  222 +#endif
  223 +.endm
  224 +
  225 +.macro imx7_qos_setting
  226 +.endm
  227 +
  228 +.macro imx7_ddr_setting
  229 + imx7d_sabresd_ddr_setting
  230 +.endm
  231 +
  232 +/* include the common plugin code here */
  233 +#include <asm/arch/mx7_plugin.S>
board/embedian/smarcfimx7/smarcfimx7.c
Changes suppressed. Click to show
  1 +/*
  2 + * Copyright (C) 2015 Freescale Semiconductor, Inc.
  3 + * Copyright 2017 NXP
  4 + *
  5 + * SPDX-License-Identifier: GPL-2.0+
  6 + */
  7 +
  8 +#include <asm/arch/clock.h>
  9 +#include <asm/arch/imx-regs.h>
  10 +#include <asm/arch/mx7-pins.h>
  11 +#include <asm/arch/sys_proto.h>
  12 +#include <asm/gpio.h>
  13 +#include <asm/mach-imx/iomux-v3.h>
  14 +#include <asm/mach-imx/boot_mode.h>
  15 +#include <asm/io.h>
  16 +#include <linux/sizes.h>
  17 +#include <common.h>
  18 +#include <i2c.h>
  19 +#include <asm/mach-imx/mxc_i2c.h>
  20 +#include <fsl_esdhc.h>
  21 +#include <mmc.h>
  22 +#include <miiphy.h>
  23 +#include <netdev.h>
  24 +#include <power/pmic.h>
  25 +#include <power/pfuze3000_pmic.h>
  26 +#include "../../freescale/common/pfuze.h"
  27 +#include <i2c.h>
  28 +#include <asm/mach-imx/mxc_i2c.h>
  29 +#include <asm/arch/crm_regs.h>
  30 +#if defined(CONFIG_MXC_EPDC)
  31 +#include <lcd.h>
  32 +#include <mxc_epdc_fb.h>
  33 +#endif
  34 +#include <asm/mach-imx/video.h>
  35 +
  36 +#ifdef CONFIG_FSL_FASTBOOT
  37 +#include <fsl_fastboot.h>
  38 +#ifdef CONFIG_ANDROID_RECOVERY
  39 +#include <recovery.h>
  40 +#endif
  41 +#endif /*CONFIG_FSL_FASTBOOT*/
  42 +
  43 +DECLARE_GLOBAL_DATA_PTR;
  44 +
  45 +#define UART_PAD_CTRL (PAD_CTL_DSE_3P3V_49OHM | \
  46 + PAD_CTL_PUS_PU100KOHM | PAD_CTL_HYS)
  47 +
  48 +#define ENET_PAD_CTRL (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM)
  49 +#define ENET_PAD_CTRL_MII (PAD_CTL_DSE_3P3V_32OHM)
  50 +
  51 +#define ENET_RX_PAD_CTRL (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM)
  52 +
  53 +#define LCD_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_PUS_PU100KOHM | \
  54 + PAD_CTL_DSE_3P3V_49OHM)
  55 +
  56 +#define QSPI_PAD_CTRL \
  57 + (PAD_CTL_DSE_3P3V_49OHM | PAD_CTL_PUE | PAD_CTL_PUS_PU47KOHM)
  58 +
  59 +#define NAND_PAD_CTRL (PAD_CTL_DSE_3P3V_49OHM | PAD_CTL_SRE_SLOW | PAD_CTL_HYS)
  60 +
  61 +#define SPI_PAD_CTRL (PAD_CTL_DSE_3P3V_49OHM | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
  62 +
  63 +#define NAND_PAD_READY0_CTRL (PAD_CTL_DSE_3P3V_49OHM | PAD_CTL_PUS_PU5KOHM)
  64 +
  65 +#define BUTTON_PAD_CTRL (PAD_CTL_PUS_PU5KOHM | PAD_CTL_DSE_3P3V_98OHM)
  66 +
  67 +#define EPDC_PAD_CTRL 0x0
  68 +
  69 +#define WEAK_PULLUP (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM | \
  70 + PAD_CTL_HYS | PAD_CTL_SRE_SLOW)
  71 +
  72 +#ifdef CONFIG_MXC_SPI
  73 +/* SPI2 (SPINOR) */
  74 +static iomux_v3_cfg_t const ecspi2_pads[] = {
  75 + MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
  76 + MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
  77 + MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
  78 + MX7D_PAD_ECSPI2_SS0__GPIO4_IO23 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS0#*/
  79 +};
  80 +
  81 +int board_spi_cs_gpio(unsigned bus, unsigned cs)
  82 +{
  83 + gpio_request(IMX_GPIO_NR(4, 23), "espi2_cs0");
  84 + return (bus == 1 && cs == 0) ? (IMX_GPIO_NR(4, 23)) : -1;
  85 +}
  86 +
  87 +static void setup_spinor(void)
  88 +{
  89 + imx_iomux_v3_setup_multiple_pads(ecspi2_pads, ARRAY_SIZE(ecspi2_pads));
  90 +}
  91 +#endif
  92 +
  93 +int dram_init(void)
  94 +{
  95 + gd->ram_size = PHYS_SDRAM_SIZE;
  96 +
  97 + return 0;
  98 +}
  99 +
  100 +static iomux_v3_cfg_t const wdog_pads[] = {
  101 + MX7D_PAD_GPIO1_IO00__WDOG1_WDOG_B | MUX_PAD_CTRL(NO_PAD_CTRL),
  102 +};
  103 +
  104 +/* SER0/UART6 */
  105 +static iomux_v3_cfg_t const uart6_pads[] = {
  106 + MX7D_PAD_EPDC_DATA09__UART6_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
  107 + MX7D_PAD_EPDC_DATA08__UART6_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
  108 + MX7D_PAD_EPDC_DATA10__UART6_DTE_CTS | MUX_PAD_CTRL(UART_PAD_CTRL),
  109 + MX7D_PAD_EPDC_DATA11__UART6_DTE_RTS | MUX_PAD_CTRL(UART_PAD_CTRL),
  110 +};
  111 +
  112 +/* SER1/UART2 */
  113 +static iomux_v3_cfg_t const uart2_pads[] = {
  114 + MX7D_PAD_UART2_TX_DATA__UART2_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
  115 + MX7D_PAD_UART2_RX_DATA__UART2_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
  116 +};
  117 +
  118 +/* SER2/UART7 */
  119 +static iomux_v3_cfg_t const uart7_pads[] = {
  120 + MX7D_PAD_EPDC_DATA13__UART7_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
  121 + MX7D_PAD_EPDC_DATA12__UART7_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
  122 + MX7D_PAD_EPDC_DATA14__UART7_DTE_CTS | MUX_PAD_CTRL(UART_PAD_CTRL),
  123 + MX7D_PAD_EPDC_DATA15__UART7_DTE_RTS | MUX_PAD_CTRL(UART_PAD_CTRL),
  124 +};
  125 +
  126 +/* SER3/UART3 Debug Port */
  127 +static iomux_v3_cfg_t const uart3_pads[] = {
  128 + MX7D_PAD_UART3_TX_DATA__UART3_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
  129 + MX7D_PAD_UART3_RX_DATA__UART3_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
  130 +};
  131 +
  132 +/* RESET_OUT# */
  133 +static iomux_v3_cfg_t const reset_out_pads[] = {
  134 + MX7D_PAD_EPDC_BDR1__GPIO2_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
  135 +};
  136 +
  137 +/* SPI0 */
  138 +static iomux_v3_cfg_t const ecspi1_pads[] = {
  139 + MX7D_PAD_ECSPI1_SCLK__ECSPI1_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
  140 + MX7D_PAD_ECSPI1_MOSI__ECSPI1_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
  141 + MX7D_PAD_ECSPI1_MISO__ECSPI1_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
  142 + MX7D_PAD_ECSPI1_SS0__ECSPI1_SS0 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS0#*/
  143 + MX7D_PAD_UART1_RX_DATA__ECSPI1_SS1 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS1#*/
  144 +};
  145 +
  146 +/* ESPI */
  147 +static iomux_v3_cfg_t const ecspi3_pads[] = {
  148 + MX7D_PAD_SAI2_RX_DATA__ECSPI3_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
  149 + MX7D_PAD_SAI2_TX_BCLK__ECSPI3_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
  150 + MX7D_PAD_SAI2_TX_SYNC__ECSPI3_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
  151 + MX7D_PAD_SAI2_TX_DATA__ECSPI3_SS0 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS0#*/
  152 + MX7D_PAD_SD2_CD_B__ECSPI3_SS2 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS2#*/
  153 +};
  154 +
  155 +/* CAN0/FLEXCAN1 */
  156 +static iomux_v3_cfg_t const flexcan1_pads[] = {
  157 + MX7D_PAD_GPIO1_IO13__FLEXCAN1_TX | MUX_PAD_CTRL(WEAK_PULLUP),
  158 + MX7D_PAD_GPIO1_IO12__FLEXCAN1_RX | MUX_PAD_CTRL(WEAK_PULLUP),
  159 +};
  160 +
  161 +/* CAN1/FLEXCAN2 */
  162 +static iomux_v3_cfg_t const flexcan2_pads[] = {
  163 + MX7D_PAD_GPIO1_IO15__FLEXCAN2_TX | MUX_PAD_CTRL(WEAK_PULLUP),
  164 + MX7D_PAD_GPIO1_IO14__FLEXCAN2_RX | MUX_PAD_CTRL(WEAK_PULLUP),
  165 +};
  166 +
  167 +/* GPIOs */
  168 +static iomux_v3_cfg_t const gpios_pads[] = {
  169 + MX7D_PAD_EPDC_DATA00__GPIO2_IO0 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO0 */
  170 + MX7D_PAD_EPDC_DATA01__GPIO2_IO1 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO1 */
  171 + MX7D_PAD_EPDC_DATA02__GPIO2_IO2 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO2 */
  172 + MX7D_PAD_EPDC_DATA03__GPIO2_IO3 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO3 */
  173 + MX7D_PAD_EPDC_DATA04__GPIO2_IO4 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO4 */
  174 + MX7D_PAD_EPDC_DATA05__GPIO2_IO5 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO6 */
  175 + MX7D_PAD_EPDC_DATA07__GPIO2_IO7 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO7 */
  176 + MX7D_PAD_EPDC_DATA06__GPIO2_IO6 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO8 */
  177 + MX7D_PAD_UART1_TX_DATA__GPIO4_IO1 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO9 */
  178 + MX7D_PAD_UART3_RTS_B__GPIO4_IO6 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO10 */
  179 + MX7D_PAD_UART3_CTS_B__GPIO4_IO7 | MUX_PAD_CTRL(WEAK_PULLUP), /* GPIO11 */
  180 +};
  181 +
  182 +/* LVDS channel selection, set low as single channel LVDS and high as dual channel LVDS */
  183 +static iomux_v3_cfg_t const lvds_ch_sel_pads[] = {
  184 + MX7D_PAD_SD2_CMD__GPIO5_IO13 | MUX_PAD_CTRL(WEAK_PULLUP), /* LVDS_CH_SEL */
  185 +};
  186 +
  187 +/* Misc. pins */
  188 +static iomux_v3_cfg_t const misc_pads[] = {
  189 + MX7D_PAD_SD2_DATA0__GPIO5_IO14 | MUX_PAD_CTRL(WEAK_PULLUP), /* SLEEP# */
  190 + MX7D_PAD_GPIO1_IO09__GPIO1_IO9 | MUX_PAD_CTRL(WEAK_PULLUP), /* CHARGER_PRSNT# */
  191 + MX7D_PAD_GPIO1_IO08__GPIO1_IO8 | MUX_PAD_CTRL(WEAK_PULLUP), /* CHARGING# */
  192 + MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16 | MUX_PAD_CTRL(WEAK_PULLUP), /* CARRIER_STBY# */
  193 + MX7D_PAD_SD2_RESET_B__GPIO5_IO11 | MUX_PAD_CTRL(WEAK_PULLUP), /* BATLOW# */
  194 + MX7D_PAD_EPDC_BDR0__GPIO2_IO28 | MUX_PAD_CTRL(NO_PAD_CTRL), /* PCIe_RST# */
  195 + MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31 | MUX_PAD_CTRL(NO_PAD_CTRL), /* PCIe_WAKE# */
  196 + MX7D_PAD_ENET1_CRS__GPIO7_IO14 | MUX_PAD_CTRL(NO_PAD_CTRL), /* WDT_TIME_OUT# */
  197 +};
  198 +
  199 +#ifdef CONFIG_NAND_MXS
  200 +static iomux_v3_cfg_t const gpmi_pads[] = {
  201 + MX7D_PAD_SD3_DATA0__NAND_DATA00 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  202 + MX7D_PAD_SD3_DATA1__NAND_DATA01 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  203 + MX7D_PAD_SD3_DATA2__NAND_DATA02 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  204 + MX7D_PAD_SD3_DATA3__NAND_DATA03 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  205 + MX7D_PAD_SD3_DATA4__NAND_DATA04 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  206 + MX7D_PAD_SD3_DATA5__NAND_DATA05 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  207 + MX7D_PAD_SD3_DATA6__NAND_DATA06 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  208 + MX7D_PAD_SD3_DATA7__NAND_DATA07 | MUX_PAD_CTRL(NAND_PAD_CTRL),
  209 + MX7D_PAD_SD3_CLK__NAND_CLE | MUX_PAD_CTRL(NAND_PAD_CTRL),
  210 + MX7D_PAD_SD3_CMD__NAND_ALE | MUX_PAD_CTRL(NAND_PAD_CTRL),
  211 + MX7D_PAD_SD3_STROBE__NAND_RE_B | MUX_PAD_CTRL(NAND_PAD_CTRL),
  212 + MX7D_PAD_SD3_RESET_B__NAND_WE_B | MUX_PAD_CTRL(NAND_PAD_CTRL),
  213 + MX7D_PAD_SAI1_MCLK__NAND_WP_B | MUX_PAD_CTRL(NAND_PAD_CTRL),
  214 + MX7D_PAD_SAI1_RX_BCLK__NAND_CE3_B | MUX_PAD_CTRL(NAND_PAD_CTRL),
  215 + MX7D_PAD_SAI1_RX_SYNC__NAND_CE2_B | MUX_PAD_CTRL(NAND_PAD_CTRL),
  216 + MX7D_PAD_SAI1_RX_DATA__NAND_CE1_B | MUX_PAD_CTRL(NAND_PAD_CTRL),
  217 + MX7D_PAD_SAI1_TX_BCLK__NAND_CE0_B | MUX_PAD_CTRL(NAND_PAD_CTRL),
  218 + MX7D_PAD_SAI1_TX_SYNC__NAND_DQS | MUX_PAD_CTRL(NAND_PAD_CTRL),
  219 + MX7D_PAD_SAI1_TX_DATA__NAND_READY_B | MUX_PAD_CTRL(NAND_PAD_READY0_CTRL),
  220 +};
  221 +
  222 +static void setup_gpmi_nand(void)
  223 +{
  224 + imx_iomux_v3_setup_multiple_pads(gpmi_pads, ARRAY_SIZE(gpmi_pads));
  225 +
  226 + /* NAND_USDHC_BUS_CLK is set in rom */
  227 + set_clk_nand();
  228 +}
  229 +#endif
  230 +
  231 +#ifdef CONFIG_VIDEO_MXS
  232 +static iomux_v3_cfg_t const lcd_pads[] = {
  233 + MX7D_PAD_LCD_CLK__LCD_CLK | MUX_PAD_CTRL(LCD_PAD_CTRL),
  234 + MX7D_PAD_LCD_ENABLE__LCD_ENABLE | MUX_PAD_CTRL(LCD_PAD_CTRL),
  235 + MX7D_PAD_LCD_HSYNC__LCD_HSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
  236 + MX7D_PAD_LCD_VSYNC__LCD_VSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
  237 + MX7D_PAD_LCD_DATA00__LCD_DATA0 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  238 + MX7D_PAD_LCD_DATA01__LCD_DATA1 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  239 + MX7D_PAD_LCD_DATA02__LCD_DATA2 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  240 + MX7D_PAD_LCD_DATA03__LCD_DATA3 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  241 + MX7D_PAD_LCD_DATA04__LCD_DATA4 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  242 + MX7D_PAD_LCD_DATA05__LCD_DATA5 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  243 + MX7D_PAD_LCD_DATA06__LCD_DATA6 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  244 + MX7D_PAD_LCD_DATA07__LCD_DATA7 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  245 + MX7D_PAD_LCD_DATA08__LCD_DATA8 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  246 + MX7D_PAD_LCD_DATA09__LCD_DATA9 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  247 + MX7D_PAD_LCD_DATA10__LCD_DATA10 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  248 + MX7D_PAD_LCD_DATA11__LCD_DATA11 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  249 + MX7D_PAD_LCD_DATA12__LCD_DATA12 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  250 + MX7D_PAD_LCD_DATA13__LCD_DATA13 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  251 + MX7D_PAD_LCD_DATA14__LCD_DATA14 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  252 + MX7D_PAD_LCD_DATA15__LCD_DATA15 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  253 + MX7D_PAD_LCD_DATA16__LCD_DATA16 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  254 + MX7D_PAD_LCD_DATA17__LCD_DATA17 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  255 + MX7D_PAD_LCD_DATA18__LCD_DATA18 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  256 + MX7D_PAD_LCD_DATA19__LCD_DATA19 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  257 + MX7D_PAD_LCD_DATA20__LCD_DATA20 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  258 + MX7D_PAD_LCD_DATA21__LCD_DATA21 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  259 + MX7D_PAD_LCD_DATA22__LCD_DATA22 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  260 + MX7D_PAD_LCD_DATA23__LCD_DATA23 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  261 +
  262 + MX7D_PAD_LCD_RESET__GPIO3_IO4 | MUX_PAD_CTRL(LCD_PAD_CTRL),
  263 +};
  264 +
  265 +static iomux_v3_cfg_t const backlight_pads[] = {
  266 + /* Backlight Enable for RGB: S127 */
  267 + MX7D_PAD_SAI1_RX_BCLK__GPIO6_IO17 | MUX_PAD_CTRL(WEAK_PULLUP),
  268 +
  269 + /* PWM Backlight Control: S141. Use GPIO for Brightness adjustment, duty cycle = period */
  270 + MX7D_PAD_GPIO1_IO02__GPIO1_IO2 | MUX_PAD_CTRL(NO_PAD_CTRL),
  271 +};
  272 +
  273 +void do_enable_parallel_lcd(struct display_info_t const *dev)
  274 +{
  275 + imx_iomux_v3_setup_multiple_pads(lcd_pads, ARRAY_SIZE(lcd_pads));
  276 +
  277 + imx_iomux_v3_setup_multiple_pads(backlight_pads, ARRAY_SIZE(backlight_pads));
  278 +
  279 + /* Reset LCD */
  280 + gpio_request(IMX_GPIO_NR(3, 4), "lcd reset");
  281 + gpio_direction_output(IMX_GPIO_NR(3, 4) , 0);
  282 + udelay(500);
  283 + gpio_direction_output(IMX_GPIO_NR(3, 4) , 1);
  284 +
  285 + /* Turn on Backlight */
  286 + gpio_request(IMX_GPIO_NR(6, 17), "backlight_enable");
  287 + gpio_direction_output(IMX_GPIO_NR(6, 17), 1);
  288 +
  289 + /* Set Brightness to high */
  290 + gpio_request(IMX_GPIO_NR(1, 2), "backlight_pwm");
  291 + gpio_direction_output(IMX_GPIO_NR(1, 2) , 1);
  292 +}
  293 +
  294 +/* LVDS Panel for AUO G070VW01 V0 7-inch Color TFT 800x480 Panel Settings */
  295 +struct display_info_t const displays[] = {{
  296 + .bus = ELCDIF1_IPS_BASE_ADDR,
  297 + .addr = 0,
  298 + .pixfmt = 24,
  299 + .detect = NULL,
  300 + .enable = do_enable_parallel_lcd,
  301 + .mode = {
  302 + .name = "G070VW01",
  303 + .xres = 800,
  304 + .yres = 480,
  305 + .pixclock = 31069,
  306 + .left_margin = 64,
  307 + .right_margin = 64,
  308 + .upper_margin = 12,
  309 + .lower_margin = 4,
  310 + .hsync_len = 128,
  311 + .vsync_len = 12,
  312 + .sync = 0,
  313 + .vmode = FB_VMODE_NONINTERLACED
  314 +} } };
  315 +size_t display_count = ARRAY_SIZE(displays);
  316 +#endif
  317 +
  318 +static void setup_iomux_uart6(void)
  319 +{
  320 + imx_iomux_v3_setup_multiple_pads(uart6_pads, ARRAY_SIZE(uart6_pads));
  321 +}
  322 +
  323 +static void setup_iomux_uart2(void)
  324 +{
  325 + imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads));
  326 +}
  327 +
  328 +static void setup_iomux_uart7(void)
  329 +{
  330 + imx_iomux_v3_setup_multiple_pads(uart7_pads, ARRAY_SIZE(uart7_pads));
  331 +}
  332 +
  333 +static void setup_iomux_uart3(void)
  334 +{
  335 + imx_iomux_v3_setup_multiple_pads(uart3_pads, ARRAY_SIZE(uart3_pads));
  336 +}
  337 +
  338 +static void setup_iomux_reset_out(void)
  339 +{
  340 + imx_iomux_v3_setup_multiple_pads(reset_out_pads, ARRAY_SIZE(reset_out_pads));
  341 +
  342 + /* Set CPU RESET_OUT as Output */
  343 + gpio_request(IMX_GPIO_NR(2, 29), "reset_out");
  344 + gpio_direction_output(IMX_GPIO_NR(2, 29) , 0);
  345 +}
  346 +
  347 +static void setup_iomux_spi1(void)
  348 +{
  349 + imx_iomux_v3_setup_multiple_pads(ecspi1_pads, ARRAY_SIZE(ecspi1_pads));
  350 + gpio_request(IMX_GPIO_NR(4, 19), "spi1_cs0");
  351 + gpio_direction_output(IMX_GPIO_NR(4, 19), 0);
  352 + gpio_request(IMX_GPIO_NR(4, 0), "spi1_cs1");
  353 + gpio_direction_output(IMX_GPIO_NR(4, 0), 0);
  354 +}
  355 +
  356 +static void setup_iomux_spi3(void)
  357 +{
  358 + imx_iomux_v3_setup_multiple_pads(ecspi3_pads, ARRAY_SIZE(ecspi3_pads));
  359 + gpio_request(IMX_GPIO_NR(6, 22), "spi3_cs0");
  360 + gpio_direction_output(IMX_GPIO_NR(6, 22), 0);
  361 + gpio_request(IMX_GPIO_NR(5, 9), "spi3_cs2");
  362 + gpio_direction_output(IMX_GPIO_NR(5, 9), 0);
  363 +}
  364 +
  365 +static void setup_iomux_gpios(void)
  366 +{
  367 + imx_iomux_v3_setup_multiple_pads(gpios_pads, ARRAY_SIZE(gpios_pads));
  368 + gpio_request(IMX_GPIO_NR(2, 0), "GPIO0");
  369 + gpio_direction_output(IMX_GPIO_NR(2, 0), 0);
  370 + gpio_request(IMX_GPIO_NR(2, 1), "GPIO1");
  371 + gpio_direction_output(IMX_GPIO_NR(2, 1), 0);
  372 + gpio_request(IMX_GPIO_NR(2, 2), "GPIO2");
  373 + gpio_direction_output(IMX_GPIO_NR(2, 2), 0);
  374 + gpio_request(IMX_GPIO_NR(2, 3), "GPIO3");
  375 + gpio_direction_output(IMX_GPIO_NR(2, 3), 0);
  376 + gpio_request(IMX_GPIO_NR(2, 4), "GPIO4");
  377 + gpio_direction_output(IMX_GPIO_NR(2, 4), 0);
  378 + gpio_request(IMX_GPIO_NR(2, 5), "GPIO6");
  379 + gpio_direction_input(IMX_GPIO_NR(2, 5));
  380 + gpio_request(IMX_GPIO_NR(2, 7), "GPIO7");
  381 + gpio_direction_input(IMX_GPIO_NR(2, 7));
  382 + gpio_request(IMX_GPIO_NR(2, 6), "GPIO8");
  383 + gpio_direction_input(IMX_GPIO_NR(2, 6));
  384 + gpio_request(IMX_GPIO_NR(4, 1), "GPIO9");
  385 + gpio_direction_input(IMX_GPIO_NR(4, 1));
  386 + gpio_request(IMX_GPIO_NR(4, 6), "GPIO10");
  387 + gpio_direction_input(IMX_GPIO_NR(4, 6));
  388 + gpio_request(IMX_GPIO_NR(4, 7), "GPIO11");
  389 + gpio_direction_input(IMX_GPIO_NR(4, 7));
  390 +}
  391 +
  392 +static void setup_iomux_lvds_ch_sel(void)
  393 +{
  394 + imx_iomux_v3_setup_multiple_pads(lvds_ch_sel_pads, ARRAY_SIZE(lvds_ch_sel_pads));
  395 + gpio_request(IMX_GPIO_NR(5, 13), "LVDS_CH_SEL");
  396 + gpio_direction_output(IMX_GPIO_NR(5, 13), 0);
  397 +}
  398 +
  399 +static void setup_iomux_misc(void)
  400 +{
  401 + imx_iomux_v3_setup_multiple_pads(misc_pads, ARRAY_SIZE(misc_pads));
  402 + gpio_request(IMX_GPIO_NR(5, 14), "SLEEP#");
  403 + gpio_direction_input(IMX_GPIO_NR(5, 14));
  404 + gpio_request(IMX_GPIO_NR(1, 8), "CHARGING#");
  405 + gpio_direction_input(IMX_GPIO_NR(1, 8));
  406 + gpio_request(IMX_GPIO_NR(1, 9), "CHARGER_PRSNT#");
  407 + gpio_direction_input(IMX_GPIO_NR(1, 9));
  408 + gpio_request(IMX_GPIO_NR(5, 11), "BATLOW#");
  409 + gpio_direction_input(IMX_GPIO_NR(5, 11));
  410 + gpio_request(IMX_GPIO_NR(6, 16), "CARRIER_STBY#");
  411 + gpio_direction_output(IMX_GPIO_NR(6, 16), 1);
  412 + gpio_request(IMX_GPIO_NR(2, 28), "PCIE_RST#");
  413 + gpio_direction_output(IMX_GPIO_NR(2, 28), 0);
  414 + udelay(500);
  415 + gpio_direction_output(IMX_GPIO_NR(2, 28), 1);
  416 + gpio_request(IMX_GPIO_NR(2, 31), "PCIE_WAKE#");
  417 + gpio_direction_input(IMX_GPIO_NR(2, 31));
  418 + /* Set WDT_TIME_OUT# as Output High */
  419 + gpio_request(IMX_GPIO_NR(7, 14), "WDT_TIME_OUT#");
  420 + gpio_direction_output(IMX_GPIO_NR(7, 14), 1);
  421 +}
  422 +
  423 +static void setup_iomux_flexcan1(void)
  424 +{
  425 + imx_iomux_v3_setup_multiple_pads(flexcan1_pads, ARRAY_SIZE(flexcan1_pads));
  426 +}
  427 +
  428 +static void setup_iomux_flexcan2(void)
  429 +{
  430 + imx_iomux_v3_setup_multiple_pads(flexcan2_pads, ARRAY_SIZE(flexcan2_pads));
  431 +}
  432 +
  433 +int board_mmc_get_env_dev(int devno)
  434 +{
  435 + if (devno == 2)
  436 + devno--;
  437 +
  438 + return devno;
  439 +}
  440 +
  441 +int mmc_map_to_kernel_blk(int dev_no)
  442 +{
  443 + if (dev_no == 1)
  444 + dev_no++;
  445 +
  446 + return dev_no;
  447 +}
  448 +
  449 +#ifdef CONFIG_FEC_MXC
  450 +static int setup_fec(int fec_id)
  451 +{
  452 + struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
  453 + = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR;
  454 +
  455 + if (0 == fec_id) {
  456 + /* Use 125M anatop REF_CLK1 for ENET1, clear gpr1[13], gpr1[17]*/
  457 + clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
  458 + (IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_MASK |
  459 + IOMUXC_GPR_GPR1_GPR_ENET1_CLK_DIR_MASK), 0);
  460 + } else {
  461 + /* Use 125M anatop REF_CLK2 for ENET2, clear gpr1[14], gpr1[18]*/
  462 + clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
  463 + (IOMUXC_GPR_GPR1_GPR_ENET2_TX_CLK_SEL_MASK |
  464 + IOMUXC_GPR_GPR1_GPR_ENET2_CLK_DIR_MASK), 0);
  465 + }
  466 +
  467 + return set_clk_enet(ENET_125MHZ);
  468 +}
  469 +
  470 +int board_phy_config(struct phy_device *phydev)
  471 +{
  472 + /* enable rgmii rxc skew and phy mode select to RGMII copper */
  473 + /*phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x21);
  474 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x7ea8);
  475 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x2f);
  476 + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x71b7);*/
  477 +
  478 + if (phydev->drv->config)
  479 + phydev->drv->config(phydev);
  480 + return 0;
  481 +}
  482 +#endif
  483 +
  484 +#ifdef CONFIG_FSL_QSPI
  485 +#ifndef CONFIG_DM_SPI
  486 +static iomux_v3_cfg_t const quadspi_pads[] = {
  487 + MX7D_PAD_EPDC_DATA00__QSPI_A_DATA0 | MUX_PAD_CTRL(QSPI_PAD_CTRL),
  488 + MX7D_PAD_EPDC_DATA01__QSPI_A_DATA1 | MUX_PAD_CTRL(QSPI_PAD_CTRL),
  489 + MX7D_PAD_EPDC_DATA02__QSPI_A_DATA2 | MUX_PAD_CTRL(QSPI_PAD_CTRL),
  490 + MX7D_PAD_EPDC_DATA03__QSPI_A_DATA3 | MUX_PAD_CTRL(QSPI_PAD_CTRL),
  491 + MX7D_PAD_EPDC_DATA05__QSPI_A_SCLK | MUX_PAD_CTRL(QSPI_PAD_CTRL),
  492 + MX7D_PAD_EPDC_DATA06__QSPI_A_SS0_B | MUX_PAD_CTRL(QSPI_PAD_CTRL),
  493 +};
  494 +#endif
  495 +
  496 +int board_qspi_init(void)
  497 +{
  498 +#ifndef CONFIG_DM_SPI
  499 + /* Set the iomux */
  500 + imx_iomux_v3_setup_multiple_pads(quadspi_pads,
  501 + ARRAY_SIZE(quadspi_pads));
  502 +#endif
  503 +
  504 + /* Set the clock */
  505 + set_clk_qspi();
  506 +
  507 + return 0;
  508 +}
  509 +#endif
  510 +
  511 +#ifdef CONFIG_MXC_EPDC
  512 +iomux_v3_cfg_t const epdc_en_pads[] = {
  513 + MX7D_PAD_GPIO1_IO04__GPIO1_IO4 | MUX_PAD_CTRL(NO_PAD_CTRL),
  514 +};
  515 +
  516 +static iomux_v3_cfg_t const epdc_enable_pads[] = {
  517 + MX7D_PAD_EPDC_DATA00__EPDC_DATA0 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  518 + MX7D_PAD_EPDC_DATA01__EPDC_DATA1 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  519 + MX7D_PAD_EPDC_DATA02__EPDC_DATA2 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  520 + MX7D_PAD_EPDC_DATA03__EPDC_DATA3 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  521 + MX7D_PAD_EPDC_DATA04__EPDC_DATA4 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  522 + MX7D_PAD_EPDC_DATA05__EPDC_DATA5 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  523 + MX7D_PAD_EPDC_DATA06__EPDC_DATA6 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  524 + MX7D_PAD_EPDC_DATA07__EPDC_DATA7 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  525 + MX7D_PAD_EPDC_SDCLK__EPDC_SDCLK | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  526 + MX7D_PAD_EPDC_SDLE__EPDC_SDLE | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  527 + MX7D_PAD_EPDC_SDOE__EPDC_SDOE | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  528 + MX7D_PAD_EPDC_SDSHR__EPDC_SDSHR | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  529 + MX7D_PAD_EPDC_SDCE0__EPDC_SDCE0 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  530 + MX7D_PAD_EPDC_SDCE1__EPDC_SDCE1 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  531 + MX7D_PAD_EPDC_GDCLK__EPDC_GDCLK | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  532 + MX7D_PAD_EPDC_GDOE__EPDC_GDOE | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  533 + MX7D_PAD_EPDC_GDRL__EPDC_GDRL | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  534 + MX7D_PAD_EPDC_GDSP__EPDC_GDSP | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  535 + MX7D_PAD_EPDC_BDR0__EPDC_BDR0 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  536 + MX7D_PAD_EPDC_BDR1__EPDC_BDR1 | MUX_PAD_CTRL(EPDC_PAD_CTRL),
  537 +};
  538 +
  539 +static iomux_v3_cfg_t const epdc_disable_pads[] = {
  540 + MX7D_PAD_EPDC_DATA00__GPIO2_IO0,
  541 + MX7D_PAD_EPDC_DATA01__GPIO2_IO1,
  542 + MX7D_PAD_EPDC_DATA02__GPIO2_IO2,
  543 + MX7D_PAD_EPDC_DATA03__GPIO2_IO3,
  544 + MX7D_PAD_EPDC_DATA04__GPIO2_IO4,
  545 + MX7D_PAD_EPDC_DATA05__GPIO2_IO5,
  546 + MX7D_PAD_EPDC_DATA06__GPIO2_IO6,
  547 + MX7D_PAD_EPDC_DATA07__GPIO2_IO7,
  548 + MX7D_PAD_EPDC_SDCLK__GPIO2_IO16,
  549 + MX7D_PAD_EPDC_SDLE__GPIO2_IO17,
  550 + MX7D_PAD_EPDC_SDOE__GPIO2_IO18,
  551 + MX7D_PAD_EPDC_SDSHR__GPIO2_IO19,
  552 + MX7D_PAD_EPDC_SDCE0__GPIO2_IO20,
  553 + MX7D_PAD_EPDC_SDCE1__GPIO2_IO21,
  554 + MX7D_PAD_EPDC_GDCLK__GPIO2_IO24,
  555 + MX7D_PAD_EPDC_GDOE__GPIO2_IO25,
  556 + MX7D_PAD_EPDC_GDRL__GPIO2_IO26,
  557 + MX7D_PAD_EPDC_GDSP__GPIO2_IO27,
  558 + MX7D_PAD_EPDC_BDR0__GPIO2_IO28,
  559 + MX7D_PAD_EPDC_BDR1__GPIO2_IO29,
  560 +};
  561 +
  562 +vidinfo_t panel_info = {
  563 + .vl_refresh = 85,
  564 + .vl_col = 1024,
  565 + .vl_row = 758,
  566 + .vl_pixclock = 40000000,
  567 + .vl_left_margin = 12,
  568 + .vl_right_margin = 76,
  569 + .vl_upper_margin = 4,
  570 + .vl_lower_margin = 5,
  571 + .vl_hsync = 12,
  572 + .vl_vsync = 2,
  573 + .vl_sync = 0,
  574 + .vl_mode = 0,
  575 + .vl_flag = 0,
  576 + .vl_bpix = 3,
  577 + .cmap = 0,
  578 +};
  579 +
  580 +struct epdc_timing_params panel_timings = {
  581 + .vscan_holdoff = 4,
  582 + .sdoed_width = 10,
  583 + .sdoed_delay = 20,
  584 + .sdoez_width = 10,
  585 + .sdoez_delay = 20,
  586 + .gdclk_hp_offs = 524,
  587 + .gdsp_offs = 327,
  588 + .gdoe_offs = 0,
  589 + .gdclk_offs = 19,
  590 + .num_ce = 1,
  591 +};
  592 +
  593 +static void setup_epdc_power(void)
  594 +{
  595 + /* IOMUX_GPR1: bit30: Disable On-chip RAM EPDC Function */
  596 + struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
  597 + = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR;
  598 +
  599 + clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
  600 + IOMUXC_GPR_GPR1_GPR_ENABLE_OCRAM_EPDC_MASK, 0);
  601 +
  602 + /* Setup epdc voltage */
  603 +
  604 + /* EPDC_PWRSTAT - GPIO2[31] for PWR_GOOD status */
  605 + imx_iomux_v3_setup_pad(MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31 |
  606 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  607 + gpio_request(IMX_GPIO_NR(2, 31), "epdc_pwrstat");
  608 + gpio_direction_input(IMX_GPIO_NR(2, 31));
  609 +
  610 + /* EPDC_VCOM0 - GPIO4[14] for VCOM control */
  611 + imx_iomux_v3_setup_pad(MX7D_PAD_I2C4_SCL__GPIO4_IO14 |
  612 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  613 +
  614 + /* Set as output */
  615 + gpio_request(IMX_GPIO_NR(4, 14), "epdc_vcom");
  616 + gpio_direction_output(IMX_GPIO_NR(4, 14), 1);
  617 +
  618 + /* EPDC_PWRWAKEUP - GPIO2[23] for EPD PMIC WAKEUP */
  619 + imx_iomux_v3_setup_pad(MX7D_PAD_EPDC_SDCE3__GPIO2_IO23 |
  620 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  621 + /* Set as output */
  622 + gpio_request(IMX_GPIO_NR(2, 23), "epdc_pmic");
  623 + gpio_direction_output(IMX_GPIO_NR(2, 23), 1);
  624 +
  625 + /* EPDC_PWRCTRL0 - GPIO2[30] for EPD PWR CTL0 */
  626 + imx_iomux_v3_setup_pad(MX7D_PAD_EPDC_PWR_COM__GPIO2_IO30 |
  627 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  628 + /* Set as output */
  629 + gpio_request(IMX_GPIO_NR(2, 30), "epdc_pwr_ctl0");
  630 + gpio_direction_output(IMX_GPIO_NR(2, 30), 1);
  631 +}
  632 +
  633 +static void epdc_enable_pins(void)
  634 +{
  635 + /* epdc iomux settings */
  636 + imx_iomux_v3_setup_multiple_pads(epdc_enable_pads,
  637 + ARRAY_SIZE(epdc_enable_pads));
  638 +}
  639 +
  640 +static void epdc_disable_pins(void)
  641 +{
  642 + /* Configure MUX settings for EPDC pins to GPIO and drive to 0 */
  643 + imx_iomux_v3_setup_multiple_pads(epdc_disable_pads,
  644 + ARRAY_SIZE(epdc_disable_pads));
  645 +}
  646 +
  647 +static void setup_epdc(void)
  648 +{
  649 + /*** epdc Maxim PMIC settings ***/
  650 +
  651 + /* EPDC_PWRSTAT - GPIO2[31] for PWR_GOOD status */
  652 + imx_iomux_v3_setup_pad(MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31 |
  653 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  654 +
  655 + /* EPDC_VCOM0 - GPIO4[14] for VCOM control */
  656 + imx_iomux_v3_setup_pad(MX7D_PAD_I2C4_SCL__GPIO4_IO14 |
  657 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  658 +
  659 + /* EPDC_PWRWAKEUP - GPIO4[23] for EPD PMIC WAKEUP */
  660 + imx_iomux_v3_setup_pad(MX7D_PAD_EPDC_SDCE3__GPIO2_IO23 |
  661 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  662 +
  663 + /* EPDC_PWRCTRL0 - GPIO4[20] for EPD PWR CTL0 */
  664 + imx_iomux_v3_setup_pad(MX7D_PAD_EPDC_PWR_COM__GPIO2_IO30 |
  665 + MUX_PAD_CTRL(EPDC_PAD_CTRL));
  666 +
  667 + /* Set pixel clock rates for EPDC in clock.c */
  668 +
  669 + panel_info.epdc_data.wv_modes.mode_init = 0;
  670 + panel_info.epdc_data.wv_modes.mode_du = 1;
  671 + panel_info.epdc_data.wv_modes.mode_gc4 = 3;
  672 + panel_info.epdc_data.wv_modes.mode_gc8 = 2;
  673 + panel_info.epdc_data.wv_modes.mode_gc16 = 2;
  674 + panel_info.epdc_data.wv_modes.mode_gc32 = 2;
  675 +
  676 + panel_info.epdc_data.epdc_timings = panel_timings;
  677 +
  678 + setup_epdc_power();
  679 +}
  680 +
  681 +void epdc_power_on(void)
  682 +{
  683 + unsigned int reg;
  684 + struct gpio_regs *gpio_regs = (struct gpio_regs *)GPIO2_BASE_ADDR;
  685 +
  686 + /* Set EPD_PWR_CTL0 to high - enable EINK_VDD (3.15) */
  687 + gpio_set_value(IMX_GPIO_NR(2, 30), 1);
  688 + udelay(1000);
  689 +
  690 + /* Enable epdc signal pin */
  691 + epdc_enable_pins();
  692 +
  693 + /* Set PMIC Wakeup to high - enable Display power */
  694 + gpio_set_value(IMX_GPIO_NR(2, 23), 1);
  695 +
  696 + /* Wait for PWRGOOD == 1 */
  697 + while (1) {
  698 + reg = readl(&gpio_regs->gpio_psr);
  699 + if (!(reg & (1 << 31)))
  700 + break;
  701 +
  702 + udelay(100);
  703 + }
  704 +
  705 + /* Enable VCOM */
  706 + gpio_set_value(IMX_GPIO_NR(4, 14), 1);
  707 +
  708 + udelay(500);
  709 +}
  710 +
  711 +void epdc_power_off(void)
  712 +{
  713 + /* Set PMIC Wakeup to low - disable Display power */
  714 + gpio_set_value(IMX_GPIO_NR(2, 23), 0);
  715 +
  716 + /* Disable VCOM */
  717 + gpio_set_value(IMX_GPIO_NR(4, 14), 0);
  718 +
  719 + epdc_disable_pins();
  720 +
  721 + /* Set EPD_PWR_CTL0 to low - disable EINK_VDD (3.15) */
  722 + gpio_set_value(IMX_GPIO_NR(2, 30), 0);
  723 +}
  724 +#endif
  725 +
  726 +static void setup_usb(void)
  727 +{
  728 + /* OTG1 Over Current */
  729 + gpio_request(IMX_GPIO_NR(1, 4), "OTG1_OC");
  730 + gpio_direction_input(IMX_GPIO_NR(1, 4));
  731 + gpio_request(IMX_GPIO_NR(1, 5), "OTG1_PWR");
  732 + gpio_direction_output(IMX_GPIO_NR(1, 5), 1);
  733 + /* OTG2 */
  734 + gpio_request(IMX_GPIO_NR(1, 6), "OTG2_OC");
  735 + gpio_direction_input(IMX_GPIO_NR(1, 6));
  736 + gpio_request(IMX_GPIO_NR(1, 7), "OTG2_PWR");
  737 + gpio_direction_output(IMX_GPIO_NR(1, 7), 1);
  738 +}
  739 +
  740 +int board_early_init_f(void)
  741 +{
  742 + setup_iomux_uart6();
  743 + setup_iomux_uart2();
  744 + setup_iomux_uart7();
  745 + setup_iomux_uart3();
  746 +
  747 +#ifdef CONFIG_MXC_SPI
  748 + setup_spinor();
  749 +#endif
  750 +
  751 + setup_iomux_flexcan1();
  752 + setup_iomux_flexcan2();
  753 +
  754 + return 0;
  755 +}
  756 +
  757 +int board_init(void)
  758 +{
  759 + /* address of boot parameters */
  760 + gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
  761 +
  762 +#ifdef CONFIG_FEC_MXC
  763 + setup_fec(CONFIG_FEC_ENET_DEV);
  764 +#endif
  765 +
  766 +#ifdef CONFIG_NAND_MXS
  767 + setup_gpmi_nand();
  768 +#endif
  769 +
  770 +#ifdef CONFIG_FSL_QSPI
  771 + board_qspi_init();
  772 +#endif
  773 +
  774 +#ifdef CONFIG_MXC_EPDC
  775 + setup_epdc();
  776 +#endif
  777 +
  778 + return 0;
  779 +}
  780 +
  781 +#ifdef CONFIG_CMD_BMODE
  782 +static const struct boot_mode board_boot_modes[] = {
  783 + /* 4 bit bus width */
  784 + {"sd1", MAKE_CFGVAL(0x10, 0x10, 0x00, 0x00)},
  785 + {"emmc", MAKE_CFGVAL(0x10, 0x2a, 0x00, 0x00)},
  786 + /* TODO: Nand */
  787 + {"qspi", MAKE_CFGVAL(0x00, 0x40, 0x00, 0x00)},
  788 + {NULL, 0},
  789 +};
  790 +#endif
  791 +
  792 +#ifdef CONFIG_DM_PMIC
  793 +int power_init_board(void)
  794 +{
  795 + struct udevice *dev;
  796 + int ret, dev_id, rev_id;
  797 + u32 sw3mode;
  798 +
  799 + ret = pmic_get("pfuze3000", &dev);
  800 + if (ret == -ENODEV)
  801 + return 0;
  802 + if (ret != 0)
  803 + return ret;
  804 +
  805 + dev_id = pmic_reg_read(dev, PFUZE3000_DEVICEID);
  806 + rev_id = pmic_reg_read(dev, PFUZE3000_REVID);
  807 + printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", dev_id, rev_id);
  808 +
  809 + pmic_clrsetbits(dev, PFUZE3000_LDOGCTL, 0, 1);
  810 +
  811 + /* change sw3 mode to avoid DDR power off */
  812 + sw3mode = pmic_reg_read(dev, PFUZE3000_SW3MODE);
  813 + ret = pmic_reg_write(dev, PFUZE3000_SW3MODE, sw3mode | 0x20);
  814 + if (ret < 0)
  815 + printf("PMIC: PFUZE3000 change sw3 mode failed\n");
  816 +
  817 + return 0;
  818 +}
  819 +#endif
  820 +
  821 +int board_late_init(void)
  822 +{
  823 + struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR;
  824 +#ifdef CONFIG_CMD_BMODE
  825 + add_board_boot_modes(board_boot_modes);
  826 +#endif
  827 +
  828 + env_set("tee", "no");
  829 +#ifdef CONFIG_IMX_OPTEE
  830 + env_set("tee", "yes");
  831 +#endif
  832 +
  833 +#ifdef CONFIG_ENV_IS_IN_MMC
  834 + board_late_mmc_env_init();
  835 +#endif
  836 +
  837 + imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads));
  838 +
  839 + set_wdog_reset(wdog);
  840 +
  841 + /*
  842 + * Do not assert internal WDOG_RESET_B_DEB(controlled by bit 4),
  843 + * since we use PMIC_PWRON to reset the board.
  844 + */
  845 + clrsetbits_le16(&wdog->wcr, 0, 0x10);
  846 +
  847 + puts("---------Embedian SMARC-FiMX7------------\n");
  848 + /* Read Module Information from on module EEPROM and pass
  849 + * mac address to kernel
  850 + */
  851 + struct udevice *dev;
  852 + int ret;
  853 + u8 name[8];
  854 + u8 serial[12];
  855 + u8 revision[4];
  856 + u8 mac[6];
  857 + u8 mac1[6];
  858 +
  859 + ret = i2c_get_chip_for_busnum(1, 0x50, 2, &dev);
  860 + if (ret) {
  861 + debug("failed to get eeprom\n");
  862 + return 0;
  863 + }
  864 +
  865 + /* Board ID */
  866 + ret = dm_i2c_read(dev, 0x4, name, 8);
  867 + if (ret) {
  868 + debug("failed to read board ID from EEPROM\n");
  869 + return 0;
  870 + }
  871 + printf(" Board ID: %c%c%c%c%c%c%c%c\n",
  872 + name[0], name[1], name[2], name[3], name[4], name[5], name[6], name[7]);
  873 +
  874 + /* Board Hardware Revision */
  875 + ret = dm_i2c_read(dev, 0xc, revision, 4);
  876 + if (ret) {
  877 + debug("failed to read hardware revison from EEPROM\n");
  878 + return 0;
  879 + }
  880 + printf(" Hardware Revision: %c%c%c%c\n",
  881 + revision[0], revision[1], revision[2], revision[3]);
  882 +
  883 + /* Serial number */
  884 + ret = dm_i2c_read(dev, 0x10, serial, 12);
  885 + if (ret) {
  886 + debug("failed to read srial number from EEPROM\n");
  887 + return 0;
  888 + }
  889 + printf(" Serial Number#: %c%c%c%c%c%c%c%c%c%c%c%c\n",
  890 + serial[0], serial[1], serial[2], serial[3], serial[4], serial[5], serial[6], serial[7], serial[8], serial[9], serial[10], serial[11]);
  891 +
  892 + /*MAC address*/
  893 + ret = dm_i2c_read(dev, 0x3c, mac, 6);
  894 + if (ret) {
  895 + debug("failed to read eth0 mac address from EEPROM\n");
  896 + return 0;
  897 + }
  898 +
  899 + if (is_valid_ethaddr(mac))
  900 + printf(" MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
  901 + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  902 + eth_env_set_enetaddr("ethaddr", mac);
  903 +#ifdef CONFIG_MX7D
  904 + ret = dm_i2c_read(dev, 0x42, mac1, 6);
  905 + if (ret) {
  906 + debug("failed to read eth1 mac address from EEPROM\n");
  907 + return 0;
  908 + }
  909 +
  910 + if (is_valid_ethaddr(mac1))
  911 + printf(" MAC1 Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
  912 + mac1[0], mac1[1], mac1[2], mac1[3], mac1[4], mac1[5]);
  913 + eth_env_set_enetaddr("eth1addr", mac1);
  914 +#endif
  915 + puts("-----------------------------------------\n");
  916 +
  917 +/* RESET_OUT Pin */
  918 + setup_iomux_reset_out();
  919 +/* ECSPI1 CS Pins */
  920 + setup_iomux_spi1();
  921 +/* ECSPI3 CS Pins */
  922 + setup_iomux_spi3();
  923 +/* USB Power Control Pins */
  924 + setup_usb();
  925 +/* GPIO Pins */
  926 + setup_iomux_gpios();
  927 +/* LVDS Channel Selection Pin */
  928 + setup_iomux_lvds_ch_sel();
  929 +/* MISC Pins */
  930 + setup_iomux_misc();
  931 +
  932 +/* SDCARD POWER Enable */
  933 + gpio_request(IMX_GPIO_NR(5, 2), "SDIO_PWR_EN");
  934 + gpio_direction_output(IMX_GPIO_NR(5, 2), 1);
  935 +
  936 +/* eMMC Power Reset */
  937 +#define USDHC3_PWR_GPIO IMX_GPIO_NR(6, 11)
  938 + gpio_request(USDHC3_PWR_GPIO, "usdhc3_pwr");
  939 + gpio_direction_output(USDHC3_PWR_GPIO, 0);
  940 + udelay(500);
  941 + gpio_direction_output(USDHC3_PWR_GPIO, 1);
  942 +
  943 +/* SMARC BOOT_SEL*/
  944 + gpio_request(IMX_GPIO_NR(5, 15), "BOOT_SEL_1");
  945 + gpio_request(IMX_GPIO_NR(5, 16), "BOOT_SEL_2");
  946 + gpio_request(IMX_GPIO_NR(5, 17), "BOOT_SEL_3");
  947 +
  948 + if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 0)) {
  949 + puts("BOOT_SEL Detected: OFF OFF OFF, unsupported boot up device: SATA...\n");
  950 + hang();
  951 + } else if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 1)) {
  952 + puts("BOOT_SEL Detected: OFF OFF ON, unsupported boot up device: NAND...\n");
  953 + hang();
  954 + } else if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 0)) {
  955 + puts("BOOT_SEL Detected: OFF ON OFF, unsupported boot up device: Carrier eSPI...\n");
  956 + hang();
  957 + } else if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 0)) {
  958 + puts("BOOT_SEL Detected: ON OFF OFF, Load zImage from Carrier SD Card...\n");
  959 + env_set_ulong("mmcdev", 0);
  960 + env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run uenvcmd; run loadzimage; run loadfdt; run mmcboot;");
  961 + } else if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 1)) {
  962 + puts("BOOT_SEL Detected: OFF ON ON, Load zImage from Module eMMC Flash...\n");
  963 + env_set_ulong("mmcdev", 1);
  964 + env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run uenvcmd; run loadzimage; run loadfdt; run mmcboot;");
  965 + } else if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 0)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 1)) {
  966 + puts("BOOT_SEL Detected: ON OFF ON, Load zImage from GBE...\n");
  967 + env_set("bootcmd", "run netboot;");
  968 + } else if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 0)) {
  969 + puts("BOOT_SEL Detected: OFF ON OFF, unsupported boot up device: Carrier SPI...\n");
  970 + hang();
  971 + } else if ((gpio_get_value(IMX_GPIO_NR(5, 15)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 16)) == 1)&&(gpio_get_value(IMX_GPIO_NR(5, 17)) == 1)) {
  972 + puts("BOOT_SEL Detected: ON ON ON, MOdule SPI Boot up is Default, Load zImage from Module eMMC...\n");
  973 + env_set_ulong("mmcdev", 1);
  974 + env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run uenvcmd; run loadzimage; run loadfdt; run mmcboot;");
  975 + } else {
  976 + puts("unsupported boot devices\n");
  977 + hang();
  978 + }
  979 +
  980 + return 0;
  981 +}
  982 +
  983 +#ifdef CONFIG_FSL_FASTBOOT
  984 +#ifdef CONFIG_ANDROID_RECOVERY
  985 +
  986 +/* Use LID# for recovery key */
  987 +#define GPIO_VOL_DN_KEY IMX_GPIO_NR(5, 10)
  988 +iomux_v3_cfg_t const recovery_key_pads[] = {
  989 + (MX7D_PAD_SD2_WP__GPIO5_IO10 | MUX_PAD_CTRL(BUTTON_PAD_CTRL)),
  990 +};
  991 +
  992 +int is_recovery_key_pressing(void)
  993 +{
  994 + int button_pressed = 0;
  995 +
  996 + /* Check Recovery Combo Button press or not. */
  997 + imx_iomux_v3_setup_multiple_pads(recovery_key_pads,
  998 + ARRAY_SIZE(recovery_key_pads));
  999 +
  1000 + gpio_request(GPIO_VOL_DN_KEY, "volume_dn_key");
  1001 + gpio_direction_input(GPIO_VOL_DN_KEY);
  1002 +
  1003 + if (gpio_get_value(GPIO_VOL_DN_KEY) == 0) { /* VOL_DN key is low assert */
  1004 + button_pressed = 1;
  1005 + printf("Recovery key pressed\n");
  1006 + }
  1007 +
  1008 + return button_pressed;
  1009 +}
  1010 +
  1011 +#endif /*CONFIG_ANDROID_RECOVERY*/
  1012 +#endif /*CONFIG_FSL_FASTBOOT*/
configs/smarcfimx7d_2g_ser0_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D,2GDDR3"
  12 +CONFIG_CONSOLE_SER0=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7d_2g_ser1_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D,2GDDR3"
  12 +CONFIG_CONSOLE_SER1=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7d_2g_ser2_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D,2GDDR3"
  12 +CONFIG_CONSOLE_SER2=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7d_2g_ser3_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D,2GDDR3"
  12 +CONFIG_CONSOLE_SER3=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7d_ser0_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D"
  12 +CONFIG_CONSOLE_SER0=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7d_ser1_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D"
  12 +CONFIG_CONSOLE_SER1=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7d_ser2_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D"
  12 +CONFIG_CONSOLE_SER2=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7d_ser3_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7d-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7d-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7d_2x_k4b4g1646q.cfg,MX7D"
  12 +CONFIG_CONSOLE_SER3=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7s_ser0_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7s-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7s-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7s_2x_k4b2g1646q.cfg,MX7S"
  12 +CONFIG_CONSOLE_SER0=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7s_ser1_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7s-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7s-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7s_2x_k4b2g1646q.cfg,MX7S"
  12 +CONFIG_CONSOLE_SER1=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7s_ser2_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7s-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7s-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7s_2x_k4b2g1646q.cfg,MX7S"
  12 +CONFIG_CONSOLE_SER2=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
configs/smarcfimx7s_ser3_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_MX7=y
  3 +CONFIG_TARGET_SMARCFIMX7=y
  4 +CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
  5 +CONFIG_SYS_PROMPT="U-Boot# "
  6 +# CONFIG_ARMV7_VIRT is not set
  7 +CONFIG_IMX_RDC=y
  8 +CONFIG_IMX_BOOTAUX=y
  9 +CONFIG_DEFAULT_DEVICE_TREE="imx7s-smarcfimx7"
  10 +CONFIG_DEFAULT_FDT_FILE="imx7s-smarcfimx7.dtb"
  11 +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/embedian/smarcfimx7/ddr3l/mx7s_2x_k4b2g1646q.cfg,MX7S"
  12 +CONFIG_CONSOLE_SER3=y
  13 +CONFIG_SPI_BOOT=y
  14 +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
  15 +# CONFIG_ENV_IS_IN_MMC is not set
  16 +CONFIG_BOOTDELAY=1
  17 +# CONFIG_CONSOLE_MUX is not set
  18 +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  19 +CONFIG_HUSH_PARSER=y
  20 +CONFIG_CMD_BOOTZ=y
  21 +# CONFIG_CMD_IMLS is not set
  22 +# CONFIG_CMD_XIMG is not set
  23 +# CONFIG_CMD_EXPORTENV is not set
  24 +# CONFIG_CMD_IMPORTENV is not set
  25 +CONFIG_CMD_MEMTEST=y
  26 +CONFIG_CMD_DFU=y
  27 +CONFIG_CMD_GPIO=y
  28 +CONFIG_CMD_I2C=y
  29 +CONFIG_CMD_MMC=y
  30 +CONFIG_CMD_USB=y
  31 +CONFIG_CMD_USB_MASS_STORAGE=y
  32 +CONFIG_CMD_DHCP=y
  33 +CONFIG_CMD_MII=y
  34 +CONFIG_CMD_PING=y
  35 +CONFIG_CMD_BMP=y
  36 +CONFIG_CMD_CACHE=y
  37 +CONFIG_CMD_PMIC=y
  38 +CONFIG_CMD_REGULATOR=y
  39 +CONFIG_CMD_EXT2=y
  40 +CONFIG_CMD_EXT4=y
  41 +CONFIG_CMD_EXT4_WRITE=y
  42 +CONFIG_CMD_FAT=y
  43 +CONFIG_CMD_PART=y
  44 +CONFIG_CMD_FS_GENERIC=y
  45 +CONFIG_DOS_PARTITION=y
  46 +CONFIG_FS_EXT4=y
  47 +CONFIG_EXT4_WRITE=y
  48 +CONFIG_OF_CONTROL=y
  49 +CONFIG_DFU_MMC=y
  50 +CONFIG_DFU_RAM=y
  51 +CONFIG_DM_GPIO=y
  52 +CONFIG_DM_74X164=y
  53 +CONFIG_DM_I2C=y
  54 +CONFIG_DM_MMC=y
  55 +CONFIG_MMC_IO_VOLTAGE=y
  56 +CONFIG_MMC_UHS_SUPPORT=y
  57 +CONFIG_MMC_HS200_SUPPORT=y
  58 +CONFIG_PHYLIB=y
  59 +CONFIG_PINCTRL=y
  60 +CONFIG_PINCTRL_IMX7=y
  61 +CONFIG_DM_PMIC=y
  62 +CONFIG_DM_PMIC_PFUZE100=y
  63 +CONFIG_DM_REGULATOR=y
  64 +CONFIG_DM_REGULATOR_PFUZE100=y
  65 +CONFIG_DM_REGULATOR_FIXED=y
  66 +CONFIG_DM_REGULATOR_GPIO=y
  67 +CONFIG_DM_SPI=y
  68 +CONFIG_DM_SPI_FLASH=y
  69 +CONFIG_SOFT_SPI=y
  70 +CONFIG_USB=y
  71 +CONFIG_DM_USB=y
  72 +CONFIG_USB_EHCI_HCD=y
  73 +CONFIG_MXC_USB_OTG_HACTIVE=y
  74 +CONFIG_USB_STORAGE=y
  75 +CONFIG_USB_GADGET=y
  76 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  77 +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
  78 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
  79 +CONFIG_CI_UDC=y
  80 +CONFIG_USB_GADGET_DOWNLOAD=y
  81 +CONFIG_VIDEO=y
  82 +CONFIG_ERRNO_STR=y
  83 +CONFIG_DM_ETH=y
  84 +
  85 +CONFIG_CMD_FASTBOOT=y
  86 +CONFIG_USB_FUNCTION_FASTBOOT=y
  87 +CONFIG_FSL_FASTBOOT=y
  88 +CONFIG_FASTBOOT=y
  89 +CONFIG_FASTBOOT_BUF_ADDR=0x83800000
  90 +CONFIG_FASTBOOT_BUF_SIZE=0x40000000
  91 +CONFIG_FASTBOOT_FLASH=y
  92 +CONFIG_FASTBOOT_FLASH_MMC_DEV=1
  93 +CONFIG_EFI_PARTITION=y
... ... @@ -449,8 +449,8 @@
449 449  
450 450 if ((start + blkcnt) > block_dev->lba) {
451 451 #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
452   - pr_err("MMC: block number 0x" LBAF " exceeds max(0x" LBAF ")\n",
453   - start + blkcnt, block_dev->lba);
  452 + /*pr_err("MMC: block number 0x" LBAF " exceeds max(0x" LBAF ")\n",
  453 + start + blkcnt, block_dev->lba);*/
454 454 #endif
455 455 return 0;
456 456 }
drivers/mtd/spi/spi_flash_ids.c
... ... @@ -80,6 +80,7 @@
80 80 {"mx25l4005", INFO(0xc22013, 0x0, 64 * 1024, 8, 0) },
81 81 {"mx25l8005", INFO(0xc22014, 0x0, 64 * 1024, 16, 0) },
82 82 {"mx25l1605d", INFO(0xc22015, 0x0, 64 * 1024, 32, 0) },
  83 + {"mx25u3235f", INFO(0xc22536, 0x0, 64 * 1024, 64, 0 | SECT_4K) },
83 84 {"mx25l3205d", INFO(0xc22016, 0x0, 64 * 1024, 64, 0) },
84 85 {"mx25l6405d", INFO(0xc22017, 0x0, 64 * 1024, 128, 0) },
85 86 {"mx25l12805", INFO(0xc22018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP) },
... ... @@ -33,4 +33,9 @@
33 33 STM32F7 family devices support flexible memory controller(FMC) to
34 34 support external memories like sdram, psram & nand.
35 35 This driver is for the sdram memory interface with the FMC.
  36 +
  37 +config 2GDDR3
  38 + bool "SMARC-FiMX7 with 2GB DDR3L Memory"
  39 + help
  40 + Select this if the board is SMARC-FiMX7-D-2G
drivers/serial/Kconfig
... ... @@ -567,6 +567,26 @@
567 567 If you have a machine based on a Marvell XScale PXA2xx CPU you
568 568 can enable its onboard serial ports by enabling this option.
569 569  
  570 +config CONSOLE_SER0
  571 + bool "SMARC-FiMX7 default console serial output port"
  572 + help
  573 + Select this to enable a debug UART port from SER0 of SMARC-FiMX7.
  574 +
  575 +config CONSOLE_SER1
  576 + bool "SMARC-FiMX7 default console serial output port"
  577 + help
  578 + Select this to enable a debug UART port from SER1 of SMARC-FiMX7.
  579 +
  580 +config CONSOLE_SER2
  581 + bool "SMARC-FiMX7 default console serial output port"
  582 + help
  583 + Select this to enable a debug UART port from SER2 of SMARC-FiMX7.
  584 +
  585 +config CONSOLE_SER3
  586 + bool "SMARC-FiMX7 default console serial output port"
  587 + help
  588 + Select this to enable a debug UART port from SER3 of SMARC-FiMX7.
  589 +
570 590 config STI_ASC_SERIAL
571 591 bool "STMicroelectronics on-chip UART"
572 592 depends on DM_SERIAL && ARCH_STI
drivers/watchdog/imx_watchdog.c
... ... @@ -9,6 +9,7 @@
9 9 #include <watchdog.h>
10 10 #include <asm/arch/imx-regs.h>
11 11 #include <fsl_wdog.h>
  12 +#include <asm/arch/sys_proto.h>
12 13  
13 14 #ifdef CONFIG_IMX_WATCHDOG
14 15 void hw_watchdog_reset(void)
... ... @@ -43,7 +44,10 @@
43 44 {
44 45 struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
45 46  
46   - clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE);
  47 + if ((is_cpu_type(MXC_CPU_MX7D) || is_cpu_type(MXC_CPU_MX7S)))
  48 + clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, (WCR_WDE | WCR_SRS));
  49 + else
  50 + clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE);
47 51  
48 52 writew(0x5555, &wdog->wsr);
49 53 writew(0xaaaa, &wdog->wsr); /* load minimum 1/2 second timeout */
include/configs/mx7smarc_common.h
  1 +/*
  2 + * Copyright (C) 2015 Freescale Semiconductor, Inc.
  3 + *
  4 + * Configuration settings for the Freescale i.MX7.
  5 + *
  6 + * SPDX-License-Identifier: GPL-2.0+
  7 + */
  8 +
  9 +#ifndef __MX7SMARC_COMMON_H
  10 +#define __MX7SMARC_COMMON_H
  11 +
  12 +#include <linux/sizes.h>
  13 +#include <asm/arch/imx-regs.h>
  14 +#include <asm/mach-imx/gpio.h>
  15 +
  16 +#ifndef CONFIG_MX7
  17 +#define CONFIG_MX7
  18 +#endif
  19 +
  20 +/* Timer settings */
  21 +#define CONFIG_MXC_GPT_HCLK
  22 +#define CONFIG_SC_TIMER_CLK 8000000 /* 8Mhz */
  23 +#define COUNTER_FREQUENCY CONFIG_SC_TIMER_CLK
  24 +#define CONFIG_SYS_FSL_CLK
  25 +
  26 +#define CONFIG_SYS_BOOTM_LEN 0x1000000
  27 +
  28 +/* Enable iomux-lpsr support */
  29 +#define CONFIG_IOMUX_LPSR
  30 +
  31 +#define CONFIG_LOADADDR 0x80800000
  32 +
  33 +/* allow to overwrite serial and ethaddr */
  34 +#define CONFIG_ENV_OVERWRITE
  35 +#define CONFIG_CONS_INDEX 1
  36 +#define CONFIG_BAUDRATE 115200
  37 +
  38 +/* Miscellaneous configurable options */
  39 +#define CONFIG_SYS_CBSIZE 2048
  40 +#define CONFIG_SYS_MAXARGS 32
  41 +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
  42 +
  43 +#ifndef CONFIG_SYS_DCACHE_OFF
  44 +#endif
  45 +
  46 +/* UART */
  47 +#define CONFIG_MXC_UART
  48 +#if defined(CONFIG_CONSOLE_SER0)
  49 +#define CONFIG_MXC_UART_BASE UART6_IPS_BASE_ADDR
  50 +#define CONSOLE_DEV "ttymxc5"
  51 +#endif
  52 +#if defined(CONFIG_COMSOLE_SER1)
  53 +#define CONFIG_MXC_UART_BASE UART2_IPS_BASE_ADDR
  54 +#define CONSOLE_DEV "ttymxc1"
  55 +#endif
  56 +#if defined(CONFIG_CONSOLE_SER2)
  57 +#define CONFIG_MXC_UART_BASE UART7_IPS_BASE_ADDR
  58 +#define CONSOLE_DEV "ttymxc6"
  59 +#endif
  60 +#if defined(CONFIG_CONSOLE_SER3)
  61 +#define CONFIG_MXC_UART_BASE UART3_IPS_BASE_ADDR
  62 +#define CONSOLE_DEV "ttymxc2"
  63 +#endif
  64 +
  65 +/* MMC */
  66 +#define CONFIG_BOUNCE_BUFFER
  67 +#define CONFIG_FSL_ESDHC
  68 +#define CONFIG_FSL_USDHC
  69 +
  70 +/* Fuses */
  71 +#define CONFIG_MXC_OCOTP
  72 +
  73 +#define CONFIG_ARMV7_SECURE_BASE 0x00900000
  74 +
  75 +#define CONFIG_ARMV7_PSCI_1_0
  76 +
  77 +/* Secure boot (HAB) support */
  78 +#ifdef CONFIG_SECURE_BOOT
  79 +#define CONFIG_CSF_SIZE 0x4000
  80 +#endif
  81 +
  82 +#ifdef CONFIG_IMX_OPTEE
  83 +#define TEE_ENV "tee=yes\0"
  84 +#else
  85 +#define TEE_ENV "tee=no\0"
  86 +#endif
  87 +#endif
include/configs/smarcfimx7.h
  1 +/*
  2 + * Copyright (C) 2015 Freescale Semiconductor, Inc.
  3 + * Copyright 2017-2018 NXP
  4 + *
  5 + * Configuration settings for the Freescale i.MX7D SABRESD board.
  6 + *
  7 + * SPDX-License-Identifier: GPL-2.0+
  8 + */
  9 +
  10 +#ifndef __SMARCFIMX7_CONFIG_H
  11 +#define __SMARCFIMX7_CONFIG_H
  12 +
  13 +#include "mx7smarc_common.h"
  14 +#include "imx_env.h"
  15 +
  16 +#define CONFIG_DBG_MONITOR
  17 +
  18 +#if defined(CONFIG_MX7D)
  19 +#if defined(CONFIG_2GDDR3)
  20 +#define PHYS_SDRAM_SIZE SZ_2G
  21 +#else
  22 +#define PHYS_SDRAM_SIZE SZ_1G
  23 +#endif
  24 +#else
  25 +#define PHYS_SDRAM_SIZE SZ_512M
  26 +#endif
  27 +
  28 +/* Size of malloc() pool */
  29 +#define CONFIG_SYS_MALLOC_LEN (32 * SZ_1M)
  30 +
  31 +/* Network */
  32 +#ifdef CONFIG_DM_ETH
  33 +#define CONFIG_FEC_MXC
  34 +#define CONFIG_MII
  35 +#define CONFIG_FEC_XCV_TYPE RGMII
  36 +#define CONFIG_FEC_ENET_DEV 0
  37 +
  38 +#define CONFIG_PHY_ATHEROS
  39 +/* ENET1 */
  40 +#if (CONFIG_FEC_ENET_DEV == 0)
  41 +#define IMX_FEC_BASE ENET_IPS_BASE_ADDR
  42 +#define CONFIG_FEC_MXC_PHYADDR 0x6
  43 +#define CONFIG_ETHPRIME "eth0"
  44 +#elif (CONFIG_FEC_ENET_DEV == 1)
  45 +#define IMX_FEC_BASE ENET2_IPS_BASE_ADDR
  46 +#define CONFIG_FEC_MXC_PHYADDR 0x7
  47 +#define CONFIG_ETHPRIME "eth1"
  48 +#endif
  49 +
  50 +#define CONFIG_FEC_MXC_MDIO_BASE ENET_IPS_BASE_ADDR
  51 +#endif
  52 +
  53 +/* MMC Config*/
  54 +#define CONFIG_SYS_FSL_ESDHC_ADDR 0
  55 +
  56 +#undef CONFIG_BOOTM_NETBSD
  57 +#undef CONFIG_BOOTM_PLAN9
  58 +#undef CONFIG_BOOTM_RTEMS
  59 +
  60 +#define CONFIG_CMD_IMPORTENV
  61 +
  62 +/* I2C configs */
  63 +#define CONFIG_SYS_I2C_MXC
  64 +#define CONFIG_SYS_I2C_MXC_I2C1 /* enable I2C bus 1 */
  65 +#define CONFIG_SYS_I2C_MXC_I2C2
  66 +#define CONFIG_SYS_I2C_SPEED 100000
  67 +
  68 +#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
  69 +#define CONFIG_SYS_MMC_IMG_LOAD_PART 1
  70 +
  71 +#ifdef CONFIG_SPI_BOOT
  72 +#define CONFIG_MXC_SPI
  73 +#define CONFIG_ENV_IS_IN_SPI_FLASH
  74 +#elif defined CONFIG_NAND_BOOT
  75 +#define CONFIG_NAND_MXS
  76 +#define CONFIG_ENV_IS_IN_NAND
  77 +#else
  78 +#define CONFIG_ENV_IS_IN_MMC
  79 +#endif
  80 +
  81 +#ifdef CONFIG_MXC_SPI
  82 +#define CONFIG_CMD_SF
  83 +#define CONFIG_SPI_FLASH
  84 +#define CONFIG_SPI_FLASH_MACRONIX
  85 +#define CONFIG_SF_DEFAULT_BUS 2
  86 +#define CONFIG_SF_DEFAULT_CS 0 /* Use SPI2 SS0 as chip select */
  87 +#define CONFIG_SF_DEFAULT_SPEED 20000000
  88 +#define CONFIG_SF_DEFAULT_MODE (SPI_MODE_0)
  89 +#endif
  90 +
  91 +#ifdef CONFIG_IMX_BOOTAUX
  92 +
  93 +#ifdef CONFIG_FSL_QSPI
  94 +#define UPDATE_M4_ENV \
  95 + "m4image=m4_qspi.bin\0" \
  96 + "loadm4image=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4image}\0" \
  97 + "update_m4_from_sd=" \
  98 + "if sf probe 1:0; then " \
  99 + "if run loadm4image; then " \
  100 + "setexpr fw_sz ${filesize} + 0xffff; " \
  101 + "setexpr fw_sz ${fw_sz} / 0x10000; " \
  102 + "setexpr fw_sz ${fw_sz} * 0x10000; " \
  103 + "sf erase 0x100000 ${fw_sz}; " \
  104 + "sf write ${loadaddr} 0x100000 ${filesize}; " \
  105 + "fi; " \
  106 + "fi\0" \
  107 + "m4boot=sf probe 1:0; bootaux "__stringify(CONFIG_SYS_AUXCORE_BOOTDATA)"\0"
  108 +#else
  109 +#define UPDATE_M4_ENV \
  110 + "m4image=m4_qspi.bin\0" \
  111 + "loadm4image=fatload mmc ${mmcdev}:${mmcpart} "__stringify(CONFIG_SYS_AUXCORE_BOOTDATA)" ${m4image}\0" \
  112 + "m4boot=run loadm4image; bootaux "__stringify(CONFIG_SYS_AUXCORE_BOOTDATA)"\0"
  113 +#endif
  114 +#else
  115 +#define UPDATE_M4_ENV ""
  116 +#endif
  117 +
  118 +#ifdef CONFIG_NAND_BOOT
  119 +#define MFG_NAND_PARTITION "mtdparts=gpmi-nand:64m(nandboot),16m(nandkernel),16m(nanddtb),16m(nandtee),-(nandrootfs) "
  120 +#else
  121 +#define MFG_NAND_PARTITION ""
  122 +#endif
  123 +
  124 +#define CONFIG_CMD_READ
  125 +#define CONFIG_SERIAL_TAG
  126 +#define CONFIG_FASTBOOT_USB_DEV 0
  127 +
  128 +#define CONFIG_MFG_ENV_SETTINGS \
  129 + CONFIG_MFG_ENV_SETTINGS_DEFAULT \
  130 + "initrd_addr=0x86800000\0" \
  131 + "initrd_high=0xffffffff\0" \
  132 + "emmc_dev=1\0"\
  133 + "sd_dev=0\0" \
  134 + "mtdparts=" MFG_NAND_PARTITION \
  135 + "\0"\
  136 +
  137 +#define CONFIG_DFU_ENV_SETTINGS \
  138 + "dfu_alt_info=image raw 0 0x800000;"\
  139 + "u-boot raw 0 0x4000;"\
  140 + "bootimg part 0 1;"\
  141 + "rootfs part 0 2\0" \
  142 +
  143 +#if defined(CONFIG_NAND_BOOT)
  144 +#define CONFIG_EXTRA_ENV_SETTINGS \
  145 + CONFIG_MFG_ENV_SETTINGS \
  146 + TEE_ENV \
  147 + "panel=TFT43AB\0" \
  148 + "fdt_addr=0x83000000\0" \
  149 + "fdt_high=0xffffffff\0" \
  150 + "console=ttymxc0\0" \
  151 + "bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
  152 + "root=ubi0:nandrootfs rootfstype=ubifs " \
  153 + MFG_NAND_PARTITION \
  154 + "\0" \
  155 + "bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\
  156 + "nand read ${fdt_addr} 0x5000000 0x100000;"\
  157 + "if test ${tee} = yes; then " \
  158 + "nand read ${tee_addr} 0x6000000 0x400000;"\
  159 + "bootm ${teeaddr} - ${fdt_addr};" \
  160 + "else " \
  161 + "bootz ${loadaddr} - ${fdt_addr};" \
  162 + "fi\0"
  163 +
  164 +#else
  165 +#define CONFIG_EXTRA_ENV_SETTINGS \
  166 + UPDATE_M4_ENV \
  167 + CONFIG_MFG_ENV_SETTINGS \
  168 + TEE_ENV \
  169 + CONFIG_DFU_ENV_SETTINGS \
  170 + "script=boot.scr\0" \
  171 + "image=zImage\0" \
  172 + "console=" CONSOLE_DEV "\0" \
  173 + "fdt_high=0xffffffff\0" \
  174 + "initrd_high=0xffffffff\0" \
  175 + "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
  176 + "fdt_addr=0x83000000\0" \
  177 + "tee_addr=0x84000000\0" \
  178 + "tee_file=uTee-7dsdb\0" \
  179 + "ethprime=eth0\0" \
  180 + "ipaddr=192.168.1.60\0" \
  181 + "boot_fdt=try\0" \
  182 + "ip_dyn=yes\0" \
  183 + "panel=G070VW01\0" \
  184 + "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
  185 + "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
  186 + "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
  187 + "mmcrootfstype=ext4 rootwait\0" \
  188 + "mmcautodetect=yes\0" \
  189 + "mmcargs=setenv bootargs console=${console},${baudrate} " \
  190 + "${optargs} " \
  191 + "rootfstype=${mmcrootfstype} " \
  192 + "root=${mmcroot}\0" \
  193 + "loadbootenv=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} uEnv.txt\0" \
  194 + "importbootenv=echo Importing environment from mmc (uEnv.txt)...; " \
  195 + "env import -t $loadaddr $filesize\0" \
  196 + "loadbootscript=" \
  197 + "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
  198 + "bootscript=echo Running bootscript from mmc ...; " \
  199 + "source\0" \
  200 + "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
  201 + "loadzimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
  202 + "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} /dtbs/${fdt_file}\0" \
  203 + "loadtee=fatload mmc ${mmcdev}:${mmcpart} ${tee_addr} ${tee_file}\0" \
  204 + "mmcboot=echo Booting from mmc ...; " \
  205 + "run mmcargs; " \
  206 + "if test ${tee} = yes; then " \
  207 + "run loadfdt; run loadtee; bootm ${tee_addr} - ${fdt_addr}; " \
  208 + "else " \
  209 + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  210 + "if run loadfdt; then " \
  211 + "bootz ${loadaddr} - ${fdt_addr}; " \
  212 + "else " \
  213 + "if test ${boot_fdt} = try; then " \
  214 + "bootz; " \
  215 + "else " \
  216 + "echo WARN: Cannot load the DT; " \
  217 + "fi; " \
  218 + "fi; " \
  219 + "else " \
  220 + "bootz; " \
  221 + "fi; " \
  222 + "fi;\0" \
  223 + "netargs=setenv bootargs console=${console},${baudrate} " \
  224 + "root=/dev/nfs " \
  225 + "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
  226 + "netboot=echo Booting from net ...; " \
  227 + "run netargs; " \
  228 + "if test ${ip_dyn} = yes; then " \
  229 + "setenv get_cmd dhcp; " \
  230 + "else " \
  231 + "setenv get_cmd tftp; " \
  232 + "fi; " \
  233 + "${get_cmd} ${image}; " \
  234 + "if test ${tee} = yes; then " \
  235 + "${get_cmd} ${tee_addr} ${tee_file}; " \
  236 + "${get_cmd} ${fdt_addr} ${fdt_file}; " \
  237 + "bootm ${tee_addr} - ${fdt_addr}; " \
  238 + "else " \
  239 + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  240 + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
  241 + "bootz ${loadaddr} - ${fdt_addr}; " \
  242 + "else " \
  243 + "if test ${boot_fdt} = try; then " \
  244 + "bootz; " \
  245 + "else " \
  246 + "echo WARN: Cannot load the DT; " \
  247 + "fi; " \
  248 + "fi; " \
  249 + "else " \
  250 + "bootz; " \
  251 + "fi; " \
  252 + "fi;\0" \
  253 + "findfdt="\
  254 + "if test $fdt_file = undefined; then " \
  255 + "setenv fdt_file imx7d-sdb.dtb; " \
  256 + "fi;\0" \
  257 +
  258 +#define CONFIG_BOOTCOMMAND \
  259 + "run findfdt;" \
  260 + "mmc dev ${mmcdev};" \
  261 + "mmc dev ${mmcdev}; if mmc rescan; then " \
  262 + "echo SD/MMC found on device ${mmcdev};" \
  263 + "if run loadbootenv; then " \
  264 + "run importbootenv;" \
  265 + "fi;" \
  266 + "echo Checking if uenvcmd is set ...;" \
  267 + "if test -n $uenvcmd; then " \
  268 + "echo Running uenvcmd ...;" \
  269 + "run uenvcmd;" \
  270 + "fi;" \
  271 + "echo Running default loadzimage ...;" \
  272 + "if run loadzimage; then " \
  273 + "run loadfdt;" \
  274 + "run mmcboot;" \
  275 + "fi;" \
  276 + "else run netboot; fi"
  277 +#endif
  278 +
  279 +#define CONFIG_SYS_MEMTEST_START 0x80000000
  280 +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 0x20000000)
  281 +
  282 +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
  283 +#define CONFIG_SYS_HZ 1000
  284 +
  285 +/* Physical Memory Map */
  286 +#define CONFIG_NR_DRAM_BANKS 1
  287 +#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
  288 +
  289 +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
  290 +#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
  291 +#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
  292 +
  293 +#define CONFIG_SYS_INIT_SP_OFFSET \
  294 + (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
  295 +#define CONFIG_SYS_INIT_SP_ADDR \
  296 + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
  297 +
  298 +/* environment organization */
  299 +#define CONFIG_ENV_SIZE SZ_8K
  300 +
  301 +#if defined(CONFIG_ENV_IS_IN_MMC)
  302 +#define CONFIG_ENV_OFFSET (14 * SZ_64K)
  303 +#elif defined(CONFIG_ENV_IS_IN_SPI_FLASH)
  304 +#define CONFIG_ENV_OFFSET (896 * 1024)
  305 +#define CONFIG_ENV_SECT_SIZE (64 * 1024)
  306 +#define CONFIG_ENV_SPI_BUS CONFIG_SF_DEFAULT_BUS
  307 +#define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS
  308 +#define CONFIG_ENV_SPI_MODE CONFIG_SF_DEFAULT_MODE
  309 +#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
  310 +#elif defined(CONFIG_ENV_IS_IN_NAND)
  311 +#undef CONFIG_ENV_SIZE
  312 +#define CONFIG_ENV_OFFSET (60 << 20)
  313 +#define CONFIG_ENV_SECT_SIZE (128 << 10)
  314 +#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
  315 +#endif
  316 +
  317 +#ifdef CONFIG_FSL_QSPI
  318 +#define CONFIG_SYS_AUXCORE_BOOTDATA 0x60100000 /* Set to QSPI1 A flash, offset 1M */
  319 +#else
  320 +#define CONFIG_SYS_AUXCORE_BOOTDATA 0x7F8000 /* Set to TCML address */
  321 +#endif
  322 +/*
  323 + * If want to use nand, define CONFIG_CMD_NAND and rework board
  324 + * to support nand, since emmc has pin conflicts with nand
  325 + */
  326 +#ifdef CONFIG_CMD_NAND
  327 +#define CONFIG_NAND_MXS
  328 +#define CONFIG_CMD_NAND_TRIMFFS
  329 +
  330 +/* NAND stuff */
  331 +#define CONFIG_SYS_MAX_NAND_DEVICE 1
  332 +#define CONFIG_SYS_NAND_BASE 0x40000000
  333 +#define CONFIG_SYS_NAND_5_ADDR_CYCLE
  334 +#define CONFIG_SYS_NAND_ONFI_DETECTION
  335 +
  336 +/* DMA stuff, needed for GPMI/MXS NAND support */
  337 +#define CONFIG_APBH_DMA
  338 +#define CONFIG_APBH_DMA_BURST
  339 +#define CONFIG_APBH_DMA_BURST8
  340 +#endif
  341 +
  342 +#ifdef CONFIG_NAND_MXS
  343 +#define CONFIG_SYS_FSL_USDHC_NUM 1
  344 +#else
  345 +#define CONFIG_SYS_FSL_USDHC_NUM 2
  346 +#endif
  347 +
  348 +/* MMC Config*/
  349 +#define CONFIG_SYS_FSL_ESDHC_ADDR 0
  350 +#define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC3 */
  351 +#define CONFIG_SYS_MMC_ENV_PART 0 /* user area */
  352 +#define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC3 */
  353 +
  354 +/* USB Configs */
  355 +#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
  356 +
  357 +#define CONFIG_IMX_THERMAL
  358 +
  359 +#ifdef CONFIG_VIDEO
  360 +#define CONFIG_VIDEO_MXS
  361 +#define CONFIG_VIDEO_LOGO
  362 +#define CONFIG_SPLASH_SCREEN
  363 +#define CONFIG_SPLASH_SCREEN_ALIGN
  364 +#define CONFIG_BMP_16BPP
  365 +#define CONFIG_VIDEO_BMP_RLE8
  366 +#define CONFIG_VIDEO_BMP_LOGO
  367 +#define CONFIG_IMX_VIDEO_SKIP
  368 +#endif
  369 +
  370 +/* #define CONFIG_SPLASH_SCREEN*/
  371 +/* #define CONFIG_MXC_EPDC*/
  372 +
  373 +/*
  374 + * SPLASH SCREEN Configs
  375 + */
  376 +#if defined(CONFIG_MXC_EPDC)
  377 +/*
  378 + * Framebuffer and LCD
  379 + */
  380 +#define CONFIG_CMD_BMP
  381 +#define CONFIG_SPLASH_SCREEN
  382 +
  383 +#undef LCD_TEST_PATTERN
  384 +/* #define CONFIG_SPLASH_IS_IN_MMC 1 */
  385 +#define LCD_BPP LCD_MONOCHROME
  386 +/* #define CONFIG_SPLASH_SCREEN_ALIGN 1 */
  387 +
  388 +#define CONFIG_WAVEFORM_BUF_SIZE 0x400000
  389 +#endif
  390 +
  391 +#if defined(CONFIG_MXC_EPDC) && defined(CONFIG_FSL_QSPI)
  392 +#error "EPDC Pins conflicts QSPI, Either EPDC or QSPI can be enabled!"
  393 +#endif
  394 +
  395 +#ifdef CONFIG_FSL_QSPI
  396 +#define CONFIG_SYS_FSL_QSPI_AHB
  397 +#define CONFIG_SF_DEFAULT_BUS 1 /* SOFT SPI occupies the BUS 0, so change the QSPI1 to BUS 1*/
  398 +#define CONFIG_SF_DEFAULT_CS 0
  399 +#define CONFIG_SF_DEFAULT_SPEED 40000000
  400 +#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
  401 +#define FSL_QSPI_FLASH_NUM 1
  402 +#define FSL_QSPI_FLASH_SIZE SZ_64M
  403 +#define QSPI0_BASE_ADDR QSPI1_IPS_BASE_ADDR
  404 +#define QSPI0_AMBA_BASE QSPI0_ARB_BASE_ADDR
  405 +#endif
  406 +
  407 +#if defined(CONFIG_ANDROID_SUPPORT)
  408 +#include "smarcfimx7android.h"
  409 +#elif defined(CONFIG_ANDROID_THINGS_SUPPORT)
  410 +#include "smarcfimx7_androidthings.h"
  411 +#else
  412 +#define CONFIG_USBD_HS
  413 +#endif
  414 +
  415 +#endif /* __CONFIG_H */
include/configs/smarcfimx7_androidthings.h
  1 +/*
  2 + * Copyright (C) 2016 Freescale Semiconductor, Inc.
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +#ifndef __SMARCFIMX7_ANDROIDTHINGS_H
  8 +#define __SMARCFIMX7_ANDROIDTHINGS_H
  9 +#include "mx_android_common.h"
  10 +
  11 +/* For NAND we don't support lock/unlock */
  12 +#ifndef CONFIG_NAND_BOOT
  13 +#define CONFIG_FASTBOOT_LOCK
  14 +#define CONFIG_ENABLE_LOCKSTATUS_SUPPORT
  15 +#define FSL_FASTBOOT_FB_DEV "mmc"
  16 +#endif
  17 +
  18 +#define CONFIG_ANDROID_BOOT_IMAGE
  19 +#define CONFIG_ANDROID_AB_SUPPORT
  20 +#define FASTBOOT_ENCRYPT_LOCK
  21 +
  22 +#define CONFIG_SHA1
  23 +#define CONFIG_SHA256
  24 +
  25 +
  26 +#ifdef CONFIG_SYS_MMC_ENV_DEV
  27 +#undef CONFIG_SYS_MMC_ENV_DEV
  28 +#define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */
  29 +#endif
  30 +
  31 +#ifdef CONFIG_SYS_MMC_ENV_PART
  32 +#undef CONFIG_SYS_MMC_ENV_PART
  33 +#define CONFIG_SYS_MMC_ENV_PART 1 /* boot0 area */
  34 +#endif
  35 +
  36 +#define CONFIG_SYSTEM_RAMDISK_SUPPORT
  37 +#define CONFIG_CMD_FS_GENERIC
  38 +
  39 +#define CONFIG_AVB_SUPPORT
  40 +#ifdef CONFIG_AVB_SUPPORT
  41 +#define CONFIG_SUPPORT_EMMC_RPMB
  42 +/* fuse bank size in word */
  43 +/* infact 7D have no enough bits
  44 + * set this size to 0 will disable
  45 + * program/read FUSE */
  46 +#define CONFIG_AVB_FUSE_BANK_SIZEW 0
  47 +#define CONFIG_AVB_FUSE_BANK_START 0
  48 +#define CONFIG_AVB_FUSE_BANK_END 0
  49 +#endif
  50 +
  51 +#endif
include/configs/smarcfimx7android.h
  1 +
  2 +/*
  3 + * Copyright (C) 2015-2016 Freescale Semiconductor, Inc.
  4 + *
  5 + * SPDX-License-Identifier: GPL-2.0+
  6 + */
  7 +
  8 +#ifndef __SMARCFIMX7_ANDROID_H
  9 +#define __SMARCFIMX7_ANDROID_H
  10 +#include "mx_android_common.h"
  11 +
  12 +#define CONFIG_CMD_FASTBOOT
  13 +#define CONFIG_ANDROID_BOOT_IMAGE
  14 +/* lock/unlock stuff */
  15 +#define FASTBOOT_ENCRYPT_LOCK
  16 +#define CONFIG_FASTBOOT_LOCK
  17 +#define FSL_FASTBOOT_FB_DEV "mmc"
  18 +#define CONFIG_SHA1
  19 +
  20 +#define CONFIG_AVB_SUPPORT
  21 +#ifdef CONFIG_AVB_SUPPORT
  22 +#define CONFIG_ANDROID_RECOVERY
  23 +
  24 +#ifdef CONFIG_SYS_CBSIZE
  25 +#undef CONFIG_SYS_CBSIZE
  26 +#define CONFIG_SYS_CBSIZE 2048
  27 +#endif
  28 +
  29 +#ifdef CONFIG_SYS_MALLOC_LEN
  30 +#undef CONFIG_SYS_MALLOC_LEN
  31 +#define CONFIG_SYS_MALLOC_LEN (96 * SZ_1M)
  32 +#endif
  33 +
  34 +#endif /* CONFIG_AVB_SUPPORT */
  35 +
  36 +#define AVB_AB_I_UNDERSTAND_LIBAVB_AB_IS_DEPRECATED
  37 +
  38 +#endif /* __SMARCFIMX7_ANDROID_H */
  1 +0 /*dqs_loopback=0 or 1*/
  2 +0 /*hold_delay=0 to 3*/
  3 +0 /*hsphs=0 (Half Speed Phase sampling at non-inverted clock) or 1 (sampling at inverted clock)*/
  4 +0 /*hsdly=0 (Half Speed Delay one clk delay) or 1 (two clk cycle delay)*/
  5 +0 /*device_quad_mode_en=1 to enable sending command to SPI device*/
  6 +0 /*device_cmd=command to device for enableing Quad I/O mode*/
  7 +0 /*write_cmd_ipcr=hex value to be written to IPCR register for write cmd of device*/
  8 +2000000 /*write_enable_ipcr=hex value to be written to IPCR register for write enable of device*/
  9 +3 /*cs_hold_time=0 to 0xF*/
  10 +3 /*cs_setup_time=0 to 0xF*/
  11 +8000000 /*sflash_A1_size=size in byte(hex)*/
  12 +0 /*sflash_A2_size=size in byte(hex)*/
  13 +8000000 /*sflash_B1_size=size in byte(hex)*/
  14 +0 /*sflash_B2_size=size in byte(hex)*/
  15 +0 /*sclk_freq=0 to 6*/
  16 +0 /*busy_bit_offset=bit position of device BUSY in device status register*/
  17 +1 /*sflash_type=1 (Single), 2 (Dual), 4 (Quad mode of operation)*/
  18 +0 /*sflash_port=0 or 1 (Port B used)*/
  19 +0 /*ddr_mode_enable=0 or 1*/
  20 +0 /*dqs_enable=0 or 1*/
  21 +0 /*parallel_mode_enable=0 or 1*/
  22 +0 /*portA_cs1=0 or 1*/
  23 +0 /*portB_cs1=0 or 1*/
  24 +0 /*fsphs=0 (Full Speed Phase sampling at non-inverted clock) or 1 (sampling at inverted clock)*/
  25 +0 /*fsdly=0 (Full Speed Delay One clk delay) or 1 (two clk cycle delay)*/
  26 +0 /*ddrsmp=0 to 7 (sampling point for incoming data in DDR mode)*/
  27 +08180403 /*lut[0] command sequence*/
  28 +24001c00 /*lut[1] command sequence*/
  29 +0 /*lut[2] command sequence*/
  30 +0 /*lut[3] command sequence*/
  31 +0 /*lut[4] command sequence*/
  32 +0 /*lut[5] command sequence*/
  33 +0 /*lut[6] command sequence*/
  34 +0 /*lut[7] command sequence*/
  35 +0 /*lut[8] command sequence*/
  36 +0 /*lut[9] command sequence*/
  37 +0 /*lut[10] command sequence*/
  38 +0 /*lut[11] command sequence*/
  39 +0 /*lut[12] command sequence*/
  40 +0 /*lut[13] command sequence*/
  41 +0 /*lut[14] command sequence*/
  42 +0 /*lut[15] command sequence*/
  43 +0 /*lut[16] command sequence*/
  44 +0 /*lut[17] command sequence*/
  45 +0 /*lut[18] command sequence*/
  46 +0 /*lut[19] command sequence*/
  47 +0 /*lut[20] command sequence*/
  48 +0 /*lut[21] command sequence*/
  49 +0 /*lut[22] command sequence*/
  50 +0 /*lut[23] command sequence*/
  51 +0 /*lut[24] command sequence*/
  52 +0 /*lut[25] command sequence*/
  53 +0 /*lut[26] command sequence*/
  54 +0 /*lut[27] command sequence*/
  55 +0 /*lut[28] command sequence*/
  56 +0 /*lut[29] command sequence*/
  57 +0 /*lut[30] command sequence*/
  58 +0 /*lut[31] command sequence*/
  59 +0 /*lut[32] command sequence*/
  60 +0 /*lut[33] command sequence*/
  61 +0 /*lut[34] command sequence*/
  62 +0 /*lut[35] command sequence*/
  63 +0 /*lut[36] command sequence*/
  64 +0 /*lut[37] command sequence*/
  65 +0 /*lut[38] command sequence*/
  66 +0 /*lut[39] command sequence*/
  67 +0 /*lut[40] command sequence*/
  68 +0 /*lut[41] command sequence*/
  69 +0 /*lut[42] command sequence*/
  70 +0 /*lut[43] command sequence*/
  71 +0 /*lut[44] command sequence*/
  72 +0 /*lut[45] command sequence*/
  73 +0 /*lut[46] command sequence*/
  74 +0 /*lut[47] command sequence*/
  75 +0 /*lut[48] command sequence*/
  76 +0 /*lut[49] command sequence*/
  77 +0 /*lut[50] command sequence*/
  78 +0 /*lut[51] command sequence*/
  79 +0 /*lut[52] command sequence*/
  80 +0 /*lut[53] command sequence*/
  81 +0 /*lut[54] command sequence*/
  82 +0 /*lut[55] command sequence*/
  83 +0 /*lut[56] command sequence*/
  84 +0 /*lut[57] command sequence*/
  85 +0 /*lut[58] command sequence*/
  86 +0 /*lut[59] command sequence*/
  87 +0 /*lut[60] command sequence*/
  88 +0 /*lut[61] command sequence*/
  89 +0 /*lut[62] command sequence*/
  90 +0 /*lut[63] command sequence*/
  91 +1000001 /*read_status_ipcr=hex value to be written to IPCR register for reading status reg of device*/
  92 +0 /*enable_dqs_phase=0 or 1*/
  93 +0 /*config_cmds_en, enable config command*/
  94 +0 /*config_cmds[0]*/
  95 +0 /*config_cmds[1]*/
  96 +0 /*config_cmds[2]*/
  97 +0 /*config_cmds[3]*/
  98 +0 /*config_cmds_args[0]*/
  99 +0 /*config_cmds_args[1]*/
  100 +0 /*config_cmds_args[2]*/
  101 +0 /*config_cmds_args[3]*/
  102 +0 /*io_pad_override_setting QSPI pins override setting*/
  103 +0 /*reserve[0], 25 byte reserved area*/
  104 +0 /*reserve[1], 25 byte reserved area*/
  105 +0 /*reserve[2], 25 byte reserved area*/
  106 +0 /*reserve[3], 25 byte reserved area*/
  107 +0 /*reserve[4], 25 byte reserved area*/
  108 +0 /*reserve[5], 25 byte reserved area*/
  109 +0 /*reserve[6], 25 byte reserved area*/
  110 +0 /*reserve[7], 25 byte reserved area*/
  111 +0 /*reserve[8], 25 byte reserved area*/
  112 +0 /*reserve[9], 25 byte reserved area*/
  113 +0 /*reserve[10], 25 byte reserved area*/
  114 +0 /*reserve[11], 25 byte reserved area*/
  115 +0 /*reserve[12], 25 byte reserved area*/
  116 +0 /*reserve[13], 25 byte reserved area*/
  117 +0 /*reserve[14], 25 byte reserved area*/
  118 +0 /*reserve[15], 25 byte reserved area*/
  119 +0 /*reserve[16], 25 byte reserved area*/
  120 +0 /*reserve[17], 25 byte reserved area*/
  121 +0 /*reserve[18], 25 byte reserved area*/
  122 +0 /*reserve[19], 25 byte reserved area*/
  123 +0 /*reserve[20], 25 byte reserved area*/
  124 +0 /*reserve[21], 25 byte reserved area*/
  125 +0 /*reserve[22], 25 byte reserved area*/
  126 +0 /*reserve[23], 25 byte reserved area*/
  127 +0 /*reserve[24], 25 byte reserved area*/
  128 +c0ffee01 /*tag, QSPI configuration tag, should be 0xc0ffee01*/