U-Boot Migration Example

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

U-Boot Migration Example

U-Boot Migration Example

1. INTRODUCTION:

     This document explains the general and basic steps to customize U-Boot for your own board. The board used in this document it is a working and stable board, the UDOO board (http://udoo.org).

2. REQUIREMENTS:

3. ADDING i.MX6 CUSTOM BOARD SUPPORT FOR U-BOOT.

    This section follows the steps found in Chapter 1 of the i.MX6 BSP Porting Guide of the Yocto documentation (L3.14.28) https://www.freescale.com/webapp/Download?colCode=L3.14.28_1.0.0_LINUX_DOCS&location=null&fpsp=1&WT_... .

  • Obtain U-Boot Source Code. After having installed Yocto project and generate a valid imx6 image, the U-Boot code should be located at <build directory>/tmp/work/<machine>-poky-linuxgnueabi/u-boot-imx/<version>/git.

  • Prepare the Code. Choose a board as reference, this board should be as similar as possible to your custom board.
    • Copy the board directory :

               $ cp -R board/freescale/mx6sabresd/ board/freescale/mx6_udoo

    • Copy the existing mx6sabresd.h configuration file as mx6_udoo.h

               $ cp include/configs/mx6sabresd.h include/configs/mx6_udoo.h

  • Create one entry in boards.cfg. Add a configuration entry in the boards.cfg file.

Active  arm  armv7  mx6  freescale  mx6_udoo mx6_udoo mx6_udoo:IMX_CONFIG=board/freescale/mx6_udoo/mx6dl_4x_mt41j128.cfg,MX6Q,DEFAULT_FDT_FILE="imx6q-udoo.dtb",DDR_MB=1024

  • Rename <board>.c file. Rename board/freescale/mx6sabresd/mx6sabresd.c   to   board/freescale/mx6_udoo/mx6_udoo.c

  • Modify Makefile. Change the line of COBJS to your custom board at  board/freescale/mx6_udoo/:

     obj-y  := mx6sabresd.o

  • Create a Shell script. Create a script to compile your new configuration. The script for this example is shown below and its name is build_u-boot.sh:

#!/bin/bash

export ARCH=arm

export CROSS_COMPILE=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-

make distclean;

make mx6_udoo_config

make

  • Run the script to verify if the new configuration is correct.

     $./build_u-boot.sh

4. CUSTOMIZING BOARD CODE

  •      The fist part to customize is the DCD table. The DCD table contains configuration data for the DDR controller and memory. The DCD is read by the BootROM code in the iMX family and executed before copying the Uboot image to DDR. The DCD is built in the .cfg file pointed in the new entry we just added in the boards.cfg file (mx6dl_4x_mt41j128.cfg).
    Below you can find an example of the data that can be found in this file:

/*

* Device Configuration Data (DCD)

*

* Each entry must have the format:

* Addr-type           Address        Value

*

* where:

*      Addr-type register length (1,2 or 4 bytes)

*      Address   absolute address of the register

*      value     value to be stored in the register

*/

DATA 4, 0x020e0774, 0x000C0000

DATA 4, 0x020e0754, 0x00000000

DATA 4, 0x020e04ac, 0x00000030

DATA 4, 0x020e04b0, 0x00000030

DATA 4, 0x020e0464, 0x00000030

DATA 4, 0x020e0490, 0x00000030

DATA 4, 0x020e074c, 0x00000030

DATA 4, 0x020e0494, 0x00000030

DATA 4, 0x020e04a0, 0x00000000

The .cfg files used in this example were taken from an old U-Boot version (2009) non dtb capable. The used files are found in the attached .zip file.

  • The specific initialization code for each board is found in mx6<customer board>.c in board/freescale/mx6<customer board>.c  in this case board/freescale/mx6_udoo/mx6_udoo.c file. Below it is explained the needed changes to route the serial console to the correct UART module, disable an external watchdog, configure and initialize the Ethernet PHY, change the lvds clock and configure the correct USDHC module.

       U-Boot calls already defined functions from a function pointer array that takes care of the board initialization at different stages. For example the board_early_init_f() is called at an        early phase where we can disable the wdog and initialize the uart pins; board_init() and board_late_init() are called after board_early_init_f().

  • The UDOO board features an external watchdog that needs to be disabled with a GPIO, otherwise U-Boot resets after a few seconds:

pastedImage_12.png

pastedImage_13.png

         The WDOG pins need to be configured and in the mx6_udoo.c file a global struct configuration for those pins is declared, as well as macros for each pin

#define WDT_EN  IMX_GPIO_NR(5, 4)

#define WDT_TRG IMX_GPIO_NR(3, 19)

iomux_v3_cfg_t const wdog_pads[] = {

        MX6_PAD_EIM_A24__GPIO5_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL),

        MX6_PAD_EIM_D19__GPIO3_IO19,

};

static void setup_iomux_wdog(void)

{

        imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads));

        gpio_direction_output(WDT_TRG, 0);

        gpio_direction_output(WDT_EN, 1);

        gpio_direction_input(WDT_TRG);

}

This configuration needs to be called at some point of the board_early_init_f()

int board_early_init_f(void)

{

        setup_iomux_wdog();

        This way the board_early_init_f() calls the iomux for the external wdog and disables it.

  • The UART console is routed to UART2, EIM_D26/UART2_TXD and EIM_D27/UART2_RXD. A different structure is defined with the pin configuration for the UART2.

pastedImage_49.png    

iomux_v3_cfg_t const uart2_pads[] = {

        MX6_PAD_EIM_D26__UART2_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),

        MX6_PAD_EIM_D27__UART2_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),

};

This configuration should be called at early stage too.

static void setup_iomux_uart(void)

{

        imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads));

}

int board_early_init_f(void)

{

        setup_iomux_wdog();

        setup_iomux_uart();

Also the UART BASE register has to be defined as well as the console device. This is defined in the include/configs/mx6_udoo.h file.

#define CONFIG_MXC_UART_BASE   UART2_BASE

#define CONFIG_CONSOLE_DEV      "ttymxc1"

  • The UDOO board features only one micro SD slot to boot and U-Boot environment storage. It uses only 4 bits and it has to be configured too. In the include/configs/mx6_udoo.h file the USDHC module has to be defined and the MMC environment device.

pastedImage_55.png

#define CONFIG_SYS_FSL_USDHC_NUM   3

#define CONFIG_SYS_MMC_ENV_DEV       0     /* SDHC3 */

         The USDHC3 pin configuration has to be defined:

    

iomux_v3_cfg_t const usdhc3_pads[] = {

        MX6_PAD_SD3_CLK__SD3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),

        MX6_PAD_SD3_CMD__SD3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),

        MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

        MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

        MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

        MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

        MX6_PAD_NANDF_D0__GPIO2_IO00    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */

};

struct fsl_esdhc_cfg usdhc_cfg[1] = {

        {USDHC3_BASE_ADDR, 0, 4},

};

This must be called and configured from the board_mmc_init() function:

int board_mmc_init(bd_t *bis)

{

        s32 status = 0;

        imx_iomux_v3_setup_multiple_pads(

        usdhc3_pads, ARRAY_SIZE(usdhc3_pads));

        usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);

                status |= fsl_esdhc_initialize(bis, &usdhc_cfg[0]);

        return status;

}

  • The Ethernet PHY is configured in the board_eth_init() function. This function should initialize the pins for the external ethernet phy, mdio and phy configuration.  Just a piece of code is shown below:

iomux_v3_cfg_t const enet_pads1[] = {

        MX6_PAD_ENET_MDIO__ENET_MDIO            | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_ENET_MDC__ENET_MDC              | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_TXC__RGMII_TXC       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_TD0__RGMII_TD0       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_TD1__RGMII_TD1       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_TD2__RGMII_TD2       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_TD3__RGMII_TD3       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_ENET_REF_CLK__ENET_TX_CLK       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_RXC__RGMII_RXC       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        /* RGMII reset */

        MX6_PAD_EIM_D23__GPIO3_IO23              | MUX_PAD_CTRL(NO_PAD_CTRL),

        /* alimentazione ethernet*/

        MX6_PAD_EIM_EB3__GPIO2_IO31              | MUX_PAD_CTRL(NO_PAD_CTRL),

        /* pin 32 - 1 - (MODE0) all */

        MX6_PAD_RGMII_RD0__GPIO6_IO25            | MUX_PAD_CTRL(NO_PAD_CTRL),

        /* pin 31 - 1 - (MODE1) all */

        MX6_PAD_RGMII_RD1__GPIO6_IO27            | MUX_PAD_CTRL(NO_PAD_CTRL),

        /* pin 28 - 1 - (MODE2) all */

        MX6_PAD_RGMII_RD2__GPIO6_IO28            | MUX_PAD_CTRL(NO_PAD_CTRL),

        /* pin 27 - 1 - (MODE3) all */

        MX6_PAD_RGMII_RD3__GPIO6_IO29            | MUX_PAD_CTRL(NO_PAD_CTRL),

        /* pin 33 - 1 - (CLK125_EN) 125Mhz clockout enabled */

        MX6_PAD_RGMII_RX_CTL__GPIO6_IO24         | MUX_PAD_CTRL(NO_PAD_CTRL),

};

static iomux_v3_cfg_t const enet_pads2[] = {

        MX6_PAD_RGMII_RD0__RGMII_RD0       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_RD1__RGMII_RD1       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_RD2__RGMII_RD2       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_RD3__RGMII_RD3       | MUX_PAD_CTRL(ENET_PAD_CTRL),

        MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),

};

static void setup_iomux_enet(void)

{

        imx_iomux_v3_setup_multiple_pads(enet_pads1, ARRAY_SIZE(enet_pads1));

        udelay(20);

        gpio_direction_output(IMX_GPIO_NR(2, 31), 1); /* Power on enet */

        gpio_direction_output(IMX_GPIO_NR(3, 23), 0); /* assert PHY rst */

        gpio_direction_output(IMX_GPIO_NR(6, 24), 1);

        gpio_direction_output(IMX_GPIO_NR(6, 25), 1);

        gpio_direction_output(IMX_GPIO_NR(6, 27), 1);

        gpio_direction_output(IMX_GPIO_NR(6, 28), 1);

        gpio_direction_output(IMX_GPIO_NR(6, 29), 1);

        udelay(1000);

        gpio_set_value(IMX_GPIO_NR(3, 23), 1); /* deassert PHY rst */

        /* Need delay 100ms to exit from reset. */

        udelay(1000 * 100);

        gpio_free(IMX_GPIO_NR(6, 24));

        gpio_free(IMX_GPIO_NR(6, 25));

        gpio_free(IMX_GPIO_NR(6, 27));

        gpio_free(IMX_GPIO_NR(6, 28));

        gpio_free(IMX_GPIO_NR(6, 29));

        imx_iomux_v3_setup_multiple_pads(enet_pads2, ARRAY_SIZE(enet_pads2));

}

          Let's notice that the external PHY is not the same as the SABRESD AR8031. The UDOO features the MICREL KSZ9031 PHY. The latter needs to be defined and the former undefined in the include/configs/mx6_udoo.h file.

#undef  CONFIG_PHY_ATHEROS

#define CONFIG_PHY_MICREL

#define CONFIG_PHY_MICREL_KSZ9031

Besides the PHY address has to be changed.

#define CONFIG_FEC_MXC_PHYADDR  6

  • At this point, the serial console, SD card saving arguments and ethernet should be working. The last point is to configure the LVDS display. The LVDS display of the UDOO board is connected in the same port as the SABRE-SD board, but the operation frequency is different and it has to be modified to work at ~ 33.26MHz for the 7 inches LVDS display.

     The mx6_udoo.c file contains a setup_display function that configures the LDB module. This functions is called in the board_early_init_f(). With the current clock configuration is not possible to get  the 33.2MHz for the LVDS and a different clock source for the LDB module must be chosen. The backlight and lvds power signals must be on.

pastedImage_6.png

          The current configuration uses the mmdc_ch1 clock and to get closer to 33.26MHz the PLL2_PFD0 is chosen.

pastedImage_11.png

       gpio_direction_output(IMX_GPIO_NR(1, 2), 1); /* LVDS power On */

        gpio_direction_output(IMX_GPIO_NR(1, 4), 1); /* LVDS backlight On */

        imx_iomux_v3_setup_multiple_pads(di0_pads, ARRAY_SIZE(di0_pads));

        enable_ipu_clock();

        imx_setup_hdmi();

        /* Turn on4LDB0, LDB1, IPU,IPU DI0 clocks */

        reg = readl(&mxc_ccm->CCGR3);

        reg |=  MXC_CCM_CCGR3_LDB_DI0_MASK | MXC_CCM_CCGR3_LDB_DI1_MASK;

        writel(reg, &mxc_ccm->CCGR3);

        /* set LDB0, LDB1 clk select to 011/011 */

        reg = readl(&mxc_ccm->cs2cdr);

        reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK

                 | MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);

        reg |= (1 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET)

              | (1 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);

        writel(reg, &mxc_ccm->cs2cdr);

With this changes you can compile the new U-Boot image with ./build_u-boot.sh and then just copy the uboot.imx file to your sd:

# sudo cp if=uboot.imx of=/dev/sdX bs=512 seek= 2 && sync

5. TESTING YOUR CHANGES

Inser the sd with the U-Boot image to micro sd slot and power up the board. You should get the U-Boot serial console like shown below.

pastedImage_22.png

In the console you can test the ethernet and phy configuration with the PING command:

pastedImage_27.png

I hope you find these basic steps useful for different boards.

Labels (1)
Attachments
Comments

Hi,

Thank you for this valuable information.

Does the iomux in kernel (from device tree) shall override the iomux in u-boot ?

Regards,

Ran

Can you give the solution for below screenshots

shanthu_1306_0-1721728068260.png

 

%3CLINGO-SUB%20id%3D%22lingo-sub-1105739%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EU-Boot%20Migration%20Example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1105739%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSTRONG%3E1.%20INTRODUCTION%3A%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20This%20document%20explains%20the%20general%20and%20basic%20steps%20to%20customize%20U-Boot%20for%20your%20own%20board.%20The%20board%20used%20in%20this%20document%20it%20is%20a%20working%20and%20stable%20board%2C%20the%20UDOO%20board%20(%3CA%20href%3D%22http%3A%2F%2Fudoo.org%2F%22%20title%3D%22http%3A%2F%2Fudoo.org%2F%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3Ehttp%3A%2F%2Fudoo.org%3C%2FA%3E).%3C%2FP%3E%3CP%20style%3D%22text-align%3A%20center%3B%22%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E2.%20REQUIREMENTS%3A%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Install%20Yocto%20Project.%20See%20the%20Freescale%20Yocto%20Project%20User's%20Guide.%3C%2FLI%3E%3CLI%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Generate%20and%20install%20the%20meta-toolchain.%20Follow%20this%20great%20training%20to%20do%20so%26nbsp%3B%20%3CA%20_jive_internal%3D%22true%22%20data-containerid%3D%222004%22%20data-containertype%3D%2214%22%20data-content-finding%3D%22Community%22%20data-objectid%3D%2294849%22%20data-objecttype%3D%22102%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-94849%22%20target%3D%22_blank%22%3EYocto%20Training%20-%20HOME%3C%2FA%3E%3C%2FLI%3E%3CLI%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Generate%20core-image-minimal%20of%20L3.14.28%20of%20FSL%20BSP%20obtained%20from%20%3CA%20href%3D%22https%3A%2F%2Fwww.freescale.com%2Fwebapp%2FDownload%3FcolCode%3DL3.14.28_1.0.0_iMX6QDLS_BUNDLE%26amp%3BappType%3Dlicense%26amp%3Blocation%3Dnull%26amp%3BParent_nodeId%3D1276810298241720831102%26amp%3BParent_pageType%3Dproduct%22%20title%3D%22https%3A%2F%2Fwww.freescale.com%2Fwebapp%2FDownload%3FcolCode%3DL3.14.28_1.0.0_iMX6QDLS_BUNDLE%26amp%3BappType%3Dlicense%26amp%3Blocation%3Dnull%26amp%3BParent_nodeId%3D1276810298241720831102%26amp%3BParent_pageType%3Dproduct%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fwww.freescale.com%2Fwebapp%2FDownload%3FcolCode%3DL3.14.28_1.0.0_iMX6QDLS_BUNDLE%26amp%3BappType%3Dlicense%26amp%3Blocation%3Dnull%26amp%3BParent_no%E2%80%A6%3C%2FA%3E%26nbsp%3B%26nbsp%3B%20%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E3.%20ADDING%20i.MX6%20CUSTOM%20BOARD%20SUPPORT%20FOR%20U-BOOT.%3CBR%20%2F%3E%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSTRONG%3EThis%20section%20follows%20the%20steps%20found%20in%20Chapter%201%20of%20the%20i.MX6%20BSP%20Porting%20Guide%20of%20the%20Yocto%20documentation%20(L3.14.28)%20%3CA%20href%3D%22https%3A%2F%2Fwww.freescale.com%2Fwebapp%2FDownload%3FcolCode%3DL3.14.28_1.0.0_LINUX_DOCS%26amp%3Blocation%3Dnull%26amp%3Bfpsp%3D1%26amp%3BWT_TYPE%3DSupporting%2520Information%26amp%3BWT_VENDOR%3DFREESCALE%26amp%3BWT_FILE_FORMAT%3Dgz%26amp%3BWT_ASSET%3DDocumentation%26amp%3BfileExt%3D.gz%26amp%3BParent_nodeId%3D1337637154535695831062%26amp%3BParent_pageType%3Dproduct%26amp%3BParent_nodeId%3D1337637154535695831062%26amp%3BParent_pageType%3Dproduct%22%20title%3D%22https%3A%2F%2Fwww.freescale.com%2Fwebapp%2FDownload%3FcolCode%3DL3.14.28_1.0.0_LINUX_DOCS%26amp%3Blocation%3Dnull%26amp%3Bfpsp%3D1%26amp%3BWT_TYPE%3DSupporting%2520Information%26amp%3BWT_VENDOR%3DFREESCALE%26amp%3BWT_FILE_FORMAT%3Dgz%26amp%3BWT_ASSET%3DDocumentation%26amp%3BfileExt%3D.gz%26amp%3BParent_nodeId%3D1337637154535695831062%26amp%3BParent_pageType%3Dproduct%26amp%3BParent_nodeId%3D1337637154535695831062%26amp%3BParent_pageType%3Dproduct%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fwww.freescale.com%2Fwebapp%2FDownload%3FcolCode%3DL3.14.28_1.0.0_LINUX_DOCS%26amp%3Blocation%3Dnull%26amp%3Bfpsp%3D1%26amp%3BWT_TYPE%3DSupporting%2520In%E2%80%A6%3C%2FA%3E%20.%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSTRONG%3EObtain%20U-Boot%20Source%20Code%3C%2FSTRONG%3E.%20After%20having%20installed%20Yocto%20project%20and%20generate%20a%20valid%20imx6%20image%2C%20the%20U-Boot%20code%20should%20be%20located%20at%20%3CBUILD%20directory%3D%22%22%3E%2Ftmp%2Fwork%2F%3CMACHINE%3E-poky-linuxgnueabi%2Fu-boot-imx%2F%3CVERSION%3E%2Fgit.%3C%2FVERSION%3E%3C%2FMACHINE%3E%3C%2FBUILD%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSTRONG%3EPrepare%20the%20Code.%20%3C%2FSTRONG%3EChoose%20a%20board%20as%20reference%2C%20this%20board%20should%20be%20as%20similar%20as%20possible%20to%20your%20custom%20board.%3CUL%3E%3CLI%3ECopy%20the%20board%20directory%20%3A%3C%2FLI%3E%3C%2FUL%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%24%20cp%20-R%20board%2Ffreescale%2Fmx6sabresd%2F%20board%2Ffreescale%2Fmx6_udoo%3C%2FP%3E%3CUL%3E%3CUL%3E%3CLI%3ECopy%20the%20existing%20mx6sabresd.h%20configuration%20file%20as%20mx6_udoo.h%3C%2FLI%3E%3C%2FUL%3E%3C%2FUL%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%24%20cp%20include%2Fconfigs%2Fmx6sabresd.h%20include%2Fconfigs%2Fmx6_udoo.h%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSTRONG%3ECreate%20one%20entry%20in%20boards.cfg.%20%3C%2FSTRONG%3EAdd%20a%20configuration%20entry%20in%20the%20boards.cfg%20file.%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3C%2FP%3E%3CP%3EActive%26nbsp%3B%20arm%26nbsp%3B%20armv7%26nbsp%3B%20mx6%26nbsp%3B%20freescale%26nbsp%3B%20mx6_udoo%20mx6_udoo%20mx6_udoo%3AIMX_CONFIG%3Dboard%2Ffreescale%2Fmx6_udoo%2Fmx6dl_4x_mt41j128.cfg%2CMX6Q%2CDEFAULT_FDT_FILE%3D%22imx6q-udoo.dtb%22%2CDDR_MB%3D1024%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSTRONG%3ERename%20%3CBOARD%3E.c%20file.%20%3C%2FBOARD%3E%3C%2FSTRONG%3ERename%20board%2Ffreescale%2Fmx6sabresd%2Fmx6sabresd.c%26nbsp%3B%26nbsp%3B%20to%26nbsp%3B%26nbsp%3B%20board%2Ffreescale%2Fmx6_udoo%2Fmx6_udoo.c%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSTRONG%3EModify%20Makefile.%20%3C%2FSTRONG%3EChange%20the%20line%20of%20COBJS%20to%20your%20custom%20board%20at%26nbsp%3B%20board%2Ffreescale%2Fmx6_udoo%2F%3A%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20obj-y%26nbsp%3B%20%3A%3D%20mx6sabresd.o%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSTRONG%3ECreate%20a%20Shell%20script.%20%3C%2FSTRONG%3ECreate%20a%20script%20to%20compile%20your%20new%20configuration.%20The%20script%20for%20this%20example%20is%20shown%20below%20and%20its%20name%20is%20build_u-boot.sh%3A%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%3CEM%3E%23!%2Fbin%2Fbash%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%3CEM%3Eexport%20ARCH%3Darm%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%3CEM%3Eexport%20CROSS_COMPILE%3D%2Fopt%2Fpoky%2F1.7%2Fsysroots%2Fx86_64-pokysdk-linux%2Fusr%2Fbin%2Farm-poky-linux-gnueabi%2Farm-poky-linux-gnueabi-%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%3CEM%3Emake%20distclean%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%3CEM%3Emake%20mx6_udoo_config%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%3CEM%3Emake%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CUL%3E%3CLI%3ERun%20the%20script%20to%20verify%20if%20the%20new%20configuration%20is%20correct.%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%24.%2Fbuild_u-boot.sh%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E4.%20CUSTOMIZING%20BOARD%20CODE%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20The%20fist%20part%20to%20customize%20is%20the%20DCD%20table.%20The%20DCD%20table%20contains%20configuration%20data%20for%20the%20DDR%20controller%20and%20memory.%20The%20DCD%20is%20read%20by%20the%20BootROM%20code%20in%20the%20iMX%20family%20and%20executed%20before%20copying%20the%20Uboot%20image%20to%20DDR.%20The%20DCD%20is%20built%20in%20the%20.cfg%20file%20pointed%20in%20the%20new%20entry%20we%20just%20added%20in%20the%20boards.cfg%20file%20(mx6dl_4x_mt41j128.cfg).%20%3CBR%20%2F%3EBelow%20you%20can%20find%20an%20example%20of%20the%20data%20that%20can%20be%20found%20in%20this%20file%3A%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%2F*%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%20Device%20Configuration%20Data%20(DCD)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%20Each%20entry%20must%20have%20the%20format%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%20Addr-type%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Address%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Value%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%20where%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Addr-type%20register%20length%20(1%2C2%20or%204%20bytes)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Address%26nbsp%3B%26nbsp%3B%20absolute%20address%20of%20the%20register%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20value%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20value%20to%20be%20stored%20in%20the%20register%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e0774%2C%200x000C0000%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e0754%2C%200x00000000%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e04ac%2C%200x00000030%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e04b0%2C%200x00000030%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e0464%2C%200x00000030%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e0490%2C%200x00000030%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e074c%2C%200x00000030%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e0494%2C%200x00000030%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3EDATA%204%2C%200x020e04a0%2C%200x00000000%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EThe%20.cfg%20files%20used%20in%20this%20example%20were%20taken%20from%20an%20old%20U-Boot%20version%20(2009)%20non%20dtb%20capable.%20The%20used%20files%20are%20found%20in%20the%20attached%20.zip%20file.%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EThe%20specific%20initialization%20code%20for%20each%20board%20is%20found%20in%20mx6%3CCUSTOMER%20board%3D%22%22%3E.c%20in%20board%2Ffreescale%2Fmx6%3CCUSTOMER%20board%3D%22%22%3E.c%26nbsp%3B%20in%20this%20case%20board%2Ffreescale%2Fmx6_udoo%2Fmx6_udoo.c%20file.%20Below%20it%20is%20explained%20the%20needed%20changes%20to%20route%20the%20serial%20console%20to%20the%20correct%20UART%20module%2C%20disable%20an%20external%20watchdog%2C%20configure%20and%20initialize%20the%20Ethernet%20PHY%2C%20change%20the%20lvds%20clock%20and%20configure%20the%20correct%20USDHC%20module.%3C%2FCUSTOMER%3E%3C%2FCUSTOMER%3E%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EU-Boot%20calls%20already%20defined%20functions%20from%20a%20function%20pointer%20array%20that%20takes%20care%20of%20the%20board%20initialization%20at%20different%20stages.%20For%20example%20the%20board_early_init_f()%20is%20called%20at%20an%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20early%20phase%20where%20we%20can%20disable%20the%20wdog%20and%20initialize%20the%20uart%20pins%3B%20board_init()%20and%20board_late_init()%20are%20called%20after%20%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%20board_early_init_f().%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EThe%20UDOO%20board%20features%20an%20external%20watchdog%20that%20needs%20to%20be%20disabled%20with%20a%20GPIO%2C%20otherwise%20U-Boot%20resets%20after%20a%20few%20seconds%3A%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_12.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_12.png%22%20style%3D%22width%3A%20672px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111736iFD93345DA9FCC5AF%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_12.png%22%20alt%3D%22pastedImage_12.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_13.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_13.png%22%20style%3D%22width%3A%20975px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111735iB64D3C7D61E497D3%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_13.png%22%20alt%3D%22pastedImage_13.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20The%20WDOG%20pins%20need%20to%20be%20configured%20and%20in%20the%20mx6_udoo.c%20file%20a%20global%20struct%20configuration%20for%20those%20pins%20is%20declared%2C%20as%20well%20as%20macros%20for%20each%20pin%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20WDT_EN%26nbsp%3B%20IMX_GPIO_NR(5%2C%204)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20WDT_TRG%20IMX_GPIO_NR(3%2C%2019)%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Eiomux_v3_cfg_t%20const%20wdog_pads%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_EIM_A24__GPIO5_IO04%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_EIM_D19__GPIO3_IO19%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Estatic%20void%20setup_iomux_wdog(void)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20imx_iomux_v3_setup_multiple_pads(wdog_pads%2C%20ARRAY_SIZE(wdog_pads))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(WDT_TRG%2C%200)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(WDT_EN%2C%201)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_input(WDT_TRG)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3EThis%20configuration%20needs%20to%20be%20called%20at%20some%20point%20of%20the%20board_early_init_f()%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Eint%20board_early_init_f(void)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%233334ca%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20setup_iomux_wdog()%3C%2FSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%233d3d3d%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20This%20way%20the%20board_early_init_f()%20calls%20the%20iomux%20for%20the%20external%20wdog%20and%20disables%20it.%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22color%3A%20%233d3d3d%3B%22%3EThe%20UART%20console%20is%20routed%20to%20UART2%2C%20EIM_D26%2FUART2_TXD%20and%20EIM_D27%2FUART2_RXD.%20A%20different%20structure%20is%20defined%20with%20the%20pin%20configuration%20for%20the%20UART2.%20%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%233d3d3d%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_49.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_49.png%22%20style%3D%22width%3A%20712px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111734iF8F7F31847E81301%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_49.png%22%20alt%3D%22pastedImage_49.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Eiomux_v3_cfg_t%20const%20uart2_pads%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_EIM_D26__UART2_TX_DATA%20%7C%20MUX_PAD_CTRL(UART_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_EIM_D27__UART2_RX_DATA%20%7C%20MUX_PAD_CTRL(UART_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EThis%20configuration%20should%20be%20called%20at%20early%20stage%20too.%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Estatic%20void%20setup_iomux_uart(void)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20imx_iomux_v3_setup_multiple_pads(uart2_pads%2C%20ARRAY_SIZE(uart2_pads))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Eint%20board_early_init_f(void)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20setup_iomux_wdog()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20setup_iomux_uart()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EAlso%20the%20UART%20BASE%20register%20has%20to%20be%20defined%20as%20well%20as%20the%20console%20device.%20This%20is%20defined%20in%20the%20include%2Fconfigs%2Fmx6_udoo.h%20file.%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CTABLE%3E%3CTBODY%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20CONFIG_MXC_UART_BASE%26nbsp%3B%26nbsp%3B%20UART2_BASE%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20CONFIG_CONSOLE_DEV%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%22ttymxc1%22%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EThe%20UDOO%20board%20features%20only%20one%20micro%20SD%20slot%20to%20boot%20and%20U-Boot%20environment%20storage.%20It%20uses%20only%204%20bits%20and%20it%20has%20to%20be%20configured%20too.%20In%20the%20%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3Einclude%2Fconfigs%2Fmx6_udoo.h%20file%20the%20USDHC%20module%20has%20to%20be%20defined%20and%20the%20MMC%20environment%20device.%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_55.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_55.png%22%20style%3D%22width%3A%20733px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F58140i3C9665739A1B0608%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_55.png%22%20alt%3D%22pastedImage_55.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20CONFIG_SYS_FSL_USDHC_NUM%26nbsp%3B%26nbsp%3B%203%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20CONFIG_SYS_MMC_ENV_DEV%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20SDHC3%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20The%20USDHC3%20pin%20configuration%20has%20to%20be%20defined%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Eiomux_v3_cfg_t%20const%20usdhc3_pads%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_SD3_CLK__SD3_CLK%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(USDHC_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_SD3_CMD__SD3_CMD%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(USDHC_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_SD3_DAT0__SD3_DATA0%20%7C%20MUX_PAD_CTRL(USDHC_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_SD3_DAT1__SD3_DATA1%20%7C%20MUX_PAD_CTRL(USDHC_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_SD3_DAT2__SD3_DATA2%20%7C%20MUX_PAD_CTRL(USDHC_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_SD3_DAT3__SD3_DATA3%20%7C%20MUX_PAD_CTRL(USDHC_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_NANDF_D0__GPIO2_IO00%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%20%2F*%20CD%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Estruct%20fsl_esdhc_cfg%20usdhc_cfg%5B1%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7BUSDHC3_BASE_ADDR%2C%200%2C%204%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3B%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3EThis%20must%20be%20called%20and%20configured%20from%20the%20board_mmc_init()%20function%3A%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Eint%20board_mmc_init(bd_t%20*bis)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20s32%20status%20%3D%200%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20imx_iomux_v3_setup_multiple_pads(%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20usdhc3_pads%2C%20ARRAY_SIZE(usdhc3_pads))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20usdhc_cfg%5B0%5D.sdhc_clk%20%3D%20mxc_get_clock(MXC_ESDHC3_CLK)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20status%20%7C%3D%20fsl_esdhc_initialize(bis%2C%20%26amp%3Busdhc_cfg%5B0%5D)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20return%20status%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3EThe%20Ethernet%20PHY%20is%20configured%20in%20the%20board_eth_init()%20function.%20This%20function%20should%20initialize%20the%20pins%20for%20the%20external%20ethernet%20phy%2C%20mdio%20and%20phy%20configuration.%26nbsp%3B%20Just%20a%20piece%20of%20code%20is%20shown%20below%3A%3C%2FLI%3E%3C%2FUL%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Eiomux_v3_cfg_t%20const%20enet_pads1%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_ENET_MDIO__ENET_MDIO%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_ENET_MDC__ENET_MDC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_TXC__RGMII_TXC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_TD0__RGMII_TD0%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_TD1__RGMII_TD1%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_TD2__RGMII_TD2%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_TD3__RGMII_TD3%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_ENET_REF_CLK__ENET_TX_CLK%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RXC__RGMII_RXC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20RGMII%20reset%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_EIM_D23__GPIO3_IO23%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20alimentazione%20ethernet*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_EIM_EB3__GPIO2_IO31%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20pin%2032%20-%201%20-%20(MODE0)%20all%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD0__GPIO6_IO25%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20pin%2031%20-%201%20-%20(MODE1)%20all%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD1__GPIO6_IO27%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20pin%2028%20-%201%20-%20(MODE2)%20all%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD2__GPIO6_IO28%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20pin%2027%20-%201%20-%20(MODE3)%20all%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD3__GPIO6_IO29%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20pin%2033%20-%201%20-%20(CLK125_EN)%20125Mhz%20clockout%20enabled%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RX_CTL__GPIO6_IO24%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(NO_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Estatic%20iomux_v3_cfg_t%20const%20enet_pads2%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD0__RGMII_RD0%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD1__RGMII_RD1%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD2__RGMII_RD2%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RD3__RGMII_RD3%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MUX_PAD_CTRL(ENET_PAD_CTRL)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3Estatic%20void%20setup_iomux_enet(void)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20imx_iomux_v3_setup_multiple_pads(enet_pads1%2C%20ARRAY_SIZE(enet_pads1))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20udelay(20)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(2%2C%2031)%2C%201)%3B%20%2F*%20Power%20on%20enet%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(3%2C%2023)%2C%200)%3B%20%2F*%20assert%20PHY%20rst%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(6%2C%2024)%2C%201)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(6%2C%2025)%2C%201)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(6%2C%2027)%2C%201)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(6%2C%2028)%2C%201)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(6%2C%2029)%2C%201)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20udelay(1000)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_set_value(IMX_GPIO_NR(3%2C%2023)%2C%201)%3B%20%2F*%20deassert%20PHY%20rst%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Need%20delay%20100ms%20to%20exit%20from%20reset.%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20udelay(1000%20*%20100)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_free(IMX_GPIO_NR(6%2C%2024))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_free(IMX_GPIO_NR(6%2C%2025))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_free(IMX_GPIO_NR(6%2C%2027))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_free(IMX_GPIO_NR(6%2C%2028))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_free(IMX_GPIO_NR(6%2C%2029))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20imx_iomux_v3_setup_multiple_pads(enet_pads2%2C%20ARRAY_SIZE(enet_pads2))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Let's%20notice%20that%20the%20external%20PHY%20is%20not%20the%20same%20as%20the%20SABRESD%20AR8031.%20The%20UDOO%20features%20the%20MICREL%20KSZ9031%20PHY.%20The%20latter%20needs%20to%20be%20defined%20and%20the%20former%20undefined%20in%20the%20%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3Einclude%2Fconfigs%2Fmx6_udoo.h%20file.%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23undef%26nbsp%3B%20CONFIG_PHY_ATHEROS%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20CONFIG_PHY_MICREL%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20CONFIG_PHY_MICREL_KSZ9031%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2060px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EBesides%20the%20PHY%20address%20has%20to%20be%20changed.%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%23define%20CONFIG_FEC_MXC_PHYADDR%26nbsp%3B%206%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CUL%3E%3CLI%3EAt%20this%20point%2C%20the%20serial%20console%2C%20SD%20card%20saving%20arguments%20and%20ethernet%20should%20be%20working.%20The%20last%20point%20is%20to%20configure%20the%20LVDS%20display.%20The%20LVDS%20display%20of%20the%20UDOO%20board%20is%20connected%20in%20the%20same%20port%20as%20the%20SABRE-SD%20board%2C%20but%20the%20operation%20frequency%20is%20different%20and%20it%20has%20to%20be%20modified%20to%20work%20at%20~%2033.26MHz%20for%20the%207%20inches%20LVDS%20display.%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20The%20mx6_udoo.c%20file%20contains%20a%20setup_display%20function%20that%20configures%20the%20LDB%20module.%20This%20functions%20is%20called%20in%20the%20board_early_init_f().%20With%20the%20current%20clock%20configuration%20is%20not%20possible%20to%20get%26nbsp%3B%20the%2033.2MHz%20for%20the%20LVDS%20and%20a%20different%20clock%20source%20for%20the%20LDB%20module%20must%20be%20chosen.%20The%20backlight%20and%20lvds%20power%20signals%20must%20be%20on.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_6.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_6.png%22%20style%3D%22width%3A%20626px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F24854iAA30727BB6DF05F3%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_6.png%22%20alt%3D%22pastedImage_6.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20The%20current%20configuration%20uses%20the%20mmdc_ch1%20clock%20and%20to%20get%20closer%20to%2033.26MHz%20the%20PLL2_PFD0%20is%20chosen.%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_11.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_11.png%22%20style%3D%22width%3A%20646px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F24784i3E0F27E8E283899F%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_11.png%22%20alt%3D%22pastedImage_11.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%20gpio_direction_output(IMX_GPIO_NR(1%2C%202)%2C%201)%3B%20%2F*%20LVDS%20power%20On%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gpio_direction_output(IMX_GPIO_NR(1%2C%204)%2C%201)%3B%20%2F*%20LVDS%20backlight%20On%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20imx_iomux_v3_setup_multiple_pads(di0_pads%2C%20ARRAY_SIZE(di0_pads))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20enable_ipu_clock()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20imx_setup_hdmi()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Turn%20on4LDB0%2C%20LDB1%2C%20IPU%2CIPU%20DI0%20clocks%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20reg%20%3D%20readl(%26amp%3Bmxc_ccm-%26gt%3BCCGR3)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20reg%20%7C%3D%26nbsp%3B%20MXC_CCM_CCGR3_LDB_DI0_MASK%20%7C%20MXC_CCM_CCGR3_LDB_DI1_MASK%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20writel(reg%2C%20%26amp%3Bmxc_ccm-%26gt%3BCCGR3)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20set%20LDB0%2C%20LDB1%20clk%20select%20to%20011%2F011%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20reg%20%3D%20readl(%26amp%3Bmxc_ccm-%26gt%3Bcs2cdr)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20reg%20%26amp%3B%3D%20~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20reg%20%7C%3D%20(1%20%26lt%3B%26lt%3B%20MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7C%20(1%20%26lt%3B%26lt%3B%20MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20writel(reg%2C%20%26amp%3Bmxc_ccm-%26gt%3Bcs2cdr)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EWith%20this%20changes%20you%20can%20compile%20the%20new%20U-Boot%20image%20with%20.%2Fbuild_u-boot.sh%20and%20then%20just%20copy%20the%20uboot.imx%20file%20to%20your%20sd%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%3CSTRONG%3E%23%20sudo%20cp%20if%3Duboot.imx%20of%3D%2Fdev%2FsdX%20bs%3D512%20seek%3D%202%20%26amp%3B%26amp%3B%20sync%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%3CSTRONG%3E5.%20TESTING%20YOUR%20CHANGES%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EInser%20the%20sd%20with%20the%20U-Boot%20image%20to%20micro%20sd%20slot%20and%20power%20up%20the%20board.%20You%20should%20get%20the%20U-Boot%20serial%20console%20like%20shown%20below.%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_22.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_22.png%22%20style%3D%22width%3A%20507px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111737iEE1F9485D1B34188%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_22.png%22%20alt%3D%22pastedImage_22.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EIn%20the%20console%20you%20can%20test%20the%20ethernet%20and%20phy%20configuration%20with%20the%20PING%20command%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_27.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_27.png%22%20style%3D%22width%3A%20290px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111738i3699E4FA0DA30464%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_27.png%22%20alt%3D%22pastedImage_27.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3EI%20hope%20you%20find%20these%20basic%20steps%20useful%20for%20different%20boards.%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1105739%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX6_All%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1914894%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20U-Boot%20Migration%20Example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1914894%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ECan%20you%20give%20the%20solution%20for%20below%20screenshots%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22shanthu_1306_0-1721728068260.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22shanthu_1306_0-1721728068260.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F289879i44630CCCA7E5B9B0%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22shanthu_1306_0-1721728068260.png%22%20alt%3D%22shanthu_1306_0-1721728068260.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1105740%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20U-Boot%20Migration%20Example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1105740%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EThank%20you%20for%20this%20valuable%20information.%3C%2FP%3E%3CP%3EDoes%20the%20%3CSPAN%3Eiomux%3C%2FSPAN%3E%20in%20kernel%20(from%20device%20tree)%20shall%20override%20the%20iomux%20in%20u-boot%20%3F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3ERegards%2C%3C%2FP%3E%3CP%3ERan%3C%2FP%3E%3C%2FLINGO-BODY%3E
No ratings
Version history
Last update:
‎09-28-2015 02:39 PM
Updated by: