diff options
| author | Marek Vasut <marek.vasut@gmail.com> | 2010-09-09 09:50:39 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-10-19 22:46:22 +0200 | 
| commit | 3ba8bf7c6d6c09b9823b08b03d2d155907313238 (patch) | |
| tree | dcb9243cd47eb640e306ba6eba658e14b7429809 /arch/arm/cpu/pxa/cpu.c | |
| parent | 9f80a20e05f20ab6b20be3addee969e1306ee3d5 (diff) | |
| download | olio-uboot-2014.01-3ba8bf7c6d6c09b9823b08b03d2d155907313238.tar.xz olio-uboot-2014.01-3ba8bf7c6d6c09b9823b08b03d2d155907313238.zip | |
PXA: pxa-regs.h cleanup
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Diffstat (limited to 'arch/arm/cpu/pxa/cpu.c')
| -rw-r--r-- | arch/arm/cpu/pxa/cpu.c | 28 | 
1 files changed, 17 insertions, 11 deletions
| diff --git a/arch/arm/cpu/pxa/cpu.c b/arch/arm/cpu/pxa/cpu.c index 800d120e7..330d013c6 100644 --- a/arch/arm/cpu/pxa/cpu.c +++ b/arch/arm/cpu/pxa/cpu.c @@ -30,10 +30,11 @@   * CPU specific code   */ -#include <common.h> -#include <command.h>  #include <asm/arch/pxa-regs.h> +#include <asm/io.h>  #include <asm/system.h> +#include <command.h> +#include <common.h>  static void cache_flush(void); @@ -71,17 +72,22 @@ void set_GPIO_mode(int gpio_mode)  {  	int gpio = gpio_mode & GPIO_MD_MASK_NR;  	int fn = (gpio_mode & GPIO_MD_MASK_FN) >> 8; -	int gafr; +	int val; + +	/* This below changes direction setting of GPIO "gpio" */ +	val = readl(GPDR(gpio));  	if (gpio_mode & GPIO_MD_MASK_DIR) -	{ -		GPDR(gpio) |= GPIO_bit(gpio); -	} +		val |= GPIO_bit(gpio);  	else -	{ -		GPDR(gpio) &= ~GPIO_bit(gpio); -	} -	gafr = GAFR(gpio) & ~(0x3 << (((gpio) & 0xf)*2)); -	GAFR(gpio) = gafr |  (fn  << (((gpio) & 0xf)*2)); +		val &= ~GPIO_bit(gpio); + +	writel(val, GPDR(gpio)); + +	/* This below updates only AF of GPIO "gpio" */ +	val = readl(GAFR(gpio)); +	val &= ~(0x3 << (((gpio) & 0xf) * 2)); +	val |= fn << (((gpio) & 0xf) * 2); +	writel(val, GAFR(gpio));  }  #endif /* CONFIG_CPU_MONAHANS */ |