Patchwork [U-Boot] tegra20: rework UART GPIO handling

login
register
mail settings
Submitter Lucas Stach
Date Aug. 19, 2012, 6:15 p.m.
Message ID <1345400152-16014-1-git-send-email-dev@lynxeye.de>
Download mbox | patch
Permalink /patch/178578/
State Superseded
Headers show

Comments

Lucas Stach - Aug. 19, 2012, 6:15 p.m.
Rename board provided gpio_config_uart() to
gpio_early_init_uart() as it does the same thing as the equally
called function provided by the uart-switch code. This allows
to simply call this function in early board init whether or not
we are building with CONFIG_UART_SWITCH defined.

Also provide a weak symbol for this function, to avoid the
need to provide this function for boards that don't need any
fixup.

This patch supersedes the earlier posted
"tegra: convert gpio_config_uart to weak symbol".
Build tested with MAKEALL -s tegra20

Signed-off-by: Lucas Stach <dev@lynxeye.de>
---
 arch/arm/cpu/arm720t/tegra20/board.h   |  2 +-
 arch/arm/cpu/arm720t/tegra20/spl.c     |  4 ----
 board/avionic-design/common/tamonten.c |  7 -------
 board/compal/paz00/paz00.c             |  7 -------
 board/compulab/trimslice/trimslice.c   |  7 -------
 board/nvidia/common/board.c            | 10 ++++++----
 board/nvidia/harmony/harmony.c         |  7 -------
 board/nvidia/seaboard/seaboard.c       |  2 +-
 board/nvidia/whistler/whistler.c       |  7 -------
 9 Dateien geändert, 8 Zeilen hinzugefügt(+), 45 Zeilen entfernt(-)
Stephen Warren - Aug. 20, 2012, 3:48 p.m.
On 08/19/2012 12:15 PM, Lucas Stach wrote:
> Rename board provided gpio_config_uart() to
> gpio_early_init_uart() as it does the same thing as the equally
> called function provided by the uart-switch code. This allows
> to simply call this function in early board init whether or not
> we are building with CONFIG_UART_SWITCH defined.
> 
> Also provide a weak symbol for this function, to avoid the
> need to provide this function for boards that don't need any
> fixup.
> 
> This patch supersedes the earlier posted
> "tegra: convert gpio_config_uart to weak symbol".
> Build tested with MAKEALL -s tegra20
> 
> Signed-off-by: Lucas Stach <dev@lynxeye.de>

I think this seems reasonable. However, a couple others should comment,
so I'm CCing them and quoting the whole patch.

Simon Glass should comment because he created the UART switch code.
Allen Martin should comment, since it looks like both SPL and non-SPL
end up calling gpio_early_init_uart(); is that duplication correct or
problematic?

> ---
>  arch/arm/cpu/arm720t/tegra20/board.h   |  2 +-
>  arch/arm/cpu/arm720t/tegra20/spl.c     |  4 ----
>  board/avionic-design/common/tamonten.c |  7 -------
>  board/compal/paz00/paz00.c             |  7 -------
>  board/compulab/trimslice/trimslice.c   |  7 -------
>  board/nvidia/common/board.c            | 10 ++++++----
>  board/nvidia/harmony/harmony.c         |  7 -------
>  board/nvidia/seaboard/seaboard.c       |  2 +-
>  board/nvidia/whistler/whistler.c       |  7 -------
>  9 Dateien geändert, 8 Zeilen hinzugefügt(+), 45 Zeilen entfernt(-)
> 
> diff --git a/arch/arm/cpu/arm720t/tegra20/board.h b/arch/arm/cpu/arm720t/tegra20/board.h
> index 61b91c0..260767d 100644
> --- a/arch/arm/cpu/arm720t/tegra20/board.h
> +++ b/arch/arm/cpu/arm720t/tegra20/board.h
> @@ -22,4 +22,4 @@
>   */
>  
>  void board_init_uart_f(void);
> -void gpio_config_uart(void);
> +void gpio_early_init_uart(void);
> diff --git a/arch/arm/cpu/arm720t/tegra20/spl.c b/arch/arm/cpu/arm720t/tegra20/spl.c
> index da723ef..183a2e1 100644
> --- a/arch/arm/cpu/arm720t/tegra20/spl.c
> +++ b/arch/arm/cpu/arm720t/tegra20/spl.c
> @@ -65,11 +65,7 @@ void board_init_f(ulong dummy)
>  	board_init_uart_f();
>  
>  	/* Initialize periph GPIOs */
> -#ifdef CONFIG_SPI_UART_SWITCH
>  	gpio_early_init_uart();
> -#else
> -	gpio_config_uart();
> -#endif
>  
>  	/*
>  	 * We call relocate_code() with relocation target same as the
> diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c
> index a0a4d1d..f5e6f6d 100644
> --- a/board/avionic-design/common/tamonten.c
> +++ b/board/avionic-design/common/tamonten.c
> @@ -41,13 +41,6 @@
>  #include <mmc.h>
>  #endif
>  
> -/*
> - * Routine: gpio_config_uart
> - * Description: Does nothing on Tamonten - no conflict w/SPI.
> - */
> -void gpio_config_uart(void)
> -{
> -}
>  
>  #ifdef CONFIG_BOARD_EARLY_INIT_F
>  void gpio_early_init(void)
> diff --git a/board/compal/paz00/paz00.c b/board/compal/paz00/paz00.c
> index cd684f2..59cf41b 100644
> --- a/board/compal/paz00/paz00.c
> +++ b/board/compal/paz00/paz00.c
> @@ -24,13 +24,6 @@
>  #include <mmc.h>
>  #endif
>  
> -/*
> - * Routine: gpio_config_uart
> - * Description: Does nothing on Paz00 - no conflict w/SPI.
> - */
> -void gpio_config_uart(void)
> -{
> -}
>  
>  #ifdef CONFIG_TEGRA_MMC
>  /*
> diff --git a/board/compulab/trimslice/trimslice.c b/board/compulab/trimslice/trimslice.c
> index 5dae15b..f6de19e 100644
> --- a/board/compulab/trimslice/trimslice.c
> +++ b/board/compulab/trimslice/trimslice.c
> @@ -34,13 +34,6 @@
>  #include <mmc.h>
>  #endif
>  
> -/*
> - * Routine: gpio_config_uart
> - * Description: Does nothing on TrimSlice - no UART-related GPIOs.
> - */
> -void gpio_config_uart(void)
> -{
> -}
>  
>  void pin_mux_spi(void)
>  {
> diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
> index 7ab2040..78e136a 100644
> --- a/board/nvidia/common/board.c
> +++ b/board/nvidia/common/board.c
> @@ -72,6 +72,11 @@ void __pin_mux_spi(void)
>  
>  void pin_mux_spi(void) __attribute__((weak, alias("__pin_mux_spi")));
>  
> +void __gpio_early_init_uart(void)
> +{
> +}
> +
> +void gpio_early_init_uart(void) __attribute__((weak, alias("__gpio_early_init_uart")));
>  /*
>   * Routine: power_det_init
>   * Description: turn off power detects
> @@ -156,11 +161,8 @@ int board_early_init_f(void)
>  
>  	/* Initialize periph GPIOs */
>  	gpio_early_init();
> -#ifdef CONFIG_SPI_UART_SWITCH
>  	gpio_early_init_uart();
> -#else
> -	gpio_config_uart();
> -#endif
> +
>  	return 0;
>  }
>  #endif	/* EARLY_INIT */
> diff --git a/board/nvidia/harmony/harmony.c b/board/nvidia/harmony/harmony.c
> index 44977c7..5b75230 100644
> --- a/board/nvidia/harmony/harmony.c
> +++ b/board/nvidia/harmony/harmony.c
> @@ -33,13 +33,6 @@
>  #include <mmc.h>
>  #endif
>  
> -/*
> - * Routine: gpio_config_uart
> - * Description: Does nothing on Harmony - no conflict w/SPI.
> - */
> -void gpio_config_uart(void)
> -{
> -}
>  
>  #ifdef CONFIG_TEGRA_MMC
>  /*
> diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c
> index 3298a6b..7c4ff1b 100644
> --- a/board/nvidia/seaboard/seaboard.c
> +++ b/board/nvidia/seaboard/seaboard.c
> @@ -46,7 +46,7 @@ static void gpio_config_uart_seaboard(void)
>  	gpio_direction_output(GPIO_PI3, 0);
>  }
>  
> -void gpio_config_uart(void)
> +void gpio_early_init_uart(void)
>  {
>  	if (machine_is_ventana())
>  		return;
> diff --git a/board/nvidia/whistler/whistler.c b/board/nvidia/whistler/whistler.c
> index c0a114d..cad7c48 100644
> --- a/board/nvidia/whistler/whistler.c
> +++ b/board/nvidia/whistler/whistler.c
> @@ -34,13 +34,6 @@
>  #include <mmc.h>
>  #endif
>  
> -/*
> - * Routine: gpio_config_uart
> - * Description: Does nothing on Whistler - no UART-related GPIOs.
> - */
> -void gpio_config_uart(void)
> -{
> -}
>  
>  /*
>   * Routine: pin_mux_mmc
>
Simon Glass - Aug. 21, 2012, 7:07 p.m.
On Mon, Aug 20, 2012 at 8:48 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 08/19/2012 12:15 PM, Lucas Stach wrote:
>> Rename board provided gpio_config_uart() to
>> gpio_early_init_uart() as it does the same thing as the equally
>> called function provided by the uart-switch code. This allows
>> to simply call this function in early board init whether or not
>> we are building with CONFIG_UART_SWITCH defined.
>>
>> Also provide a weak symbol for this function, to avoid the
>> need to provide this function for boards that don't need any
>> fixup.
>>
>> This patch supersedes the earlier posted
>> "tegra: convert gpio_config_uart to weak symbol".
>> Build tested with MAKEALL -s tegra20
>>
>> Signed-off-by: Lucas Stach <dev@lynxeye.de>

Acked-by: Simon Glass <sjg@chromium.org>

>
> I think this seems reasonable. However, a couple others should comment,
> so I'm CCing them and quoting the whole patch.
>
> Simon Glass should comment because he created the UART switch code.

This change seems reasonable to me.

> Allen Martin should comment, since it looks like both SPL and non-SPL
> end up calling gpio_early_init_uart(); is that duplication correct or
> problematic?

OK so far as seaboard goes, but could perhaps do with a tidy up at some point.

Regards,
Simon

>
>> ---
>>  arch/arm/cpu/arm720t/tegra20/board.h   |  2 +-
>>  arch/arm/cpu/arm720t/tegra20/spl.c     |  4 ----
>>  board/avionic-design/common/tamonten.c |  7 -------
>>  board/compal/paz00/paz00.c             |  7 -------
>>  board/compulab/trimslice/trimslice.c   |  7 -------
>>  board/nvidia/common/board.c            | 10 ++++++----
>>  board/nvidia/harmony/harmony.c         |  7 -------
>>  board/nvidia/seaboard/seaboard.c       |  2 +-
>>  board/nvidia/whistler/whistler.c       |  7 -------
>>  9 Dateien geändert, 8 Zeilen hinzugefügt(+), 45 Zeilen entfernt(-)
>>
>> diff --git a/arch/arm/cpu/arm720t/tegra20/board.h b/arch/arm/cpu/arm720t/tegra20/board.h
>> index 61b91c0..260767d 100644
>> --- a/arch/arm/cpu/arm720t/tegra20/board.h
>> +++ b/arch/arm/cpu/arm720t/tegra20/board.h
>> @@ -22,4 +22,4 @@
>>   */
>>
>>  void board_init_uart_f(void);
>> -void gpio_config_uart(void);
>> +void gpio_early_init_uart(void);
>> diff --git a/arch/arm/cpu/arm720t/tegra20/spl.c b/arch/arm/cpu/arm720t/tegra20/spl.c
>> index da723ef..183a2e1 100644
>> --- a/arch/arm/cpu/arm720t/tegra20/spl.c
>> +++ b/arch/arm/cpu/arm720t/tegra20/spl.c
>> @@ -65,11 +65,7 @@ void board_init_f(ulong dummy)
>>       board_init_uart_f();
>>
>>       /* Initialize periph GPIOs */
>> -#ifdef CONFIG_SPI_UART_SWITCH
>>       gpio_early_init_uart();
>> -#else
>> -     gpio_config_uart();
>> -#endif
>>
>>       /*
>>        * We call relocate_code() with relocation target same as the
>> diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c
>> index a0a4d1d..f5e6f6d 100644
>> --- a/board/avionic-design/common/tamonten.c
>> +++ b/board/avionic-design/common/tamonten.c
>> @@ -41,13 +41,6 @@
>>  #include <mmc.h>
>>  #endif
>>
>> -/*
>> - * Routine: gpio_config_uart
>> - * Description: Does nothing on Tamonten - no conflict w/SPI.
>> - */
>> -void gpio_config_uart(void)
>> -{
>> -}
>>
>>  #ifdef CONFIG_BOARD_EARLY_INIT_F
>>  void gpio_early_init(void)
>> diff --git a/board/compal/paz00/paz00.c b/board/compal/paz00/paz00.c
>> index cd684f2..59cf41b 100644
>> --- a/board/compal/paz00/paz00.c
>> +++ b/board/compal/paz00/paz00.c
>> @@ -24,13 +24,6 @@
>>  #include <mmc.h>
>>  #endif
>>
>> -/*
>> - * Routine: gpio_config_uart
>> - * Description: Does nothing on Paz00 - no conflict w/SPI.
>> - */
>> -void gpio_config_uart(void)
>> -{
>> -}
>>
>>  #ifdef CONFIG_TEGRA_MMC
>>  /*
>> diff --git a/board/compulab/trimslice/trimslice.c b/board/compulab/trimslice/trimslice.c
>> index 5dae15b..f6de19e 100644
>> --- a/board/compulab/trimslice/trimslice.c
>> +++ b/board/compulab/trimslice/trimslice.c
>> @@ -34,13 +34,6 @@
>>  #include <mmc.h>
>>  #endif
>>
>> -/*
>> - * Routine: gpio_config_uart
>> - * Description: Does nothing on TrimSlice - no UART-related GPIOs.
>> - */
>> -void gpio_config_uart(void)
>> -{
>> -}
>>
>>  void pin_mux_spi(void)
>>  {
>> diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
>> index 7ab2040..78e136a 100644
>> --- a/board/nvidia/common/board.c
>> +++ b/board/nvidia/common/board.c
>> @@ -72,6 +72,11 @@ void __pin_mux_spi(void)
>>
>>  void pin_mux_spi(void) __attribute__((weak, alias("__pin_mux_spi")));
>>
>> +void __gpio_early_init_uart(void)
>> +{
>> +}
>> +
>> +void gpio_early_init_uart(void) __attribute__((weak, alias("__gpio_early_init_uart")));
>>  /*
>>   * Routine: power_det_init
>>   * Description: turn off power detects
>> @@ -156,11 +161,8 @@ int board_early_init_f(void)
>>
>>       /* Initialize periph GPIOs */
>>       gpio_early_init();
>> -#ifdef CONFIG_SPI_UART_SWITCH
>>       gpio_early_init_uart();
>> -#else
>> -     gpio_config_uart();
>> -#endif
>> +
>>       return 0;
>>  }
>>  #endif       /* EARLY_INIT */
>> diff --git a/board/nvidia/harmony/harmony.c b/board/nvidia/harmony/harmony.c
>> index 44977c7..5b75230 100644
>> --- a/board/nvidia/harmony/harmony.c
>> +++ b/board/nvidia/harmony/harmony.c
>> @@ -33,13 +33,6 @@
>>  #include <mmc.h>
>>  #endif
>>
>> -/*
>> - * Routine: gpio_config_uart
>> - * Description: Does nothing on Harmony - no conflict w/SPI.
>> - */
>> -void gpio_config_uart(void)
>> -{
>> -}
>>
>>  #ifdef CONFIG_TEGRA_MMC
>>  /*
>> diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c
>> index 3298a6b..7c4ff1b 100644
>> --- a/board/nvidia/seaboard/seaboard.c
>> +++ b/board/nvidia/seaboard/seaboard.c
>> @@ -46,7 +46,7 @@ static void gpio_config_uart_seaboard(void)
>>       gpio_direction_output(GPIO_PI3, 0);
>>  }
>>
>> -void gpio_config_uart(void)
>> +void gpio_early_init_uart(void)
>>  {
>>       if (machine_is_ventana())
>>               return;
>> diff --git a/board/nvidia/whistler/whistler.c b/board/nvidia/whistler/whistler.c
>> index c0a114d..cad7c48 100644
>> --- a/board/nvidia/whistler/whistler.c
>> +++ b/board/nvidia/whistler/whistler.c
>> @@ -34,13 +34,6 @@
>>  #include <mmc.h>
>>  #endif
>>
>> -/*
>> - * Routine: gpio_config_uart
>> - * Description: Does nothing on Whistler - no UART-related GPIOs.
>> - */
>> -void gpio_config_uart(void)
>> -{
>> -}
>>
>>  /*
>>   * Routine: pin_mux_mmc
>>
>

Patch

diff --git a/arch/arm/cpu/arm720t/tegra20/board.h b/arch/arm/cpu/arm720t/tegra20/board.h
index 61b91c0..260767d 100644
--- a/arch/arm/cpu/arm720t/tegra20/board.h
+++ b/arch/arm/cpu/arm720t/tegra20/board.h
@@ -22,4 +22,4 @@ 
  */
 
 void board_init_uart_f(void);
-void gpio_config_uart(void);
+void gpio_early_init_uart(void);
diff --git a/arch/arm/cpu/arm720t/tegra20/spl.c b/arch/arm/cpu/arm720t/tegra20/spl.c
index da723ef..183a2e1 100644
--- a/arch/arm/cpu/arm720t/tegra20/spl.c
+++ b/arch/arm/cpu/arm720t/tegra20/spl.c
@@ -65,11 +65,7 @@  void board_init_f(ulong dummy)
 	board_init_uart_f();
 
 	/* Initialize periph GPIOs */
-#ifdef CONFIG_SPI_UART_SWITCH
 	gpio_early_init_uart();
-#else
-	gpio_config_uart();
-#endif
 
 	/*
 	 * We call relocate_code() with relocation target same as the
diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c
index a0a4d1d..f5e6f6d 100644
--- a/board/avionic-design/common/tamonten.c
+++ b/board/avionic-design/common/tamonten.c
@@ -41,13 +41,6 @@ 
 #include <mmc.h>
 #endif
 
-/*
- * Routine: gpio_config_uart
- * Description: Does nothing on Tamonten - no conflict w/SPI.
- */
-void gpio_config_uart(void)
-{
-}
 
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 void gpio_early_init(void)
diff --git a/board/compal/paz00/paz00.c b/board/compal/paz00/paz00.c
index cd684f2..59cf41b 100644
--- a/board/compal/paz00/paz00.c
+++ b/board/compal/paz00/paz00.c
@@ -24,13 +24,6 @@ 
 #include <mmc.h>
 #endif
 
-/*
- * Routine: gpio_config_uart
- * Description: Does nothing on Paz00 - no conflict w/SPI.
- */
-void gpio_config_uart(void)
-{
-}
 
 #ifdef CONFIG_TEGRA_MMC
 /*
diff --git a/board/compulab/trimslice/trimslice.c b/board/compulab/trimslice/trimslice.c
index 5dae15b..f6de19e 100644
--- a/board/compulab/trimslice/trimslice.c
+++ b/board/compulab/trimslice/trimslice.c
@@ -34,13 +34,6 @@ 
 #include <mmc.h>
 #endif
 
-/*
- * Routine: gpio_config_uart
- * Description: Does nothing on TrimSlice - no UART-related GPIOs.
- */
-void gpio_config_uart(void)
-{
-}
 
 void pin_mux_spi(void)
 {
diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
index 7ab2040..78e136a 100644
--- a/board/nvidia/common/board.c
+++ b/board/nvidia/common/board.c
@@ -72,6 +72,11 @@  void __pin_mux_spi(void)
 
 void pin_mux_spi(void) __attribute__((weak, alias("__pin_mux_spi")));
 
+void __gpio_early_init_uart(void)
+{
+}
+
+void gpio_early_init_uart(void) __attribute__((weak, alias("__gpio_early_init_uart")));
 /*
  * Routine: power_det_init
  * Description: turn off power detects
@@ -156,11 +161,8 @@  int board_early_init_f(void)
 
 	/* Initialize periph GPIOs */
 	gpio_early_init();
-#ifdef CONFIG_SPI_UART_SWITCH
 	gpio_early_init_uart();
-#else
-	gpio_config_uart();
-#endif
+
 	return 0;
 }
 #endif	/* EARLY_INIT */
diff --git a/board/nvidia/harmony/harmony.c b/board/nvidia/harmony/harmony.c
index 44977c7..5b75230 100644
--- a/board/nvidia/harmony/harmony.c
+++ b/board/nvidia/harmony/harmony.c
@@ -33,13 +33,6 @@ 
 #include <mmc.h>
 #endif
 
-/*
- * Routine: gpio_config_uart
- * Description: Does nothing on Harmony - no conflict w/SPI.
- */
-void gpio_config_uart(void)
-{
-}
 
 #ifdef CONFIG_TEGRA_MMC
 /*
diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c
index 3298a6b..7c4ff1b 100644
--- a/board/nvidia/seaboard/seaboard.c
+++ b/board/nvidia/seaboard/seaboard.c
@@ -46,7 +46,7 @@  static void gpio_config_uart_seaboard(void)
 	gpio_direction_output(GPIO_PI3, 0);
 }
 
-void gpio_config_uart(void)
+void gpio_early_init_uart(void)
 {
 	if (machine_is_ventana())
 		return;
diff --git a/board/nvidia/whistler/whistler.c b/board/nvidia/whistler/whistler.c
index c0a114d..cad7c48 100644
--- a/board/nvidia/whistler/whistler.c
+++ b/board/nvidia/whistler/whistler.c
@@ -34,13 +34,6 @@ 
 #include <mmc.h>
 #endif
 
-/*
- * Routine: gpio_config_uart
- * Description: Does nothing on Whistler - no UART-related GPIOs.
- */
-void gpio_config_uart(void)
-{
-}
 
 /*
  * Routine: pin_mux_mmc