[PATCH] mx2 GPIO OCRx register

Sascha Hauer s.hauer at pengutronix.de
Thu Jun 10 07:54:54 EDT 2010


Hi Teresa,

On Tue, Jun 08, 2010 at 12:03:02PM +0200, Teresa Gamez wrote:
> The GPIO OCRx register has to be set correct or the output is not set as expected.

No. The gpio functions are not expected to change the iomuxer. This is
what imx_gpio_mode() is for.

Sascha


> 
> Signed-off-by: Teresa Gámez <T.Gamez at phytec.de> 
> ---
> Index: barebox-2010.06.0/arch/arm/mach-imx/gpio.c
> ===================================================================
> --- barebox-2010.06.0/arch/arm/mach-imx/gpio.c	2010-06-02 10:36:28.000000000 +0200
> +++ barebox-2010.06.0/arch/arm/mach-imx/gpio.c	2010-06-08 11:02:31.282473877 +0200
> @@ -31,6 +31,8 @@
>  #if defined CONFIG_ARCH_IMX1 || defined CONFIG_ARCH_IMX21 || defined CONFIG_ARCH_IMX27
>  #define GPIO_DR		0x1c
>  #define GPIO_GDIR	0x00
> +#define GPIO_OCR1	0x04
> +#define GPIO_OCR2	0x08
>  #define GPIO_PSR	0x24
>  #define GPIO_ICR1	0x28
>  #define GPIO_ICR2	0x2C
> @@ -103,6 +105,18 @@
>  	if (!base)
>  		return -EINVAL;
>  
> +#if defined GPIO_OCR1 && defined GPIO_OCR2
> +	if (shift < 16) {
> +		val = readl(base + GPIO_OCR1);
> +		val |= (3 << (shift * 2));
> +		writel(val, base + GPIO_OCR1);
> +	} else {
> +		val = readl(base + GPIO_OCR2);
> +		val |= (3 << ((shift - 16) * 2));
> +		writel(val, base + GPIO_OCR2);
> +	}
> +#endif
> +
>  	gpio_set_value(gpio, value);
>  
>  	val = readl(base + GPIO_GDIR);
> 
> 
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list