diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-06-15 09:51:14 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-06-15 15:59:35 +0200 |
commit | 4e0755c81b038d0e0fff2c5a10e40e1963296950 (patch) | |
tree | 2678527bb70eca821a79a5ba8cd39723132c03a6 /c/src/lib/libbsp/arm/lpc24xx | |
parent | bsp/lpc24xx: Ethernet support for EA LPC1788 board (diff) | |
download | rtems-4e0755c81b038d0e0fff2c5a10e40e1963296950.tar.bz2 |
bsp/lpc24xx: Add lpc24xx_module_is_enabled()
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc24xx')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc24xx/include/io.h | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc24xx/misc/io.c | 24 |
2 files changed, 26 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/lpc24xx/include/io.h b/c/src/lib/libbsp/arm/lpc24xx/include/io.h index 03ae472790..f77b44717e 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/include/io.h +++ b/c/src/lib/libbsp/arm/lpc24xx/include/io.h @@ -147,6 +147,8 @@ rtems_status_code lpc24xx_module_disable( lpc24xx_module module ); +bool lpc24xx_module_is_enabled(lpc24xx_module module); + rtems_status_code lpc24xx_gpio_config( unsigned index, lpc24xx_gpio_settings settings diff --git a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c index 1141b718ad..ad74164b80 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c +++ b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c @@ -327,6 +327,30 @@ rtems_status_code lpc24xx_module_disable( ); } +bool lpc24xx_module_is_enabled(lpc24xx_module module) +{ + bool enabled = false; + + if ((unsigned) module < LPC24XX_MODULE_COUNT) { + bool has_power = lpc24xx_module_table [module].power; + + if (has_power) { + unsigned index = lpc24xx_module_table [module].index; + #ifdef ARM_MULTILIB_ARCH_V4 + uint32_t pconp = PCONP; + #else + uint32_t pconp = LPC17XX_SCB.pconp; + #endif + + enabled = (pconp & (1U << index)) != 0; + } else { + enabled = true; + } + } + + return enabled; +} + typedef rtems_status_code (*lpc24xx_pin_visitor)( #ifdef ARM_MULTILIB_ARCH_V4 volatile uint32_t *pinsel, |