All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
@ 2012-05-25 13:46 Thierry Reding
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 2/7] tegra: medcom: Add device tree support Thierry Reding
                   ` (6 more replies)
  0 siblings, 7 replies; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 13:46 UTC (permalink / raw)
  To: u-boot

This commit uses the common Tegra board implementation instead of
duplicating a lot of the code. In addition, the Plutux and Medcom
specific board files can be removed as the MMC/SD setup is common
among all Tamonten-based boards.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- new patch

 board/avionic-design/common/tamonten.c |   49 +++++---------------------------
 board/avionic-design/common/tamonten.h |   32 ---------------------
 board/avionic-design/medcom/Makefile   |    6 ++--
 board/avionic-design/medcom/medcom.c   |   45 -----------------------------
 board/avionic-design/plutux/Makefile   |    6 ++--
 board/avionic-design/plutux/plutux.c   |   45 -----------------------------
 6 files changed, 13 insertions(+), 170 deletions(-)
 delete mode 100644 board/avionic-design/common/tamonten.h
 delete mode 100644 board/avionic-design/medcom/medcom.c
 delete mode 100644 board/avionic-design/plutux/plutux.c

diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c
index f23b657..d9ecd23 100644
--- a/board/avionic-design/common/tamonten.c
+++ b/board/avionic-design/common/tamonten.c
@@ -1,7 +1,7 @@
 /*
  *  (C) Copyright 2010,2011
  *  NVIDIA Corporation <www.nvidia.com>
- *  (C) Copyright 2011
+ *  (C) Copyright 2011-2012
  *  Avionic Design GmbH <www.avionic-design.de>
  *
  * See file CREDITS for list of people who contributed to this
@@ -36,25 +36,17 @@
 #include <asm/arch/pinmux.h>
 #include <asm/arch/uart.h>
 #include <asm/arch/mmc.h>
-#include "tamonten.h"
 
 #ifdef CONFIG_TEGRA2_MMC
 #include <mmc.h>
 #endif
 
-DECLARE_GLOBAL_DATA_PTR;
-
-const struct tegra2_sysinfo sysinfo = {
-	CONFIG_TEGRA2_BOARD_STRING
-};
-
 /*
- * Routine: timer_init
- * Description: init the timestamp and lastinc value
+ * Routine: gpio_config_uart
+ * Description: Does nothing on Tamonten - no conflict w/SPI.
  */
-int timer_init(void)
+void gpio_config_uart(void)
 {
-	return 0;
 }
 
 #ifdef CONFIG_TEGRA2_MMC
@@ -65,46 +57,19 @@ int timer_init(void)
 static void pin_mux_mmc(void)
 {
 	funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT);
+	/* for CD GPIO PH2 */
+	pinmux_tristate_disable(PINGRP_ATD);
 }
-#endif
-
-/*
- * Routine: board_init
- * Description: Early hardware init.
- */
-int board_init(void)
-{
-	clock_init();
-	clock_verify();
-
-	/* boot param addr */
-	gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100);
 
-	return 0;
-}
-
-#ifdef CONFIG_TEGRA2_MMC
 /* this is a weak define that we are overriding */
 int board_mmc_init(bd_t *bd)
 {
-	debug("board_mmc_init called\n");
 	/* Enable muxes, etc. for SDMMC controllers */
 	pin_mux_mmc();
-	gpio_config_mmc();
 
-	debug("board_mmc_init: init eMMC\n");
-	/* init dev 0, eMMC chip, with 4-bit bus */
+	/* init dev 0, SD slot, with 4-bit bus */
 	tegra2_mmc_init(0, 4, -1, GPIO_PH2);
 
 	return 0;
 }
 #endif
-
-#ifdef CONFIG_BOARD_EARLY_INIT_F
-int board_early_init_f(void)
-{
-	/* Initialize selected UARTs */
-	board_init_uart_f();
-	return 0;
-}
-#endif /* EARLY_INIT */
diff --git a/board/avionic-design/common/tamonten.h b/board/avionic-design/common/tamonten.h
deleted file mode 100644
index 0e60b0f..0000000
--- a/board/avionic-design/common/tamonten.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  (C) Copyright 2010,2011
- *  NVIDIA Corporation <www.nvidia.com>
- *  (C) Copyright 2011
- *  Avionic Design GmbH <www.avionic-design.de>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef _TAMONTEN_H_
-#define _TAMONTEN_H_
-
-void tegra2_start(void);
-void gpio_config_mmc(void);
-
-#endif /* TAMONTEN_H */
diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile
index b0c318c..d96d043 100644
--- a/board/avionic-design/medcom/Makefile
+++ b/board/avionic-design/medcom/Makefile
@@ -1,7 +1,7 @@
 #
 #  (C) Copyright 2010,2011
 #  NVIDIA Corporation <www.nvidia.com>
-#  (C) Copyright 2011
+#  (C) Copyright 2011,2012
 #  Avionic Design GmbH <www.avionic-design.de>
 #
 #  See file CREDITS for list of people who contributed to this
@@ -26,12 +26,12 @@
 include $(TOPDIR)/config.mk
 
 ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
 endif
 
 LIB	= $(obj)lib$(BOARD).o
 
-COBJS	:= $(BOARD).o
+COBJS	:= ../../nvidia/common/board.o
 COBJS	+= ../common/tamonten.o
 
 SRCS	:= $(COBJS:.o=.c)
diff --git a/board/avionic-design/medcom/medcom.c b/board/avionic-design/medcom/medcom.c
deleted file mode 100644
index 42c8094..0000000
--- a/board/avionic-design/medcom/medcom.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  (C) Copyright 2010,2011
- *  NVIDIA Corporation <www.nvidia.com>
- *  (C) Copyright 2011
- *  Avionic Design GmbH <www.avionic-design.de>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/gpio.h>
-#include <asm/arch/tegra2.h>
-#ifdef CONFIG_TEGRA2_MMC
-#include <mmc.h>
-#endif
-
-#ifdef CONFIG_TEGRA2_MMC
-/*
- * Routine: gpio_config_mmc
- * Description: Set GPIOs for SD card
- */
-void gpio_config_mmc(void)
-{
-	/* configure pin as input for card detect */
-	gpio_request(GPIO_PH2, "SD4 CD");
-	gpio_direction_input(GPIO_PH2);
-}
-#endif
diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile
index b0c318c..d96d043 100644
--- a/board/avionic-design/plutux/Makefile
+++ b/board/avionic-design/plutux/Makefile
@@ -1,7 +1,7 @@
 #
 #  (C) Copyright 2010,2011
 #  NVIDIA Corporation <www.nvidia.com>
-#  (C) Copyright 2011
+#  (C) Copyright 2011,2012
 #  Avionic Design GmbH <www.avionic-design.de>
 #
 #  See file CREDITS for list of people who contributed to this
@@ -26,12 +26,12 @@
 include $(TOPDIR)/config.mk
 
 ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
 endif
 
 LIB	= $(obj)lib$(BOARD).o
 
-COBJS	:= $(BOARD).o
+COBJS	:= ../../nvidia/common/board.o
 COBJS	+= ../common/tamonten.o
 
 SRCS	:= $(COBJS:.o=.c)
diff --git a/board/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c
deleted file mode 100644
index 42c8094..0000000
--- a/board/avionic-design/plutux/plutux.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  (C) Copyright 2010,2011
- *  NVIDIA Corporation <www.nvidia.com>
- *  (C) Copyright 2011
- *  Avionic Design GmbH <www.avionic-design.de>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/gpio.h>
-#include <asm/arch/tegra2.h>
-#ifdef CONFIG_TEGRA2_MMC
-#include <mmc.h>
-#endif
-
-#ifdef CONFIG_TEGRA2_MMC
-/*
- * Routine: gpio_config_mmc
- * Description: Set GPIOs for SD card
- */
-void gpio_config_mmc(void)
-{
-	/* configure pin as input for card detect */
-	gpio_request(GPIO_PH2, "SD4 CD");
-	gpio_direction_input(GPIO_PH2);
-}
-#endif
-- 
1.7.10.2

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

* [U-Boot] [PATCH v2 2/7] tegra: medcom: Add device tree support
  2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
@ 2012-05-25 13:46 ` Thierry Reding
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 3/7] tegra: plutux: " Thierry Reding
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 13:46 UTC (permalink / raw)
  To: u-boot

Device tree support is required for working USB host support, which in
turn enables ethernet support.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- drop chosen and sdhci at c8000600 nodes from DTS
- drop CONFIG_USB_ETHER_ASIX from configuration

 board/avionic-design/dts/tegra2-medcom.dts |   58 ++++++++++++++++++++++++++++
 include/configs/medcom.h                   |   21 +++++++++-
 2 files changed, 78 insertions(+), 1 deletion(-)
 create mode 100644 board/avionic-design/dts/tegra2-medcom.dts

diff --git a/board/avionic-design/dts/tegra2-medcom.dts b/board/avionic-design/dts/tegra2-medcom.dts
new file mode 100644
index 0000000..fc52f9c
--- /dev/null
+++ b/board/avionic-design/dts/tegra2-medcom.dts
@@ -0,0 +1,58 @@
+/dts-v1/;
+
+/include/ ARCH_CPU_DTS
+
+/ {
+	model = "Avionic Design Medcom-Wide";
+	compatible = "avionic-design,medcom", "nvidia,tegra20";
+
+	aliases {
+		usb0 = "/usb at c5008000";
+	};
+
+	memory {
+		reg = <0x00000000 0x20000000>;
+	};
+
+	clocks {
+		clk_32k: clk_32k {
+			clock-frequency = <32000>;
+		};
+
+		osc {
+			clock-frequency = <12000000>;
+		};
+	};
+
+	clock at 60006000 {
+		clocks = <&clk_32k &osc>;
+	};
+
+	serial at 70006300 {
+		clock-frequency = <216000000>;
+	};
+
+	i2c at 7000c000 {
+		status = "disabled";
+	};
+
+	i2c at 7000c400 {
+		status = "disabled";
+	};
+
+	i2c at 7000c500 {
+		status = "disabled";
+	};
+
+	i2c at 7000d000 {
+		status = "disabled";
+	};
+
+	usb at c5000000 {
+		status = "disabled";
+	};
+
+	usb at c5004000 {
+		status = "disabled";
+	};
+};
diff --git a/include/configs/medcom.h b/include/configs/medcom.h
index 2dc3507..c1bc425 100644
--- a/include/configs/medcom.h
+++ b/include/configs/medcom.h
@@ -1,7 +1,7 @@
 /*
  *  (C) Copyright 2010,2011
  *  NVIDIA Corporation <www.nvidia.com>
- *  (C) Copyright 2011
+ *  (C) Copyright 2011-2012
  *  Avionic Design GmbH <www.avionic-design.de>
  *
  * See file CREDITS for list of people who contributed to this
@@ -28,6 +28,11 @@
 
 #include "tegra2-common.h"
 
+/* Enable fdt support for Medcom. Flash the image in u-boot-dtb.bin */
+#define CONFIG_DEFAULT_DEVICE_TREE	tegra2-medcom
+#define CONFIG_OF_CONTROL
+#define CONFIG_OF_SEPARATE
+
 /* High-level configuration options */
 #define TEGRA2_SYSMEM			"mem=384M at 0M nvmem=128M at 384M"
 #define V_PROMPT			"Tegra2 (Medcom) # "
@@ -49,6 +54,20 @@
 #define CONFIG_TEGRA2_MMC
 #define CONFIG_CMD_MMC
 
+/* USB host support */
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_TEGRA
+#define CONFIG_USB_STORAGE
+#define CONFIG_CMD_USB
+
+/* USB networking support */
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_SMSC95XX
+
+/* General networking support */
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_DHCP
+
 #define CONFIG_DOS_PARTITION
 #define CONFIG_EFI_PARTITION
 #define CONFIG_CMD_EXT2
-- 
1.7.10.2

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

* [U-Boot] [PATCH v2 3/7] tegra: plutux: Add device tree support
  2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 2/7] tegra: medcom: Add device tree support Thierry Reding
@ 2012-05-25 13:46 ` Thierry Reding
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup Thierry Reding
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 13:46 UTC (permalink / raw)
  To: u-boot

Device tree support is required for working USB host support, which in
turn enables ethernet support.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- drop chosen and sdhci at c8000600 nodes from DTS
- drop CONFIG_USB_ETHER_ASIX from configuration

 board/avionic-design/dts/tegra2-plutux.dts |   58 ++++++++++++++++++++++++++++
 include/configs/plutux.h                   |   21 +++++++++-
 2 files changed, 78 insertions(+), 1 deletion(-)
 create mode 100644 board/avionic-design/dts/tegra2-plutux.dts

diff --git a/board/avionic-design/dts/tegra2-plutux.dts b/board/avionic-design/dts/tegra2-plutux.dts
new file mode 100644
index 0000000..cef49ad
--- /dev/null
+++ b/board/avionic-design/dts/tegra2-plutux.dts
@@ -0,0 +1,58 @@
+/dts-v1/;
+
+/include/ ARCH_CPU_DTS
+
+/ {
+	model = "Avionic Design Plutux";
+	compatible = "avionic-design,plutux", "nvidia,tegra20";
+
+	aliases {
+		usb0 = "/usb at c5008000";
+	};
+
+	memory {
+		reg = <0x00000000 0x20000000>;
+	};
+
+	clocks {
+		clk_32k: clk_32k {
+			clock-frequency = <32000>;
+		};
+
+		osc {
+			clock-frequency = <12000000>;
+		};
+	};
+
+	clock at 60006000 {
+		clocks = <&clk_32k &osc>;
+	};
+
+	serial at 70006300 {
+		clock-frequency = <216000000>;
+	};
+
+	i2c at 7000c000 {
+		status = "disabled";
+	};
+
+	i2c at 7000c400 {
+		status = "disabled";
+	};
+
+	i2c at 7000c500 {
+		status = "disabled";
+	};
+
+	i2c at 7000d000 {
+		status = "disabled";
+	};
+
+	usb at c5000000 {
+		status = "disabled";
+	};
+
+	usb at c5004000 {
+		status = "disabled";
+	};
+};
diff --git a/include/configs/plutux.h b/include/configs/plutux.h
index f869191..8c740ca 100644
--- a/include/configs/plutux.h
+++ b/include/configs/plutux.h
@@ -1,7 +1,7 @@
 /*
  *  (C) Copyright 2010,2011
  *  NVIDIA Corporation <www.nvidia.com>
- *  (C) Copyright 2011
+ *  (C) Copyright 2011-2012
  *  Avionic Design GmbH <www.avionic-design.de>
  *
  * See file CREDITS for list of people who contributed to this
@@ -28,6 +28,11 @@
 
 #include "tegra2-common.h"
 
+/* Enable fdt support for Plutux. Flash the image in u-boot-dtb.bin */
+#define CONFIG_DEFAULT_DEVICE_TREE	tegra2-plutux
+#define CONFIG_OF_CONTROL
+#define CONFIG_OF_SEPARATE
+
 /* High-level configuration options */
 #define TEGRA2_SYSMEM			"mem=384M at 0M nvmem=128M at 384M"
 #define V_PROMPT			"Tegra2 (Plutux) # "
@@ -49,6 +54,20 @@
 #define CONFIG_TEGRA2_MMC
 #define CONFIG_CMD_MMC
 
+/* USB host support */
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_TEGRA
+#define CONFIG_USB_STORAGE
+#define CONFIG_CMD_USB
+
+/* USB networking support */
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_SMSC95XX
+
+/* General networking support */
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_DHCP
+
 #define CONFIG_DOS_PARTITION
 #define CONFIG_EFI_PARTITION
 #define CONFIG_CMD_EXT2
-- 
1.7.10.2

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

* [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
  2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 2/7] tegra: medcom: Add device tree support Thierry Reding
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 3/7] tegra: plutux: " Thierry Reding
@ 2012-05-25 13:46 ` Thierry Reding
  2012-05-25 16:24   ` Stephen Warren
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten Thierry Reding
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 13:46 UTC (permalink / raw)
  To: u-boot

The new gpio_early_init() function, which does nothing by default, can
be overridden by boards to configure GPIOs at an early stage.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- new patch required for TEC support

 board/nvidia/common/board.c |    7 +++++++
 board/nvidia/common/board.h |    1 +
 2 files changed, 8 insertions(+)

diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
index 2e22133..a159deb 100644
--- a/board/nvidia/common/board.c
+++ b/board/nvidia/common/board.c
@@ -132,11 +132,18 @@ int board_init(void)
 }
 
 #ifdef CONFIG_BOARD_EARLY_INIT_F
+static void __gpio_early_init(void)
+{
+}
+
+void gpio_early_init(void) __attribute__((weak, alias("__gpio_early_init")));
+
 int board_early_init_f(void)
 {
 	board_init_uart_f();
 
 	/* Initialize periph GPIOs */
+	gpio_early_init();
 #ifdef CONFIG_SPI_UART_SWITCH
 	gpio_early_init_uart();
 #else
diff --git a/board/nvidia/common/board.h b/board/nvidia/common/board.h
index 09fb158..dada4c4 100644
--- a/board/nvidia/common/board.h
+++ b/board/nvidia/common/board.h
@@ -25,6 +25,7 @@
 #define _BOARD_H_
 
 void gpio_config_uart(void);
+void gpio_early_init(void);
 void gpio_early_init_uart(void);
 
 /*
-- 
1.7.10.2

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

* [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten
  2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
                   ` (2 preceding siblings ...)
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup Thierry Reding
@ 2012-05-25 13:46 ` Thierry Reding
  2012-05-25 16:27   ` Stephen Warren
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 6/7] tegra: Use SD write-protect GPIO " Thierry Reding
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 13:46 UTC (permalink / raw)
  To: u-boot

The PI4 GPIO is used on Tamonten to reset carrier board peripherals.
Power sequencing hardware on the carrier pulls the reset low before
powering up the Tegra, and the CPU is supposed to signal readiness,
and therefore bring peripherals out of reset by pulling PI4 high.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- new patch required for TEC support

 board/avionic-design/common/tamonten.c |    9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c
index d9ecd23..2b19d1e 100644
--- a/board/avionic-design/common/tamonten.c
+++ b/board/avionic-design/common/tamonten.c
@@ -49,6 +49,15 @@ void gpio_config_uart(void)
 {
 }
 
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+void gpio_early_init(void)
+{
+	gpio_request(GPIO_PI4, NULL);
+	gpio_direction_output(GPIO_PI4, 1);
+	gpio_free(GPIO_PI4);
+}
+#endif
+
 #ifdef CONFIG_TEGRA2_MMC
 /*
  * Routine: pin_mux_mmc
-- 
1.7.10.2

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

* [U-Boot] [PATCH v2 6/7] tegra: Use SD write-protect GPIO on Tamonten
  2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
                   ` (3 preceding siblings ...)
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten Thierry Reding
@ 2012-05-25 13:46 ` Thierry Reding
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 7/7] tegra: Add Tamonten Evaluation Carrier support Thierry Reding
  2012-06-08 20:01 ` [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Allen Martin
  6 siblings, 0 replies; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 13:46 UTC (permalink / raw)
  To: u-boot

GPIO PI6 can be used to obtain the write-protect status of an SD card
inserted into the SD slot.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- new patch

 board/avionic-design/common/tamonten.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c
index 2b19d1e..7c92158 100644
--- a/board/avionic-design/common/tamonten.c
+++ b/board/avionic-design/common/tamonten.c
@@ -66,6 +66,8 @@ void gpio_early_init(void)
 static void pin_mux_mmc(void)
 {
 	funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT);
+	/* for write-protect GPIO PI6 */
+	pinmux_tristate_disable(PINGRP_ATA);
 	/* for CD GPIO PH2 */
 	pinmux_tristate_disable(PINGRP_ATD);
 }
@@ -77,7 +79,7 @@ int board_mmc_init(bd_t *bd)
 	pin_mux_mmc();
 
 	/* init dev 0, SD slot, with 4-bit bus */
-	tegra2_mmc_init(0, 4, -1, GPIO_PH2);
+	tegra2_mmc_init(0, 4, GPIO_PI6, GPIO_PH2);
 
 	return 0;
 }
-- 
1.7.10.2

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

* [U-Boot] [PATCH v2 7/7] tegra: Add Tamonten Evaluation Carrier support
  2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
                   ` (4 preceding siblings ...)
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 6/7] tegra: Use SD write-protect GPIO " Thierry Reding
@ 2012-05-25 13:46 ` Thierry Reding
  2012-05-25 16:31   ` Stephen Warren
  2012-06-08 20:01 ` [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Allen Martin
  6 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 13:46 UTC (permalink / raw)
  To: u-boot

The Tamonten Evaluation Carrier is an evaluation board for the Tamonten
processor board. More information is available here:

	http://www.avionic-design.de/en/products/nvidia-tegra-tamonten-system-en/nvidia-tegra-tamonten-evboard-en.html

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
Changes in v2:
- new patch

 board/avionic-design/dts/tegra2-tec.dts |   58 +++++++++++++++++++++
 board/avionic-design/tec/Makefile       |   50 +++++++++++++++++++
 boards.cfg                              |    1 +
 include/configs/tec.h                   |   83 +++++++++++++++++++++++++++++++
 4 files changed, 192 insertions(+)
 create mode 100644 board/avionic-design/dts/tegra2-tec.dts
 create mode 100644 board/avionic-design/tec/Makefile
 create mode 100644 include/configs/tec.h

diff --git a/board/avionic-design/dts/tegra2-tec.dts b/board/avionic-design/dts/tegra2-tec.dts
new file mode 100644
index 0000000..9faebd8
--- /dev/null
+++ b/board/avionic-design/dts/tegra2-tec.dts
@@ -0,0 +1,58 @@
+/dts-v1/;
+
+/include/ ARCH_CPU_DTS
+
+/ {
+	model = "Avionic Design Tamonten Evaluation Carrier";
+	compatible = "avionic-design,tec", "nvidia,tegra20";
+
+	aliases {
+		usb0 = "/usb at c5008000";
+	};
+
+	memory {
+		reg = <0x00000000 0x20000000>;
+	};
+
+	clocks {
+		clk_32k: clk_32k {
+			clock-frequency = <32000>;
+		};
+
+		osc {
+			clock-frequency = <12000000>;
+		};
+	};
+
+	clock at 60006000 {
+		clocks = <&clk_32k &osc>;
+	};
+
+	serial at 70006300 {
+		clock-frequency = <216000000>;
+	};
+
+	i2c at 7000c000 {
+		status = "disabled";
+	};
+
+	i2c at 7000c400 {
+		status = "disabled";
+	};
+
+	i2c at 7000c500 {
+		status = "disabled";
+	};
+
+	i2c at 7000d000 {
+		status = "disabled";
+	};
+
+	usb at c5000000 {
+		status = "disabled";
+	};
+
+	usb at c5004000 {
+		status = "disabled";
+	};
+};
diff --git a/board/avionic-design/tec/Makefile b/board/avionic-design/tec/Makefile
new file mode 100644
index 0000000..d96d043
--- /dev/null
+++ b/board/avionic-design/tec/Makefile
@@ -0,0 +1,50 @@
+#
+#  (C) Copyright 2010,2011
+#  NVIDIA Corporation <www.nvidia.com>
+#  (C) Copyright 2011,2012
+#  Avionic Design GmbH <www.avionic-design.de>
+#
+#  See file CREDITS for list of people who contributed to this
+#  project.
+#
+#  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.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+#  MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
+endif
+
+LIB	= $(obj)lib$(BOARD).o
+
+COBJS	:= ../../nvidia/common/board.o
+COBJS	+= ../common/tamonten.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
+
+#########################################################################
diff --git a/boards.cfg b/boards.cfg
index 0dee43f..2aefb60 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -258,6 +258,7 @@ colibri_pxa270               arm         pxa         -                   toradex
 jornada                      arm         sa1100
 plutux                       arm         armv7       plutux              avionic-design tegra2
 medcom                       arm         armv7       medcom              avionic-design tegra2
+tec                          arm         armv7       tec                 avionic-design tegra2
 paz00                        arm         armv7       paz00               compal         tegra2
 atngw100                     avr32       at32ap      -                   atmel          at32ap700x
 atstk1002                    avr32       at32ap      atstk1000           atmel          at32ap700x
diff --git a/include/configs/tec.h b/include/configs/tec.h
new file mode 100644
index 0000000..1181fb5
--- /dev/null
+++ b/include/configs/tec.h
@@ -0,0 +1,83 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.com>
+ *  (C) Copyright 2011-2012
+ *  Avionic Design GmbH <www.avionic-design.de>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include "tegra2-common.h"
+
+/* Enable fdt support for TEC. Flash the image in u-boot-dtb.bin */
+#define CONFIG_DEFAULT_DEVICE_TREE	tegra2-tec
+#define CONFIG_OF_CONTROL
+#define CONFIG_OF_SEPARATE
+
+/* High-level configuration options */
+#define TEGRA2_SYSMEM			"mem=384M at 0M nvmem=128M at 384M"
+#define V_PROMPT			"Tegra2 (TEC) # "
+#define CONFIG_TEGRA2_BOARD_STRING	"Avionic Design Tamonten Evaluation Carrier"
+#define CONFIG_SYS_BOARD_ODMDATA	0x2b0d8011
+
+/* Board-specific serial config */
+#define CONFIG_SERIAL_MULTI
+#define CONFIG_TEGRA2_ENABLE_UARTD	/* UARTD: debug UART */
+#define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE
+
+#define CONFIG_BOARD_EARLY_INIT_F
+
+#define CONFIG_ENV_IS_NOWHERE
+
+/* SD/MMC */
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_TEGRA2_MMC
+#define CONFIG_CMD_MMC
+
+/* USB host support */
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_TEGRA
+#define CONFIG_USB_STORAGE
+#define CONFIG_CMD_USB
+
+/* USB networking support */
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_SMSC95XX
+
+/* General networking support */
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_DHCP
+
+#define CONFIG_DOS_PARTITION
+#define CONFIG_EFI_PARTITION
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
+
+#define CONFIG_FIT
+
+#define CONFIG_BOOTCOMMAND				\
+	"mmc rescan;"					\
+	"ext2load mmc 0 0x17000000 /boot/uImage;"	\
+	"bootm"
+
+#endif /* __CONFIG_H */
-- 
1.7.10.2

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

* [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup Thierry Reding
@ 2012-05-25 16:24   ` Stephen Warren
  2012-05-25 17:31     ` Thierry Reding
  0 siblings, 1 reply; 29+ messages in thread
From: Stephen Warren @ 2012-05-25 16:24 UTC (permalink / raw)
  To: u-boot

On 05/25/2012 07:46 AM, Thierry Reding wrote:
> The new gpio_early_init() function, which does nothing by default, can
> be overridden by boards to configure GPIOs at an early stage.

> diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c

>  int board_early_init_f(void)
>  {
>  	board_init_uart_f();
>  
>  	/* Initialize periph GPIOs */
> +	gpio_early_init();
>  #ifdef CONFIG_SPI_UART_SWITCH
>  	gpio_early_init_uart();
>  #else

I assert that all early GPIO initialization should be reworked to use
this new gpio_early_init(). In other words, now that there's a single
generic gpio_early_init(), we should remove the following code right
after it:

#ifdef CONFIG_SPI_UART_SWITCH
        gpio_early_init_uart();
#else
        gpio_config_uart();
#endif

and any boards that need to do any of that (which is just Seaboard I
think) should do that from an implementation of the new generic
gpio_early_init() in their board file. That way, common code won't have
to know about crap like the SPI/UART muxing on Seaboard.

That said, this need not be part of this patch or even this series, so I
don't mean to nak this patch with these comments.

And actually, I'd be all for ripping out all the SPI support on Seaboard
and all related code anyway...

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

* [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten Thierry Reding
@ 2012-05-25 16:27   ` Stephen Warren
  2012-05-25 17:40     ` Thierry Reding
  0 siblings, 1 reply; 29+ messages in thread
From: Stephen Warren @ 2012-05-25 16:27 UTC (permalink / raw)
  To: u-boot

On 05/25/2012 07:46 AM, Thierry Reding wrote:
> The PI4 GPIO is used on Tamonten to reset carrier board peripherals.
> Power sequencing hardware on the carrier pulls the reset low before
> powering up the Tegra, and the CPU is supposed to signal readiness,
> and therefore bring peripherals out of reset by pulling PI4 high.

> +void gpio_early_init(void)
> +{
> +	gpio_request(GPIO_PI4, NULL);
> +	gpio_direction_output(GPIO_PI4, 1);
> +	gpio_free(GPIO_PI4);
> +}

Do you really mean to free the GPIO here?

While gpio_free() does not do this at present, it seems perfectly
reasonable for someone to modify gpio_free() so that instead of leaving
the HW in some random state when free, it actively reprograms the pin to
be an input instead, since that's the most conflict-free setting when
the pin is actively unused.

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

* [U-Boot] [PATCH v2 7/7] tegra: Add Tamonten Evaluation Carrier support
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 7/7] tegra: Add Tamonten Evaluation Carrier support Thierry Reding
@ 2012-05-25 16:31   ` Stephen Warren
  0 siblings, 0 replies; 29+ messages in thread
From: Stephen Warren @ 2012-05-25 16:31 UTC (permalink / raw)
  To: u-boot

On 05/25/2012 07:46 AM, Thierry Reding wrote:
> The Tamonten Evaluation Carrier is an evaluation board for the Tamonten
> processor board. More information is available here:

> diff --git a/include/configs/tec.h b/include/configs/tec.h

> +#define TEGRA2_SYSMEM			"mem=384M at 0M nvmem=128M at 384M"

That define is no longer used. I'd recommend explicitly either making
your bootcmd define the entire command-line you want (by setting
bootargs), or loading a script to do so.

Aside from the comments I've already made, the series,
Acked-by: Stephen Warren <swarren@wwwdotorg.org>

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

* [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
  2012-05-25 16:24   ` Stephen Warren
@ 2012-05-25 17:31     ` Thierry Reding
  2012-05-25 17:59       ` Thierry Reding
  0 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 17:31 UTC (permalink / raw)
  To: u-boot

* Stephen Warren wrote:
> On 05/25/2012 07:46 AM, Thierry Reding wrote:
> > The new gpio_early_init() function, which does nothing by default, can
> > be overridden by boards to configure GPIOs at an early stage.
> 
> > diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
> 
> >  int board_early_init_f(void)
> >  {
> >  	board_init_uart_f();
> >  
> >  	/* Initialize periph GPIOs */
> > +	gpio_early_init();
> >  #ifdef CONFIG_SPI_UART_SWITCH
> >  	gpio_early_init_uart();
> >  #else
> 
> I assert that all early GPIO initialization should be reworked to use
> this new gpio_early_init(). In other words, now that there's a single
> generic gpio_early_init(), we should remove the following code right
> after it:
> 
> #ifdef CONFIG_SPI_UART_SWITCH
>         gpio_early_init_uart();
> #else
>         gpio_config_uart();
> #endif
> 
> and any boards that need to do any of that (which is just Seaboard I
> think) should do that from an implementation of the new generic
> gpio_early_init() in their board file. That way, common code won't have
> to know about crap like the SPI/UART muxing on Seaboard.
> 
> That said, this need not be part of this patch or even this series, so I
> don't mean to nak this patch with these comments.

I just noticed that I forgot to add an entry to MAINTAINERS for the TEC.
Furthermore I'll need to rebase the patches onto the Tegra branch due to the
major restructuring of the configuration files. Since I'll respin the series
anyway, I could add a patch to make the corresponding change to Seaboard.

> And actually, I'd be all for ripping out all the SPI support on Seaboard
> and all related code anyway...

I can't really comment on this because I've never used the Seaboard. Maybe
Simon (CC'ed) can comment on this. If we decide to completely remove the SPI
support then the above patch becomes obsolete.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120525/e88bdd76/attachment.pgp>

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

* [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten
  2012-05-25 16:27   ` Stephen Warren
@ 2012-05-25 17:40     ` Thierry Reding
  2012-05-25 18:56       ` Kai Poggensee
  0 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 17:40 UTC (permalink / raw)
  To: u-boot

* Stephen Warren wrote:
> On 05/25/2012 07:46 AM, Thierry Reding wrote:
> > The PI4 GPIO is used on Tamonten to reset carrier board peripherals.
> > Power sequencing hardware on the carrier pulls the reset low before
> > powering up the Tegra, and the CPU is supposed to signal readiness,
> > and therefore bring peripherals out of reset by pulling PI4 high.
> 
> > +void gpio_early_init(void)
> > +{
> > +	gpio_request(GPIO_PI4, NULL);
> > +	gpio_direction_output(GPIO_PI4, 1);
> > +	gpio_free(GPIO_PI4);
> > +}
> 
> Do you really mean to free the GPIO here?
> 
> While gpio_free() does not do this at present, it seems perfectly
> reasonable for someone to modify gpio_free() so that instead of leaving
> the HW in some random state when free, it actively reprograms the pin to
> be an input instead, since that's the most conflict-free setting when
> the pin is actively unused.

I believe that even a pulse would be enough for the undelying mechanisms to
take effect, but I'll have to check with our hardware engineers to be sure.
You're probably right, though, that keeping it requested until control is
handed over to the kernel may be safer. I'll update the patch.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120525/3c1d8d73/attachment.pgp>

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

* [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
  2012-05-25 17:31     ` Thierry Reding
@ 2012-05-25 17:59       ` Thierry Reding
  2012-05-31 20:35         ` Tom Warren
  0 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-05-25 17:59 UTC (permalink / raw)
  To: u-boot

* Thierry Reding wrote:
> Furthermore I'll need to rebase the patches onto the Tegra branch due to the
> major restructuring of the configuration files.

This isn't true. But I'll still have to respin because of the MAINTAINERS
entry and the other points that you brought up, so let me know if I should
add a patch for Seaboard.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120525/63fdcd73/attachment.pgp>

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

* [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten
  2012-05-25 17:40     ` Thierry Reding
@ 2012-05-25 18:56       ` Kai Poggensee
  2012-05-29 14:57         ` Thierry Reding
  0 siblings, 1 reply; 29+ messages in thread
From: Kai Poggensee @ 2012-05-25 18:56 UTC (permalink / raw)
  To: u-boot


Hi Thierry,

On 25.05.2012 19:40, Thierry Reding wrote:
> * Stephen Warren wrote:
>> On 05/25/2012 07:46 AM, Thierry Reding wrote:
>> > The PI4 GPIO is used on Tamonten to reset carrier board peripherals.
>> > Power sequencing hardware on the carrier pulls the reset low before
>> > powering up the Tegra, and the CPU is supposed to signal readiness,
>> > and therefore bring peripherals out of reset by pulling PI4 high.
>> 
>> > +void gpio_early_init(void)
>> > +{
>> > +	gpio_request(GPIO_PI4, NULL);
>> > +	gpio_direction_output(GPIO_PI4, 1);
>> > +	gpio_free(GPIO_PI4);
>> > +}
>> 
>> Do you really mean to free the GPIO here?
>> 
>> While gpio_free() does not do this at present, it seems perfectly
>> reasonable for someone to modify gpio_free() so that instead of leaving
>> the HW in some random state when free, it actively reprograms the pin to
>> be an input instead, since that's the most conflict-free setting when
>> the pin is actively unused.
> 
> I believe that even a pulse would be enough for the undelying mechanisms to
> take effect, but I'll have to check with our hardware engineers to be sure.

As an aside: A pulse wont be enough in this specific case
as a pull-down on the carrier would lead to the nRST going
low thus resetting the baseboard peripherals.

Plus there is a status LED on the Tamonten Evaluation carrier
that would then indicate the red "system not up".

Cheers,
Kai

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

* [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten
  2012-05-25 18:56       ` Kai Poggensee
@ 2012-05-29 14:57         ` Thierry Reding
  2012-05-29 16:06           ` Stephen Warren
  0 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-05-29 14:57 UTC (permalink / raw)
  To: u-boot

* Kai Poggensee wrote:
> 
> Hi Thierry,
> 
> On 25.05.2012 19:40, Thierry Reding wrote:
> > * Stephen Warren wrote:
> >> On 05/25/2012 07:46 AM, Thierry Reding wrote:
> >> > The PI4 GPIO is used on Tamonten to reset carrier board peripherals.
> >> > Power sequencing hardware on the carrier pulls the reset low before
> >> > powering up the Tegra, and the CPU is supposed to signal readiness,
> >> > and therefore bring peripherals out of reset by pulling PI4 high.
> >> 
> >> > +void gpio_early_init(void)
> >> > +{
> >> > +	gpio_request(GPIO_PI4, NULL);
> >> > +	gpio_direction_output(GPIO_PI4, 1);
> >> > +	gpio_free(GPIO_PI4);
> >> > +}
> >> 
> >> Do you really mean to free the GPIO here?
> >> 
> >> While gpio_free() does not do this at present, it seems perfectly
> >> reasonable for someone to modify gpio_free() so that instead of leaving
> >> the HW in some random state when free, it actively reprograms the pin to
> >> be an input instead, since that's the most conflict-free setting when
> >> the pin is actively unused.
> > 
> > I believe that even a pulse would be enough for the undelying mechanisms to
> > take effect, but I'll have to check with our hardware engineers to be sure.
> 
> As an aside: A pulse wont be enough in this specific case
> as a pull-down on the carrier would lead to the nRST going
> low thus resetting the baseboard peripherals.
> 
> Plus there is a status LED on the Tamonten Evaluation carrier
> that would then indicate the red "system not up".

So this means we'll have to hand this over to the kernel somehow. Stephen,
I'm not aware of any mechanism to pass static GPIO configuration via the FDT.
Are there any plans to add something like it? The problem I see is that the
pinmux binding might reconfigure the corresponding pin and therefore reset
the peripherals.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120529/4c25086d/attachment.pgp>

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

* [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten
  2012-05-29 14:57         ` Thierry Reding
@ 2012-05-29 16:06           ` Stephen Warren
  0 siblings, 0 replies; 29+ messages in thread
From: Stephen Warren @ 2012-05-29 16:06 UTC (permalink / raw)
  To: u-boot

On 05/29/2012 08:57 AM, Thierry Reding wrote:
> * Kai Poggensee wrote:
>> 
>> Hi Thierry,
>> 
>> On 25.05.2012 19:40, Thierry Reding wrote:
>>> * Stephen Warren wrote:
>>>> On 05/25/2012 07:46 AM, Thierry Reding wrote:
>>>>> The PI4 GPIO is used on Tamonten to reset carrier board
>>>>> peripherals. Power sequencing hardware on the carrier pulls
>>>>> the reset low before powering up the Tegra, and the CPU is
>>>>> supposed to signal readiness, and therefore bring
>>>>> peripherals out of reset by pulling PI4 high.
>>>> 
>>>>> +void gpio_early_init(void) +{ +	gpio_request(GPIO_PI4,
>>>>> NULL); +	gpio_direction_output(GPIO_PI4, 1); +
>>>>> gpio_free(GPIO_PI4); +}
>>>> 
>>>> Do you really mean to free the GPIO here?
>>>> 
>>>> While gpio_free() does not do this at present, it seems
>>>> perfectly reasonable for someone to modify gpio_free() so
>>>> that instead of leaving the HW in some random state when
>>>> free, it actively reprograms the pin to be an input instead,
>>>> since that's the most conflict-free setting when the pin is
>>>> actively unused.
>>> 
>>> I believe that even a pulse would be enough for the undelying
>>> mechanisms to take effect, but I'll have to check with our
>>> hardware engineers to be sure.
>> 
>> As an aside: A pulse wont be enough in this specific case as a
>> pull-down on the carrier would lead to the nRST going low thus
>> resetting the baseboard peripherals.
>> 
>> Plus there is a status LED on the Tamonten Evaluation carrier 
>> that would then indicate the red "system not up".
> 
> So this means we'll have to hand this over to the kernel somehow.
> Stephen, I'm not aware of any mechanism to pass static GPIO
> configuration via the FDT. Are there any plans to add something
> like it? The problem I see is that the pinmux binding might
> reconfigure the corresponding pin and therefore reset the
> peripherals.

The pinctrl and GPIO drivers will only reconfigure groups/pins they're
asked to, so I don't believe there will be any problem here, assuming
the DT contains tables that are correct.

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

* [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
  2012-05-25 17:59       ` Thierry Reding
@ 2012-05-31 20:35         ` Tom Warren
  2012-06-04  6:09           ` Thierry Reding
  0 siblings, 1 reply; 29+ messages in thread
From: Tom Warren @ 2012-05-31 20:35 UTC (permalink / raw)
  To: u-boot

Thierry,

> -----Original Message-----
> From: Thierry Reding [mailto:thierry.reding at avionic-design.de]
> Sent: Friday, May 25, 2012 11:00 AM
> To: Stephen Warren
> Cc: u-boot at lists.denx.de; Tom Warren; Simon Glass
> Subject: Re: [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
> 
> * PGP Signed by an unknown key
> 
> * Thierry Reding wrote:
> > Furthermore I'll need to rebase the patches onto the Tegra branch due
> > to the major restructuring of the configuration files.
> 
> This isn't true. But I'll still have to respin because of the MAINTAINERS
> entry and the other points that you brought up, so let me know if I should
> add a patch for Seaboard.
When you respin this, make sure to base it on current u-boot-tegra/master, and change any CONFIG_TEGRA2_MMC or _SPI references to CONFIG_TEGRA_MMC & _SPI (see my changes to rename tegra periph drivers for the upcoming Tegra3 rearch).

Thanks,

Tom
> 
> Thierry
> 
> * Unknown Key
> * 0xA2E3269F
-- 
nvpublic

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

* [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
  2012-05-31 20:35         ` Tom Warren
@ 2012-06-04  6:09           ` Thierry Reding
  2012-06-04 16:47             ` Tom Warren
  0 siblings, 1 reply; 29+ messages in thread
From: Thierry Reding @ 2012-06-04  6:09 UTC (permalink / raw)
  To: u-boot

* Tom Warren wrote:
> Thierry,
> 
> > -----Original Message-----
> > From: Thierry Reding [mailto:thierry.reding at avionic-design.de]
> > Sent: Friday, May 25, 2012 11:00 AM
> > To: Stephen Warren
> > Cc: u-boot at lists.denx.de; Tom Warren; Simon Glass
> > Subject: Re: [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
> > 
> > * PGP Signed by an unknown key
> > 
> > * Thierry Reding wrote:
> > > Furthermore I'll need to rebase the patches onto the Tegra branch due
> > > to the major restructuring of the configuration files.
> > 
> > This isn't true. But I'll still have to respin because of the MAINTAINERS
> > entry and the other points that you brought up, so let me know if I should
> > add a patch for Seaboard.
> When you respin this, make sure to base it on current u-boot-tegra/master,
> and change any CONFIG_TEGRA2_MMC or _SPI references to CONFIG_TEGRA_MMC &
> _SPI (see my changes to rename tegra periph drivers for the upcoming Tegra3
> rearch).

I saw that you already carry a patch in your next branch that does the
renames in the tec.h configuration. Can I assume that when I respin with
those changes included in the patch that introduces TEC support you'll drop
that hunk from your patch? Or should I rather follow up with patches based on
your next branch?

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120604/bde83a5f/attachment.pgp>

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

* [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
  2012-06-04  6:09           ` Thierry Reding
@ 2012-06-04 16:47             ` Tom Warren
  0 siblings, 0 replies; 29+ messages in thread
From: Tom Warren @ 2012-06-04 16:47 UTC (permalink / raw)
  To: u-boot

Thierry,

> -----Original Message-----
> From: Thierry Reding [mailto:thierry.reding at avionic-design.de]
> Sent: Sunday, June 03, 2012 11:09 PM
> To: Tom Warren
> Cc: Stephen Warren; u-boot at lists.denx.de; Simon Glass
> Subject: Re: [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup
> 
> * PGP Signed by an unknown key
> 
> * Tom Warren wrote:
> > Thierry,
> >
> > > -----Original Message-----
> > > From: Thierry Reding [mailto:thierry.reding at avionic-design.de]
> > > Sent: Friday, May 25, 2012 11:00 AM
> > > To: Stephen Warren
> > > Cc: u-boot at lists.denx.de; Tom Warren; Simon Glass
> > > Subject: Re: [PATCH v2 4/7] tegra: Allow boards to perform early
> > > GPIO setup
> > >
> > > > Old Signed by an unknown key
> > >
> > > * Thierry Reding wrote:
> > > > Furthermore I'll need to rebase the patches onto the Tegra branch
> > > > due to the major restructuring of the configuration files.
> > >
> > > This isn't true. But I'll still have to respin because of the
> > > MAINTAINERS entry and the other points that you brought up, so let
> > > me know if I should add a patch for Seaboard.
> > When you respin this, make sure to base it on current
> > u-boot-tegra/master, and change any CONFIG_TEGRA2_MMC or _SPI
> > references to CONFIG_TEGRA_MMC & _SPI (see my changes to rename tegra
> > periph drivers for the upcoming Tegra3 rearch).
> 
> I saw that you already carry a patch in your next branch that does the
> renames in the tec.h configuration. Can I assume that when I respin with
> those changes included in the patch that introduces TEC support you'll drop
> that hunk from your patch? Or should I rather follow up with patches based
> on your next branch?

Of course, I'd like to minimize my churn in /next as much as possible, but I can work with whatever you come up with in your revised patchset.

Thanks,

Tom
> 
> Thierry
> 
> * Unknown Key
> * 0xA2E3269F
-- 
nvpublic

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
                   ` (5 preceding siblings ...)
  2012-05-25 13:46 ` [U-Boot] [PATCH v2 7/7] tegra: Add Tamonten Evaluation Carrier support Thierry Reding
@ 2012-06-08 20:01 ` Allen Martin
  2012-06-08 21:07   ` Stephen Warren
  6 siblings, 1 reply; 29+ messages in thread
From: Allen Martin @ 2012-06-08 20:01 UTC (permalink / raw)
  To: u-boot

On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> This commit uses the common Tegra board implementation instead of
> duplicating a lot of the code. In addition, the Plutux and Medcom
> specific board files can be removed as the MMC/SD setup is common
> among all Tamonten-based boards.
> 
> ...
> diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile
> index b0c318c..d96d043 100644
> --- a/board/avionic-design/medcom/Makefile
> +++ b/board/avionic-design/medcom/Makefile
> @@ -26,12 +26,12 @@
>  include $(TOPDIR)/config.mk
> 
>  ifneq ($(OBJTREE),$(SRCTREE))
> -$(shell mkdir -p $(obj)../common)
> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
>  endif
> 
>  LIB    = $(obj)lib$(BOARD).o
> 

This breaks with my patchset to split out the arm7 code to an SPL
because even though SRCDIR and OBJDIR are the same, in the SPL build
$(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).

How about the following instead which seems more to the point:

ifeq ($(wildcard $(obj)../common),)
$(shell mkdir -p $(obj)../common)
endif
ifeq ($(wildcard $(obj)../../nvidia/common),)
$(shell mkdir -p $(obj)../../nvidia/common)
endif

-Allen
-- 
nvpublic

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-08 20:01 ` [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Allen Martin
@ 2012-06-08 21:07   ` Stephen Warren
  2012-06-08 21:27     ` Allen Martin
  0 siblings, 1 reply; 29+ messages in thread
From: Stephen Warren @ 2012-06-08 21:07 UTC (permalink / raw)
  To: u-boot

On 06/08/2012 02:01 PM, Allen Martin wrote:
> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
>> This commit uses the common Tegra board implementation instead of
>> duplicating a lot of the code. In addition, the Plutux and Medcom
>> specific board files can be removed as the MMC/SD setup is common
>> among all Tamonten-based boards.
>>
>> ...
>> diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile
>> index b0c318c..d96d043 100644
>> --- a/board/avionic-design/medcom/Makefile
>> +++ b/board/avionic-design/medcom/Makefile
>> @@ -26,12 +26,12 @@
>>  include $(TOPDIR)/config.mk
>>
>>  ifneq ($(OBJTREE),$(SRCTREE))
>> -$(shell mkdir -p $(obj)../common)
>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
>>  endif
>>
>>  LIB    = $(obj)lib$(BOARD).o
>>
> 
> This breaks with my patchset to split out the arm7 code to an SPL
> because even though SRCDIR and OBJDIR are the same, in the SPL build
> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> 
> How about the following instead which seems more to the point:
> 
> ifeq ($(wildcard $(obj)../common),)
> $(shell mkdir -p $(obj)../common)
> endif
> ifeq ($(wildcard $(obj)../../nvidia/common),)
> $(shell mkdir -p $(obj)../../nvidia/common)
> endif

Maybe I'm just not reading it right, but isn't that just running the
exact same mkdir commands, just splitting it into two commands, and
making them optional based on the $(wildcard)? I'm still not clear what
the problem is.

Anyway, if this is an issue, then compal/paz00 and compulabl/trimslice
will need to be fixed for the SPL changes in the same way.

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-08 21:07   ` Stephen Warren
@ 2012-06-08 21:27     ` Allen Martin
  2012-06-09  5:28       ` Stephen Warren
  0 siblings, 1 reply; 29+ messages in thread
From: Allen Martin @ 2012-06-08 21:27 UTC (permalink / raw)
  To: u-boot

On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
> On 06/08/2012 02:01 PM, Allen Martin wrote:
> > On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> >> This commit uses the common Tegra board implementation instead of
> >> duplicating a lot of the code. In addition, the Plutux and Medcom
> >> specific board files can be removed as the MMC/SD setup is common
> >> among all Tamonten-based boards.
> >>
> >> ...
> >> diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile
> >> index b0c318c..d96d043 100644
> >> --- a/board/avionic-design/medcom/Makefile
> >> +++ b/board/avionic-design/medcom/Makefile
> >> @@ -26,12 +26,12 @@
> >>  include $(TOPDIR)/config.mk
> >>
> >>  ifneq ($(OBJTREE),$(SRCTREE))
> >> -$(shell mkdir -p $(obj)../common)
> >> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> >>  endif
> >>
> >>  LIB    = $(obj)lib$(BOARD).o
> >>
> > 
> > This breaks with my patchset to split out the arm7 code to an SPL
> > because even though SRCDIR and OBJDIR are the same, in the SPL build
> > $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> > 
> > How about the following instead which seems more to the point:
> > 
> > ifeq ($(wildcard $(obj)../common),)
> > $(shell mkdir -p $(obj)../common)
> > endif
> > ifeq ($(wildcard $(obj)../../nvidia/common),)
> > $(shell mkdir -p $(obj)../../nvidia/common)
> > endif
> 
> Maybe I'm just not reading it right, but isn't that just running the
> exact same mkdir commands, just splitting it into two commands, and
> making them optional based on the $(wildcard)? I'm still not clear what
> the problem is.
> 
> Anyway, if this is an issue, then compal/paz00 and compulabl/trimslice
> will need to be fixed for the SPL changes in the same way.

The problem is this:

> >>  ifneq ($(OBJTREE),$(SRCTREE))

is true, but these directories:

> >> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)

don't exist because $(obj) is not under $(OBJTREE) in the SPL build,
it's under $(SPLTREE)

-Allen
-- 
nvpublic

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-08 21:27     ` Allen Martin
@ 2012-06-09  5:28       ` Stephen Warren
  2012-06-09  6:25         ` Allen Martin
  0 siblings, 1 reply; 29+ messages in thread
From: Stephen Warren @ 2012-06-09  5:28 UTC (permalink / raw)
  To: u-boot

On 06/08/2012 03:27 PM, Allen Martin wrote:
> On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
>> On 06/08/2012 02:01 PM, Allen Martin wrote:
>>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
>>>> This commit uses the common Tegra board implementation instead of
>>>> duplicating a lot of the code. In addition, the Plutux and Medcom
>>>> specific board files can be removed as the MMC/SD setup is common
>>>> among all Tamonten-based boards.
>>>>
>>>> ...
>>>> diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile
>>>> index b0c318c..d96d043 100644
>>>> --- a/board/avionic-design/medcom/Makefile
>>>> +++ b/board/avionic-design/medcom/Makefile
>>>> @@ -26,12 +26,12 @@
>>>>  include $(TOPDIR)/config.mk
>>>>
>>>>  ifneq ($(OBJTREE),$(SRCTREE))
>>>> -$(shell mkdir -p $(obj)../common)
>>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
>>>>  endif
>>>>
>>>>  LIB    = $(obj)lib$(BOARD).o
>>>>
>>>
>>> This breaks with my patchset to split out the arm7 code to an SPL
>>> because even though SRCDIR and OBJDIR are the same, in the SPL build
>>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
>>>
>>> How about the following instead which seems more to the point:
>>>
>>> ifeq ($(wildcard $(obj)../common),)
>>> $(shell mkdir -p $(obj)../common)
>>> endif
>>> ifeq ($(wildcard $(obj)../../nvidia/common),)
>>> $(shell mkdir -p $(obj)../../nvidia/common)
>>> endif
>>
>> Maybe I'm just not reading it right, but isn't that just running the
>> exact same mkdir commands, just splitting it into two commands, and
>> making them optional based on the $(wildcard)? I'm still not clear what
>> the problem is.
>>
>> Anyway, if this is an issue, then compal/paz00 and compulabl/trimslice
>> will need to be fixed for the SPL changes in the same way.
> 
> The problem is this:
> 
>>>>  ifneq ($(OBJTREE),$(SRCTREE))
> 
> is true, but these directories:
> 
>>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> 
> don't exist because $(obj) is not under $(OBJTREE) in the SPL build,
> it's under $(SPLTREE)

OK, so I think the issue is just that $(obj) isn't the correct place to
mkdir these, not that we shouldn't attempt to mkdir any directory. In
other words, don't you need to switch between mkdir in the object tree
or the SPL tree rather than switching between doing a mkdir and not?
It's quite possible this only affects builds where OBJDIR!=SRCDIR, so a
regular build might not show up the problem I /think/ exists in the code
quoted a couple of emails above.

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-09  5:28       ` Stephen Warren
@ 2012-06-09  6:25         ` Allen Martin
  2012-06-09 16:18           ` Stephen Warren
  0 siblings, 1 reply; 29+ messages in thread
From: Allen Martin @ 2012-06-09  6:25 UTC (permalink / raw)
  To: u-boot

On Fri, Jun 08, 2012 at 10:28:57PM -0700, Stephen Warren wrote:
> On 06/08/2012 03:27 PM, Allen Martin wrote:
> > On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
> >> On 06/08/2012 02:01 PM, Allen Martin wrote:
> >>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> >>>> This commit uses the common Tegra board implementation instead of
> >>>> duplicating a lot of the code. In addition, the Plutux and Medcom
> >>>> specific board files can be removed as the MMC/SD setup is common
> >>>> among all Tamonten-based boards.
> >>>>
> >>>> ...
> >>>> diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile
> >>>> index b0c318c..d96d043 100644
> >>>> --- a/board/avionic-design/medcom/Makefile
> >>>> +++ b/board/avionic-design/medcom/Makefile
> >>>> @@ -26,12 +26,12 @@
> >>>>  include $(TOPDIR)/config.mk
> >>>>
> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> >>>> -$(shell mkdir -p $(obj)../common)
> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> >>>>  endif
> >>>>
> >>>>  LIB    = $(obj)lib$(BOARD).o
> >>>>
> >>>
> >>> This breaks with my patchset to split out the arm7 code to an SPL
> >>> because even though SRCDIR and OBJDIR are the same, in the SPL build
> >>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> >>>
> >>> How about the following instead which seems more to the point:
> >>>
> >>> ifeq ($(wildcard $(obj)../common),)
> >>> $(shell mkdir -p $(obj)../common)
> >>> endif
> >>> ifeq ($(wildcard $(obj)../../nvidia/common),)
> >>> $(shell mkdir -p $(obj)../../nvidia/common)
> >>> endif
> >>
> >> Maybe I'm just not reading it right, but isn't that just running the
> >> exact same mkdir commands, just splitting it into two commands, and
> >> making them optional based on the $(wildcard)? I'm still not clear what
> >> the problem is.
> >>
> >> Anyway, if this is an issue, then compal/paz00 and compulabl/trimslice
> >> will need to be fixed for the SPL changes in the same way.
> > 
> > The problem is this:
> > 
> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > 
> > is true, but these directories:
> > 
> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > 
> > don't exist because $(obj) is not under $(OBJTREE) in the SPL build,
> > it's under $(SPLTREE)
> 
> OK, so I think the issue is just that $(obj) isn't the correct place to
> mkdir these, not that we shouldn't attempt to mkdir any directory. In
> other words, don't you need to switch between mkdir in the object tree
> or the SPL tree rather than switching between doing a mkdir and not?
> It's quite possible this only affects builds where OBJDIR!=SRCDIR, so a
> regular build might not show up the problem I /think/ exists in the code
> quoted a couple of emails above.

$(obj) is always the place where the object files are going to be
placed, that may be in $(OBJTREE) or in $(SRCTREE) or in $(SPLTREE)
depending on what you're building and what you have set.

I think the $(wildcard) suggestion I made is the most straightforward,
it basically says "we're about to spit out an object file to here, so
make sure the directory exists first".  In the "normal" case where
your object files are in your source tree the directory will already
exist so it won't do anything.

-Allen
-- 
nvpublic

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-09  6:25         ` Allen Martin
@ 2012-06-09 16:18           ` Stephen Warren
  2012-06-11  9:29             ` Thierry Reding
  0 siblings, 1 reply; 29+ messages in thread
From: Stephen Warren @ 2012-06-09 16:18 UTC (permalink / raw)
  To: u-boot

Allen Martin <amartin@nvidia.com> wrote:
>On Fri, Jun 08, 2012 at 10:28:57PM -0700, Stephen Warren wrote:
>> On 06/08/2012 03:27 PM, Allen Martin wrote:
>> > On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
>> >> On 06/08/2012 02:01 PM, Allen Martin wrote:
>> >>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
>> >>>> This commit uses the common Tegra board implementation instead
>of
>> >>>> duplicating a lot of the code. In addition, the Plutux and
>Medcom
>> >>>> specific board files can be removed as the MMC/SD setup is
>common
>> >>>> among all Tamonten-based boards.
>> >>>>
>> >>>> ...
>> >>>> diff --git a/board/avionic-design/medcom/Makefile
>b/board/avionic-design/medcom/Makefile
>> >>>> index b0c318c..d96d043 100644
>> >>>> --- a/board/avionic-design/medcom/Makefile
>> >>>> +++ b/board/avionic-design/medcom/Makefile
>> >>>> @@ -26,12 +26,12 @@
>> >>>>  include $(TOPDIR)/config.mk
>> >>>>
>> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
>> >>>> -$(shell mkdir -p $(obj)../common)
>> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
>> >>>>  endif
>> >>>>
>> >>>>  LIB    = $(obj)lib$(BOARD).o
>> >>>>
>> >>>
>> >>> This breaks with my patchset to split out the arm7 code to an SPL
>> >>> because even though SRCDIR and OBJDIR are the same, in the SPL
>build
>> >>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
>> >>>
>> >>> How about the following instead which seems more to the point:
>> >>>
>> >>> ifeq ($(wildcard $(obj)../common),)
>> >>> $(shell mkdir -p $(obj)../common)
>> >>> endif
>> >>> ifeq ($(wildcard $(obj)../../nvidia/common),)
>> >>> $(shell mkdir -p $(obj)../../nvidia/common)
>> >>> endif
>> >>
>> >> Maybe I'm just not reading it right, but isn't that just running
>the
>> >> exact same mkdir commands, just splitting it into two commands,
>and
>> >> making them optional based on the $(wildcard)? I'm still not clear
>what
>> >> the problem is.
>> >>
>> >> Anyway, if this is an issue, then compal/paz00 and
>compulabl/trimslice
>> >> will need to be fixed for the SPL changes in the same way.
>> > 
>> > The problem is this:
>> > 
>> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
>> > 
>> > is true, but these directories:
>> > 
>> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
>> > 
>> > don't exist because $(obj) is not under $(OBJTREE) in the SPL
>build,
>> > it's under $(SPLTREE)
>> 
>> OK, so I think the issue is just that $(obj) isn't the correct place
>to
>> mkdir these, not that we shouldn't attempt to mkdir any directory. In
>> other words, don't you need to switch between mkdir in the object
>tree
>> or the SPL tree rather than switching between doing a mkdir and not?
>> It's quite possible this only affects builds where OBJDIR!=SRCDIR, so
>a
>> regular build might not show up the problem I /think/ exists in the
>code
>> quoted a couple of emails above.
>
>$(obj) is always the place where the object files are going to be
>placed, that may be in $(OBJTREE) or in $(SRCTREE) or in $(SPLTREE)
>depending on what you're building and what you have set.
>
>I think the $(wildcard) suggestion I made is the most straightforward,
>it basically says "we're about to spit out an object file to here, so
>make sure the directory exists first".  In the "normal" case where
>your object files are in your source tree the directory will already
>exist so it won't do anything.

Ah right, I understand now.

But why not make it super-simple and just run the mkdir unconditionally; it won't cause any harm for an in-tree object location, but removes the need for anyone to think about the conditional logic.

(I hope this is legible due to email client!)

-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-09 16:18           ` Stephen Warren
@ 2012-06-11  9:29             ` Thierry Reding
  2012-06-11 17:59               ` Allen Martin
  2012-06-11 18:03               ` Allen Martin
  0 siblings, 2 replies; 29+ messages in thread
From: Thierry Reding @ 2012-06-11  9:29 UTC (permalink / raw)
  To: u-boot

* Stephen Warren wrote:
> Allen Martin <amartin@nvidia.com> wrote:
> >On Fri, Jun 08, 2012 at 10:28:57PM -0700, Stephen Warren wrote:
> >> On 06/08/2012 03:27 PM, Allen Martin wrote:
> >> > On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
> >> >> On 06/08/2012 02:01 PM, Allen Martin wrote:
> >> >>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> >> >>>> This commit uses the common Tegra board implementation instead
> >of
> >> >>>> duplicating a lot of the code. In addition, the Plutux and
> >Medcom
> >> >>>> specific board files can be removed as the MMC/SD setup is
> >common
> >> >>>> among all Tamonten-based boards.
> >> >>>>
> >> >>>> ...
> >> >>>> diff --git a/board/avionic-design/medcom/Makefile
> >b/board/avionic-design/medcom/Makefile
> >> >>>> index b0c318c..d96d043 100644
> >> >>>> --- a/board/avionic-design/medcom/Makefile
> >> >>>> +++ b/board/avionic-design/medcom/Makefile
> >> >>>> @@ -26,12 +26,12 @@
> >> >>>>  include $(TOPDIR)/config.mk
> >> >>>>
> >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> >> >>>> -$(shell mkdir -p $(obj)../common)
> >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> >> >>>>  endif
> >> >>>>
> >> >>>>  LIB    = $(obj)lib$(BOARD).o
> >> >>>>
> >> >>>
> >> >>> This breaks with my patchset to split out the arm7 code to an SPL
> >> >>> because even though SRCDIR and OBJDIR are the same, in the SPL
> >build
> >> >>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> >> >>>
> >> >>> How about the following instead which seems more to the point:
> >> >>>
> >> >>> ifeq ($(wildcard $(obj)../common),)
> >> >>> $(shell mkdir -p $(obj)../common)
> >> >>> endif
> >> >>> ifeq ($(wildcard $(obj)../../nvidia/common),)
> >> >>> $(shell mkdir -p $(obj)../../nvidia/common)
> >> >>> endif
> >> >>
> >> >> Maybe I'm just not reading it right, but isn't that just running
> >the
> >> >> exact same mkdir commands, just splitting it into two commands,
> >and
> >> >> making them optional based on the $(wildcard)? I'm still not clear
> >what
> >> >> the problem is.
> >> >>
> >> >> Anyway, if this is an issue, then compal/paz00 and
> >compulabl/trimslice
> >> >> will need to be fixed for the SPL changes in the same way.
> >> > 
> >> > The problem is this:
> >> > 
> >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> >> > 
> >> > is true, but these directories:
> >> > 
> >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> >> > 
> >> > don't exist because $(obj) is not under $(OBJTREE) in the SPL
> >build,
> >> > it's under $(SPLTREE)
> >> 
> >> OK, so I think the issue is just that $(obj) isn't the correct place
> >to
> >> mkdir these, not that we shouldn't attempt to mkdir any directory. In
> >> other words, don't you need to switch between mkdir in the object
> >tree
> >> or the SPL tree rather than switching between doing a mkdir and not?
> >> It's quite possible this only affects builds where OBJDIR!=SRCDIR, so
> >a
> >> regular build might not show up the problem I /think/ exists in the
> >code
> >> quoted a couple of emails above.
> >
> >$(obj) is always the place where the object files are going to be
> >placed, that may be in $(OBJTREE) or in $(SRCTREE) or in $(SPLTREE)
> >depending on what you're building and what you have set.
> >
> >I think the $(wildcard) suggestion I made is the most straightforward,
> >it basically says "we're about to spit out an object file to here, so
> >make sure the directory exists first".  In the "normal" case where
> >your object files are in your source tree the directory will already
> >exist so it won't do anything.
> 
> Ah right, I understand now.
> 
> But why not make it super-simple and just run the mkdir unconditionally;
> it won't cause any harm for an in-tree object location, but removes the
> need for anyone to think about the conditional logic.

Shouldn't this really be handled by the commands that create files in those
directories? They could check that the directories exist, and create them if
necessary, before executing their actual commands.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120611/602964a2/attachment.pgp>

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-11  9:29             ` Thierry Reding
@ 2012-06-11 17:59               ` Allen Martin
  2012-06-11 18:07                 ` Thierry Reding
  2012-06-11 18:03               ` Allen Martin
  1 sibling, 1 reply; 29+ messages in thread
From: Allen Martin @ 2012-06-11 17:59 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 11, 2012 at 02:29:59AM -0700, Thierry Reding wrote:
> * PGP Signed by an unknown key
> 
> * Stephen Warren wrote:
> > Allen Martin <amartin@nvidia.com> wrote:
> > >On Fri, Jun 08, 2012 at 10:28:57PM -0700, Stephen Warren wrote:
> > >> On 06/08/2012 03:27 PM, Allen Martin wrote:
> > >> > On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
> > >> >> On 06/08/2012 02:01 PM, Allen Martin wrote:
> > >> >>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> > >> >>>> This commit uses the common Tegra board implementation instead
> > >of
> > >> >>>> duplicating a lot of the code. In addition, the Plutux and
> > >Medcom
> > >> >>>> specific board files can be removed as the MMC/SD setup is
> > >common
> > >> >>>> among all Tamonten-based boards.
> > >> >>>>
> > >> >>>> ...
> > >> >>>> diff --git a/board/avionic-design/medcom/Makefile
> > >b/board/avionic-design/medcom/Makefile
> > >> >>>> index b0c318c..d96d043 100644
> > >> >>>> --- a/board/avionic-design/medcom/Makefile
> > >> >>>> +++ b/board/avionic-design/medcom/Makefile
> > >> >>>> @@ -26,12 +26,12 @@
> > >> >>>>  include $(TOPDIR)/config.mk
> > >> >>>>
> > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > >> >>>> -$(shell mkdir -p $(obj)../common)
> > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > >> >>>>  endif
> > >> >>>>
> > >> >>>>  LIB    = $(obj)lib$(BOARD).o
> > >> >>>>
> > >> >>>
> > >> >>> This breaks with my patchset to split out the arm7 code to an SPL
> > >> >>> because even though SRCDIR and OBJDIR are the same, in the SPL
> > >build
> > >> >>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> > >> >>>
> > >> >>> How about the following instead which seems more to the point:
> > >> >>>
> > >> >>> ifeq ($(wildcard $(obj)../common),)
> > >> >>> $(shell mkdir -p $(obj)../common)
> > >> >>> endif
> > >> >>> ifeq ($(wildcard $(obj)../../nvidia/common),)
> > >> >>> $(shell mkdir -p $(obj)../../nvidia/common)
> > >> >>> endif
> > >> >>
> > >> >> Maybe I'm just not reading it right, but isn't that just running
> > >the
> > >> >> exact same mkdir commands, just splitting it into two commands,
> > >and
> > >> >> making them optional based on the $(wildcard)? I'm still not clear
> > >what
> > >> >> the problem is.
> > >> >>
> > >> >> Anyway, if this is an issue, then compal/paz00 and
> > >compulabl/trimslice
> > >> >> will need to be fixed for the SPL changes in the same way.
> > >> > 
> > >> > The problem is this:
> > >> > 
> > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > >> > 
> > >> > is true, but these directories:
> > >> > 
> > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > >> > 
> > >> > don't exist because $(obj) is not under $(OBJTREE) in the SPL
> > >build,
> > >> > it's under $(SPLTREE)
> > >> 
> > >> OK, so I think the issue is just that $(obj) isn't the correct place
> > >to
> > >> mkdir these, not that we shouldn't attempt to mkdir any directory. In
> > >> other words, don't you need to switch between mkdir in the object
> > >tree
> > >> or the SPL tree rather than switching between doing a mkdir and not?
> > >> It's quite possible this only affects builds where OBJDIR!=SRCDIR, so
> > >a
> > >> regular build might not show up the problem I /think/ exists in the
> > >code
> > >> quoted a couple of emails above.
> > >
> > >$(obj) is always the place where the object files are going to be
> > >placed, that may be in $(OBJTREE) or in $(SRCTREE) or in $(SPLTREE)
> > >depending on what you're building and what you have set.
> > >
> > >I think the $(wildcard) suggestion I made is the most straightforward,
> > >it basically says "we're about to spit out an object file to here, so
> > >make sure the directory exists first".  In the "normal" case where
> > >your object files are in your source tree the directory will already
> > >exist so it won't do anything.
> > 
> > Ah right, I understand now.
> > 
> > But why not make it super-simple and just run the mkdir unconditionally;
> > it won't cause any harm for an in-tree object location, but removes the
> > need for anyone to think about the conditional logic.
> 
> Shouldn't this really be handled by the commands that create files in those
> directories? They could check that the directories exist, and create them if
> necessary, before executing their actual commands.

The normal rules make sure that $(obj) exists, it's only because
these boards generate object files in $(obj)../common and
$(obj)../../nvidia/common that there's a problem and we need to do
something special.

Stephen's idea of just the unconditional mkdir makes the most sense,
we don't really save anything by skipping it if the directory already
exists. 

-Allen
-- 
nvpublic

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-11  9:29             ` Thierry Reding
  2012-06-11 17:59               ` Allen Martin
@ 2012-06-11 18:03               ` Allen Martin
  1 sibling, 0 replies; 29+ messages in thread
From: Allen Martin @ 2012-06-11 18:03 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 11, 2012 at 02:29:59AM -0700, Thierry Reding wrote:
> * PGP Signed by an unknown key
> 
> * Stephen Warren wrote:
> > Allen Martin <amartin@nvidia.com> wrote:
> > >On Fri, Jun 08, 2012 at 10:28:57PM -0700, Stephen Warren wrote:
> > >> On 06/08/2012 03:27 PM, Allen Martin wrote:
> > >> > On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
> > >> >> On 06/08/2012 02:01 PM, Allen Martin wrote:
> > >> >>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> > >> >>>> This commit uses the common Tegra board implementation instead
> > >of
> > >> >>>> duplicating a lot of the code. In addition, the Plutux and
> > >Medcom
> > >> >>>> specific board files can be removed as the MMC/SD setup is
> > >common
> > >> >>>> among all Tamonten-based boards.
> > >> >>>>
> > >> >>>> ...
> > >> >>>> diff --git a/board/avionic-design/medcom/Makefile
> > >b/board/avionic-design/medcom/Makefile
> > >> >>>> index b0c318c..d96d043 100644
> > >> >>>> --- a/board/avionic-design/medcom/Makefile
> > >> >>>> +++ b/board/avionic-design/medcom/Makefile
> > >> >>>> @@ -26,12 +26,12 @@
> > >> >>>>  include $(TOPDIR)/config.mk
> > >> >>>>
> > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > >> >>>> -$(shell mkdir -p $(obj)../common)
> > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > >> >>>>  endif
> > >> >>>>
> > >> >>>>  LIB    = $(obj)lib$(BOARD).o
> > >> >>>>
> > >> >>>
> > >> >>> This breaks with my patchset to split out the arm7 code to an SPL
> > >> >>> because even though SRCDIR and OBJDIR are the same, in the SPL
> > >build
> > >> >>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> > >> >>>
> > >> >>> How about the following instead which seems more to the point:
> > >> >>>
> > >> >>> ifeq ($(wildcard $(obj)../common),)
> > >> >>> $(shell mkdir -p $(obj)../common)
> > >> >>> endif
> > >> >>> ifeq ($(wildcard $(obj)../../nvidia/common),)
> > >> >>> $(shell mkdir -p $(obj)../../nvidia/common)
> > >> >>> endif
> > >> >>
> > >> >> Maybe I'm just not reading it right, but isn't that just running
> > >the
> > >> >> exact same mkdir commands, just splitting it into two commands,
> > >and
> > >> >> making them optional based on the $(wildcard)? I'm still not clear
> > >what
> > >> >> the problem is.
> > >> >>
> > >> >> Anyway, if this is an issue, then compal/paz00 and
> > >compulabl/trimslice
> > >> >> will need to be fixed for the SPL changes in the same way.
> > >> > 
> > >> > The problem is this:
> > >> > 
> > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > >> > 
> > >> > is true, but these directories:
> > >> > 
> > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > >> > 
> > >> > don't exist because $(obj) is not under $(OBJTREE) in the SPL
> > >build,
> > >> > it's under $(SPLTREE)
> > >> 
> > >> OK, so I think the issue is just that $(obj) isn't the correct place
> > >to
> > >> mkdir these, not that we shouldn't attempt to mkdir any directory. In
> > >> other words, don't you need to switch between mkdir in the object
> > >tree
> > >> or the SPL tree rather than switching between doing a mkdir and not?
> > >> It's quite possible this only affects builds where OBJDIR!=SRCDIR, so
> > >a
> > >> regular build might not show up the problem I /think/ exists in the
> > >code
> > >> quoted a couple of emails above.
> > >
> > >$(obj) is always the place where the object files are going to be
> > >placed, that may be in $(OBJTREE) or in $(SRCTREE) or in $(SPLTREE)
> > >depending on what you're building and what you have set.
> > >
> > >I think the $(wildcard) suggestion I made is the most straightforward,
> > >it basically says "we're about to spit out an object file to here, so
> > >make sure the directory exists first".  In the "normal" case where
> > >your object files are in your source tree the directory will already
> > >exist so it won't do anything.
> > 
> > Ah right, I understand now.
> > 
> > But why not make it super-simple and just run the mkdir unconditionally;
> > it won't cause any harm for an in-tree object location, but removes the
> > need for anyone to think about the conditional logic.
> 
> Shouldn't this really be handled by the commands that create files in those
> directories? They could check that the directories exist, and create them if
> necessary, before executing their actual commands.

The normal rules make sure $(obj) exists, it's only because these
boards generate files in $(obj)../common and $(obj)../../nvidia/common
that there's a problem and we need to do something special.

I think Stephen's idea of the unconditional mkdir makes the most
sense.  We don't really buy anything by skipping it if the direcotry
already exists.

-Allen
-- 
nvpublic

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

* [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support
  2012-06-11 17:59               ` Allen Martin
@ 2012-06-11 18:07                 ` Thierry Reding
  0 siblings, 0 replies; 29+ messages in thread
From: Thierry Reding @ 2012-06-11 18:07 UTC (permalink / raw)
  To: u-boot

* Allen Martin wrote:
> On Mon, Jun 11, 2012 at 02:29:59AM -0700, Thierry Reding wrote:
> > * PGP Signed by an unknown key
> > 
> > * Stephen Warren wrote:
> > > Allen Martin <amartin@nvidia.com> wrote:
> > > >On Fri, Jun 08, 2012 at 10:28:57PM -0700, Stephen Warren wrote:
> > > >> On 06/08/2012 03:27 PM, Allen Martin wrote:
> > > >> > On Fri, Jun 08, 2012 at 02:07:25PM -0700, Stephen Warren wrote:
> > > >> >> On 06/08/2012 02:01 PM, Allen Martin wrote:
> > > >> >>> On Fri, May 25, 2012 at 06:46:22AM -0700, Thierry Reding wrote:
> > > >> >>>> This commit uses the common Tegra board implementation instead
> > > >of
> > > >> >>>> duplicating a lot of the code. In addition, the Plutux and
> > > >Medcom
> > > >> >>>> specific board files can be removed as the MMC/SD setup is
> > > >common
> > > >> >>>> among all Tamonten-based boards.
> > > >> >>>>
> > > >> >>>> ...
> > > >> >>>> diff --git a/board/avionic-design/medcom/Makefile
> > > >b/board/avionic-design/medcom/Makefile
> > > >> >>>> index b0c318c..d96d043 100644
> > > >> >>>> --- a/board/avionic-design/medcom/Makefile
> > > >> >>>> +++ b/board/avionic-design/medcom/Makefile
> > > >> >>>> @@ -26,12 +26,12 @@
> > > >> >>>>  include $(TOPDIR)/config.mk
> > > >> >>>>
> > > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > > >> >>>> -$(shell mkdir -p $(obj)../common)
> > > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > > >> >>>>  endif
> > > >> >>>>
> > > >> >>>>  LIB    = $(obj)lib$(BOARD).o
> > > >> >>>>
> > > >> >>>
> > > >> >>> This breaks with my patchset to split out the arm7 code to an SPL
> > > >> >>> because even though SRCDIR and OBJDIR are the same, in the SPL
> > > >build
> > > >> >>> $(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
> > > >> >>>
> > > >> >>> How about the following instead which seems more to the point:
> > > >> >>>
> > > >> >>> ifeq ($(wildcard $(obj)../common),)
> > > >> >>> $(shell mkdir -p $(obj)../common)
> > > >> >>> endif
> > > >> >>> ifeq ($(wildcard $(obj)../../nvidia/common),)
> > > >> >>> $(shell mkdir -p $(obj)../../nvidia/common)
> > > >> >>> endif
> > > >> >>
> > > >> >> Maybe I'm just not reading it right, but isn't that just running
> > > >the
> > > >> >> exact same mkdir commands, just splitting it into two commands,
> > > >and
> > > >> >> making them optional based on the $(wildcard)? I'm still not clear
> > > >what
> > > >> >> the problem is.
> > > >> >>
> > > >> >> Anyway, if this is an issue, then compal/paz00 and
> > > >compulabl/trimslice
> > > >> >> will need to be fixed for the SPL changes in the same way.
> > > >> > 
> > > >> > The problem is this:
> > > >> > 
> > > >> >>>>  ifneq ($(OBJTREE),$(SRCTREE))
> > > >> > 
> > > >> > is true, but these directories:
> > > >> > 
> > > >> >>>> +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)
> > > >> > 
> > > >> > don't exist because $(obj) is not under $(OBJTREE) in the SPL
> > > >build,
> > > >> > it's under $(SPLTREE)
> > > >> 
> > > >> OK, so I think the issue is just that $(obj) isn't the correct place
> > > >to
> > > >> mkdir these, not that we shouldn't attempt to mkdir any directory. In
> > > >> other words, don't you need to switch between mkdir in the object
> > > >tree
> > > >> or the SPL tree rather than switching between doing a mkdir and not?
> > > >> It's quite possible this only affects builds where OBJDIR!=SRCDIR, so
> > > >a
> > > >> regular build might not show up the problem I /think/ exists in the
> > > >code
> > > >> quoted a couple of emails above.
> > > >
> > > >$(obj) is always the place where the object files are going to be
> > > >placed, that may be in $(OBJTREE) or in $(SRCTREE) or in $(SPLTREE)
> > > >depending on what you're building and what you have set.
> > > >
> > > >I think the $(wildcard) suggestion I made is the most straightforward,
> > > >it basically says "we're about to spit out an object file to here, so
> > > >make sure the directory exists first".  In the "normal" case where
> > > >your object files are in your source tree the directory will already
> > > >exist so it won't do anything.
> > > 
> > > Ah right, I understand now.
> > > 
> > > But why not make it super-simple and just run the mkdir unconditionally;
> > > it won't cause any harm for an in-tree object location, but removes the
> > > need for anyone to think about the conditional logic.
> > 
> > Shouldn't this really be handled by the commands that create files in those
> > directories? They could check that the directories exist, and create them if
> > necessary, before executing their actual commands.
> 
> The normal rules make sure that $(obj) exists, it's only because
> these boards generate object files in $(obj)../common and
> $(obj)../../nvidia/common that there's a problem and we need to do
> something special.

Yes, but the rules that create the .o files from .c or .S could also be
modified to create the directory part of the target if it doesn't exist.
The same workaround is used in a number of places already and is likely to be
needed again and again in the future.

> Stephen's idea of just the unconditional mkdir makes the most sense,
> we don't really save anything by skipping it if the directory already
> exists.

That's certainly the easiest way to fix it.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120611/c33cc872/attachment.pgp>

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

end of thread, other threads:[~2012-06-11 18:07 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-25 13:46 [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Thierry Reding
2012-05-25 13:46 ` [U-Boot] [PATCH v2 2/7] tegra: medcom: Add device tree support Thierry Reding
2012-05-25 13:46 ` [U-Boot] [PATCH v2 3/7] tegra: plutux: " Thierry Reding
2012-05-25 13:46 ` [U-Boot] [PATCH v2 4/7] tegra: Allow boards to perform early GPIO setup Thierry Reding
2012-05-25 16:24   ` Stephen Warren
2012-05-25 17:31     ` Thierry Reding
2012-05-25 17:59       ` Thierry Reding
2012-05-31 20:35         ` Tom Warren
2012-06-04  6:09           ` Thierry Reding
2012-06-04 16:47             ` Tom Warren
2012-05-25 13:46 ` [U-Boot] [PATCH v2 5/7] tegra: Implement gpio_early_init() on Tamonten Thierry Reding
2012-05-25 16:27   ` Stephen Warren
2012-05-25 17:40     ` Thierry Reding
2012-05-25 18:56       ` Kai Poggensee
2012-05-29 14:57         ` Thierry Reding
2012-05-29 16:06           ` Stephen Warren
2012-05-25 13:46 ` [U-Boot] [PATCH v2 6/7] tegra: Use SD write-protect GPIO " Thierry Reding
2012-05-25 13:46 ` [U-Boot] [PATCH v2 7/7] tegra: Add Tamonten Evaluation Carrier support Thierry Reding
2012-05-25 16:31   ` Stephen Warren
2012-06-08 20:01 ` [U-Boot] [PATCH v2 1/7] tegra: Rework Tamonten support Allen Martin
2012-06-08 21:07   ` Stephen Warren
2012-06-08 21:27     ` Allen Martin
2012-06-09  5:28       ` Stephen Warren
2012-06-09  6:25         ` Allen Martin
2012-06-09 16:18           ` Stephen Warren
2012-06-11  9:29             ` Thierry Reding
2012-06-11 17:59               ` Allen Martin
2012-06-11 18:07                 ` Thierry Reding
2012-06-11 18:03               ` Allen Martin

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.