[U-Boot] [PATCH] mx5 iomux: Fix GPIO with SION

Stefano Babic sbabic at denx.de
Fri Aug 17 13:39:04 CEST 2012


On 14/08/2012 15:48, Benoît Thébaudeau wrote:
> IOMUX_CONFIG_GPIO may be used together with IOMUX_CONFIG_SION, so don't break
> the iomux function value set to the register in this case.
> 
> Define the value of IOMUX_CONFIG_GPIO in a way showing that it should have
> only 1 bit set.
> 
> Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau at advansee.com>
> Cc: Stefano Babic <sbabic at denx.de>
> ---

Hi Benoît,

to my understanding. The SION bit is used to set a predefined function,
independently from the value of the iomux. So I have the choice to set
the SION bit or I select the function I want, including GPIO, clearing
the SION bit, and setting optionally the daisy chain register if the
GPIO requires.

So why should we use both SION and GPIO ?

Regards,
Stefano

>  .../arch/arm/cpu/armv7/mx5/iomux.c                 |    5 +++--
>  .../arch/arm/include/asm/arch-mx5/iomux.h          |    2 +-
>  2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git u-boot-4d3c95f.orig/arch/arm/cpu/armv7/mx5/iomux.c u-boot-4d3c95f/arch/arm/cpu/armv7/mx5/iomux.c
> index d4e3bbb..7adf08f 100644
> --- u-boot-4d3c95f.orig/arch/arm/cpu/armv7/mx5/iomux.c
> +++ u-boot-4d3c95f/arch/arm/cpu/armv7/mx5/iomux.c
> @@ -124,8 +124,9 @@ static void iomux_config_mux(iomux_pin_name_t pin, iomux_pin_cfg_t cfg)
>  
>  	if ((mux_reg > get_mux_end()) || (mux_reg < IOMUXSW_MUX_CTL))
>  		return ;
> -	if (cfg == IOMUX_CONFIG_GPIO)
> -		writel(PIN_TO_ALT_GPIO(pin), mux_reg);
> +	if (cfg & IOMUX_CONFIG_GPIO)
> +		writel((cfg & ~IOMUX_CONFIG_GPIO) | PIN_TO_ALT_GPIO(pin),
> +			mux_reg);
>  	else
>  		writel(cfg, mux_reg);
>  }
> diff --git u-boot-4d3c95f.orig/arch/arm/include/asm/arch-mx5/iomux.h u-boot-4d3c95f/arch/arm/include/asm/arch-mx5/iomux.h
> index e3765a3..8b6e56a 100644
> --- u-boot-4d3c95f.orig/arch/arm/include/asm/arch-mx5/iomux.h
> +++ u-boot-4d3c95f/arch/arm/include/asm/arch-mx5/iomux.h
> @@ -40,7 +40,7 @@ typedef enum iomux_config {
>  	IOMUX_CONFIG_ALT5,	/*!< used as alternate function 5 */
>  	IOMUX_CONFIG_ALT6,	/*!< used as alternate function 6 */
>  	IOMUX_CONFIG_ALT7,	/*!< used as alternate function 7 */
> -	IOMUX_CONFIG_GPIO,	/*!< added to help user use GPIO mode */
> +	IOMUX_CONFIG_GPIO = 0x1 << 3,	/*!< added to help user use GPIO mode */
>  	IOMUX_CONFIG_SION = 0x1 << 4,	/*!< used as LOOPBACK:MUX SION bit */
>  } iomux_pin_cfg_t;
>  
> 


-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================


More information about the U-Boot mailing list