linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v9 0/3] Add support for tegra2 based ventana board
@ 2011-10-12 11:53 pdeschrijver at nvidia.com
  2011-10-12 11:53 ` [PATCH v9 1/3] arm/tegra: prepare Seaboard pinmux code for derived boards pdeschrijver at nvidia.com
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: pdeschrijver at nvidia.com @ 2011-10-12 11:53 UTC (permalink / raw)
  To: linux-arm-kernel

From: Peter De Schrijver <pdeschrijver@nvidia.com>

This patch set adds support for the tegra2 based ventana development board.

Boot tested on ventana.                                                                                                                               

Uses a table based approach to select the correct init function.

Provoke kernel warning when no suitable pinmux table can be found.

Peter De Schrijver (3):
  arm/tegra: prepare Seaboard pinmux code for derived boards
  arm/tegra: add support for ventana pinmuxing
  arm/tegra: device tree support for ventana board

 arch/arm/boot/dts/tegra-ventana.dts         |   32 ++++++++++++++
 arch/arm/mach-tegra/Kconfig                 |    6 +++
 arch/arm/mach-tegra/Makefile                |    1 +
 arch/arm/mach-tegra/Makefile.boot           |    1 +
 arch/arm/mach-tegra/board-dt.c              |    5 ++-
 arch/arm/mach-tegra/board-seaboard-pinmux.c |   63 ++++++++++++++++++++++++---
 6 files changed, 101 insertions(+), 7 deletions(-)
 create mode 100644 arch/arm/boot/dts/tegra-ventana.dts

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v9 1/3] arm/tegra: prepare Seaboard pinmux code for derived boards
  2011-10-12 11:53 [PATCH v9 0/3] Add support for tegra2 based ventana board pdeschrijver at nvidia.com
@ 2011-10-12 11:53 ` pdeschrijver at nvidia.com
  2011-10-12 11:53 ` [PATCH v9 2/3] arm/tegra: add support for ventana pinmuxing pdeschrijver at nvidia.com
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: pdeschrijver at nvidia.com @ 2011-10-12 11:53 UTC (permalink / raw)
  To: linux-arm-kernel

From: Peter De Schrijver <pdeschrijver@nvidia.com>

This patch splits out the common part of pinmux and GPIO initialization for
seaboard and derived boards. This code is based on work done by Jong Kim
<jongk@nvidia.com>.

Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
---
 arch/arm/mach-tegra/board-seaboard-pinmux.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-tegra/board-seaboard-pinmux.c b/arch/arm/mach-tegra/board-seaboard-pinmux.c
index 74f78b7..b31c765 100644
--- a/arch/arm/mach-tegra/board-seaboard-pinmux.c
+++ b/arch/arm/mach-tegra/board-seaboard-pinmux.c
@@ -1,5 +1,6 @@
 /*
- * Copyright (C) 2010 NVIDIA Corporation
+ * Copyright (C) 2010,2011 NVIDIA Corporation
+ * Copyright (C) 2011 Google, Inc.
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -160,7 +161,7 @@ static __initdata struct tegra_pingroup_config seaboard_pinmux[] = {
 
 
 
-static struct tegra_gpio_table gpio_table[] = {
+static struct tegra_gpio_table common_gpio_table[] = {
 	{ .gpio = TEGRA_GPIO_SD2_CD,		.enable = true },
 	{ .gpio = TEGRA_GPIO_SD2_WP,		.enable = true },
 	{ .gpio = TEGRA_GPIO_SD2_POWER,		.enable = true },
@@ -171,12 +172,17 @@ static struct tegra_gpio_table gpio_table[] = {
 	{ .gpio = TEGRA_GPIO_USB1,		.enable = true },
 };
 
-void __init seaboard_pinmux_init(void)
+static void __init seaboard_common_pinmux_init(void)
 {
 	tegra_pinmux_config_table(seaboard_pinmux, ARRAY_SIZE(seaboard_pinmux));
 
 	tegra_drive_pinmux_config_table(seaboard_drive_pinmux,
 					ARRAY_SIZE(seaboard_drive_pinmux));
 
-	tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
+	tegra_gpio_config(common_gpio_table, ARRAY_SIZE(common_gpio_table));
+}
+
+void __init seaboard_pinmux_init(void)
+{
+	seaboard_common_pinmux_init();
 }
-- 
1.7.7.rc0.72.g4b5ea.dirty

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v9 2/3] arm/tegra: add support for ventana pinmuxing
  2011-10-12 11:53 [PATCH v9 0/3] Add support for tegra2 based ventana board pdeschrijver at nvidia.com
  2011-10-12 11:53 ` [PATCH v9 1/3] arm/tegra: prepare Seaboard pinmux code for derived boards pdeschrijver at nvidia.com
@ 2011-10-12 11:53 ` pdeschrijver at nvidia.com
  2011-10-12 11:53 ` [PATCH v9 3/3] arm/tegra: device tree support for ventana board pdeschrijver at nvidia.com
  2011-10-12 15:56 ` [PATCH v9 0/3] Add support for tegra2 based " Stephen Warren
  3 siblings, 0 replies; 7+ messages in thread
From: pdeschrijver at nvidia.com @ 2011-10-12 11:53 UTC (permalink / raw)
  To: linux-arm-kernel

From: Peter De Schrijver <pdeschrijver@nvidia.com>

Add support for ventana pinmuxing as a seaboard derivative. This is a cut down
version of work done by Jong Kim <jongk@nvidia.com>.

Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
---
 arch/arm/mach-tegra/Makefile                |    1 +
 arch/arm/mach-tegra/board-seaboard-pinmux.c |   49 +++++++++++++++++++++++++-
 2 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile
index f11b910..91a07e1 100644
--- a/arch/arm/mach-tegra/Makefile
+++ b/arch/arm/mach-tegra/Makefile
@@ -31,6 +31,7 @@ obj-${CONFIG_MACH_SEABOARD}             += board-seaboard-pinmux.o
 
 obj-${CONFIG_MACH_TEGRA_DT}             += board-dt.o
 obj-${CONFIG_MACH_TEGRA_DT}             += board-harmony-pinmux.o
+obj-${CONFIG_MACH_TEGRA_DT}             += board-seaboard-pinmux.o
 
 obj-${CONFIG_MACH_TRIMSLICE}            += board-trimslice.o
 obj-${CONFIG_MACH_TRIMSLICE}            += board-trimslice-pinmux.o
diff --git a/arch/arm/mach-tegra/board-seaboard-pinmux.c b/arch/arm/mach-tegra/board-seaboard-pinmux.c
index b31c765..b62b04d 100644
--- a/arch/arm/mach-tegra/board-seaboard-pinmux.c
+++ b/arch/arm/mach-tegra/board-seaboard-pinmux.c
@@ -158,8 +158,26 @@ static __initdata struct tegra_pingroup_config seaboard_pinmux[] = {
 	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
 };
 
-
-
+static __initdata struct tegra_pingroup_config ventana_pinmux[] = {
+	{TEGRA_PINGROUP_DAP3, TEGRA_MUX_DAP3,     TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_DDC,  TEGRA_MUX_RSVD2,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_DTA,  TEGRA_MUX_VI,       TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_DTB,  TEGRA_MUX_VI,       TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_DTC,  TEGRA_MUX_VI,       TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_DTD,  TEGRA_MUX_VI,       TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_GMD,  TEGRA_MUX_SFLASH,   TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_LPW0, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_LPW2, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_LSC1, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_LSCK, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_LSDA, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_PTA,  TEGRA_MUX_RSVD2,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_SLXC, TEGRA_MUX_SDIO3,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_SLXK, TEGRA_MUX_SDIO3,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+	{TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+	{TEGRA_PINGROUP_SPIG, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+};
 
 static struct tegra_gpio_table common_gpio_table[] = {
 	{ .gpio = TEGRA_GPIO_SD2_CD,		.enable = true },
@@ -172,6 +190,26 @@ static struct tegra_gpio_table common_gpio_table[] = {
 	{ .gpio = TEGRA_GPIO_USB1,		.enable = true },
 };
 
+static void __init update_pinmux(struct tegra_pingroup_config *newtbl, int size)
+{
+	int i, j;
+	struct tegra_pingroup_config *new_pingroup, *base_pingroup;
+
+	/* Update base seaboard pinmux table with secondary board
+	 * specific pinmux table table.
+	 */
+	for (i = 0; i < size; i++) {
+		new_pingroup = &newtbl[i];
+		for (j = 0; j < ARRAY_SIZE(seaboard_pinmux); j++) {
+			base_pingroup = &seaboard_pinmux[j];
+			if (new_pingroup->pingroup == base_pingroup->pingroup) {
+				*base_pingroup = *new_pingroup;
+				break;
+			}
+		}
+	}
+}
+
 static void __init seaboard_common_pinmux_init(void)
 {
 	tegra_pinmux_config_table(seaboard_pinmux, ARRAY_SIZE(seaboard_pinmux));
@@ -186,3 +224,10 @@ void __init seaboard_pinmux_init(void)
 {
 	seaboard_common_pinmux_init();
 }
+
+void __init ventana_pinmux_init(void)
+{
+	update_pinmux(ventana_pinmux, ARRAY_SIZE(ventana_pinmux));
+	seaboard_common_pinmux_init();
+}
+
-- 
1.7.7.rc0.72.g4b5ea.dirty

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v9 3/3] arm/tegra: device tree support for ventana board
  2011-10-12 11:53 [PATCH v9 0/3] Add support for tegra2 based ventana board pdeschrijver at nvidia.com
  2011-10-12 11:53 ` [PATCH v9 1/3] arm/tegra: prepare Seaboard pinmux code for derived boards pdeschrijver at nvidia.com
  2011-10-12 11:53 ` [PATCH v9 2/3] arm/tegra: add support for ventana pinmuxing pdeschrijver at nvidia.com
@ 2011-10-12 11:53 ` pdeschrijver at nvidia.com
  2011-10-12 15:56 ` [PATCH v9 0/3] Add support for tegra2 based " Stephen Warren
  3 siblings, 0 replies; 7+ messages in thread
From: pdeschrijver at nvidia.com @ 2011-10-12 11:53 UTC (permalink / raw)
  To: linux-arm-kernel

From: Peter De Schrijver <pdeschrijver@nvidia.com>

Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
---
 arch/arm/boot/dts/tegra-ventana.dts |   32 ++++++++++++++++++++++++++++++++
 arch/arm/mach-tegra/Kconfig         |    6 ++++++
 arch/arm/mach-tegra/Makefile.boot   |    1 +
 arch/arm/mach-tegra/board-dt.c      |   26 +++++++++++++++++++++-----
 4 files changed, 60 insertions(+), 5 deletions(-)
 create mode 100644 arch/arm/boot/dts/tegra-ventana.dts

diff --git a/arch/arm/boot/dts/tegra-ventana.dts b/arch/arm/boot/dts/tegra-ventana.dts
new file mode 100644
index 0000000..9b29a62
--- /dev/null
+++ b/arch/arm/boot/dts/tegra-ventana.dts
@@ -0,0 +1,32 @@
+/dts-v1/;
+
+/memreserve/ 0x1c000000 0x04000000;
+/include/ "tegra20.dtsi"
+
+/ {
+	model = "NVIDIA Tegra2 Ventana evaluation board";
+	compatible = "nvidia,ventana", "nvidia,tegra20";
+
+	chosen {
+		bootargs = "vmalloc=192M video=tegrafb console=ttyS0,115200n8 root=/dev/ram rdinit=/sbin/init";
+	};
+
+	memory {
+		reg = < 0x00000000 0x40000000 >;
+	};
+
+	serial at 70006300 {
+		clock-frequency = < 216000000 >;
+	};
+
+	sdhci at c8000400 {
+		cd-gpios = <&gpio 69 0>; /* gpio PI5 */
+		wp-gpios = <&gpio 57 0>; /* gpio PH1 */
+		power-gpios = <&gpio 155 0>; /* gpio PT3 */
+	};
+
+	sdhci at c8000600 {
+		power-gpios = <&gpio 70 0>; /* gpio PI6 */
+		support-8bit;
+	};
+};
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index d82ebab..91aff7c 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -69,6 +69,12 @@ config MACH_WARIO
        help
          Support for the Wario version of Seaboard
 
+config MACH_VENTANA
+       bool "Ventana board"
+       select MACH_TEGRA_DT
+       help
+         Support for the nVidia Ventana development platform
+
 choice
         prompt "Low-level debug console UART"
         default TEGRA_DEBUG_UART_NONE
diff --git a/arch/arm/mach-tegra/Makefile.boot b/arch/arm/mach-tegra/Makefile.boot
index 5e870d2..bd12c9f 100644
--- a/arch/arm/mach-tegra/Makefile.boot
+++ b/arch/arm/mach-tegra/Makefile.boot
@@ -4,3 +4,4 @@ initrd_phys-$(CONFIG_ARCH_TEGRA_2x_SOC)	:= 0x00800000
 
 dtb-$(CONFIG_MACH_HARMONY) += tegra-harmony.dtb
 dtb-$(CONFIG_MACH_SEABOARD) += tegra-seaboard.dtb
+dtb-$(CONFIG_MACH_VENTANA) += tegra-ventana.dtb
diff --git a/arch/arm/mach-tegra/board-dt.c b/arch/arm/mach-tegra/board-dt.c
index 9f47e04..d368f8d 100644
--- a/arch/arm/mach-tegra/board-dt.c
+++ b/arch/arm/mach-tegra/board-dt.c
@@ -47,7 +47,7 @@
 
 void harmony_pinmux_init(void);
 void seaboard_pinmux_init(void);
-
+void ventana_pinmux_init(void);
 
 struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = {
 	OF_DEV_AUXDATA("nvidia,tegra20-sdhci", TEGRA_SDMMC1_BASE, "sdhci-tegra.0", NULL),
@@ -80,9 +80,19 @@ static struct of_device_id tegra_dt_gic_match[] __initdata = {
 	{}
 };
 
+static struct {
+	char *machine;
+	void (*init)(void);
+} pinmux_configs[] = {
+	{ "nvidia,harmony", harmony_pinmux_init },
+	{ "nvidia,seaboard", seaboard_pinmux_init },
+	{ "nvidia,ventana", ventana_pinmux_init },
+};
+
 static void __init tegra_dt_init(void)
 {
 	struct device_node *node;
+	int i;
 
 	node = of_find_matching_node_by_address(NULL, tegra_dt_gic_match,
 						TEGRA_ARM_INT_DIST_BASE);
@@ -91,10 +101,15 @@ static void __init tegra_dt_init(void)
 
 	tegra_clk_init_from_table(tegra_dt_clk_init_table);
 
-	if (of_machine_is_compatible("nvidia,harmony"))
-		harmony_pinmux_init();
-	else if (of_machine_is_compatible("nvidia,seaboard"))
-		seaboard_pinmux_init();
+	for (i = 0; i < ARRAY_SIZE(pinmux_configs); i++) {
+		if (of_machine_is_compatible(pinmux_configs[i].machine)) {
+			pinmux_configs[i].init();
+			break;
+		}
+	}
+
+	WARN(i == ARRAY_SIZE(pinmux_configs),
+		"Unknown platform! Pinmuxing not initialized\n");
 
 	/*
 	 * Finished with the static registrations now; fill in the missing
@@ -106,6 +121,7 @@ static void __init tegra_dt_init(void)
 static const char * tegra_dt_board_compat[] = {
 	"nvidia,harmony",
 	"nvidia,seaboard",
+	"nvidia,ventana",
 	NULL
 };
 
-- 
1.7.7.rc0.72.g4b5ea.dirty

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v9 0/3] Add support for tegra2 based ventana board
  2011-10-12 11:53 [PATCH v9 0/3] Add support for tegra2 based ventana board pdeschrijver at nvidia.com
                   ` (2 preceding siblings ...)
  2011-10-12 11:53 ` [PATCH v9 3/3] arm/tegra: device tree support for ventana board pdeschrijver at nvidia.com
@ 2011-10-12 15:56 ` Stephen Warren
  2011-10-12 22:36   ` Olof Johansson
  3 siblings, 1 reply; 7+ messages in thread
From: Stephen Warren @ 2011-10-12 15:56 UTC (permalink / raw)
  To: linux-arm-kernel

pdeschrijver at nvidia.com wrote at Wednesday, October 12, 2011 5:53 AM:
> This patch set adds support for the tegra2 based ventana development board.
> 
> Boot tested on ventana.
> 
> Uses a table based approach to select the correct init function.
> 
> Provoke kernel warning when no suitable pinmux table can be found.

Whole series:

Acked-by: Stephen Warren <swarren@nvidia.com>

Thanks for following up on my picky comments:-)

--
nvpublic

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v9 0/3] Add support for tegra2 based ventana board
  2011-10-12 15:56 ` [PATCH v9 0/3] Add support for tegra2 based " Stephen Warren
@ 2011-10-12 22:36   ` Olof Johansson
  2011-10-13 13:07     ` Peter De Schrijver
  0 siblings, 1 reply; 7+ messages in thread
From: Olof Johansson @ 2011-10-12 22:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Oct 12, 2011 at 08:56:47AM -0700, Stephen Warren wrote:
> pdeschrijver at nvidia.com wrote at Wednesday, October 12, 2011 5:53 AM:
> > This patch set adds support for the tegra2 based ventana development board.
> > 
> > Boot tested on ventana.
> > 
> > Uses a table based approach to select the correct init function.
> > 
> > Provoke kernel warning when no suitable pinmux table can be found.
> 
> Whole series:
> 
> Acked-by: Stephen Warren <swarren@nvidia.com>
> 
> Thanks for following up on my picky comments:-)

Yes, thanks Peter.

Applied to for-3.2/features. I had to do some fixups since I applied it
on top of some of Stephen's changes for gpio/pinmux, so please verify
that I did the fixups correctly.


-Olof

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v9 0/3] Add support for tegra2 based ventana board
  2011-10-12 22:36   ` Olof Johansson
@ 2011-10-13 13:07     ` Peter De Schrijver
  0 siblings, 0 replies; 7+ messages in thread
From: Peter De Schrijver @ 2011-10-13 13:07 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Oct 13, 2011 at 12:36:43AM +0200, Olof Johansson wrote:
> On Wed, Oct 12, 2011 at 08:56:47AM -0700, Stephen Warren wrote:
> > pdeschrijver at nvidia.com wrote at Wednesday, October 12, 2011 5:53 AM:
> > > This patch set adds support for the tegra2 based ventana development board.
> > > 
> > > Boot tested on ventana.
> > > 
> > > Uses a table based approach to select the correct init function.
> > > 
> > > Provoke kernel warning when no suitable pinmux table can be found.
> > 
> > Whole series:
> > 
> > Acked-by: Stephen Warren <swarren@nvidia.com>
> > 
> > Thanks for following up on my picky comments:-)
> 
> Yes, thanks Peter.
> 
> Applied to for-3.2/features. I had to do some fixups since I applied it
> on top of some of Stephen's changes for gpio/pinmux, so please verify
> that I did the fixups correctly.

I just booted your tree on ventana. Works fine! Thanks!

Peter.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-10-13 13:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-12 11:53 [PATCH v9 0/3] Add support for tegra2 based ventana board pdeschrijver at nvidia.com
2011-10-12 11:53 ` [PATCH v9 1/3] arm/tegra: prepare Seaboard pinmux code for derived boards pdeschrijver at nvidia.com
2011-10-12 11:53 ` [PATCH v9 2/3] arm/tegra: add support for ventana pinmuxing pdeschrijver at nvidia.com
2011-10-12 11:53 ` [PATCH v9 3/3] arm/tegra: device tree support for ventana board pdeschrijver at nvidia.com
2011-10-12 15:56 ` [PATCH v9 0/3] Add support for tegra2 based " Stephen Warren
2011-10-12 22:36   ` Olof Johansson
2011-10-13 13:07     ` Peter De Schrijver

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).