diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-02-24 00:31:45 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-02-24 00:31:45 +0000 |
commit | d64e8a37f973d1b0394cb582fb6f5e94fd057c1b (patch) | |
tree | 23161fb3380e109a419efda8f9ab87e84094d4d9 /nuttx/arch/arm/src/nuc1xx/nuc_gpio.c | |
parent | f2354e6bf2bf123f996fe741b1fcea0ea9c6a4ec (diff) | |
download | px4-nuttx-d64e8a37f973d1b0394cb582fb6f5e94fd057c1b.tar.gz px4-nuttx-d64e8a37f973d1b0394cb582fb6f5e94fd057c1b.tar.bz2 px4-nuttx-d64e8a37f973d1b0394cb582fb6f5e94fd057c1b.zip |
A few more NuTiny-SDK-NUC120 fixes
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5668 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src/nuc1xx/nuc_gpio.c')
-rw-r--r-- | nuttx/arch/arm/src/nuc1xx/nuc_gpio.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/nuttx/arch/arm/src/nuc1xx/nuc_gpio.c b/nuttx/arch/arm/src/nuc1xx/nuc_gpio.c index be5919157..1ba92a801 100644 --- a/nuttx/arch/arm/src/nuc1xx/nuc_gpio.c +++ b/nuttx/arch/arm/src/nuc1xx/nuc_gpio.c @@ -101,7 +101,7 @@ int nuc_configgpio(gpio_cfgset_t cfgset) /* Set the the GPIO PMD register */ - regaddr = base + NUC_GPIOA_PMD_OFFSET; + regaddr = base + NUC_GPIO_PMD_OFFSET; regval = getreg32(regaddr); regval &= ~GPIO_PMD_MASK(pin); @@ -131,7 +131,7 @@ int nuc_configgpio(gpio_cfgset_t cfgset) /* Check if we need to disable the digital input path */ regaddr = base + NUC_GPIO_OFFD_OFFSET; - regval = getreg32(regaddr); + regval = getreg32(regaddr); regval &= ~GPIO_OFFD(pin); if ((cfgset & GPIO_ANALOG) != 0) @@ -144,7 +144,7 @@ int nuc_configgpio(gpio_cfgset_t cfgset) /* Check if we need to enable debouncing */ regaddr = base + NUC_GPIO_DBEN_OFFSET; - regval = getreg32(regaddr); + regval = getreg32(regaddr); regval &= ~GPIO_DBEN(pin); if ((cfgset & GPIO_DEBOUNCE) != 0) @@ -174,24 +174,24 @@ int nuc_configgpio(gpio_cfgset_t cfgset) case GPIO_INTERRUPT_FALLING_EDGE: isrc |= GPIO_ISRC(pin); - ien |= GPIO_IF_EN(pin); + ien |= GPIO_IF_EN(pin); break; case GPIO_INTERRUPT_BOTH_EDGES: isrc |= GPIO_ISRC(pin); - ien |= (GPIO_IF_EN(pin) | GPIO_IR_EN(pin)); + ien |= (GPIO_IF_EN(pin) | GPIO_IR_EN(pin)); break; case GPIO_INTERRUPT_HIGH_LEVEL: isrc |= GPIO_ISRC(pin); - imd |= GPIO_IMD(pin); - ien |= GPIO_IR_EN(pin); + imd |= GPIO_IMD(pin); + ien |= GPIO_IR_EN(pin); break; case GPIO_INTERRUPT_LOW_LEVEL: isrc |= GPIO_ISRC(pin); - imd |= GPIO_IMD(pin); - ien |= GPIO_IF_EN(pin); + imd |= GPIO_IMD(pin); + ien |= GPIO_IF_EN(pin); break; default: @@ -201,6 +201,14 @@ int nuc_configgpio(gpio_cfgset_t cfgset) putreg32(ien, base + NUC_GPIO_IEN_OFFSET); putreg32(imd, base + NUC_GPIO_IMD_OFFSET); putreg32(isrc, base + NUC_GPIO_ISRC_OFFSET); + + /* If the pin is an output, set the initial output value */ + + if ((cfgset & GPIO_MODE_MASK) == GPIO_OUTPUT) + { + nuc_gpiowrite(cfgset, (cfgset & GPIO_OUTPUT_SET) != 0); + } + return 0; } |