diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-06-23 08:27:57 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-06-23 08:27:57 +0000 |
commit | 3103d4cbad582cc9e62aaf15fd5af308949a83f0 (patch) | |
tree | b1ff4f68908b3177c614349a2f0252e4b64e9b18 /c/src/lib/libbsp/arm/lpc32xx/rtc/rtc-config.c | |
parent | 2010-06-23 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-3103d4cbad582cc9e62aaf15fd5af308949a83f0.tar.bz2 |
2010-06-23 Sebastian Huber <sebastian.huber@embedded-brains.de>
* make/custom/lpc32xx_mzx_boot_int.cfg,
startup/linkcmds.lpc32xx_mzx_boot_int: Removed files.
* include/boot.h, include/emc.h, include/i2c.h, include/nand-mlc.h,
make/custom/lpc32xx_mzx.cfg, make/custom/lpc32xx_mzx_stage_1.cfg,
make/custom/lpc32xx_mzx_stage_2.cfg, misc/boot.c, misc/emc.c,
misc/i2c.c, misc/nand-mlc.c, misc/nand-mlc-read-blocks.c,
misc/nand-mlc-write-blocks.c, misc/restart.c,
startup/linkcmds.lpc32xx, startup/linkcmds.lpc32xx_mzx,
startup/linkcmds.lpc32xx_mzx_stage_1,
startup/linkcmds.lpc32xx_mzx_stage_2: New files.
* configure.ac, Makefile.am, preinstall.am: Reflect changes above.
* include/bsp.h, include/lpc32xx.h, irq/irq.c, rtc/rtc-config.c,
startup/bspstart.c, startup/bspstarthooks.c,
startup/linkcmds.lpc32xx_phycore: Changes throughout.
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc32xx/rtc/rtc-config.c')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc32xx/rtc/rtc-config.c | 40 |
1 files changed, 13 insertions, 27 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/rtc/rtc-config.c b/c/src/lib/libbsp/arm/lpc32xx/rtc/rtc-config.c index b518db3c1f..014392f8d6 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/rtc/rtc-config.c +++ b/c/src/lib/libbsp/arm/lpc32xx/rtc/rtc-config.c @@ -38,28 +38,14 @@ #define LPC32XX_RTC_CTRL_MATCH_1_INTR (1U << 1) #define LPC32XX_RTC_CTRL_MATCH_0_INTR (1U << 0) -typedef struct { - uint32_t ucount; - uint32_t dcount; - uint32_t match0; - uint32_t match1; - uint32_t ctrl; - uint32_t intstat; - uint32_t key; - uint32_t sram [32]; -} lpc32xx_rtc_registers; - -static volatile lpc32xx_rtc_registers *const lpc32xx_rtc = - (volatile lpc32xx_rtc_registers *) LPC32XX_BASE_RTC; - static void lpc32xx_rtc_set(uint32_t val) { unsigned i = LPC32XX_ARM_CLK / LPC32XX_OSCILLATOR_RTC; - lpc32xx_rtc->ctrl |= LPC32XX_RTC_CTRL_STOP; - lpc32xx_rtc->ucount = val; - lpc32xx_rtc->dcount = LPC32XX_RTC_COUNTER_DELTA - val; - lpc32xx_rtc->ctrl &= ~LPC32XX_RTC_CTRL_STOP; + lpc32xx.rtc.ctrl |= LPC32XX_RTC_CTRL_STOP; + lpc32xx.rtc.ucount = val; + lpc32xx.rtc.dcount = LPC32XX_RTC_COUNTER_DELTA - val; + lpc32xx.rtc.ctrl &= ~LPC32XX_RTC_CTRL_STOP; /* It needs some time before we can read the values back */ while (i != 0) { @@ -70,9 +56,9 @@ static void lpc32xx_rtc_set(uint32_t val) static void lpc32xx_rtc_reset(void) { - lpc32xx_rtc->ctrl = LPC32XX_RTC_CTRL_RESET; - lpc32xx_rtc->ctrl = 0; - lpc32xx_rtc->key = LPC32XX_RTC_KEY; + lpc32xx.rtc.ctrl = LPC32XX_RTC_CTRL_RESET; + lpc32xx.rtc.ctrl = 0; + lpc32xx.rtc.key = LPC32XX_RTC_KEY; lpc32xx_rtc_set(0); } @@ -83,15 +69,15 @@ static void lpc32xx_rtc_initialize(int minor) uint32_t down_first = 0; uint32_t down_second = 0; - if (lpc32xx_rtc->key != LPC32XX_RTC_KEY) { + if (lpc32xx.rtc.key != LPC32XX_RTC_KEY) { lpc32xx_rtc_reset(); } do { - up_first = lpc32xx_rtc->ucount; - down_first = lpc32xx_rtc->dcount; - up_second = lpc32xx_rtc->ucount; - down_second = lpc32xx_rtc->dcount; + up_first = lpc32xx.rtc.ucount; + down_first = lpc32xx.rtc.dcount; + up_second = lpc32xx.rtc.ucount; + down_second = lpc32xx.rtc.dcount; } while (up_first != up_second || down_first != down_second); if (up_first + down_first != LPC32XX_RTC_COUNTER_DELTA) { @@ -102,7 +88,7 @@ static void lpc32xx_rtc_initialize(int minor) static int lpc32xx_rtc_get_time(int minor, rtems_time_of_day *tod) { struct timeval now = { - .tv_sec = lpc32xx_rtc->ucount, + .tv_sec = lpc32xx.rtc.ucount, .tv_usec = 0 }; struct tm time; |