[U-Boot] [PATCH v2] ts4800: update environment to boot with device tree

2016-04-21 Thread Damien Riegel
This commit updates the environment variables to be able to boot with a
device tree. The expected partition layout on the SD card is:
 - partition 1: type 0xDA, contains u-boot.bin
 - partition 2: type 0xC (fat), contains zImage and device tree
 - partition 3: type 0x83, root filesystem.

Signed-off-by: Damien Riegel <damien.rie...@savoirfairelinux.com>
---
Changes in v2:
 - do not mess with LOADADDR anymore

 include/configs/ts4800.h | 17 +
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
index fcc9d80..b369b27 100644
--- a/include/configs/ts4800.h
+++ b/include/configs/ts4800.h
@@ -106,19 +106,28 @@
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
"script=boot.scr\0" \
-   "image=uImage\0" \
+   "image=zImage\0" \
+   "fdt_file=imx51-ts4800.dtb\0" \
+   "fdt_addr=0x90fe\0" \
"mmcdev=0\0" \
-   "mmcpart=1\0" \
-   "mmcargs=setenv bootargs root=/dev/mmcblk0p2 rootwait rw\0" \
+   "mmcpart=2\0" \
+   "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+   "mmcargs=setenv bootargs root=${mmcroot}\0" \
"addtty=setenv bootargs ${bootargs} console=ttymxc0,${baudrate}\0" \
"loadbootscript=" \
"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
"bootscript=echo Running bootscript from mmc ...; " \
"source\0" \
"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image};\0" \
+   "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
"mmcboot=echo Booting from mmc ...; " \
"run mmcargs addtty; " \
-"bootm; "
+   "if run loadfdt; then " \
+   "bootz ${loadaddr} - ${fdt_addr}; " \
+   "else " \
+   "echo ERR: cannot load FDT; " \
+   "fi; "
+
 
 #define CONFIG_BOOTCOMMAND \
"mmc dev ${mmcdev}; if mmc rescan; then " \
-- 
2.5.0

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] ts4800: update environment to boot with device tree

2016-04-21 Thread Damien Riegel
This commit updates the environment variables to be able to boot with a
device tree. The expected partition layout on the SD card is:
 - partition 1: type 0xDA, contains u-boot.bin
 - partition 2: type 0xC (fat), contains zImage and device tree
 - partition 3: type 0x83, root filesystem.

Signed-off-by: Damien Riegel <damien.rie...@savoirfairelinux.com>
---
 include/configs/ts4800.h | 19 ++-
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
index fcc9d80..8722797 100644
--- a/include/configs/ts4800.h
+++ b/include/configs/ts4800.h
@@ -102,23 +102,32 @@
 
 #define CONFIG_BOOTDELAY   1
 
-#define CONFIG_LOADADDR0x9100  /* loadaddr env var */
+#define CONFIG_LOADADDR0x90008000  /* loadaddr env var */
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
"script=boot.scr\0" \
-   "image=uImage\0" \
+   "image=zImage\0" \
+   "fdt_file=imx51-ts4800.dtb\0" \
+   "fdt_addr=0x9100\0" \
"mmcdev=0\0" \
-   "mmcpart=1\0" \
-   "mmcargs=setenv bootargs root=/dev/mmcblk0p2 rootwait rw\0" \
+   "mmcpart=2\0" \
+   "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+   "mmcargs=setenv bootargs root=${mmcroot}\0" \
"addtty=setenv bootargs ${bootargs} console=ttymxc0,${baudrate}\0" \
"loadbootscript=" \
"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
"bootscript=echo Running bootscript from mmc ...; " \
"source\0" \
"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image};\0" \
+   "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
"mmcboot=echo Booting from mmc ...; " \
"run mmcargs addtty; " \
-"bootm; "
+   "if run loadfdt; then " \
+   "bootz ${loadaddr} - ${fdt_addr}; " \
+   "else " \
+   "echo ERR: cannot load FDT; " \
+   "fi; "
+
 
 #define CONFIG_BOOTCOMMAND \
"mmc dev ${mmcdev}; if mmc rescan; then " \
-- 
2.5.0

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] ts4800: add CONFIG_OF_LIBFDT

2015-10-06 Thread Damien Riegel
Linux only boots IMX.51-based boards with device tree, so this board
would benefit from supporting it.

Signed-off-by: Damien Riegel <damien.rie...@savoirfairelinux.com>
Cc: Stefano Babic <sba...@denx.de>
---
 include/configs/ts4800.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
index 21f1555..1624a1b 100644
--- a/include/configs/ts4800.h
+++ b/include/configs/ts4800.h
@@ -24,6 +24,8 @@
 
 #define CONFIG_HW_WATCHDOG
 
+#define CONFIG_OF_LIBFDT
+
 #define CONFIG_MACH_TYPE   MACH_TYPE_TS48XX
 
 /* text base address used when linking */
-- 
2.1.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] TS4800 patch status

2015-08-12 Thread Damien Riegel
Hi,

I submitted patches for TS4800 board in June [1] and cc'ed Stefano Babic
as he is the maintainer for IMX, but I think they somehow ended stuck in
York Sun's patch queue [2].

Stefano, would you consider taking these patches into your tree ? Or
maybe something is not good with them.

Regards,
Damien

[1] http://lists.denx.de/pipermail/u-boot/2015-June/217824.html
[2] https://patchwork.ozlabs.org/patch/489816/

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 2/2] ARM: ts4800: add ethernet support

2015-06-30 Thread Damien Riegel
This commit adds ethernet support to the TS4800. Note that the
MAC address is not fused on this board and have to be read from
FEC PALR PAUR registers (this is how the kernel provided by
Technologic Systems does it).

signed-off-by: Damien Riegel damien.rie...@savoirfairelinux.com
Cc: Stefano Babic sba...@denx.de
---
Changes for v2:
  - Reorder pads

 arch/arm/include/asm/arch-mx5/iomux-mx51.h |  11 +++
 board/technologic/ts4800/ts4800.c  | 103 +
 include/configs/ts4800.h   |  16 +
 3 files changed, 130 insertions(+)

diff --git a/arch/arm/include/asm/arch-mx5/iomux-mx51.h 
b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
index 70aaa37..b7b1695 100644
--- a/arch/arm/include/asm/arch-mx5/iomux-mx51.h
+++ b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
@@ -184,8 +184,19 @@ enum {
MX51_PAD_DISPB2_SER_DIO__GPIO3_6= IOMUX_PAD(0x6c0, 0x2c0, 4, 
0x98c, 1, MX51_GPIO_PAD_CTRL),
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_PIN2__FEC_MDC  = IOMUX_PAD(0x74C, 0x344, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK = IOMUX_PAD(0x754, 0x34c, 0, 
__NA_, 0, NO_PAD_CTRL),
MX51_PAD_DI_GP4__DI2_PIN15  = IOMUX_PAD(0x758, 0x350, 4, 
__NA_, 0, NO_PAD_CTRL),
+   MX51_PAD_DISP2_DAT6__FEC_TDAT1  = IOMUX_PAD(0x774, 0x36C, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT7__FEC_TDAT2  = IOMUX_PAD(0x778, 0x370, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT8__FEC_TDAT3  = IOMUX_PAD(0x77C, 0x374, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT9__FEC_TX_EN  = IOMUX_PAD(0x780, 0x378, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT10__FEC_COL   = IOMUX_PAD(0x784, 0x37C, 2, 
0x94c, 0x1, MX51_PAD_CTRL_2),
+   MX51_PAD_DISP2_DAT11__FEC_RXCLK = IOMUX_PAD(0x788, 0x380, 2, 
0x968, 0x1, MX51_PAD_CTRL_2),
+   MX51_PAD_DISP2_DAT12__FEC_RX_DV = IOMUX_PAD(0x78C, 0x384, 2, 
0x96c, 0x1, MX51_PAD_CTRL_4),
+   MX51_PAD_DISP2_DAT13__FEC_TX_CLK= IOMUX_PAD(0x790, 0x388, 2, 
0x974, 0x1, MX51_PAD_CTRL_4),
+   MX51_PAD_DISP2_DAT14__FEC_RDAT0 = IOMUX_PAD(0x794, 0x38C, 2, 
0x958, 0x1, MX51_PAD_CTRL_4),
+   MX51_PAD_DISP2_DAT15__FEC_TDAT0 = IOMUX_PAD(0x798, 0x390, 2, 
0x0, 0, MX51_PAD_CTRL_5),
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),
diff --git a/board/technologic/ts4800/ts4800.c 
b/board/technologic/ts4800/ts4800.c
index 0a8d43e..6ef15e1 100644
--- a/board/technologic/ts4800/ts4800.c
+++ b/board/technologic/ts4800/ts4800.c
@@ -21,6 +21,9 @@
 #include fsl_esdhc.h
 #include mc13892.h
 
+#include malloc.h
+#include netdev.h
+#include phy.h
 #include ts4800.h
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -62,6 +65,36 @@ static void setup_iomux_uart(void)
imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
 }
 
+static void setup_iomux_fec(void)
+{
+   static const iomux_v3_cfg_t fec_pads[] = {
+   NEW_PAD_CTRL(MX51_PAD_EIM_EB2__FEC_MDIO,
+   PAD_CTL_HYS |
+   PAD_CTL_PUS_22K_UP |
+   PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
+   MX51_PAD_EIM_EB3__FEC_RDATA1,
+   NEW_PAD_CTRL(MX51_PAD_EIM_CS2__FEC_RDATA2, PAD_CTL_HYS),
+   MX51_PAD_EIM_CS3__FEC_RDATA3,
+   MX51_PAD_NANDF_CS2__FEC_TX_ER,
+   MX51_PAD_EIM_CS5__FEC_CRS,
+   MX51_PAD_EIM_CS4__FEC_RX_ER,
+   /* PAD used on TS4800 */
+   MX51_PAD_DI2_PIN2__FEC_MDC,
+   MX51_PAD_DISP2_DAT14__FEC_RDAT0,
+   MX51_PAD_DISP2_DAT10__FEC_COL,
+   MX51_PAD_DISP2_DAT11__FEC_RXCLK,
+   MX51_PAD_DISP2_DAT15__FEC_TDAT0,
+   MX51_PAD_DISP2_DAT6__FEC_TDAT1,
+   MX51_PAD_DISP2_DAT7__FEC_TDAT2,
+   MX51_PAD_DISP2_DAT8__FEC_TDAT3,
+   MX51_PAD_DISP2_DAT9__FEC_TX_EN,
+   MX51_PAD_DISP2_DAT13__FEC_TX_CLK,
+   MX51_PAD_DISP2_DAT12__FEC_RX_DV,
+   };
+
+   imx_iomux_v3_setup_multiple_pads(fec_pads, ARRAY_SIZE(fec_pads));
+}
+
 #ifdef CONFIG_FSL_ESDHC
 int board_mmc_getcd(struct mmc *mmc)
 {
@@ -113,6 +146,7 @@ int board_mmc_init(bd_t *bis)
 int board_early_init_f(void)
 {
setup_iomux_uart();
+   setup_iomux_fec();
 
return 0;
 }
@@ -126,6 +160,75 @@ int board_init(void)
 }
 
 /*
+ * Read the MAC address from FEC's registers PALR PAUR.
+ * User

[U-Boot] [PATCH v2 1/2] ARM: ts4800: add basic board support

2015-06-30 Thread Damien Riegel
From: Lucile Quirion lucile.quir...@savoirfairelinux.com

This commit adds basic support including:
MMC, Serial console, TS4800 watchdog

The config use CONFIG_SKIP_LOWLEVEL_INIT as U-boot is used as a second
stage bootloader.

Signed-off-by: Lucile Quirion lucile.quir...@savoirfairelinux.com
signed-off-by: Damien Riegel damien.rie...@savoirfairelinux.com
Cc: Stefano Babic sba...@denx.de
---
Changes for v2:
  - wtd: Use a struct to map register
  - wtd: Remove register read, it is write only
  - Remove unused #define CONFIG_TS4800
  - Cosmetic change to return statement in board_mmc_init
  - Rebase on v2015.07-rc3

 arch/arm/Kconfig |   5 ++
 board/technologic/ts4800/Kconfig |  15 
 board/technologic/ts4800/MAINTAINERS |   6 ++
 board/technologic/ts4800/Makefile|   7 ++
 board/technologic/ts4800/ts4800.c| 154 +++
 board/technologic/ts4800/ts4800.h|  16 
 configs/ts4800_defconfig |   4 +
 include/configs/ts4800.h | 169 +++
 8 files changed, 376 insertions(+)
 create mode 100644 board/technologic/ts4800/Kconfig
 create mode 100644 board/technologic/ts4800/MAINTAINERS
 create mode 100644 board/technologic/ts4800/Makefile
 create mode 100644 board/technologic/ts4800/ts4800.c
 create mode 100644 board/technologic/ts4800/ts4800.h
 create mode 100644 configs/ts4800_defconfig
 create mode 100644 include/configs/ts4800.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 0829235..36978c4 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -654,6 +654,10 @@ config TARGET_SNOWBALL
bool Support snowball
select CPU_V7
 
+config TARGET_TS4800
+   bool Support TS4800
+   select CPU_V7
+
 config TARGET_U8500_HREF
bool Support u8500_href
select CPU_V7
@@ -974,6 +978,7 @@ source board/toradex/colibri_pxa270/Kconfig
 source board/toradex/colibri_vf/Kconfig
 source board/tqc/tqma6/Kconfig
 source board/trizepsiv/Kconfig
+source board/technologic/ts4800/Kconfig
 source board/ttcontrol/vision2/Kconfig
 source board/udoo/Kconfig
 source board/vpac270/Kconfig
diff --git a/board/technologic/ts4800/Kconfig b/board/technologic/ts4800/Kconfig
new file mode 100644
index 000..a28d5e4
--- /dev/null
+++ b/board/technologic/ts4800/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TS4800
+
+config SYS_BOARD
+   default ts4800
+
+config SYS_VENDOR
+   default technologic
+
+config SYS_SOC
+   default mx5
+
+config SYS_CONFIG_NAME
+   default ts4800
+
+endif
diff --git a/board/technologic/ts4800/MAINTAINERS 
b/board/technologic/ts4800/MAINTAINERS
new file mode 100644
index 000..e013ee4
--- /dev/null
+++ b/board/technologic/ts4800/MAINTAINERS
@@ -0,0 +1,6 @@
+TS4800 BOARD
+M: Lucile Quirion lucile.quir...@savoirfairelinux.com
+S: Maintained
+F: board/ts/ts4800/
+F: include/configs/ts4800.h
+F: configs/ts4800_defconfig
diff --git a/board/technologic/ts4800/Makefile 
b/board/technologic/ts4800/Makefile
new file mode 100644
index 000..e9f1a37
--- /dev/null
+++ b/board/technologic/ts4800/Makefile
@@ -0,0 +1,7 @@
+#
+# (C) Copyright 2015 Savoir-faire Linux
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y  += ts4800.o
diff --git a/board/technologic/ts4800/ts4800.c 
b/board/technologic/ts4800/ts4800.c
new file mode 100644
index 000..0a8d43e
--- /dev/null
+++ b/board/technologic/ts4800/ts4800.c
@@ -0,0 +1,154 @@
+/*
+ * (C) Copyright 2015 Savoir-faire Linux Inc.
+ *
+ * Derived from MX51EVK code by
+ *   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 asm/imx-common/mx5_video.h
+#include mmc.h
+#include fsl_esdhc.h
+#include mc13892.h
+
+#include ts4800.h
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_FSL_ESDHC
+struct fsl_esdhc_cfg esdhc_cfg[2] = {
+   {MMC_SDHC1_BASE_ADDR},
+   {MMC_SDHC2_BASE_ADDR},
+};
+#endif
+
+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;
+}
+
+#define UART_PAD_CTRL  (PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_DSE_HIGH)
+
+static void setup_iomux_uart(void)
+{
+   static const iomux_v3_cfg_t uart_pads[] = {
+   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

[U-Boot] [PATCH 0/2] ARM: ts4800: add board support

2015-06-15 Thread Damien Riegel
This patchset adds support for TS4800, a Technologic Systems' board.
This board is a bit peculiar because most of the init is done by the
FPGA and U-Boot is used as a second stage bootloader.

Files have been put in board/technologic/ to follow the same convention
as Technologic Systems [1].

[1] https://github.com/embeddedarm/u-boot

Cc: Stefano Babic sba...@denx.de

Damien Riegel (1):
  ARM: ts4800: add ethernet support

Lucile Quirion (1):
  ARM: ts4800: add basic board support

 arch/arm/Kconfig   |   5 +
 arch/arm/include/asm/arch-mx5/iomux-mx51.h |  11 ++
 board/technologic/ts4800/Kconfig   |  15 ++
 board/technologic/ts4800/MAINTAINERS   |   6 +
 board/technologic/ts4800/Makefile  |   7 +
 board/technologic/ts4800/ts4800.c  | 259 +
 configs/ts4800_defconfig   |   2 +
 include/configs/ts4800.h   | 187 +
 8 files changed, 492 insertions(+)
 create mode 100644 board/technologic/ts4800/Kconfig
 create mode 100644 board/technologic/ts4800/MAINTAINERS
 create mode 100644 board/technologic/ts4800/Makefile
 create mode 100644 board/technologic/ts4800/ts4800.c
 create mode 100644 configs/ts4800_defconfig
 create mode 100644 include/configs/ts4800.h

-- 
2.1.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 2/2] ARM: ts4800: add ethernet support

2015-06-15 Thread Damien Riegel
This commit adds ethernet support to the TS4800. Note that the
MAC address is not fused on this board and have to be read from
FEC PALR PAUR registers (this is how the kernel provided by
Technologic Systems does it).

Signed-off-by: Damien Riegel damien.rie...@savoirfairelinux.com
Cc: Stefano Babic sba...@denx.de
---
 arch/arm/include/asm/arch-mx5/iomux-mx51.h |  11 +++
 board/technologic/ts4800/ts4800.c  | 104 +
 include/configs/ts4800.h   |  17 +
 3 files changed, 132 insertions(+)

diff --git a/arch/arm/include/asm/arch-mx5/iomux-mx51.h 
b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
index 70aaa37..6fb8119 100644
--- a/arch/arm/include/asm/arch-mx5/iomux-mx51.h
+++ b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
@@ -184,8 +184,15 @@ enum {
MX51_PAD_DISPB2_SER_DIO__GPIO3_6= IOMUX_PAD(0x6c0, 0x2c0, 4, 
0x98c, 1, MX51_GPIO_PAD_CTRL),
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_PIN2__FEC_MDC  = IOMUX_PAD(0x74C, 0x344, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK = IOMUX_PAD(0x754, 0x34c, 0, 
__NA_, 0, NO_PAD_CTRL),
MX51_PAD_DI_GP4__DI2_PIN15  = IOMUX_PAD(0x758, 0x350, 4, 
__NA_, 0, NO_PAD_CTRL),
+   MX51_PAD_DISP2_DAT6__FEC_TDAT1  = IOMUX_PAD(0x774, 0x36C, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT7__FEC_TDAT2  = IOMUX_PAD(0x778, 0x370, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT8__FEC_TDAT3  = IOMUX_PAD(0x77C, 0x374, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT9__FEC_TX_EN  = IOMUX_PAD(0x780, 0x378, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT12__FEC_RX_DV = IOMUX_PAD(0x78C, 0x384, 2, 
0x96c, 0x1, MX51_PAD_CTRL_4),
+   MX51_PAD_DISP2_DAT13__FEC_TX_CLK= IOMUX_PAD(0x790, 0x388, 2, 
0x974, 0x1, MX51_PAD_CTRL_4),
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),
@@ -204,6 +211,10 @@ enum {
MX51_PAD_GPIO1_2__GPIO1_2   = IOMUX_PAD(0x7d4, 0x3cc, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
MX51_PAD_GPIO1_2__PWM1_PWMO = IOMUX_PAD(0x7d4, 0x3cc, 1, 
__NA_, 0, NO_PAD_CTRL),
MX51_PAD_GPIO1_3__GPIO1_3   = IOMUX_PAD(0x7d8, 0x3d0, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
+   MX51_PAD_DISP2_DAT10__FEC_COL   = IOMUX_PAD(0x784, 0x37C, 2, 
0x94c, 0x1, MX51_PAD_CTRL_2),
+   MX51_PAD_DISP2_DAT11__FEC_RXCLK = IOMUX_PAD(0x788, 0x380, 2, 
0x968, 0x1, MX51_PAD_CTRL_2),
+   MX51_PAD_DISP2_DAT14__FEC_RDAT0 = IOMUX_PAD(0x794, 0x38C, 2, 
0x958, 0x1, MX51_PAD_CTRL_4),
+   MX51_PAD_DISP2_DAT15__FEC_TDAT0 = IOMUX_PAD(0x798, 0x390, 2, 
0x0, 0, MX51_PAD_CTRL_5),
MX51_PAD_GPIO1_5__GPIO1_5   = IOMUX_PAD(0x808, 0x3dc, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
MX51_PAD_GPIO1_6__GPIO1_6   = IOMUX_PAD(0x80c, 0x3e0, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
MX51_PAD_GPIO1_7__GPIO1_7   = IOMUX_PAD(0x810, 0x3e4, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
diff --git a/board/technologic/ts4800/ts4800.c 
b/board/technologic/ts4800/ts4800.c
index e49f185..6b762b2 100644
--- a/board/technologic/ts4800/ts4800.c
+++ b/board/technologic/ts4800/ts4800.c
@@ -21,6 +21,10 @@
 #include fsl_esdhc.h
 #include mc13892.h
 
+#include malloc.h
+#include netdev.h
+#include phy.h
+
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_FSL_ESDHC
@@ -60,6 +64,36 @@ static void setup_iomux_uart(void)
imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
 }
 
+static void setup_iomux_fec(void)
+{
+   static const iomux_v3_cfg_t fec_pads[] = {
+   NEW_PAD_CTRL(MX51_PAD_EIM_EB2__FEC_MDIO,
+   PAD_CTL_HYS |
+   PAD_CTL_PUS_22K_UP |
+   PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
+   MX51_PAD_EIM_EB3__FEC_RDATA1,
+   NEW_PAD_CTRL(MX51_PAD_EIM_CS2__FEC_RDATA2, PAD_CTL_HYS),
+   MX51_PAD_EIM_CS3__FEC_RDATA3,
+   MX51_PAD_NANDF_CS2__FEC_TX_ER,
+   MX51_PAD_EIM_CS5__FEC_CRS,
+   MX51_PAD_EIM_CS4__FEC_RX_ER,
+   /* PAD used on TS4800 */
+   MX51_PAD_DI2_PIN2__FEC_MDC,
+   MX51_PAD_DISP2_DAT14__FEC_RDAT0,
+   MX51_PAD_DISP2_DAT10__FEC_COL,
+   MX51_PAD_DISP2_DAT11__FEC_RXCLK,
+   MX51_PAD_DISP2_DAT15__FEC_TDAT0,
+   MX51_PAD_DISP2_DAT6__FEC_TDAT1

[U-Boot] [PATCH 1/2] ARM: ts4800: add basic board support

2015-06-15 Thread Damien Riegel
From: Lucile Quirion lucile.quir...@savoirfairelinux.com

This commit adds basic support including:
MMC, Serial console, TS4800 watchdog

The config use CONFIG_SKIP_LOWLEVEL_INIT as U-boot is used as a second
stage bootloader.

Signed-off-by: Lucile Quirion lucile.quir...@savoirfairelinux.com
Cc: Stefano Babic sba...@denx.de
---
 arch/arm/Kconfig |   5 ++
 board/technologic/ts4800/Kconfig |  15 
 board/technologic/ts4800/MAINTAINERS |   6 ++
 board/technologic/ts4800/Makefile|   7 ++
 board/technologic/ts4800/ts4800.c| 155 
 configs/ts4800_defconfig |   2 +
 include/configs/ts4800.h | 170 +++
 7 files changed, 360 insertions(+)
 create mode 100644 board/technologic/ts4800/Kconfig
 create mode 100644 board/technologic/ts4800/MAINTAINERS
 create mode 100644 board/technologic/ts4800/Makefile
 create mode 100644 board/technologic/ts4800/ts4800.c
 create mode 100644 configs/ts4800_defconfig
 create mode 100644 include/configs/ts4800.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index ac86518..f0b44c0 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -649,6 +649,10 @@ config TARGET_SNOWBALL
bool Support snowball
select CPU_V7
 
+config TARGET_TS4800
+   bool Support TS4800
+   select CPU_V7
+
 config TARGET_U8500_HREF
bool Support u8500_href
select CPU_V7
@@ -969,6 +973,7 @@ source board/toradex/colibri_pxa270/Kconfig
 source board/toradex/colibri_vf/Kconfig
 source board/tqc/tqma6/Kconfig
 source board/trizepsiv/Kconfig
+source board/technologic/ts4800/Kconfig
 source board/ttcontrol/vision2/Kconfig
 source board/udoo/Kconfig
 source board/vpac270/Kconfig
diff --git a/board/technologic/ts4800/Kconfig b/board/technologic/ts4800/Kconfig
new file mode 100644
index 000..a28d5e4
--- /dev/null
+++ b/board/technologic/ts4800/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TS4800
+
+config SYS_BOARD
+   default ts4800
+
+config SYS_VENDOR
+   default technologic
+
+config SYS_SOC
+   default mx5
+
+config SYS_CONFIG_NAME
+   default ts4800
+
+endif
diff --git a/board/technologic/ts4800/MAINTAINERS 
b/board/technologic/ts4800/MAINTAINERS
new file mode 100644
index 000..e013ee4
--- /dev/null
+++ b/board/technologic/ts4800/MAINTAINERS
@@ -0,0 +1,6 @@
+TS4800 BOARD
+M: Lucile Quirion lucile.quir...@savoirfairelinux.com
+S: Maintained
+F: board/ts/ts4800/
+F: include/configs/ts4800.h
+F: configs/ts4800_defconfig
diff --git a/board/technologic/ts4800/Makefile 
b/board/technologic/ts4800/Makefile
new file mode 100644
index 000..e9f1a37
--- /dev/null
+++ b/board/technologic/ts4800/Makefile
@@ -0,0 +1,7 @@
+#
+# (C) Copyright 2015 Savoir-faire Linux
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y  += ts4800.o
diff --git a/board/technologic/ts4800/ts4800.c 
b/board/technologic/ts4800/ts4800.c
new file mode 100644
index 000..e49f185
--- /dev/null
+++ b/board/technologic/ts4800/ts4800.c
@@ -0,0 +1,155 @@
+/*
+ * (C) Copyright 2015 Savoir-faire Linux Inc.
+ *
+ * Derived from MX51EVK code by
+ *   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 asm/imx-common/mx5_video.h
+#include mmc.h
+#include fsl_esdhc.h
+#include mc13892.h
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_FSL_ESDHC
+struct fsl_esdhc_cfg esdhc_cfg[2] = {
+   {MMC_SDHC1_BASE_ADDR},
+   {MMC_SDHC2_BASE_ADDR},
+};
+#endif
+
+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;
+}
+
+#define UART_PAD_CTRL  (PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_DSE_HIGH)
+
+static void setup_iomux_uart(void)
+{
+   static const iomux_v3_cfg_t uart_pads[] = {
+   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),
+   };
+
+   imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
+}
+
+#ifdef CONFIG_FSL_ESDHC
+int board_mmc_getcd(struct mmc *mmc)
+{
+   struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc-priv;
+   int ret;
+
+   imx_iomux_v3_setup_pad(NEW_PAD_CTRL(MX51_PAD_GPIO1_0__GPIO1_0,
+   NO_PAD_CTRL));
+   

Re: [U-Boot] [RFC PATCH 2/3] net: fec_mxc: query mac address from environment

2015-06-03 Thread Damien Riegel
On Wed, Jun 03, 2015 at 09:05:23AM -0500, Joe Hershberger wrote:
 Hi Damien,
 
 On Tue, Jun 2, 2015 at 3:22 PM, Damien Riegel
 damien.rie...@savoirfairelinux.com wrote:
  The TS-4800 doesn't have its MAC address fused, therefore the
  fec_mxc driver can not currently fetch it.
 
  This commit adds the capability to fetch the MAC address from
  environment if not found in fuses.
 
  Signed-off-by: Damien Riegel damien.rie...@savoirfairelinux.com
  Cc: Stefano Babic sba...@denx.de
  Cc: Joe Hershberger joe.hershber...@ni.com
  ---
   drivers/net/fec_mxc.c | 4 
   1 file changed, 4 insertions(+)
 
  diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
  index 9225d37..a789ecc 100644
  --- a/drivers/net/fec_mxc.c
  +++ b/drivers/net/fec_mxc.c
  @@ -1040,6 +1040,10 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t 
  base_addr,
  if (!getenv(ethaddr))
  eth_setenv_enetaddr(ethaddr, ethaddr);
  }
  +   else if (eth_getenv_enetaddr(ethaddr, ethaddr)) {
  +   debug(got MAC%d address from env: %pM\n, dev_id, ethaddr);
  +   memcpy(edev-enetaddr, ethaddr, 6);
  +   }
 
 This is not the appropriate way to handle this.
 
 The network stack should already be setting this for you. Line 696 in 
 net/eth.c
 
 Is this attempting to fix a problem that you've observed?
I did my tests with Buildroot and the U-Boot version I used at that time
required this change. When rebasing and testing on master, I haven't
thought about checking if this patch was still useful. 

But now, indeed, the network stack takes care of that for me, this
patch can be dropped.

-- 
Damien
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [RFC PATCH 1/3] ARM: ts4800: add basic board support

2015-06-02 Thread Damien Riegel
From: Lucile Quirion lucile.quir...@savoirfairelinux.com

This commit adds basic support including:
MMC, Serial console, TS4800 watchdog

The config use CONFIG_SKIP_LOWLEVEL_INIT as U-boot is used as a second
stage bootloader.

Signed-off-by: Lucile Quirion lucile.quir...@savoirfairelinux.com
Cc: Stefano Babic sba...@denx.de
---
 arch/arm/Kconfig |   5 ++
 board/technologic/ts4800/Kconfig |  15 
 board/technologic/ts4800/MAINTAINERS |   6 ++
 board/technologic/ts4800/Makefile|   7 ++
 board/technologic/ts4800/ts4800.c| 155 
 configs/ts4800_defconfig |   2 +
 include/configs/ts4800.h | 170 +++
 7 files changed, 360 insertions(+)
 create mode 100644 board/technologic/ts4800/Kconfig
 create mode 100644 board/technologic/ts4800/MAINTAINERS
 create mode 100644 board/technologic/ts4800/Makefile
 create mode 100644 board/technologic/ts4800/ts4800.c
 create mode 100644 configs/ts4800_defconfig
 create mode 100644 include/configs/ts4800.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 2985e6e..e821eb9 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -641,6 +641,10 @@ config TARGET_SNOWBALL
bool Support snowball
select CPU_V7
 
+config TARGET_TS4800
+   bool Support TS4800
+   select CPU_V7
+
 config TARGET_U8500_HREF
bool Support u8500_href
select CPU_V7
@@ -959,6 +963,7 @@ source board/toradex/colibri_pxa270/Kconfig
 source board/toradex/colibri_vf/Kconfig
 source board/tqc/tqma6/Kconfig
 source board/trizepsiv/Kconfig
+source board/technologic/ts4800/Kconfig
 source board/ttcontrol/vision2/Kconfig
 source board/udoo/Kconfig
 source board/vpac270/Kconfig
diff --git a/board/technologic/ts4800/Kconfig b/board/technologic/ts4800/Kconfig
new file mode 100644
index 000..a28d5e4
--- /dev/null
+++ b/board/technologic/ts4800/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TS4800
+
+config SYS_BOARD
+   default ts4800
+
+config SYS_VENDOR
+   default technologic
+
+config SYS_SOC
+   default mx5
+
+config SYS_CONFIG_NAME
+   default ts4800
+
+endif
diff --git a/board/technologic/ts4800/MAINTAINERS 
b/board/technologic/ts4800/MAINTAINERS
new file mode 100644
index 000..e013ee4
--- /dev/null
+++ b/board/technologic/ts4800/MAINTAINERS
@@ -0,0 +1,6 @@
+TS4800 BOARD
+M: Lucile Quirion lucile.quir...@savoirfairelinux.com
+S: Maintained
+F: board/ts/ts4800/
+F: include/configs/ts4800.h
+F: configs/ts4800_defconfig
diff --git a/board/technologic/ts4800/Makefile 
b/board/technologic/ts4800/Makefile
new file mode 100644
index 000..e9f1a37
--- /dev/null
+++ b/board/technologic/ts4800/Makefile
@@ -0,0 +1,7 @@
+#
+# (C) Copyright 2015 Savoir-faire Linux
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y  += ts4800.o
diff --git a/board/technologic/ts4800/ts4800.c 
b/board/technologic/ts4800/ts4800.c
new file mode 100644
index 000..e49f185
--- /dev/null
+++ b/board/technologic/ts4800/ts4800.c
@@ -0,0 +1,155 @@
+/*
+ * (C) Copyright 2015 Savoir-faire Linux Inc.
+ *
+ * Derived from MX51EVK code by
+ *   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 asm/imx-common/mx5_video.h
+#include mmc.h
+#include fsl_esdhc.h
+#include mc13892.h
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_FSL_ESDHC
+struct fsl_esdhc_cfg esdhc_cfg[2] = {
+   {MMC_SDHC1_BASE_ADDR},
+   {MMC_SDHC2_BASE_ADDR},
+};
+#endif
+
+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;
+}
+
+#define UART_PAD_CTRL  (PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_DSE_HIGH)
+
+static void setup_iomux_uart(void)
+{
+   static const iomux_v3_cfg_t uart_pads[] = {
+   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),
+   };
+
+   imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
+}
+
+#ifdef CONFIG_FSL_ESDHC
+int board_mmc_getcd(struct mmc *mmc)
+{
+   struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc-priv;
+   int ret;
+
+   imx_iomux_v3_setup_pad(NEW_PAD_CTRL(MX51_PAD_GPIO1_0__GPIO1_0,
+   NO_PAD_CTRL));
+   

[U-Boot] [RFC PATCH 2/3] net: fec_mxc: query mac address from environment

2015-06-02 Thread Damien Riegel
The TS-4800 doesn't have its MAC address fused, therefore the
fec_mxc driver can not currently fetch it.

This commit adds the capability to fetch the MAC address from
environment if not found in fuses.

Signed-off-by: Damien Riegel damien.rie...@savoirfairelinux.com
Cc: Stefano Babic sba...@denx.de
Cc: Joe Hershberger joe.hershber...@ni.com
---
 drivers/net/fec_mxc.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index 9225d37..a789ecc 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -1040,6 +1040,10 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t 
base_addr,
if (!getenv(ethaddr))
eth_setenv_enetaddr(ethaddr, ethaddr);
}
+   else if (eth_getenv_enetaddr(ethaddr, ethaddr)) {
+   debug(got MAC%d address from env: %pM\n, dev_id, ethaddr);
+   memcpy(edev-enetaddr, ethaddr, 6);
+   }
return ret;
 err4:
fec_free_descs(fec);
-- 
1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [RFC PATCH 0/3] ARM: ts4800: add board support

2015-06-02 Thread Damien Riegel
This patchset adds support for TS4800, a Technologic Systems' board.
This board is a bit peculiar because most of the init is done by the
FPGA and U-Boot is used as a second stage bootloader.

Ethernet support is added in a separate commit because it requires
a modification of the fec_mxc driver. On this board, MAC address is
not fused, so the driver needs another way to get it.

Files have been put in board/technologic/ to follow the same convention
as Technologic Systems [1].

[1] https://github.com/embeddedarm/u-boot

Cc: Stefano Babic sba...@denx.de

Damien Riegel (2):
  net: fec_mxc: query mac address from environment
  ARM: ts4800: add ethernet support

Lucile Quirion (1):
  ARM: ts4800: add basic board support

 arch/arm/Kconfig   |   5 +
 arch/arm/include/asm/arch-mx5/iomux-mx51.h |  11 ++
 board/technologic/ts4800/Kconfig   |  15 ++
 board/technologic/ts4800/MAINTAINERS   |   6 +
 board/technologic/ts4800/Makefile  |   7 +
 board/technologic/ts4800/ts4800.c  | 259 +
 configs/ts4800_defconfig   |   2 +
 drivers/net/fec_mxc.c  |   4 +
 include/configs/ts4800.h   | 187 +
 9 files changed, 496 insertions(+)
 create mode 100644 board/technologic/ts4800/Kconfig
 create mode 100644 board/technologic/ts4800/MAINTAINERS
 create mode 100644 board/technologic/ts4800/Makefile
 create mode 100644 board/technologic/ts4800/ts4800.c
 create mode 100644 configs/ts4800_defconfig
 create mode 100644 include/configs/ts4800.h

-- 
1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [RFC PATCH 3/3] ARM: ts4800: add ethernet support

2015-06-02 Thread Damien Riegel
This commit adds ethernet support to the TS4800. Note that the
MAC address is not fused on this board and have to be read from
FEC PALR PAUR registers (this is how the kernel provided by
Technologic Systems does it).

Signed-off-by: Damien Riegel damien.rie...@savoirfairelinux.com
Cc: Stefano Babic sba...@denx.de
---
 arch/arm/include/asm/arch-mx5/iomux-mx51.h |  11 +++
 board/technologic/ts4800/ts4800.c  | 104 +
 include/configs/ts4800.h   |  17 +
 3 files changed, 132 insertions(+)

diff --git a/arch/arm/include/asm/arch-mx5/iomux-mx51.h 
b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
index 70aaa37..0056d73 100644
--- a/arch/arm/include/asm/arch-mx5/iomux-mx51.h
+++ b/arch/arm/include/asm/arch-mx5/iomux-mx51.h
@@ -184,8 +184,15 @@ enum {
MX51_PAD_DISPB2_SER_DIO__GPIO3_6= IOMUX_PAD(0x6c0, 0x2c0, 4, 
0x98c, 1, MX51_GPIO_PAD_CTRL),
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_PIN2__FEC_MDC  = IOMUX_PAD(0x74C, 0x344, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK = IOMUX_PAD(0x754, 0x34c, 0, 
__NA_, 0, NO_PAD_CTRL),
MX51_PAD_DI_GP4__DI2_PIN15  = IOMUX_PAD(0x758, 0x350, 4, 
__NA_, 0, NO_PAD_CTRL),
+   MX51_PAD_DISP2_DAT6__FEC_TDAT1  = IOMUX_PAD(0x774, 0x36C, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT7__FEC_TDAT2  = IOMUX_PAD(0x778, 0x370, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT8__FEC_TDAT3  = IOMUX_PAD(0x77C, 0x374, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT9__FEC_TX_EN  = IOMUX_PAD(0x780, 0x378, 2, 
__NA_, 0, MX51_PAD_CTRL_5),
+   MX51_PAD_DISP2_DAT12__FEC_RX_DV = IOMUX_PAD(0x78C, 0x384, 2, 
0x96c, 0x1, MX51_PAD_CTRL_4),
+   MX51_PAD_DISP2_DAT13__FEC_TX_CLK= IOMUX_PAD(0x790, 0x388, 2, 
0x974, 0x1, MX51_PAD_CTRL_4),
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),
@@ -204,6 +211,10 @@ enum {
MX51_PAD_GPIO1_2__GPIO1_2   = IOMUX_PAD(0x7d4, 0x3cc, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
MX51_PAD_GPIO1_2__PWM1_PWMO = IOMUX_PAD(0x7d4, 0x3cc, 1, 
__NA_, 0, NO_PAD_CTRL),
MX51_PAD_GPIO1_3__GPIO1_3   = IOMUX_PAD(0x7d8, 0x3d0, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
+   MX51_PAD_DISP2_DAT10__FEC_COL   = IOMUX_PAD(0x784, 0x37C, 2, 
0x94c, 0x1, MX51_PAD_CTRL_2),
+   MX51_PAD_DISP2_DAT11__FEC_RXCLK = IOMUX_PAD(0x788, 0x380, 2, 
0x968, 0x1, MX51_PAD_CTRL_2),
+   MX51_PAD_DISP2_DAT14__FEC_RDAT0 = IOMUX_PAD(0x794, 0x38C, 2, 
0x958, 0x1, MX51_PAD_CTRL_4),
+   MX51_PAD_DISP2_DAT15__FEC_TDAT0 = IOMUX_PAD(0x798, 0x390, 2, 
0x0, 0, MX51_PAD_CTRL_5),
MX51_PAD_GPIO1_5__GPIO1_5   = IOMUX_PAD(0x808, 0x3dc, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
MX51_PAD_GPIO1_6__GPIO1_6   = IOMUX_PAD(0x80c, 0x3e0, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
MX51_PAD_GPIO1_7__GPIO1_7   = IOMUX_PAD(0x810, 0x3e4, 0, 
__NA_, 0, MX51_GPIO_PAD_CTRL),
diff --git a/board/technologic/ts4800/ts4800.c 
b/board/technologic/ts4800/ts4800.c
index e49f185..6b762b2 100644
--- a/board/technologic/ts4800/ts4800.c
+++ b/board/technologic/ts4800/ts4800.c
@@ -21,6 +21,10 @@
 #include fsl_esdhc.h
 #include mc13892.h
 
+#include malloc.h
+#include netdev.h
+#include phy.h
+
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_FSL_ESDHC
@@ -60,6 +64,36 @@ static void setup_iomux_uart(void)
imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
 }
 
+static void setup_iomux_fec(void)
+{
+   static const iomux_v3_cfg_t fec_pads[] = {
+   NEW_PAD_CTRL(MX51_PAD_EIM_EB2__FEC_MDIO,
+   PAD_CTL_HYS |
+   PAD_CTL_PUS_22K_UP |
+   PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
+   MX51_PAD_EIM_EB3__FEC_RDATA1,
+   NEW_PAD_CTRL(MX51_PAD_EIM_CS2__FEC_RDATA2, PAD_CTL_HYS),
+   MX51_PAD_EIM_CS3__FEC_RDATA3,
+   MX51_PAD_NANDF_CS2__FEC_TX_ER,
+   MX51_PAD_EIM_CS5__FEC_CRS,
+   MX51_PAD_EIM_CS4__FEC_RX_ER,
+   /* PAD used on TS4800 */
+   MX51_PAD_DI2_PIN2__FEC_MDC,
+   MX51_PAD_DISP2_DAT14__FEC_RDAT0,
+   MX51_PAD_DISP2_DAT10__FEC_COL,
+   MX51_PAD_DISP2_DAT11__FEC_RXCLK,
+   MX51_PAD_DISP2_DAT15__FEC_TDAT0,
+   MX51_PAD_DISP2_DAT6__FEC_TDAT1