From: Stefano Babic <sbabic@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1] mx51_na04: add support for the Hercules eCAFE laptop
Date: Fri, 19 Dec 2014 14:19:33 +0100 [thread overview]
Message-ID: <549425E5.80809@denx.de> (raw)
In-Reply-To: <1417975162-27412-1-git-send-email-u-boot@esmil.dk>
Hi Emil,
On 07/12/2014 18:59, Emil Renner Berthing wrote:
> Signed-off-by: Emil Renner Berthing <u-boot@esmil.dk>
> ---
> arch/arm/Kconfig | 5 +
> arch/arm/include/asm/arch-mx5/iomux-mx51.h | 19 ++
> arch/arm/include/asm/mach-types.h | 13 +
> board/hercules/mx51_na04/Kconfig | 15 +
> board/hercules/mx51_na04/MAINTAINERS | 6 +
> board/hercules/mx51_na04/Makefile | 10 +
> board/hercules/mx51_na04/mx51_na04.c | 469 +++++++++++++++++++++++++++++
> configs/mx51_na04_defconfig | 3 +
> include/configs/mx51_na04.h | 246 +++++++++++++++
> 9 files changed, 786 insertions(+)
> create mode 100644 board/hercules/mx51_na04/Kconfig
> create mode 100644 board/hercules/mx51_na04/MAINTAINERS
> create mode 100644 board/hercules/mx51_na04/Makefile
> create mode 100644 board/hercules/mx51_na04/mx51_na04.c
> create mode 100644 configs/mx51_na04_defconfig
> create mode 100644 include/configs/mx51_na04.h
>
Can you split your patch ? It does not only add your board.
Changes in iomux-mx51.h should flow into a separate patch, because they
are not board specific.
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 0982117..f8c4429 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -581,6 +581,10 @@ config TARGET_MX51_EFIKAMX
> bool "Support mx51_efikamx"
> select CPU_V7
>
> +config TARGET_MX51_NA04
> + bool "Support the Hercules eCAFE Slim/EX HD laptops"
> + select CPU_V7
> +
> config TARGET_VISION2
> bool "Support vision2"
> select CPU_V7
> @@ -911,6 +915,7 @@ source "board/freescale/mx6sxsabresd/Kconfig"
> source "board/freescale/vf610twr/Kconfig"
> source "board/gateworks/gw_ventana/Kconfig"
> source "board/genesi/mx51_efikamx/Kconfig"
> +source "board/hercules/mx51_na04/Kconfig"
> source "board/gumstix/pepper/Kconfig"
> source "board/h2200/Kconfig"
> source "board/hale/tt01/Kconfig"
> diff --git a/arch/arm/include/asm/arch-mx5/iomux-mx51.h b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
> index 70aaa37..91dde62 100644
> --- a/arch/arm/include/asm/arch-mx5/iomux-mx51.h
> +++ b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
> @@ -71,6 +71,7 @@ enum {
> MX51_PAD_EIM_A25__USBH2_DIR = IOMUX_PAD(0x454, 0x0c0, 2, __NA_, 0, MX51_USBH_PAD_CTRL),
> MX51_PAD_EIM_A26__GPIO2_20 = IOMUX_PAD(0x458, 0x0c4, 1, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_EIM_A26__USBH2_STP = IOMUX_PAD(0x458, 0x0c4, 2, __NA_, 0, MX51_USBH_PAD_CTRL),
> + MX51_PAD_EIM_A27__GPIO2_21 = IOMUX_PAD(0x45c, 0x0c8, 1, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_EIM_A27__USBH2_NXT = IOMUX_PAD(0x45c, 0x0c8, 2, __NA_, 0, MX51_USBH_PAD_CTRL),
> MX51_PAD_EIM_EB2__FEC_MDIO = IOMUX_PAD(0x468, 0x0d4, 3, 0x954, 0, PAD_CTL_PUS_22K_UP | PAD_CTL_SRE_FAST | PAD_CTL_DSE_HIGH | PAD_CTL_HYS),
> MX51_PAD_EIM_EB3__FEC_RDATA1 = IOMUX_PAD(0x46c, 0x0d8, 3, 0x95c, 0, NO_PAD_CTRL),
> @@ -105,6 +106,7 @@ enum {
> MX51_PAD_NANDF_CLE__PATA_RESET_B = IOMUX_PAD(0x4f0, 0x114, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_WP_B__PATA_DMACK = IOMUX_PAD(0x4f4, 0x118, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_RB0__PATA_DMARQ = IOMUX_PAD(0x4f8, 0x11c, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_RB0__SD3_DATA3 = IOMUX_PAD(0x4f8, 0x11c, 2, 0x948, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_RB1__PATA_IORDY = IOMUX_PAD(0x4fc, 0x120, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_RB2__FEC_COL = IOMUX_PAD(0x500, 0x124, 1, 0x94c, 0, MX51_PAD_CTRL_2),
> MX51_PAD_NANDF_RB2__GPIO3_10 = IOMUX_PAD(0x500, 0x124, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> @@ -122,23 +124,32 @@ enum {
> MX51_PAD_NANDF_CS6__FEC_TDATA3 = IOMUX_PAD(0x530, 0x148, 2, __NA_, 0, MX51_PAD_CTRL_5),
> MX51_PAD_NANDF_CS6__PATA_DA_2 = IOMUX_PAD(0x530, 0x148, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_CS7__FEC_TX_EN = IOMUX_PAD(0x534, 0x14c, 1, __NA_, 0, MX51_PAD_CTRL_5),
> + MX51_PAD_NANDF_CS7__SD3_CLK = IOMUX_PAD(0x534, 0x14c, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK = IOMUX_PAD(0x538, 0x150, 1, 0x974, 0, MX51_PAD_CTRL_4),
> + MX51_PAD_NANDF_RDY_INT__SD3_CMD = IOMUX_PAD(0x538, 0x150, 0x15, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D15__GPIO3_25 = IOMUX_PAD(0x53c, 0x154, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_NANDF_D15__PATA_DATA15 = IOMUX_PAD(0x53c, 0x154, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_D15__SD3_DAT7 = IOMUX_PAD(0x53c, 0x154, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D14__GPIO3_26 = IOMUX_PAD(0x540, 0x158, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_NANDF_D14__PATA_DATA14 = IOMUX_PAD(0x540, 0x158, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_D14__SD3_DAT6 = IOMUX_PAD(0x540, 0x158, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D13__GPIO3_27 = IOMUX_PAD(0x544, 0x15c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_NANDF_D13__PATA_DATA13 = IOMUX_PAD(0x544, 0x15c, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_D13__SD3_DAT5 = IOMUX_PAD(0x544, 0x15c, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D12__PATA_DATA12 = IOMUX_PAD(0x548, 0x160, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_D12__SD3_DAT4 = IOMUX_PAD(0x548, 0x160, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D11__FEC_RX_DV = IOMUX_PAD(0x54c, 0x164, 2, 0x96c, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_D11__PATA_DATA11 = IOMUX_PAD(0x54c, 0x164, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_D10__GPIO3_30 = IOMUX_PAD(0x550, 0x168, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_NANDF_D10__PATA_DATA10 = IOMUX_PAD(0x550, 0x168, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_D10__SD3_DATA2 = IOMUX_PAD(0x550, 0x168, 5, 0x944, 1, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D9__FEC_RDATA0 = IOMUX_PAD(0x554, 0x16c, 0x12, 0x958, 0, MX51_PAD_CTRL_4),
> MX51_PAD_NANDF_D9__GPIO3_31 = IOMUX_PAD(0x554, 0x16c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_NANDF_D9__PATA_DATA9 = IOMUX_PAD(0x554, 0x16c, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_D9__SD3_DATA1 = IOMUX_PAD(0x554, 0x16c, 5, 0x940, 1, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D8__FEC_TDATA0 = IOMUX_PAD(0x558, 0x170, 2, __NA_, 0, MX51_PAD_CTRL_5),
> MX51_PAD_NANDF_D8__PATA_DATA8 = IOMUX_PAD(0x558, 0x170, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_NANDF_D8__SD3_DATA0 = IOMUX_PAD(0x558, 0x170, 5, 0x93c, 1, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_NANDF_D7__PATA_DATA7 = IOMUX_PAD(0x55c, 0x174, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_D6__PATA_DATA6 = IOMUX_PAD(0x560, 0x178, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_D5__PATA_DATA5 = IOMUX_PAD(0x564, 0x17c, 1, __NA_, 0, NO_PAD_CTRL),
> @@ -147,6 +158,7 @@ enum {
> MX51_PAD_NANDF_D2__PATA_DATA2 = IOMUX_PAD(0x570, 0x188, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_D1__PATA_DATA1 = IOMUX_PAD(0x574, 0x18c, 1, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_NANDF_D0__PATA_DATA0 = IOMUX_PAD(0x578, 0x190, 1, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_CSI1_VSYNC__GPIO3_14 = IOMUX_PAD(0x5ac, 0x1c4, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_CSI2_D12__GPIO4_9 = IOMUX_PAD(0x5bc, 0x1cc, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_CSI2_D13__GPIO4_10 = IOMUX_PAD(0x5c0, 0x1d0, 3, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI = IOMUX_PAD(0x600, 0x210, 0, __NA_, 0, MX51_ECSPI_PAD_CTRL),
> @@ -185,7 +197,13 @@ enum {
> MX51_PAD_DI1_PIN3__DI1_PIN3 = IOMUX_PAD(0x72c, 0x32c, 0, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_DI1_PIN2__DI1_PIN2 = IOMUX_PAD(0x734, 0x330, 0, __NA_, 0, NO_PAD_CTRL),
> MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK = IOMUX_PAD(0x754, 0x34c, 0, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_DI2_DISP_CLK__FEC_RDATA1 = IOMUX_PAD(0x754, 0x34c, 2, 0x95c, 1, NO_PAD_CTRL),
> + MX51_PAD_DI_GP4__FEC_RDATA2 = IOMUX_PAD(0x758, 0x350, 2, 0x960, 1, NO_PAD_CTRL),
> MX51_PAD_DI_GP4__DI2_PIN15 = IOMUX_PAD(0x758, 0x350, 4, __NA_, 0, NO_PAD_CTRL),
> + MX51_PAD_DISP2_DAT9__FEC_TX_EN = IOMUX_PAD(0x780, 0x378, 2, __NA_, 0, PAD_CTL_DSE_HIGH),
> + MX51_PAD_DISP2_DAT13__FEC_TX_CLK = IOMUX_PAD(0x790, 0x388, 2, 0x974, 1, MX51_PAD_CTRL_2),
> + MX51_PAD_DISP2_DAT14__FEC_RDATA0 = IOMUX_PAD(0x794, 0x38c, 2, 0x958, 1, NO_PAD_CTRL),
> + MX51_PAD_DISP2_DAT15__FEC_TDATA0 = IOMUX_PAD(0x798, 0x390, 2, __NA_, 0, PAD_CTL_DSE_HIGH),
> MX51_PAD_SD1_CMD__SD1_CMD = IOMUX_PAD(0x79c, 0x394, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_SD1_CLK__SD1_CLK = IOMUX_PAD(0x7a0, 0x398, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS),
> MX51_PAD_SD1_DATA0__SD1_DATA0 = IOMUX_PAD(0x7a4, 0x39c, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> @@ -195,6 +213,7 @@ enum {
> MX51_PAD_GPIO1_0__GPIO1_0 = IOMUX_PAD(0x7b4, 0x3ac, 1, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_GPIO1_0__SD1_CD = IOMUX_PAD(0x7b4, 0x3ac, 0, __NA_, 0, MX51_ESDHC_PAD_CTRL),
> MX51_PAD_GPIO1_1__SD1_WP = IOMUX_PAD(0x7b8, 0x3b0, 0, __NA_, 0, MX51_ESDHC_PAD_CTRL),
> + MX51_PAD_GPIO1_1__GPIO1_1 = IOMUX_PAD(0x7b8, 0x3b0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL),
> MX51_PAD_SD2_CMD__SD2_CMD = IOMUX_PAD(0x7bc, 0x3b4, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> MX51_PAD_SD2_CLK__SD2_CLK = IOMUX_PAD(0x7c0, 0x3b8, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS),
> MX51_PAD_SD2_DATA0__SD2_DATA0 = IOMUX_PAD(0x7c4, 0x3bc, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL),
> diff --git a/arch/arm/include/asm/mach-types.h b/arch/arm/include/asm/mach-types.h
> index d4a447b..b8f0a6a 100644
> --- a/arch/arm/include/asm/mach-types.h
> +++ b/arch/arm/include/asm/mach-types.h
> @@ -1103,6 +1103,7 @@ extern unsigned int __machine_arch_type;
> #define MACH_TYPE_THALES_ADC 3492
> #define MACH_TYPE_UBISYS_P9D_EVP 3493
> #define MACH_TYPE_ATDGP318 3494
> +#define MACH_TYPE_MX51_NA04 3719
> #define MACH_TYPE_OMAP5_SEVM 3777
> #define MACH_TYPE_ARMADILLO_800EVA 3863
> #define MACH_TYPE_KZM9G 4140
> @@ -14201,6 +14202,18 @@ extern unsigned int __machine_arch_type;
> # define machine_is_atdgp318() (0)
> #endif
Dop this. We do not use it anymore. You can set directly your mach
number into mx51_na04.h.
>
> +#ifdef CONFIG_MACH_MX51_NA04
> +# ifdef machine_arch_type
> +# undef machine_arch_type
> +# define machine_arch_type __machine_arch_type
> +# else
> +# define machine_arch_type MACH_TYPE_MX51_NA04
> +# endif
> +# define machine_is_mx51_na04() (machine_arch_type == MACH_TYPE_MX51_NA04)
> +#else
> +# define machine_is_mx51_na04() (0)
> +#endif
> +
> #ifdef CONFIG_MACH_OMAP5_SEVM
> # ifdef machine_arch_type
> # undef machine_arch_type
> diff --git a/board/hercules/mx51_na04/Kconfig b/board/hercules/mx51_na04/Kconfig
> new file mode 100644
> index 0000000..8214328
> --- /dev/null
> +++ b/board/hercules/mx51_na04/Kconfig
> @@ -0,0 +1,15 @@
> +if TARGET_MX51_NA04
> +
> +config SYS_BOARD
> + default "mx51_na04"
> +
> +config SYS_VENDOR
> + default "hercules"
> +
> +config SYS_SOC
> + default "mx5"
> +
> +config SYS_CONFIG_NAME
> + default "mx51_na04"
> +
> +endif
> diff --git a/board/hercules/mx51_na04/MAINTAINERS b/board/hercules/mx51_na04/MAINTAINERS
> new file mode 100644
> index 0000000..7825f76
> --- /dev/null
> +++ b/board/hercules/mx51_na04/MAINTAINERS
> @@ -0,0 +1,6 @@
> +MX51_NA04 BOARD
> +M: Emil Renner Berthing <u-boot@esmil.dk>
> +S: Maintained
> +F: board/hercules/mx51_na04/
> +F: include/configs/mx51_na04.h
> +F: configs/mx51_na04_defconfig
> diff --git a/board/hercules/mx51_na04/Makefile b/board/hercules/mx51_na04/Makefile
> new file mode 100644
> index 0000000..d7d2aa7
> --- /dev/null
> +++ b/board/hercules/mx51_na04/Makefile
> @@ -0,0 +1,10 @@
> +#
> +# Copyright (C) 2014, Emil Renner Berthing <u-boot@esmil.dk>
> +# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
> +#
> +# (C) Copyright 2009 Freescale Semiconductor, Inc.
> +#
> +# SPDX-License-Identifier: GPL-2.0+
> +#
> +
> +obj-y += mx51_na04.o
> diff --git a/board/hercules/mx51_na04/mx51_na04.c b/board/hercules/mx51_na04/mx51_na04.c
> new file mode 100644
> index 0000000..c573791
> --- /dev/null
> +++ b/board/hercules/mx51_na04/mx51_na04.c
> @@ -0,0 +1,469 @@
> +/*
> + * (C) Copyright 2014 Emil Renner Berthing <u-boot@esmil.dk>
> + * (C) Copyright 2009 Freescale Semiconductor, Inc.
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <asm/io.h>
> +#include <asm/gpio.h>
> +#include <asm/arch/imx-regs.h>
> +#include <asm/arch/iomux-mx51.h>
> +#include <asm/errno.h>
> +#include <asm/arch/sys_proto.h>
> +#include <asm/arch/crm_regs.h>
> +#include <asm/arch/clock.h>
> +#include <i2c.h>
> +#include <mmc.h>
> +#include <fsl_esdhc.h>
> +#include <power/pmic.h>
> +#include <fsl_pmic.h>
> +#include <mc13892.h>
> +#include <usb/ehci-fsl.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +#define UART_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_DSE_HIGH)
> +
> +static const iomux_v3_cfg_t mx51_na04_pads[] = {
> + /* LCD */
> +#define MX51_NA04_LCD_3V3 IMX_GPIO_NR(4, 9)
> + MX51_PAD_CSI2_D12__GPIO4_9,
> +#define MX51_NA04_LVDS_POWER IMX_GPIO_NR(3, 3)
> + MX51_PAD_DI1_D0_CS__GPIO3_3,
> +#define MX51_NA04_BACKLIGHT_CTL IMX_GPIO_NR(3, 4)
> + MX51_PAD_DI1_D1_CS__GPIO3_4,
> +#define MX51_NA04_BACKLIGHT_PWM IMX_GPIO_NR(1, 2)
> + MX51_PAD_GPIO1_2__GPIO1_2,
> +
> + /* UART 1 */
> + MX51_PAD_UART1_RXD__UART1_RXD,
> + MX51_PAD_UART1_TXD__UART1_TXD,
> + NEW_PAD_CTRL(MX51_PAD_UART1_RTS__UART1_RTS, UART_PAD_CTRL),
> + NEW_PAD_CTRL(MX51_PAD_UART1_CTS__UART1_CTS, UART_PAD_CTRL),
> +
> +#ifdef CONFIG_FEC_MXC
> + /* FEC Ethernet */
> + NEW_PAD_CTRL(MX51_PAD_EIM_EB2__FEC_MDIO, PAD_CTL_HYS |
> + PAD_CTL_PUS_22K_UP | PAD_CTL_ODE |
> + PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
> + MX51_PAD_NANDF_CS3__FEC_MDC,
> + NEW_PAD_CTRL(MX51_PAD_EIM_CS3__FEC_RDATA3,
> + MX51_PAD_CTRL_2),
> + NEW_PAD_CTRL(MX51_PAD_DI_GP4__FEC_RDATA2,
> + MX51_PAD_CTRL_2),
> + NEW_PAD_CTRL(MX51_PAD_DI2_DISP_CLK__FEC_RDATA1,
> + MX51_PAD_CTRL_2),
> + NEW_PAD_CTRL(MX51_PAD_DISP2_DAT14__FEC_RDATA0,
> + MX51_PAD_CTRL_2),
> + MX51_PAD_NANDF_CS6__FEC_TDATA3,
> + MX51_PAD_NANDF_CS5__FEC_TDATA2,
> + MX51_PAD_NANDF_CS4__FEC_TDATA1,
> + MX51_PAD_DISP2_DAT15__FEC_TDATA0,
> + MX51_PAD_DISP2_DAT9__FEC_TX_EN,
> + MX51_PAD_NANDF_CS2__FEC_TX_ER,
> + MX51_PAD_DISP2_DAT13__FEC_TX_CLK,
> + NEW_PAD_CTRL(MX51_PAD_NANDF_RB2__FEC_COL,
> + MX51_PAD_CTRL_4),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_RB3__FEC_RX_CLK,
> + MX51_PAD_CTRL_4),
> + MX51_PAD_EIM_CS5__FEC_CRS,
> + MX51_PAD_EIM_CS4__FEC_RX_ER,
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D11__FEC_RX_DV,
> + MX51_PAD_CTRL_4),
> +#define MX51_NA04_PHY_RESET IMX_GPIO_NR(2, 14)
> + NEW_PAD_CTRL(MX51_PAD_EIM_A20__GPIO2_14, PAD_CTL_PUE),
> +#endif
> +
> +#ifdef CONFIG_MXC_SPI
> + /* SPI 1 */
> + NEW_PAD_CTRL(MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI, PAD_CTL_HYS |
> + PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_CSPI1_MISO__ECSPI1_MISO, PAD_CTL_HYS |
> + PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_CSPI1_SS1__ECSPI1_SS1,
> + MX51_GPIO_PAD_CTRL),
> + MX51_PAD_CSPI1_SS0__ECSPI1_SS0,
> + NEW_PAD_CTRL(MX51_PAD_CSPI1_RDY__ECSPI1_RDY, MX51_PAD_CTRL_2),
> + NEW_PAD_CTRL(MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK, PAD_CTL_HYS |
> + PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
> +#endif
> +
> + /* USB Host 1 */
> + MX51_PAD_USBH1_CLK__USBH1_CLK,
> + MX51_PAD_USBH1_DIR__USBH1_DIR,
> + MX51_PAD_USBH1_STP__USBH1_STP,
> + MX51_PAD_USBH1_NXT__USBH1_NXT,
> + MX51_PAD_USBH1_DATA0__USBH1_DATA0,
> + MX51_PAD_USBH1_DATA1__USBH1_DATA1,
> + MX51_PAD_USBH1_DATA2__USBH1_DATA2,
> + MX51_PAD_USBH1_DATA3__USBH1_DATA3,
> + MX51_PAD_USBH1_DATA4__USBH1_DATA4,
> + MX51_PAD_USBH1_DATA5__USBH1_DATA5,
> + MX51_PAD_USBH1_DATA6__USBH1_DATA6,
> + MX51_PAD_USBH1_DATA7__USBH1_DATA7,
> +#define MX51_NA04_USB_PHY_RESET IMX_GPIO_NR(2, 5)
> + MX51_PAD_EIM_D21__GPIO2_5,
> +#define MX51_NA04_USB_CLK_EN_B IMX_GPIO_NR(2, 27)
> + MX51_PAD_EIM_CS2__GPIO2_27,
> +#define MX51_NA04_USBH1_HUB_RST IMX_GPIO_NR(1, 6)
> + NEW_PAD_CTRL(MX51_PAD_GPIO1_6__GPIO1_6, 0),
> +
> + /* Power Key */
> +#define MX51_NA04_POWER_KEY IMX_GPIO_NR(2, 21)
> + NEW_PAD_CTRL(MX51_PAD_EIM_A27__GPIO2_21, PAD_CTL_HYS),
> +
> + /* Battery LED */
> +#define MX51_NA04_BATTERY_LED IMX_GPIO_NR(3, 14)
> + NEW_PAD_CTRL(MX51_PAD_CSI1_VSYNC__GPIO3_14,
> + PAD_CTL_SRE_FAST),
> +};
> +
> +int dram_init(void)
> +{
> + /* dram_init must store complete ramsize in gd->ram_size */
> + gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
> + PHYS_SDRAM_1_SIZE);
> + return 0;
> +}
> +
> +u32 get_board_rev(void)
> +{
> + u32 rev = get_cpu_rev();
> + if (!gpio_get_value(IMX_GPIO_NR(1, 22)))
> + rev |= BOARD_REV_2_0 << BOARD_VER_OFFSET;
> + return rev;
> +}
> +
> +static void init_lcd(void)
> +{
> + /* Blank the LCD */
> + gpio_direction_output(MX51_NA04_LVDS_POWER, 0);
> + gpio_direction_output(MX51_NA04_BACKLIGHT_CTL, 0);
> + gpio_direction_output(MX51_NA04_BACKLIGHT_PWM, 0);
> +
> + /* ..but keep the power on to avoid a nasty
> + * white flash when Linux takes over */
Multi-line comment style, please fix it.
> + gpio_direction_output(MX51_NA04_LCD_3V3, 1);
> +}
> +
> +static void reset_usb(void)
> +{
> + /* Turn off USB_CLK_EN_B line */
> + gpio_direction_output(MX51_NA04_USB_CLK_EN_B, 1);
> +
> + /* Assert USB hub reset */
> + gpio_direction_output(MX51_NA04_USBH1_HUB_RST, 0);
> +
> + /* Assert USB phy reset */
> + gpio_direction_output(MX51_NA04_USB_PHY_RESET, 0);
> +}
> +
> +#ifdef CONFIG_USB_EHCI_MX5
> +int board_ehci_hcd_init(int port)
> +{
> + /* De-assert USB phy reset */
> + gpio_set_value(MX51_NA04_USB_PHY_RESET, 1);
> +
> + /* Drive USB_CLK_EN_B line low */
> + gpio_direction_output(MX51_NA04_USB_CLK_EN_B, 0);
> +
> + mdelay(2);
> +
> + /* De-assert USB usb reset */
> + gpio_set_value(MX51_NA04_USBH1_HUB_RST, 1);
> + return 0;
> +}
> +#endif
> +
> +#ifdef CONFIG_MXC_SPI
I know this comes from other board, but if your board has always the
PMIC, CONFIG_MXC_SPI must simply be set, and you could drop the #ifdef here.
> +static void power_init(void)
> +{
> + unsigned int val;
> + struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)MXC_CCM_BASE;
> + struct pmic *p;
> + int ret;
> +
> + ret = pmic_init(CONFIG_FSL_PMIC_BUS);
> + if (ret)
> + return;
> +
> + p = pmic_get("FSL_PMIC");
> + if (!p)
> + return;
> +
> + /* Write needed to Power Gate 2 register */
> + pmic_reg_read(p, REG_POWER_MISC, &val);
> + val &= ~PWGT2SPIEN;
> + pmic_reg_write(p, REG_POWER_MISC, val);
> +
> + /* Externally powered */
> + pmic_reg_read(p, REG_CHARGE, &val);
> + val |= ICHRG0 | ICHRG1 | ICHRG2 | ICHRG3 | CHGAUTOB;
> + pmic_reg_write(p, REG_CHARGE, val);
> +
> + /* power up the system first */
> + pmic_reg_write(p, REG_POWER_MISC, PWUP);
> +
> + /* Set core voltage to 1.1V */
> + pmic_reg_read(p, REG_SW_0, &val);
> + val = (val & ~SWx_VOLT_MASK) | SWx_1_100V;
> + pmic_reg_write(p, REG_SW_0, val);
> +
> + /* Setup VCC (SW2) to 1.25 */
> + pmic_reg_read(p, REG_SW_1, &val);
> + val = (val & ~SWx_VOLT_MASK) | SWx_1_250V;
> + pmic_reg_write(p, REG_SW_1, val);
> +
> + /* Setup 1V2_DIG1 (SW3) to 1.25 */
> + pmic_reg_read(p, REG_SW_2, &val);
> + val = (val & ~SWx_VOLT_MASK) | SWx_1_250V;
> + pmic_reg_write(p, REG_SW_2, val);
> + udelay(50);
> +
> + /* Raise the core frequency to 800MHz */
> + writel(0x0, &mxc_ccm->cacrr);
> +
> + /* Set switchers in Auto in NORMAL mode & STANDBY mode */
> + /* Setup the switcher mode for SW1 & SW2*/
Multiline comment - please fix it globally.
> + pmic_reg_read(p, REG_SW_4, &val);
> + val = (val & ~((SWMODE_MASK << SWMODE1_SHIFT) |
> + (SWMODE_MASK << SWMODE2_SHIFT)));
> + val |= (SWMODE_AUTO_AUTO << SWMODE1_SHIFT) |
> + (SWMODE_AUTO_AUTO << SWMODE2_SHIFT);
> + pmic_reg_write(p, REG_SW_4, val);
> +
> + /* Setup the switcher mode for SW3 & SW4 */
> + pmic_reg_read(p, REG_SW_5, &val);
> + val = (val & ~((SWMODE_MASK << SWMODE3_SHIFT) |
> + (SWMODE_MASK << SWMODE4_SHIFT)));
> + val |= (SWMODE_AUTO_AUTO << SWMODE3_SHIFT) |
> + (SWMODE_AUTO_AUTO << SWMODE4_SHIFT);
> + pmic_reg_write(p, REG_SW_5, val);
> +
> + /* Set VDIG to 1.65V, VGEN3 to 1.8V, VCAM to 2.6V */
> + pmic_reg_read(p, REG_SETTING_0, &val);
> + val &= ~(VCAM_MASK | VGEN3_MASK | VDIG_MASK);
> + val |= VDIG_1_65 | VGEN3_1_8 | VCAM_2_6;
> + pmic_reg_write(p, REG_SETTING_0, val);
> +
> + /* Set VVIDEO to 2.775V, VAUDIO to 3V, VSD to 3.15V */
> + pmic_reg_read(p, REG_SETTING_1, &val);
> + val &= ~(VVIDEO_MASK | VSD_MASK | VAUDIO_MASK);
> + val |= VSD_3_15 | VAUDIO_3_0 | VVIDEO_2_775;
> + pmic_reg_write(p, REG_SETTING_1, val);
> +
> + /* Configure VGEN3 and VCAM regulators to use external PNP */
> + val = VGEN3CONFIG | VCAMCONFIG;
> + pmic_reg_write(p, REG_MODE_1, val);
> + udelay(200);
> +
> + /* Enable VGEN3, VCAM, VAUDIO, VVIDEO, VSD regulators */
> + val = VGEN3EN | VGEN3CONFIG | VCAMEN | VCAMCONFIG |
> + VVIDEOEN | VAUDIOEN | VSDEN;
> + pmic_reg_write(p, REG_MODE_1, val);
> +}
> +#else
> +static inline void power_init(void) {}
> +#endif
> +
> +#ifdef CONFIG_FEC_MXC
> +static void reset_fec(void)
> +{
> + gpio_direction_output(MX51_NA04_PHY_RESET, 0);
> + udelay(500);
> + gpio_set_value(MX51_NA04_PHY_RESET, 1);
> +}
> +#else
> +static inline void reset_fec(void) {}
> +#endif
> +
> +#ifdef CONFIG_FSL_ESDHC
> +int board_mmc_init(bd_t *bis)
> +{
> + static const iomux_v3_cfg_t sd1_pads[] = {
> + NEW_PAD_CTRL(MX51_PAD_SD1_CMD__SD1_CMD,
> + PAD_CTL_DSE_MAX | PAD_CTL_HYS |
> + PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD1_CLK__SD1_CLK,
> + PAD_CTL_DSE_MAX |
> + PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD1_DATA0__SD1_DATA0,
> + PAD_CTL_DSE_MAX | PAD_CTL_HYS |
> + PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD1_DATA1__SD1_DATA1,
> + PAD_CTL_DSE_MAX | PAD_CTL_HYS |
> + PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD1_DATA2__SD1_DATA2,
> + PAD_CTL_DSE_MAX | PAD_CTL_HYS |
> + PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD1_DATA3__SD1_DATA3,
> + PAD_CTL_DSE_MAX | PAD_CTL_HYS |
> + PAD_CTL_PUS_100K_DOWN | PAD_CTL_SRE_FAST),
> +#define MX51_NA04_SDHC1_CD IMX_GPIO_NR(1, 0)
> + NEW_PAD_CTRL(MX51_PAD_GPIO1_0__GPIO1_0, PAD_CTL_HYS),
> +#define MX51_NA04_SDHC1_WP IMX_GPIO_NR(1, 1)
> + NEW_PAD_CTRL(MX51_PAD_GPIO1_1__GPIO1_1, PAD_CTL_HYS),
> + };
> +
> + static const iomux_v3_cfg_t sd2_pads[] = {
> + NEW_PAD_CTRL(MX51_PAD_SD2_CMD__SD2_CMD,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD2_CLK__SD2_CLK,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD2_DATA0__SD2_DATA0,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD2_DATA1__SD2_DATA1,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD2_DATA2__SD2_DATA2,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_SD2_DATA3__SD2_DATA3,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> +#define MX51_NA04_SDHC2_CD IMX_GPIO_NR(1, 7)
> + NEW_PAD_CTRL(MX51_PAD_GPIO1_7__GPIO1_7, PAD_CTL_HYS),
> +#define MX51_NA04_SDHC2_WP IMX_GPIO_NR(1, 5)
> + NEW_PAD_CTRL(MX51_PAD_GPIO1_5__GPIO1_5, PAD_CTL_HYS),
> + };
> +
> + static const iomux_v3_cfg_t sd3_pads[] = {
> + NEW_PAD_CTRL(MX51_PAD_NANDF_RDY_INT__SD3_CMD,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_CS7__SD3_CLK,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D8__SD3_DATA0,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D9__SD3_DATA1,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D10__SD3_DATA2,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_RB0__SD3_DATA3,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D12__SD3_DAT4,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D13__SD3_DAT5,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D14__SD3_DAT6,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + NEW_PAD_CTRL(MX51_PAD_NANDF_D15__SD3_DAT7,
> + PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
> + };
> +
> + static struct fsl_esdhc_cfg esdhc_cfg[] = {
> + {
> + .esdhc_base = MMC_SDHC1_BASE_ADDR,
> + .max_bus_width = 4,
> + },
> + {
> + .esdhc_base = MMC_SDHC2_BASE_ADDR,
> + .max_bus_width = 4,
> + },
> + {
> + .esdhc_base = MMC_SDHC3_BASE_ADDR,
> + .max_bus_width = 8,
> + },
> + };
> + u32 index;
> + int ret;
> +
> + for (index = 0; index < CONFIG_SYS_FSL_ESDHC_NUM; index++) {
> + switch (index) {
> + case 0:
> + imx_iomux_v3_setup_multiple_pads(sd1_pads,
> + ARRAY_SIZE(sd1_pads));
> + gpio_direction_input(MX51_NA04_SDHC1_CD);
> + gpio_direction_input(MX51_NA04_SDHC1_WP);
> + esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
> + break;
> + case 1:
> + imx_iomux_v3_setup_multiple_pads(sd2_pads,
> + ARRAY_SIZE(sd2_pads));
> + gpio_direction_input(MX51_NA04_SDHC2_CD);
> + gpio_direction_input(MX51_NA04_SDHC2_WP);
> + esdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
> + break;
> + case 2:
> + imx_iomux_v3_setup_multiple_pads(sd3_pads,
> + ARRAY_SIZE(sd3_pads));
> + esdhc_cfg[2].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
> + break;
> + default:
> + printf("Warning: you configured more ESDHC controllers(%d) than supported by the board(3)\n",
> + CONFIG_SYS_FSL_ESDHC_NUM);
> + return -EINVAL;
> + }
> + ret = fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
> + if (ret)
> + return ret;
> + }
> + return 0;
> +}
> +
> +int board_mmc_getcd(struct mmc *mmc)
> +{
> + struct fsl_esdhc_cfg *cfg = mmc->priv;
> +
> + switch (cfg->esdhc_base) {
> + case MMC_SDHC1_BASE_ADDR:
> + return !gpio_get_value(MX51_NA04_SDHC1_CD);
> + case MMC_SDHC2_BASE_ADDR:
> + return !gpio_get_value(MX51_NA04_SDHC2_CD);
> + case MMC_SDHC3_BASE_ADDR:
> + return 1;
> + }
> +
> + return 0;
> +}
> +
> +int board_mmc_getwp(struct mmc *mmc)
> +{
> + struct fsl_esdhc_cfg *cfg = mmc->priv;
> +
> + switch (cfg->esdhc_base) {
> + case MMC_SDHC1_BASE_ADDR:
> + return !!gpio_get_value(MX51_NA04_SDHC1_WP);
> + case MMC_SDHC2_BASE_ADDR:
> + return !!gpio_get_value(MX51_NA04_SDHC2_WP);
> + case MMC_SDHC3_BASE_ADDR:
> + return 0;
> + }
> +
> + return 0;
> +}
> +#endif
> +
> +int board_early_init_f(void)
> +{
> + imx_iomux_v3_setup_multiple_pads(mx51_na04_pads,
> + ARRAY_SIZE(mx51_na04_pads));
> + init_lcd();
> +
> + return 0;
> +}
> +
> +int board_init(void)
> +{
> + /* Address of boot parameters */
> + gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
> +
> + gpio_direction_input(MX51_NA04_POWER_KEY);
> + gpio_direction_output(MX51_NA04_BATTERY_LED, 0);
> + reset_usb();
> +
> + return 0;
> +}
> +
> +int board_late_init(void)
> +{
> + power_init();
> + reset_fec();
> +
> + return 0;
> +}
> +
> +int checkboard(void)
> +{
> + puts("Board: Hercules eCAFE Slim/EX HD\n");
> +
> + return 0;
> +}
> diff --git a/configs/mx51_na04_defconfig b/configs/mx51_na04_defconfig
> new file mode 100644
> index 0000000..eff61c2
> --- /dev/null
> +++ b/configs/mx51_na04_defconfig
> @@ -0,0 +1,3 @@
> +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx51evk/imximage.cfg"
> +CONFIG_ARM=y
> +CONFIG_TARGET_MX51_NA04=y
> diff --git a/include/configs/mx51_na04.h b/include/configs/mx51_na04.h
> new file mode 100644
> index 0000000..70e7fc2
> --- /dev/null
> +++ b/include/configs/mx51_na04.h
> @@ -0,0 +1,246 @@
> +/*
> + * Copyright (C) 2014, Emil Renner Berthing <u-boot@esmil.dk>
> + * Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
> + *
> + * (C) Copyright 2009 Freescale Semiconductor, Inc.
> + *
> + * Configuration settings for the Hercules eCAFE Slim/EX HD laptops.
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> + /* High Level Configuration Options */
> +
> +#define CONFIG_MX51 /* in a mx51 */
> +
> +#define CONFIG_DISPLAY_CPUINFO
> +#define CONFIG_DISPLAY_BOARDINFO
> +
You can add here CONFIG_MACH_TYPE <your number>
> +#define CONFIG_SYS_TEXT_BASE 0x97800000
> +
> +#include <asm/arch/imx-regs.h>
> +
> +#define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */
> +#define CONFIG_SETUP_MEMORY_TAGS
> +#define CONFIG_INITRD_TAG
> +#define CONFIG_REVISION_TAG
> +#define CONFIG_SYS_GENERIC_BOARD
> +
> +#define CONFIG_OF_LIBFDT
> +
> +#define CONFIG_MACH_TYPE MACH_TYPE_MX51_NA04
> +/*
> + * Size of malloc() pool
> + */
> +#define CONFIG_SYS_MALLOC_LEN (10 * 1024 * 1024)
> +
> +#define CONFIG_BOARD_LATE_INIT
> +
> +/*
> + * Hardware drivers
> + */
> +#define CONFIG_FSL_IIM
> +#define CONFIG_CMD_FUSE
> +
> +#define CONFIG_MXC_UART
> +#define CONFIG_MXC_UART_BASE UART1_BASE
> +#define CONFIG_MXC_GPIO
> +
> +/*
> + * SPI Configs
> + * */
> +#define CONFIG_CMD_SPI
> +
> +#define CONFIG_MXC_SPI
> +
> +/* PMIC Controller */
> +#define CONFIG_POWER
> +#define CONFIG_POWER_SPI
> +#define CONFIG_POWER_FSL
> +#define CONFIG_FSL_PMIC_BUS 0
> +#define CONFIG_FSL_PMIC_CS 0
> +#define CONFIG_FSL_PMIC_CLK 2500000
> +#define CONFIG_FSL_PMIC_MODE (SPI_MODE_0 | SPI_CS_HIGH)
> +#define CONFIG_FSL_PMIC_BITLEN 32
> +#define CONFIG_RTC_MC13XXX
> +
> +/*
> + * MMC Configs
> + */
> +#define CONFIG_FSL_ESDHC
> +#define CONFIG_SYS_FSL_ESDHC_ADDR MMC_SDHC1_BASE_ADDR
> +#define CONFIG_SYS_FSL_ESDHC_NUM 3
> +
> +#define CONFIG_MMC
> +
> +#define CONFIG_CMD_MMC
> +#define CONFIG_GENERIC_MMC
> +#define CONFIG_CMD_FAT
> +#define CONFIG_DOS_PARTITION
> +
> +/*
> + * Eth Configs
> + */
> +#define CONFIG_MII
> +
> +#define CONFIG_FEC_MXC
> +#define IMX_FEC_BASE FEC_BASE_ADDR
> +#define CONFIG_FEC_MXC_PHYADDR 0x1F
> +#define CONFIG_ETHPRIME "FEC0"
> +#define CONFIG_ARP_TIMEOUT 200UL
> +
> +#define CONFIG_CMD_PING
> +#define CONFIG_CMD_DHCP
> +#define CONFIG_CMD_MII
> +#define CONFIG_CMD_NET
> +
> +/* USB Configs */
> +#define CONFIG_CMD_USB
> +#define CONFIG_CMD_FAT
> +#define CONFIG_USB_EHCI
> +#define CONFIG_USB_EHCI_MX5
> +#define CONFIG_USB_STORAGE
> +#define CONFIG_MXC_USB_PORT 1
> +#define CONFIG_MXC_USB_PORTSC PORT_PTS_ULPI
> +#define CONFIG_MXC_USB_FLAGS MXC_EHCI_POWER_PINS_ENABLED
> +
> +/* allow to overwrite serial and ethaddr */
> +#define CONFIG_ENV_OVERWRITE
> +#define CONFIG_CONS_INDEX 1
> +#define CONFIG_BAUDRATE 115200
> +
> +/***********************************************************
> + * Command definition
> + ***********************************************************/
> +
> +#include <config_cmd_default.h>
> +#define CONFIG_CMD_BOOTZ
> +#undef CONFIG_CMD_IMLS
> +#ifndef CONFIG_FEC_MXC
> +#undef CONFIG_CMD_NET
> +#endif
> +
> +#define CONFIG_CMD_DATE
> +#define CONFIG_CMD_GPIO
> +#define CONFIG_CMD_INI
> +
> +#define CONFIG_BOOTDELAY 0
> +#define CONFIG_PREBOOT "if gpio i ${powerkey};then setenv bootdelay 1;fi"
> +
> +#define CONFIG_LOADADDR 0x92000000 /* loadaddr env var */
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> + "fdt_addr=0x91000000\0" \
> + "initrd_addr=0x93000000\0" \
> + "powerkey=53\0" \
> + "batteryled=78\0" \
> + "mmcdev=1\0" \
> + "mmcpart=1\0" \
> + "load=fatload\0" \
> + "section=default\0" \
> + "linux=zImage\0" \
> + "devicetree=imx51-na04.dtb\0" \
> + "options=console=ttymxc0,115200n8 console=tty1 root=/dev/mmcblk0p2 ro rootwait\0" \
> + "mmcinit=" \
> + "if ${load} mmc ${mmcdev}:${mmcpart} ${loadaddr} boot.ini;then " \
> + "ini '' ${loadaddr} ${filesize};" \
> + "ini ${section} ${loadaddr} ${filesize};" \
> + "fi\0" \
> + "mmcboot=" \
> + "setenv bootargs ${options};" \
> + "if ${load} mmc ${mmcdev}:${mmcpart} ${loadaddr} ${linux};then " \
> + "if test -n ${devicetree};then " \
> + "if ${load} mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${devicetree};then " \
> + "if test -n ${initrd};then " \
> + "if ${load} mmc ${mmcdev}:${mmcpart} ${initrd_addr} ${initrd};then " \
> + "bootz ${loadaddr} ${initrd_addr} ${fdt_addr};" \
> + "fi;" \
> + "else " \
> + "bootz ${loadaddr} - ${fdt_addr};" \
> + "fi;" \
> + "fi;" \
> + "else " \
> + "if test -n ${initrd};then " \
> + "if ${load} mmc ${mmcdev}:${mmcpart} ${initrd_addr} ${initrd};then " \
> + "bootz ${loadaddr} ${initrd_addr};" \
> + "fi;" \
> + "else " \
> + "bootz ${loadaddr};" \
> + "fi;" \
> + "fi;" \
> + "fi\0" \
> + "error=" \
> + "while true;do " \
> + "gpio s ${batteryled};sleep 1;" \
> + "gpio c ${batteryled};sleep 1;" \
> + "done"
> +
> +#define CONFIG_BOOTCOMMAND \
> + "if gpio i ${powerkey};then " \
> + "gpio s ${batteryled};" \
> + "setenv section fallback;" \
> + "fi;" \
> + "setenv bootcmd run mmcboot;" \
> + "run mmcinit;" \
> + "run bootcmd;" \
> + "run error"
> +
> +/*
> + * Miscellaneous configurable options
> + */
> +#define CONFIG_SYS_LONGHELP /* undef to save memory */
> +#define CONFIG_SYS_HUSH_PARSER /* use "hush" command parser */
> +#define CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
> +/* Print Buffer Size */
> +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
> +#define CONFIG_SYS_MAXARGS 16 /* max number of command args */
> +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size */
> +
> +#define CONFIG_SYS_MEMTEST_START 0x90000000
> +#define CONFIG_SYS_MEMTEST_END 0x90010000
> +
> +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
> +
> +#define CONFIG_CMDLINE_EDITING
> +
> +/*-----------------------------------------------------------------------
> + * Physical Memory Map
> + */
> +#define CONFIG_NR_DRAM_BANKS 1
> +#define PHYS_SDRAM_1 CSD0_BASE_ADDR
> +#define PHYS_SDRAM_1_SIZE (512 * 1024 * 1024)
> +
> +#define CONFIG_SYS_SDRAM_BASE (PHYS_SDRAM_1)
> +#define CONFIG_SYS_INIT_RAM_ADDR (IRAM_BASE_ADDR)
> +#define CONFIG_SYS_INIT_RAM_SIZE (IRAM_SIZE)
> +
> +#define CONFIG_BOARD_EARLY_INIT_F
> +
> +#define CONFIG_SYS_INIT_SP_OFFSET \
> + (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
> +#define CONFIG_SYS_INIT_SP_ADDR \
> + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
> +
> +#define CONFIG_SYS_DDR_CLKSEL 0
> +#define CONFIG_SYS_CLKTL_CBCDR 0x59E35100
> +#define CONFIG_SYS_MAIN_PWR_ON
> +
> +/*-----------------------------------------------------------------------
> + * FLASH and environment organization
> + */
> +#define CONFIG_SYS_NO_FLASH
> +
> +#define CONFIG_ENV_SIZE (8 * 1024)
> +
> +#define CONFIG_ENV_IS_NOWHERE
> +#ifndef CONFIG_ENV_IS_NOWHERE
> +#define CONFIG_ENV_IS_IN_MMC
> +#define CONFIG_SYS_MMC_ENV_DEV 1
> +#define CONFIG_ENV_OFFSET (6 * 64 * 1024)
> +#endif
> +
> +#endif
>
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
prev parent reply other threads:[~2014-12-19 13:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-07 17:59 [U-Boot] [PATCH v1] mx51_na04: add support for the Hercules eCAFE laptop Emil Renner Berthing
2014-12-19 13:19 ` Stefano Babic [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=549425E5.80809@denx.de \
--to=sbabic@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.