[U-Boot] [PATCH] mx6: mx6qsabrelite/nitrogen6x: Fix use of gpio number in SF chip select

Dirk Behme dirk.behme at de.bosch.com
Thu May 30 12:50:10 CEST 2013


On 30.05.2013 12:02, Andrew Gabbasov wrote:
> The number of gpio signal is packed inside CONFIG_SF_DEFAULT_CS macro
> (shifted and or'ed with chip select), so it's incorrect to pass
> that macro directly as an argument to gpio_direction_output() call.
> The gpio number should be extracted (shifted back) before that.
>
> Signed-off-by: Andrew Gabbasov <andrew_gabbasov at mentor.com>
> ---
>   board/boundary/nitrogen6x/nitrogen6x.c        |    2 +-
>   board/freescale/mx6qsabrelite/mx6qsabrelite.c |    2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/board/boundary/nitrogen6x/nitrogen6x.c b/board/boundary/nitrogen6x/nitrogen6x.c
> index cc071d6..b588ac2 100644
> --- a/board/boundary/nitrogen6x/nitrogen6x.c
> +++ b/board/boundary/nitrogen6x/nitrogen6x.c
> @@ -342,7 +342,7 @@ iomux_v3_cfg_t const ecspi1_pads[] = {
>
>   void setup_spi(void)
>   {
> -	gpio_direction_output(CONFIG_SF_DEFAULT_CS, 1);
> +	gpio_direction_output(CONFIG_SF_DEFAULT_CS >> 8, 1);
>   	imx_iomux_v3_setup_multiple_pads(ecspi1_pads,
>   					 ARRAY_SIZE(ecspi1_pads));
>   }
> diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
> index 9f9cac8..8b71e03 100644
> --- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
> +++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
> @@ -312,7 +312,7 @@ iomux_v3_cfg_t const ecspi1_pads[] = {
>
>   void setup_spi(void)
>   {
> -	gpio_direction_output(CONFIG_SF_DEFAULT_CS, 1);
> +	gpio_direction_output(CONFIG_SF_DEFAULT_CS >> 8, 1);
>   	imx_iomux_v3_setup_multiple_pads(ecspi1_pads,
>   					 ARRAY_SIZE(ecspi1_pads));
>   }

To my understanding, above change is correct, but not complete ;)

The question is "why has it worked with the wrong setting and nobody 
ever noticed that its wrong?"

To my understanding the answer is "because the SPI driver does it 
correctly":

http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=blob;f=drivers/spi/mxc_spi.c;h=5bed858787f610a9c9a46bb2214665a51d60a9e9;hb=refs/heads/master#l376

So IMHO the gpio_direction_output() above can be removed completely.

Best regards

Dirk





More information about the U-Boot mailing list