Message ID | 1348782766-19224-1-git-send-email-dev@lynxeye.de |
---|---|
State | Superseded |
Delegated to: | Tom Warren |
Headers | show |
On 09/27/2012 03:52 PM, Lucas Stach wrote: > This adds board support for the Toradex Colibri T20 module. > > Working functions: > - MMC boot > - USB boot > - Network > - NAND environment > diff --git a/board/toradex/colibri_t20/colibri_t20.c b/board/toradex/colibri_t20/colibri_t20.c > +#ifdef CONFIG_USB_EHCI_TEGRA > +void pin_mux_usb(void) > +{ > + /* USB 1 aka Tegra USB port 3 */ > + pinmux_tristate_disable(PINGRP_SPIG); > + > + /* USB 3 aka Tegra USB port 2 */ Re: the comments: The only reason other board files have HW port USB3 listed as DT alias usb0 is because HW port USB3 was the most useful port on those boards, and the Tegra USB driver only supported the first listed HW port. Now that the Tegra USB driver supports any/all of the HW ports, you could just arrange the aliases in DT so that HW USB1 == user-visible USB1, etc. > +#ifdef CONFIG_TEGRA_NAND > +void pin_mux_nand(void) > +{ > + funcmux_select(PERIPH_ID_NDFLASH, FUNCMUX_NDFLASH_KBC_8_BIT); I don't recall a patch to implement FUNCMUX_NDFLASH_KBC_8_BIT. Maybe I just missed it? > diff --git a/board/toradex/dts/tegra20-colibri.dts b/board/toradex/dts/tegra20-colibri.dts This filename should exactly match the name in boards.cfg, so tegra20-colibri_t20.dts. That said, if Colibri is always Tegra20, I'd rather see the boards.cfg entry renamed to plain "colibri". > +}; > \ No newline at end of file That's probably unintended? > diff --git a/include/configs/colibri_t20.h b/include/configs/colibri_t20.h > +/* Environment in NAND, 64K is a bit excessive but erase block is 256K anyway */ > +#define CONFIG_ENV_IS_IN_NAND > +#define CONFIG_ENV_OFFSET (SZ_2M) > +#undef CONFIG_ENV_SIZE /* undef size from tegra20-common.h */ > +#define CONFIG_ENV_SIZE (SZ_64K) Any particular reason to change the environment size? All the other boards that have eMMC put the environment at the end of the second eMMC boot-block even when NAND is also available. Is there a particular reason not to do so for Colibri too? Does Colibri boot (BCT+bootloader image) from eMMC or NAND?
Am Donnerstag, den 27.09.2012, 16:49 -0600 schrieb Stephen Warren: > On 09/27/2012 03:52 PM, Lucas Stach wrote: > > This adds board support for the Toradex Colibri T20 module. > > > > Working functions: > > - MMC boot > > - USB boot > > - Network > > - NAND environment > > > diff --git a/board/toradex/colibri_t20/colibri_t20.c b/board/toradex/colibri_t20/colibri_t20.c > > > +#ifdef CONFIG_USB_EHCI_TEGRA > > +void pin_mux_usb(void) > > +{ > > + /* USB 1 aka Tegra USB port 3 */ > > + pinmux_tristate_disable(PINGRP_SPIG); > > + > > + /* USB 3 aka Tegra USB port 2 */ > > Re: the comments: > > The only reason other board files have HW port USB3 listed as DT alias > usb0 is because HW port USB3 was the most useful port on those boards, > and the Tegra USB driver only supported the first listed HW port. Now > that the Tegra USB driver supports any/all of the HW ports, you could > just arrange the aliases in DT so that HW USB1 == user-visible USB1, etc. > I arranged them in that way so they match best with the connector label on the carrier board. > > +#ifdef CONFIG_TEGRA_NAND > > +void pin_mux_nand(void) > > +{ > > + funcmux_select(PERIPH_ID_NDFLASH, FUNCMUX_NDFLASH_KBC_8_BIT); > > I don't recall a patch to implement FUNCMUX_NDFLASH_KBC_8_BIT. Maybe I > just missed it? > No, you are right I missed to send it out. Will follow in a sec. > > diff --git a/board/toradex/dts/tegra20-colibri.dts b/board/toradex/dts/tegra20-colibri.dts > > This filename should exactly match the name in boards.cfg, so > tegra20-colibri_t20.dts. That said, if Colibri is always Tegra20, I'd > rather see the boards.cfg entry renamed to plain "colibri". > I'll rename the dts file. Colibri is a family name and T30 hardware will follow in the next few weeks. Not sure if I will get one at my hands to do the upstream work. > > +}; > > \ No newline at end of file > > That's probably unintended? > Yep. > > diff --git a/include/configs/colibri_t20.h b/include/configs/colibri_t20.h > > > +/* Environment in NAND, 64K is a bit excessive but erase block is 256K anyway */ > > +#define CONFIG_ENV_IS_IN_NAND > > +#define CONFIG_ENV_OFFSET (SZ_2M) > > +#undef CONFIG_ENV_SIZE /* undef size from tegra20-common.h */ > > +#define CONFIG_ENV_SIZE (SZ_64K) > > Any particular reason to change the environment size? All the other > boards that have eMMC put the environment at the end of the second eMMC > boot-block even when NAND is also available. Is there a particular > reason not to do so for Colibri too? Does Colibri boot (BCT+bootloader > image) from eMMC or NAND? > Colibri has no eMMC, it boots from NAND.
On 09/27/2012 05:03 PM, Lucas Stach wrote: > Am Donnerstag, den 27.09.2012, 16:49 -0600 schrieb Stephen Warren: >> On 09/27/2012 03:52 PM, Lucas Stach wrote: >>> This adds board support for the Toradex Colibri T20 module. >>> >>> Working functions: >>> - MMC boot >>> - USB boot >>> - Network >>> - NAND environment >> >>> diff --git a/board/toradex/colibri_t20/colibri_t20.c b/board/toradex/colibri_t20/colibri_t20.c >> >>> +#ifdef CONFIG_USB_EHCI_TEGRA >>> +void pin_mux_usb(void) >>> +{ >>> + /* USB 1 aka Tegra USB port 3 */ >>> + pinmux_tristate_disable(PINGRP_SPIG); >>> + >>> + /* USB 3 aka Tegra USB port 2 */ >> >> Re: the comments: >> >> The only reason other board files have HW port USB3 listed as DT alias >> usb0 is because HW port USB3 was the most useful port on those boards, >> and the Tegra USB driver only supported the first listed HW port. Now >> that the Tegra USB driver supports any/all of the HW ports, you could >> just arrange the aliases in DT so that HW USB1 == user-visible USB1, etc. >> > I arranged them in that way so they match best with the connector label > on the carrier board. OK, that makes sense then. >>> diff --git a/include/configs/colibri_t20.h b/include/configs/colibri_t20.h >> >>> +/* Environment in NAND, 64K is a bit excessive but erase block is 256K anyway */ >>> +#define CONFIG_ENV_IS_IN_NAND >>> +#define CONFIG_ENV_OFFSET (SZ_2M) >>> +#undef CONFIG_ENV_SIZE /* undef size from tegra20-common.h */ >>> +#define CONFIG_ENV_SIZE (SZ_64K) >> >> Any particular reason to change the environment size? All the other >> boards that have eMMC put the environment at the end of the second eMMC >> boot-block even when NAND is also available. Is there a particular >> reason not to do so for Colibri too? Does Colibri boot (BCT+bootloader >> image) from eMMC or NAND? >> > Colibri has no eMMC, it boots from NAND. Oh, so "MMC boot" in the patch description should be "SD boot" then?
Am Donnerstag, den 27.09.2012, 17:09 -0600 schrieb Stephen Warren: > On 09/27/2012 05:03 PM, Lucas Stach wrote: > > Am Donnerstag, den 27.09.2012, 16:49 -0600 schrieb Stephen Warren: > >> On 09/27/2012 03:52 PM, Lucas Stach wrote: > >>> This adds board support for the Toradex Colibri T20 module. > >>> > >>> Working functions: > >>> - MMC boot > >>> - USB boot > >>> - Network > >>> - NAND environment > >> > >>> diff --git a/board/toradex/colibri_t20/colibri_t20.c b/board/toradex/colibri_t20/colibri_t20.c > >> > >>> +#ifdef CONFIG_USB_EHCI_TEGRA > >>> +void pin_mux_usb(void) > >>> +{ > >>> + /* USB 1 aka Tegra USB port 3 */ > >>> + pinmux_tristate_disable(PINGRP_SPIG); > >>> + > >>> + /* USB 3 aka Tegra USB port 2 */ > >> > >> Re: the comments: > >> > >> The only reason other board files have HW port USB3 listed as DT alias > >> usb0 is because HW port USB3 was the most useful port on those boards, > >> and the Tegra USB driver only supported the first listed HW port. Now > >> that the Tegra USB driver supports any/all of the HW ports, you could > >> just arrange the aliases in DT so that HW USB1 == user-visible USB1, etc. > >> > > I arranged them in that way so they match best with the connector label > > on the carrier board. > > OK, that makes sense then. > > >>> diff --git a/include/configs/colibri_t20.h b/include/configs/colibri_t20.h > >> > >>> +/* Environment in NAND, 64K is a bit excessive but erase block is 256K anyway */ > >>> +#define CONFIG_ENV_IS_IN_NAND > >>> +#define CONFIG_ENV_OFFSET (SZ_2M) > >>> +#undef CONFIG_ENV_SIZE /* undef size from tegra20-common.h */ > >>> +#define CONFIG_ENV_SIZE (SZ_64K) > >> > >> Any particular reason to change the environment size? All the other > >> boards that have eMMC put the environment at the end of the second eMMC > >> boot-block even when NAND is also available. Is there a particular > >> reason not to do so for Colibri too? Does Colibri boot (BCT+bootloader > >> image) from eMMC or NAND? > >> > > Colibri has no eMMC, it boots from NAND. > > Oh, so "MMC boot" in the patch description should be "SD boot" then? > Right, last minute additions don't work really well. ;)
diff --git a/MAINTAINERS b/MAINTAINERS index a00e850..6b3e9a4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -890,6 +890,10 @@ Matt Sealey <matt@genesi-usa.com> Bo Shen <voice.shen@atmel.com> at91sam9x5ek ARM926EJS (AT91SAM9G15,G25,G35,X25,X35 SoC) +Lucas Stach <dev@lynxeye.de> + + colibri_t20 Tegra20 (ARM7 & A9 Dual Core) + Nick Thompson <nick.thompson@gefanuc.com> da830evm ARM926EJS (DA830/OMAP-L137) diff --git a/board/toradex/colibri_t20/Makefile b/board/toradex/colibri_t20/Makefile new file mode 100644 index 0000000..b8c61b6 --- /dev/null +++ b/board/toradex/colibri_t20/Makefile @@ -0,0 +1,38 @@ +# +# (C) Copyright 2012 Lucas Stach +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# + +include $(TOPDIR)/config.mk + +$(shell mkdir -p $(obj)../../nvidia/common) + +LIB = $(obj)lib$(BOARD).o + +COBJS := ../../nvidia/common/board.o +COBJS += $(BOARD).o + +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) + +$(LIB): $(obj).depend $(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### \ No newline at end of file diff --git a/board/toradex/colibri_t20/colibri_t20.c b/board/toradex/colibri_t20/colibri_t20.c new file mode 100644 index 0000000..0ad4311 --- /dev/null +++ b/board/toradex/colibri_t20/colibri_t20.c @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2010,2011 NVIDIA Corporation <www.nvidia.com> + * Copyright (C) 2012 Lucas Stach + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include <common.h> +#include <asm/gpio.h> +#include <asm/arch/clock.h> +#include <asm/arch/funcmux.h> +#include <asm/arch/pinmux.h> +#include <asm/arch-tegra/board.h> +#include <asm/arch-tegra/sys_proto.h> +#include <asm/arch-tegra/tegra.h> + +#ifdef CONFIG_TEGRA_MMC +#include <asm/arch-tegra/mmc.h> +#endif + +#ifdef CONFIG_USB_EHCI_TEGRA +void pin_mux_usb(void) +{ + /* USB 1 aka Tegra USB port 3 */ + pinmux_tristate_disable(PINGRP_SPIG); + + /* USB 3 aka Tegra USB port 2 */ + funcmux_select(PERIPH_ID_USB2, FUNCMUX_USB2_ULPI); + pinmux_tristate_disable(PINGRP_UAC); + /* ULPI reference clock output */ + pinmux_set_func(PINGRP_CDEV2, PMUX_FUNC_PLLP_OUT4); + pinmux_tristate_disable(PINGRP_CDEV2); + /* VBus GPIO */ + pinmux_tristate_disable(PINGRP_DTE); +} +#endif + +#ifdef CONFIG_TEGRA_MMC +int board_mmc_init(bd_t *bd) +{ + funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_4_BIT); + pinmux_tristate_disable(PINGRP_GMB); + + tegra_mmc_init(0, 4, -1, GPIO_PC7); + + return 0; +} +#endif + +#ifdef CONFIG_TEGRA_NAND +void pin_mux_nand(void) +{ + funcmux_select(PERIPH_ID_NDFLASH, FUNCMUX_NDFLASH_KBC_8_BIT); +} +#endif diff --git a/board/toradex/dts/tegra20-colibri.dts b/board/toradex/dts/tegra20-colibri.dts new file mode 100644 index 0000000..a22cba6 --- /dev/null +++ b/board/toradex/dts/tegra20-colibri.dts @@ -0,0 +1,39 @@ +/dts-v1/; + +/include/ ARCH_CPU_DTS + +/ { + model = "Toradex Colibri T20"; + compatible = "toradex,t20", "nvidia,tegra20"; + + aliases { + /* This defines the order of our USB ports */ + usb0 = "/usb@c5008000"; + usb1 = "/usb@c5000000"; + usb2 = "/usb@c5004000"; + }; + + usb@c5000000 { + dr_mode = "otg"; + }; + + usb@c5004000 { + nvidia,phy-reset-gpio = <&gpio 169 0>; /* PV1 */ + nvidia,vbus-gpio = <&gpio 217 0>; /* PBB1 */ + }; + + usb@c5008000 { + nvidia,vbus-gpio = <&gpio 178 1>; /* PW2 low-active */ + }; + + nand-controller@70008000 { + nvidia,wp-gpios = <&gpio 144 0>; /* PS0 */ + nvidia,width = <8>; + nvidia,timing = <15 100 25 80 25 10 15 10 100>; + + nand@0 { + reg = <0>; + compatible = "nand-flash"; + }; + }; +}; \ No newline at end of file diff --git a/boards.cfg b/boards.cfg index 4ae6656..1a33b44 100644 --- a/boards.cfg +++ b/boards.cfg @@ -270,6 +270,7 @@ harmony arm armv7:arm720t harmony nvidia seaboard arm armv7:arm720t seaboard nvidia tegra20 ventana arm armv7:arm720t ventana nvidia tegra20 whistler arm armv7:arm720t whistler nvidia tegra20 +colibri_t20 arm armv7:arm720t colibri_t20 toradex tegra20 u8500_href arm armv7 u8500 st-ericsson u8500 snowball arm armv7 snowball st-ericsson u8500 actux1_4_16 arm ixp actux1 - - actux1:FLASH2X2 diff --git a/include/configs/colibri_t20.h b/include/configs/colibri_t20.h new file mode 100644 index 0000000..e64b1e8 --- /dev/null +++ b/include/configs/colibri_t20.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2012 Lucas Stach + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include "tegra20-common.h" + +/* Enable FDT support */ +#define CONFIG_DEFAULT_DEVICE_TREE tegra20-colibri +#define CONFIG_OF_CONTROL +#define CONFIG_OF_SEPARATE + +/* High-level configuration options */ +#define V_PROMPT "Tegra20 (Colibri) # " +#define CONFIG_TEGRA_BOARD_STRING "Toradex Colibri T20" + +/* Board-specific serial config */ +#define CONFIG_TEGRA_ENABLE_UARTA +#define CONFIG_TEGRA_UARTA_SDIO1 +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTA_BASE + +#define CONFIG_BOARD_EARLY_INIT_F + +/* SD/MMC support */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_TEGRA_MMC +#define CONFIG_CMD_MMC + +/* File system support */ +#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT + +/* USB host support */ +#define CONFIG_USB_EHCI +#define CONFIG_USB_EHCI_TEGRA +#define CONFIG_USB_ULPI +#define CONFIG_USB_ULPI_VIEWPORT +#define CONFIG_USB_STORAGE +#define CONFIG_USB_MAX_CONTROLLER_COUNT 3 +#define CONFIG_CMD_USB + +/* USB networking support */ +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_ASIX +#define CONFIG_CMD_NET +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_PING + +/* NAND support */ +#define CONFIG_CMD_NAND +#define CONFIG_TEGRA_NAND +#define CONFIG_SYS_MAX_NAND_DEVICE 1 +#define CONFIG_SYS_NAND_BASE TEGRA20_NAND_BASE + +/* Environment in NAND, 64K is a bit excessive but erase block is 256K anyway */ +#define CONFIG_ENV_IS_IN_NAND +#define CONFIG_ENV_OFFSET (SZ_2M) +#undef CONFIG_ENV_SIZE /* undef size from tegra20-common.h */ +#define CONFIG_ENV_SIZE (SZ_64K) + +/* Debug commands */ +#define CONFIG_CMD_BDI +#define CONFIG_CMD_CACHE + +#include "tegra-common-post.h" + +#endif /* __CONFIG_H */
This adds board support for the Toradex Colibri T20 module. Working functions: - MMC boot - USB boot - Network - NAND environment Signed-off-by: Lucas Stach <dev@lynxeye.de> CC: Stephen Warren <swarren@wwwdotorg.org> CC: Tom Warren <twarren.nvidia@gmail.com> --- MAINTAINERS | 4 ++ board/toradex/colibri_t20/Makefile | 38 +++++++++++++++ board/toradex/colibri_t20/colibri_t20.c | 64 +++++++++++++++++++++++++ board/toradex/dts/tegra20-colibri.dts | 39 ++++++++++++++++ boards.cfg | 1 + include/configs/colibri_t20.h | 83 +++++++++++++++++++++++++++++++++ 6 Dateien geändert, 229 Zeilen hinzugefügt(+) create mode 100644 board/toradex/colibri_t20/Makefile create mode 100644 board/toradex/colibri_t20/colibri_t20.c create mode 100644 board/toradex/dts/tegra20-colibri.dts create mode 100644 include/configs/colibri_t20.h