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

Stefano Babic
2012-08-17T11:39:04Z

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@advansee.com>
> Cc: Stefano Babic <sbabic@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
=====================================================================