9
0
Fork 0

Several fixes to LPC43 pin and GPIO configuration

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4925 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
patacongo 2012-07-10 18:33:14 +00:00
parent 96d83b7d3f
commit 98cdc4e0fe
3 changed files with 15 additions and 11 deletions

View File

@ -158,7 +158,7 @@ static inline void lpc43_configoutput(uint16_t gpiocfg,
int lpc43_gpio_config(uint16_t gpiocfg)
{
unsigned int port = ((gpiocfg & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT);
unsigned int pin = ((gpiocfg & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT);
unsigned int pin = ((gpiocfg & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT);
irqstate_t flags;
int ret = OK;
@ -167,7 +167,7 @@ int lpc43_gpio_config(uint16_t gpiocfg)
/* Handle the GPIO configuration by the basic mode of the pin */
flags = irqsave();
switch (gpiocfg & GPIO_PORT_MASK)
switch (gpiocfg & GPIO_MODE_MASK)
{
case GPIO_MODE_INPUT: /* GPIO input pin */
lpc43_configinput(gpiocfg, port, pin);
@ -215,7 +215,7 @@ int lpc43_gpio_config(uint16_t gpiocfg)
void lpc43_gpio_write(uint16_t gpiocfg, bool value)
{
unsigned int port = ((gpiocfg & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT);
unsigned int pin = ((gpiocfg & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT);
unsigned int pin = ((gpiocfg & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT);
DEBUGASSERT(port < NUM_GPIO_PORTS && pin < NUM_GPIO_PINS);
@ -238,7 +238,7 @@ void lpc43_gpio_write(uint16_t gpiocfg, bool value)
bool lpc43_gpio_read(uint16_t gpiocfg)
{
unsigned int port = ((gpiocfg & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT);
unsigned int pin = ((gpiocfg & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT);
unsigned int pin = ((gpiocfg & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT);
DEBUGASSERT(port < NUM_GPIO_PORTS && pin < NUM_GPIO_PINS);

View File

@ -68,7 +68,7 @@
* ---- ---- ---- ----
* Normal GPIO: MMV. .... PPPB BBBB
* Normal Interrupt: MMCC CIII PPPB BBBB
* Group Interrupt: MM.N P.. PPPB BBBB
* Group Interrupt: MM.N P... PPPB BBBB
*/
/* GPIO mode:
@ -184,10 +184,10 @@
* 1111 1100 0000 0000
* 5432 1098 7654 3210
* ---- ---- ---- ----
* .... GPII .... ....
* .... .... PPP. ....
*/
#define GPIO_PORT_SHIFT (4) /* Bits 4-6: Port number */
#define GPIO_PORT_SHIFT (5) /* Bits 5-7: Port number */
#define GPIO_PORT_MASK (7 << GPIO_PORT_SHIFT)
# define GPIO_PORT0 (0 << GPIO_PORT_SHIFT)
# define GPIO_PORT1 (1 << GPIO_PORT_SHIFT)

View File

@ -43,6 +43,7 @@
#include <nuttx/arch.h>
#include <errno.h>
#include "up_arch.h"
#include "lpc43_pinconfig.h"
/****************************************************************************
@ -83,10 +84,6 @@ int lpc43_pin_config(uint32_t pinconf)
uintptr_t regaddr;
uint32_t regval;
/* Get the address of the pin configuration register */
regaddr = LPC43_SCU_SFSP(pinset, pin);
/* Set up common pin configurations */
regval = (func << SCU_PIN_MODE_SHIFT);
@ -146,5 +143,12 @@ int lpc43_pin_config(uint32_t pinconf)
break;
}
/* Get the address of the pin configuration register and save the new
* pin configuration.
*/
regaddr = LPC43_SCU_SFSP(pinset, pin);
putreg32(regval, regaddr);
return OK;
}