Skip to contentSkip to conversation

tegra: add Colibri T20 board support

PATCH New Lucas Stach 2 participants 5 messages Sep 27, 2012 Tegra architecture support

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 tegra: add Colibri T20 board support

This adds board support for the Toradex Colibri T20 module.

Working functions:
- MMC boot
- USB boot
- Network
- NAND environment

CC Stephen Warren <[email protected]>
CC Tom Warren <[email protected]>
---
 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
MAINTAINERS +4 -0
index a00e850..6b3e9a4 100644
@@ -890,6 +890,10 @@ Matt Sealey <[email protected]>
 Bo Shen <[email protected]>
 	at91sam9x5ek		ARM926EJS (AT91SAM9G15,G25,G35,X25,X35 SoC)
 
+Lucas Stach <[email protected]>
+
+	colibri_t20		Tegra20 (ARM7 & A9 Dual Core)
+
 Nick Thompson <[email protected]>
 
 	da830evm	ARM926EJS (DA830/OMAP-L137)
board/toradex/colibri_t20/Makefile new file +38 -0
new file mode 100644
index 0000000..b8c61b6
@@ -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
board/toradex/colibri_t20/colibri_t20.c new file +64 -0

64 lines not on this page · raw message

board/toradex/dts/tegra20-colibri.dts new file +39 -0
new file mode 100644
index 0000000..a22cba6
@@ -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 at c5008000";
+		usb1 = "/usb at c5000000";
+		usb2 = "/usb at c5004000";
+	};
+
+	usb at c5000000 {
+		dr_mode = "otg";
+	};
+
+	usb at c5004000 {
+		nvidia,phy-reset-gpio = <&gpio 169 0>; /* PV1 */
+		nvidia,vbus-gpio = <&gpio 217 0>; /* PBB1 */
+	};
+
+	usb at c5008000 {
+		nvidia,vbus-gpio = <&gpio 178 1>; /* PW2 low-active */
+	};
+
+	nand-controller at 70008000 {
+		nvidia,wp-gpios = <&gpio 144 0>; /* PS0 */
+		nvidia,width = <8>;
+		nvidia,timing = <15 100 25 80 25 10 15 10 100>;
+
+		nand at 0 {
+			reg = <0>;
+			compatible = "nand-flash";
+		};
+	};
+};
\ No newline at end of file
boards.cfg +1 -0
index 4ae6656..1a33b44 100644
@@ -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
include/configs/colibri_t20.h new file +83 -0

83 lines not on this page · raw message

Signature · 1 line
1.7.11.4
#1 lore raw

PATCH 1/1 tegra: add Colibri T20 board support

Quoted 9 lines · Lucas Stach

This adds board support for the Toradex Colibri T20 module.

Working functions:
- MMC boot
- USB boot
- Network
- NAND environment

board/toradex/colibri_t20/colibri_t20.c line 36

Quoted 8 lines
board/toradex/colibri_t20/colibri_t20.c +7 -0
 
+#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.

board/toradex/colibri_t20/colibri_t20.c line 62

Quoted 4 lines
board/toradex/colibri_t20/colibri_t20.c +4 -0
+#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?

board/toradex/dts/tegra20-colibri.dts

Quoted 1 line
board/toradex/dts/tegra20-colibri.dts +0 -0

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".

Quoted 2 lines

+};
\ No newline at end of file

That's probably unintended?

include/configs/colibri_t20.h line 75

Quoted 7 lines
include/configs/colibri_t20.h +5 -0
 
+/* 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?

#2 lore raw

PATCH 1/1 tegra: add Colibri T20 board support

Am Donnerstag, den 27.09.2012, 16:49 -0600 schrieb Stephen Warren:

Quoted 21 lines · Lucas Stach
Quoted 9 lines

This adds board support for the Toradex Colibri T20 module.

Working functions:
- MMC boot
- USB boot
- Network
- NAND environment

board/toradex/colibri_t20/colibri_t20.c line 36

Quoted 8 lines
board/toradex/colibri_t20/colibri_t20.c +7 -0
 
+#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:

Quoted 6 lines

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.

Quoted 8 lines

board/toradex/colibri_t20/colibri_t20.c line 62

Quoted 4 lines
board/toradex/colibri_t20/colibri_t20.c +4 -0
+#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.

Quoted 6 lines

board/toradex/dts/tegra20-colibri.dts

Quoted 1 line
board/toradex/dts/tegra20-colibri.dts +0 -0

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.

Quoted 5 lines
Quoted 2 lines

+};
\ No newline at end of file

That's probably unintended?

Yep.

Quoted 14 lines

include/configs/colibri_t20.h line 75

Quoted 7 lines
include/configs/colibri_t20.h +5 -0
 
+/* 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.

#3 lore raw

PATCH 1/1 tegra: add Colibri T20 board support

Quoted 22 lines · Lucas Stach

Am Donnerstag, den 27.09.2012, 16:49 -0600 schrieb Stephen Warren:

Quoted 21 lines · Lucas Stach
Quoted 9 lines

This adds board support for the Toradex Colibri T20 module.

Working functions:
- MMC boot
- USB boot
- Network
- NAND environment

board/toradex/colibri_t20/colibri_t20.c line 36

Quoted 8 lines
board/toradex/colibri_t20/colibri_t20.c +7 -0
 
+#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:

Quoted 8 lines
Quoted 6 lines

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.

Quoted 14 lines
Quoted 14 lines

include/configs/colibri_t20.h line 75

Quoted 7 lines
include/configs/colibri_t20.h +5 -0
 
+/* 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?

Quoted 1 line

Colibri has no eMMC, it boots from NAND.

Oh, so "MMC boot" in the patch description should be "SD boot" then?

#4 lore raw

PATCH 1/1 tegra: add Colibri T20 board support

Am Donnerstag, den 27.09.2012, 17:09 -0600 schrieb Stephen Warren:

Quoted 48 lines · Lucas Stach
Quoted 22 lines

Am Donnerstag, den 27.09.2012, 16:49 -0600 schrieb Stephen Warren:

Quoted 21 lines · Lucas Stach
Quoted 9 lines

This adds board support for the Toradex Colibri T20 module.

Working functions:
- MMC boot
- USB boot
- Network
- NAND environment

board/toradex/colibri_t20/colibri_t20.c line 36

Quoted 8 lines
board/toradex/colibri_t20/colibri_t20.c +7 -0
 
+#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:

Quoted 8 lines
Quoted 6 lines

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.

Quoted 14 lines
Quoted 14 lines

include/configs/colibri_t20.h line 75

Quoted 7 lines
include/configs/colibri_t20.h +5 -0
 
+/* 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?

Quoted 4 lines
Quoted 1 line

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. ;)