tegra: Rework Tamonten support
PATCH v2 1/7 tegra: Rework Tamonten support
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.
---
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
board/avionic-design/common/tamonten.c +7 -42
@@ -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 */
board/avionic-design/common/tamonten.h deleted +0 -32
@@ -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 */
board/avionic-design/medcom/Makefile +3 -3
@@ -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)
board/avionic-design/medcom/medcom.c deleted +0 -45
45 lines not on this page · raw message
board/avionic-design/plutux/Makefile +3 -3
@@ -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)
board/avionic-design/plutux/plutux.c deleted +0 -45
45 lines not on this page · raw message
Signature · 1 line
1.7.10.2
PATCH v2 2/7 tegra: medcom: Add device tree support
Device tree support is required for working USB host support, which in turn enables ethernet support.
---
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
board/avionic-design/dts/tegra2-medcom.dts new file +58 -0
@@ -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"; + }; +};
include/configs/medcom.h +20 -1
@@ -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
Signature · 1 line
1.7.10.2
PATCH v2 3/7 tegra: plutux: Add device tree support
In reply to Thierry RedingDevice tree support is required for working USB host support, which in turn enables ethernet support.
---
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
board/avionic-design/dts/tegra2-plutux.dts new file +58 -0
@@ -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"; + }; +};
include/configs/plutux.h +20 -1
@@ -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
Signature · 1 line
1.7.10.2
PATCH v2 4/7 tegra: Allow boards to perform early GPIO setup
In reply to Thierry RedingThe new gpio_early_init() function, which does nothing by default, can be overridden by boards to configure GPIOs at an early stage.
---
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(+)
board/nvidia/common/board.c +7 -0
@@ -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
board/nvidia/common/board.h +1 -0
@@ -25,6 +25,7 @@#define _BOARD_H_void gpio_config_uart (void ); +void gpio_early_init (void );void gpio_early_init_uart (void );/*
Signature · 1 line
1.7.10.2
PATCH v2 4/7 tegra: Allow boards to perform early GPIO setup
Quoted 4 lines · Thierry Reding
The new
gpio_early_init()function, which does nothing by default, can be overridden by boards to configure GPIOs at an early stage.
board/nvidia/common/board.c int board_init(void) · line 149
Quoted 10 lines
board/nvidia/common/board.c +1
-0int 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...
PATCH v2 4/7 tegra: Allow boards to perform early GPIO setup
Quoted 27 lines · Stephen Warren
Quoted 4 lines · Thierry Reding
The new
gpio_early_init()function, which does nothing by default, can be overridden by boards to configure GPIOs at an early stage.board/nvidia/common/board.c int board_init(void) · line 149
Quoted 10 lines
board/nvidia/common/board.c +1
-0int 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 genericgpio_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
Quoted 7 lines
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.
Quoted 2 lines
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>
PATCH v2 4/7 tegra: Allow boards to perform early GPIO setup
Quoted 2 lines · Thierry Reding
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>
PATCH v2 4/7 tegra: Allow boards to perform early GPIO setup
Thierry,
Quoted 9 lines
-----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
Quoted 7 lines
Quoted 2 lines · Thierry Reding
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
MAINTAINERSentry 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
Quoted 5 lines
Thierry
* Unknown Key
*0xA2E3269F
Signature · 1 line
nvpublic
PATCH v2 4/7 tegra: Allow boards to perform early GPIO setup
Quoted 15 lines · Tom Warren
Thierry,
Quoted 13 lines
-----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
Quoted 2 lines · Thierry Reding
Furthermore I'll need to rebase the patches onto the Tegra branch due to the major restructuring of the configuration files.
Quoted 7 lines
Quoted 3 lines
This isn't true. But I'll still have to respin because of the
MAINTAINERSentry 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_MMCor_SPIreferences toCONFIG_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>
PATCH v2 4/7 tegra: Allow boards to perform early GPIO setup
Thierry,
Quoted 34 lines
-----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
Quoted 16 lines · Tom Warren
Thierry,
Quoted 14 lines
-----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 setupQuoted 1 line
Old Signed by an unknown key
Quoted 2 lines · Thierry Reding
Furthermore I'll need to rebase the patches onto the Tegra branch due to the major restructuring of the configuration files.
Quoted 7 lines
Quoted 3 lines
This isn't true. But I'll still have to respin because of the
MAINTAINERSentry 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_MMCor_SPIreferences toCONFIG_TEGRA_MMC&_SPI(see my changes to rename tegra periph drivers for the upcoming Tegra3 rearch).
Quoted 5 lines
I saw that you already carry a patch in your next branch that does the renames in the
tec.hconfiguration. 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
Quoted 5 lines
Thierry
* Unknown Key
*0xA2E3269F
Signature · 1 line
nvpublic
PATCH v2 5/7 tegra: Implement gpio_early_init() on Tamonten
In reply to Thierry RedingThe 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.
---
Changes in v2:
- new patch required for TEC support
board/avionic-design/common/tamonten.c | 9 +++++++++ 1 file changed, 9 insertions(+)
board/avionic-design/common/tamonten.c +9 -0
@@ -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
Signature · 1 line
1.7.10.2
PATCH v2 5/7 tegra: Implement gpio_early_init() on Tamonten
board/avionic-design/common/tamonten.c void gpio_config_uart(void) · line 58
Quoted 11 lines · Thierry Reding
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.
board/avionic-design/common/tamonten.c +6
-0+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.
PATCH v2 5/7 tegra: Implement gpio_early_init() on Tamonten
Quoted 15 lines · Stephen Warren
board/avionic-design/common/tamonten.c void gpio_config_uart(void) · line 58
Quoted 11 lines · Thierry Reding
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.
board/avionic-design/common/tamonten.c +6
-0+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?
Quoted 5 lines
While
gpio_free()does not do this at present, it seems perfectly reasonable for someone to modifygpio_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>
PATCH v2 5/7 tegra: Implement gpio_early_init() on Tamonten
Hi Thierry,
Quoted 16 lines · Thierry Reding
Quoted 15 lines · Stephen Warren
board/avionic-design/common/tamonten.c void gpio_config_uart(void) · line 58
Quoted 11 lines · Thierry Reding
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.
board/avionic-design/common/tamonten.c +6
-0+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?
Quoted 8 lines
Quoted 5 lines
While
gpio_free()does not do this at present, it seems perfectly reasonable for someone to modifygpio_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
PATCH v2 5/7 tegra: Implement gpio_early_init() on Tamonten
Quoted 29 lines · Kai Poggensee
Hi Thierry,
Quoted 16 lines · Thierry Reding
Quoted 15 lines · Stephen Warren
board/avionic-design/common/tamonten.c void gpio_config_uart(void) · line 58
Quoted 11 lines · Thierry Reding
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.
board/avionic-design/common/tamonten.c +6
-0+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?
Quoted 8 lines
Quoted 5 lines
While
gpio_free()does not do this at present, it seems perfectly reasonable for someone to modifygpio_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.
Quoted 6 lines
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>
PATCH v2 5/7 tegra: Implement gpio_early_init() on Tamonten
Quoted 37 lines · Thierry Reding
Quoted 29 lines · Kai Poggensee
Hi Thierry,
Quoted 21 lines · Thierry Reding
Quoted 11 lines · Stephen Warren
Quoted 9 lines · Thierry Reding
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); +}Quoted 8 lines
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 modifygpio_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.Quoted 3 lines
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.
Quoted 6 lines
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".
Quoted 6 lines
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.
PATCH v2 6/7 tegra: Use SD write-protect GPIO on Tamonten
In reply to Thierry RedingGPIO PI6 can be used to obtain the write-protect status of an SD card inserted into the SD slot.
---
Changes in v2:
- new patch
board/avionic-design/common/tamonten.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
board/avionic-design/common/tamonten.c +3 -1
@@ -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 ; }
Signature · 1 line
1.7.10.2
PATCH v2 7/7 tegra: Add Tamonten Evaluation Carrier support
In reply to Thierry RedingThe Tamonten Evaluation Carrier is an evaluation board for the Tamonten processor board. More information is available here:
---
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
board/avionic-design/dts/tegra2-tec.dts new file +58 -0
@@ -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"; + }; +};
board/avionic-design/tec/Makefile new file +50 -0
50 lines not on this page · raw message
boards.cfg +1 -0
@@ -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
include/configs/tec.h new file +83 -0
83 lines not on this page · raw message
Signature · 1 line
1.7.10.2
PATCH v2 7/7 tegra: Add Tamonten Evaluation Carrier support
include/configs/tec.h
Quoted 6 lines · Thierry Reding
The Tamonten Evaluation Carrier is an evaluation board for the Tamonten processor board. More information is available here:
include/configs/tec.h +1
-0+#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,
PATCH v2 1/7 tegra: Rework Tamonten support
In reply to Thierry RedingQuoted 11 lines · Thierry Reding
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.
...
board/avionic-design/medcom/Makefile +0
-0
board/avionic-design/medcom/Makefile line 33
Quoted 9 lines
board/avionic-design/medcom/Makefile +1
-1@@ -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
Signature · 1 line
nvpublic
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 26 lines · Allen Martin
Quoted 11 lines · Thierry Reding
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.
...
board/avionic-design/medcom/Makefile +0
-0board/avionic-design/medcom/Makefile line 33
Quoted 9 lines
board/avionic-design/medcom/Makefile +1
-1@@ -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).oThis 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).
Quoted 8 lines
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.
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 36 lines · Stephen Warren
Quoted 26 lines · Allen Martin
Quoted 11 lines · Thierry Reding
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.
...
board/avionic-design/medcom/Makefile +0
-0board/avionic-design/medcom/Makefile line 33
Quoted 9 lines
board/avionic-design/medcom/Makefile +1
-1@@ -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).oThis 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).
Quoted 8 lines
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
Quoted 7 lines
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:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))
is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(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
Signature · 1 line
nvpublic
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 47 lines · Allen Martin
Quoted 36 lines · Stephen Warren
Quoted 26 lines · Allen Martin
Quoted 11 lines · Thierry Reding
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.
...
board/avionic-design/medcom/Makefile +0
-0board/avionic-design/medcom/Makefile line 33
Quoted 9 lines
board/avionic-design/medcom/Makefile +1
-1@@ -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).oThis 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).
Quoted 8 lines
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)
endifQuoted 7 lines
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:
Quoted 8 lines
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(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.
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 57 lines · Stephen Warren
Quoted 47 lines · Allen Martin
Quoted 36 lines · Stephen Warren
Quoted 26 lines · Allen Martin
Quoted 11 lines · Thierry Reding
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.
...
board/avionic-design/medcom/Makefile +0
-0board/avionic-design/medcom/Makefile line 33
Quoted 9 lines
board/avionic-design/medcom/Makefile +1
-1@@ -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).oThis 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).
Quoted 8 lines
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)
endifQuoted 7 lines
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:
Quoted 8 lines
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(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)
Quoted 7 lines
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
Signature · 1 line
nvpublic
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 84 lines · Allen Martin
Quoted 5 lines · Stephen Warren
Quoted 4 lines · Allen Martin
Quoted 3 lines · Stephen Warren
Quoted 2 lines · Allen Martin
Quoted 1 line · Thierry Reding
This commit uses the common Tegra board implementation instead
of
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
duplicating a lot of the code. In addition, the Plutux and
Medcom
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
specific board files can be removed as the MMC/SD setup is
common
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Review
Quoted 4 lines
among all Tamonten-based boards.
...
(quoted diff) +0
-0b/board/avionic-design/medcom/Makefile
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
index b0c318c..d96d043 100644
board/avionic-design/medcom/Makefile +1
-1@@ -26,12 +26,12 @@ include $(TOPDIR)/config.mk ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)../common) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common) endifQuoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
board/avionic-design/medcom/Makefile line 33
Quoted 2 lines
board/avionic-design/medcom/Makefile +0
-0LIB = $(obj)lib$(BOARD).oThis 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
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
$(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
How about the following instead which seems more to the point:
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
ifeq ($(wildcard $(obj)../common),)
$(shell mkdir -p $(obj)../common)
endif
ifeq ($(wildcard $(obj)../../nvidia/common),)
$(shell mkdir -p $(obj)../../nvidia/common)
endifMaybe I'm just not reading it right, but isn't that just running
the
Quoted 1 line
Quoted 1 line
Quoted 1 line
exact same mkdir commands, just splitting it into two commands,
and
Quoted 1 line
Quoted 1 line
Quoted 1 line
making them optional based on the $(wildcard)? I'm still not clear
what
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
the problem is.
Anyway, if this is an issue, then compal/paz00 and
compulabl/trimslice
Quoted 11 lines
Quoted 11 lines
Quoted 1 line
will need to be fixed for the SPL changes in the same way.
The problem is this:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)don't exist because $(obj) is not under $(OBJTREE) in the SPL
build,
Quoted 3 lines
Quoted 1 line
it's under $(SPLTREE)
OK, so I think the issue is just that $(obj) isn't the correct place
to
Quoted 2 lines
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
Quoted 2 lines
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
Quoted 1 line
regular build might not show up the problem I /think/ exists in the
code
Quoted 1 line
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.
Quoted 5 lines
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!)
Signature · 1 line
Sent from my Android phone with K-9 Mail. Please excuse my brevity.
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 91 lines · Stephen Warren
Quoted 84 lines · Allen Martin
Quoted 5 lines · Stephen Warren
Quoted 4 lines · Allen Martin
Quoted 3 lines · Stephen Warren
Quoted 2 lines · Allen Martin
Quoted 1 line · Thierry Reding
This commit uses the common Tegra board implementation instead
of
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
duplicating a lot of the code. In addition, the Plutux and
Medcom
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
specific board files can be removed as the MMC/SD setup is
common
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Review
Quoted 4 lines
among all Tamonten-based boards.
...
(quoted diff) +0
-0b/board/avionic-design/medcom/Makefile
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
index b0c318c..d96d043 100644
board/avionic-design/medcom/Makefile +1
-1@@ -26,12 +26,12 @@ include $(TOPDIR)/config.mk ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)../common) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common) endifQuoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
board/avionic-design/medcom/Makefile line 33
Quoted 2 lines
board/avionic-design/medcom/Makefile +0
-0LIB = $(obj)lib$(BOARD).oThis 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
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
$(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
How about the following instead which seems more to the point:
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
ifeq ($(wildcard $(obj)../common),)
$(shell mkdir -p $(obj)../common)
endif
ifeq ($(wildcard $(obj)../../nvidia/common),)
$(shell mkdir -p $(obj)../../nvidia/common)
endifMaybe I'm just not reading it right, but isn't that just running
the
Quoted 1 line
Quoted 1 line
Quoted 1 line
exact same mkdir commands, just splitting it into two commands,
and
Quoted 1 line
Quoted 1 line
Quoted 1 line
making them optional based on the $(wildcard)? I'm still not clear
what
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
the problem is.
Anyway, if this is an issue, then compal/paz00 and
compulabl/trimslice
Quoted 11 lines
Quoted 11 lines
Quoted 1 line
will need to be fixed for the SPL changes in the same way.
The problem is this:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)don't exist because $(obj) is not under $(OBJTREE) in the SPL
build,
Quoted 3 lines
Quoted 1 line
it's under $(SPLTREE)
OK, so I think the issue is just that $(obj) isn't the correct place
to
Quoted 2 lines
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
Quoted 2 lines
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
Quoted 1 line
regular build might not show up the problem I /think/ exists in the
code
Quoted 1 line
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.
Quoted 5 lines
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.
Quoted 5 lines
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>
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 96 lines · Thierry Reding
* PGP Signed by an unknown key
Quoted 93 lines · Stephen Warren
Quoted 84 lines · Allen Martin
Quoted 5 lines · Stephen Warren
Quoted 4 lines · Allen Martin
Quoted 3 lines · Stephen Warren
Quoted 2 lines · Allen Martin
Quoted 1 line · Thierry Reding
This commit uses the common Tegra board implementation instead
of
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
duplicating a lot of the code. In addition, the Plutux and
Medcom
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
specific board files can be removed as the MMC/SD setup is
common
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Review
Quoted 4 lines
among all Tamonten-based boards.
...
(quoted diff) +0
-0b/board/avionic-design/medcom/Makefile
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
index b0c318c..d96d043 100644
board/avionic-design/medcom/Makefile +1
-1@@ -26,12 +26,12 @@ include $(TOPDIR)/config.mk ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)../common) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common) endifQuoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
board/avionic-design/medcom/Makefile line 33
Quoted 2 lines
board/avionic-design/medcom/Makefile +0
-0LIB = $(obj)lib$(BOARD).oThis 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
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
$(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
How about the following instead which seems more to the point:
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
ifeq ($(wildcard $(obj)../common),)
$(shell mkdir -p $(obj)../common)
endif
ifeq ($(wildcard $(obj)../../nvidia/common),)
$(shell mkdir -p $(obj)../../nvidia/common)
endifMaybe I'm just not reading it right, but isn't that just running
the
Quoted 1 line
Quoted 1 line
Quoted 1 line
exact same mkdir commands, just splitting it into two commands,
and
Quoted 1 line
Quoted 1 line
Quoted 1 line
making them optional based on the $(wildcard)? I'm still not clear
what
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
the problem is.
Anyway, if this is an issue, then compal/paz00 and
compulabl/trimslice
Quoted 11 lines
Quoted 11 lines
Quoted 1 line
will need to be fixed for the SPL changes in the same way.
The problem is this:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)don't exist because $(obj) is not under $(OBJTREE) in the SPL
build,
Quoted 3 lines
Quoted 1 line
it's under $(SPLTREE)
OK, so I think the issue is just that $(obj) isn't the correct place
to
Quoted 2 lines
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
Quoted 2 lines
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
Quoted 1 line
regular build might not show up the problem I /think/ exists in the
code
Quoted 1 line
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.
Quoted 5 lines
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.
Quoted 7 lines
Quoted 3 lines
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
Signature · 1 line
nvpublic
PATCH v2 1/7 tegra: Rework Tamonten support
Quoted 101 lines · Allen Martin
Quoted 100 lines · Thierry Reding
* PGP Signed by an unknown key
Quoted 96 lines · Stephen Warren
Quoted 84 lines · Allen Martin
Quoted 5 lines · Stephen Warren
Quoted 4 lines · Allen Martin
Quoted 3 lines · Stephen Warren
Quoted 2 lines · Allen Martin
Quoted 1 line · Thierry Reding
This commit uses the common Tegra board implementation instead
of
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
duplicating a lot of the code. In addition, the Plutux and
Medcom
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
specific board files can be removed as the MMC/SD setup is
common
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Review
Quoted 4 lines
among all Tamonten-based boards.
...
(quoted diff) +0
-0b/board/avionic-design/medcom/Makefile
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
index b0c318c..d96d043 100644
board/avionic-design/medcom/Makefile +1
-1@@ -26,12 +26,12 @@ include $(TOPDIR)/config.mk ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)../common) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common) endifQuoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
board/avionic-design/medcom/Makefile line 33
Quoted 2 lines
board/avionic-design/medcom/Makefile +0
-0LIB = $(obj)lib$(BOARD).oThis 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
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
$(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
How about the following instead which seems more to the point:
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
ifeq ($(wildcard $(obj)../common),)
$(shell mkdir -p $(obj)../common)
endif
ifeq ($(wildcard $(obj)../../nvidia/common),)
$(shell mkdir -p $(obj)../../nvidia/common)
endifMaybe I'm just not reading it right, but isn't that just running
the
Quoted 1 line
Quoted 1 line
Quoted 1 line
exact same mkdir commands, just splitting it into two commands,
and
Quoted 1 line
Quoted 1 line
Quoted 1 line
making them optional based on the $(wildcard)? I'm still not clear
what
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
the problem is.
Anyway, if this is an issue, then compal/paz00 and
compulabl/trimslice
Quoted 11 lines
Quoted 11 lines
Quoted 1 line
will need to be fixed for the SPL changes in the same way.
The problem is this:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)don't exist because $(obj) is not under $(OBJTREE) in the SPL
build,
Quoted 3 lines
Quoted 1 line
it's under $(SPLTREE)
OK, so I think the issue is just that $(obj) isn't the correct place
to
Quoted 2 lines
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
Quoted 2 lines
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
Quoted 1 line
regular build might not show up the problem I /think/ exists in the
code
Quoted 1 line
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.
Quoted 5 lines
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.
Quoted 8 lines
Quoted 3 lines
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.
Quoted 3 lines
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>
PATCH v2 1/7 tegra: Rework Tamonten support
In reply to Thierry RedingQuoted 96 lines · Thierry Reding
* PGP Signed by an unknown key
Quoted 93 lines · Stephen Warren
Quoted 84 lines · Allen Martin
Quoted 5 lines · Stephen Warren
Quoted 4 lines · Allen Martin
Quoted 3 lines · Stephen Warren
Quoted 2 lines · Allen Martin
Quoted 1 line · Thierry Reding
This commit uses the common Tegra board implementation instead
of
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
duplicating a lot of the code. In addition, the Plutux and
Medcom
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
specific board files can be removed as the MMC/SD setup is
common
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Review
Quoted 4 lines
among all Tamonten-based boards.
...
(quoted diff) +0
-0b/board/avionic-design/medcom/Makefile
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
index b0c318c..d96d043 100644
board/avionic-design/medcom/Makefile +1
-1@@ -26,12 +26,12 @@ include $(TOPDIR)/config.mk ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)../common) +$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common) endifQuoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
board/avionic-design/medcom/Makefile line 33
Quoted 2 lines
board/avionic-design/medcom/Makefile +0
-0LIB = $(obj)lib$(BOARD).oThis 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
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
$(obj) is a subdir of $(SPLTREE) not $(OBJTREE) (not my doing).
How about the following instead which seems more to the point:
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
ifeq ($(wildcard $(obj)../common),)
$(shell mkdir -p $(obj)../common)
endif
ifeq ($(wildcard $(obj)../../nvidia/common),)
$(shell mkdir -p $(obj)../../nvidia/common)
endifMaybe I'm just not reading it right, but isn't that just running
the
Quoted 1 line
Quoted 1 line
Quoted 1 line
exact same mkdir commands, just splitting it into two commands,
and
Quoted 1 line
Quoted 1 line
Quoted 1 line
making them optional based on the $(wildcard)? I'm still not clear
what
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
the problem is.
Anyway, if this is an issue, then compal/paz00 and
compulabl/trimslice
Quoted 11 lines
Quoted 11 lines
Quoted 1 line
will need to be fixed for the SPL changes in the same way.
The problem is this:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 34
Quoted 1 line
board/avionic-design/medcom/Makefile +0
-0ifneq ($(OBJTREE),$(SRCTREE))is true, but these directories:
Quoted 1 line
Quoted 1 line
board/avionic-design/medcom/Makefile line 35
Quoted 1 line
board/avionic-design/medcom/Makefile +1
-0+$(shell mkdir -p $(obj)../common $(obj)../../nvidia/common)don't exist because $(obj) is not under $(OBJTREE) in the SPL
build,
Quoted 3 lines
Quoted 1 line
it's under $(SPLTREE)
OK, so I think the issue is just that $(obj) isn't the correct place
to
Quoted 2 lines
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
Quoted 2 lines
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
Quoted 1 line
regular build might not show up the problem I /think/ exists in the
code
Quoted 1 line
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.
Quoted 5 lines
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.
Quoted 7 lines
Quoted 3 lines
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
Signature · 1 line
nvpublic