summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-06-15 09:51:14 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-06-15 15:59:35 +0200
commit4e0755c81b038d0e0fff2c5a10e40e1963296950 (patch)
tree2678527bb70eca821a79a5ba8cd39723132c03a6
parentbsp/lpc24xx: Ethernet support for EA LPC1788 board (diff)
downloadrtems-4e0755c81b038d0e0fff2c5a10e40e1963296950.tar.bz2
bsp/lpc24xx: Add lpc24xx_module_is_enabled()
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/include/io.h2
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/misc/io.c24
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,