From 77382eb813c8c972e12f0c16d2367b7534a7b759 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Tue, 26 Oct 2010 22:04:58 +0200 Subject: [PATCH] Correction in generic pin configuration for LPC17xx. Signed-off-by: Pavel Pisa --- arch/arm/mach-lpc17xx/libs/hal/hal_gpio.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-lpc17xx/libs/hal/hal_gpio.c b/arch/arm/mach-lpc17xx/libs/hal/hal_gpio.c index e208957..56c11e6 100644 --- a/arch/arm/mach-lpc17xx/libs/hal/hal_gpio.c +++ b/arch/arm/mach-lpc17xx/libs/hal/hal_gpio.c @@ -13,35 +13,37 @@ int hal_pin_conf_fnc(unsigned gpio, int fnc) __IO uint32_t *p = &(PINCON->PINSEL0); uint32_t mask; - if(fnc & PORT_CONF_MODE_MASK) - fnc = __mfld2val(fnc, PORT_CONF_MODE_MASK); + if(fnc & PORT_CONF_FNC_MASK) + fnc = __mfld2val(PORT_CONF_FNC_MASK, fnc); p += hal_gpio_get_port_num(gpio)*2; if(gpio & 0x10) p++; gpio &= 0x0f; + gpio *= 2; mask = 3 << gpio; - *p = (*p & ~ mask) | ((fnc << gpio) & mask); + *p = (*p & ~mask) | ((fnc << gpio) & mask); return 0; } int hal_pin_conf_mode(unsigned gpio, int mode) { - __IO uint32_t *p = &(PINCON->PINSEL0); + __IO uint32_t *p = &(PINCON->PINMODE0); uint32_t mask; if(mode & PORT_CONF_MODE_MASK) - mode = __mfld2val(mode, PORT_CONF_MODE_MASK); + mode = __mfld2val(PORT_CONF_MODE_MASK, mode); p += hal_gpio_get_port_num(gpio)*2; if(gpio & 0x10) p++; gpio &= 0x0f; + gpio *= 2; mask = 3 << gpio; - *p = (*p & ~ mask) | ((mode << gpio) & mask); + *p = (*p & ~mask) | ((mode << gpio) & mask); return 0; } -- 2.39.2