From 4fb1b79a804ca8de866be0ef718e54e1f62fa3ec Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 23 Apr 2018 09:55:15 +0200 Subject: bsps: Move RTC drivers to bsps This patch is a part of the BSP source reorganization. Update #3285. --- bsps/arm/lpc24xx/rtc/rtc-config.c | 96 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 bsps/arm/lpc24xx/rtc/rtc-config.c (limited to 'bsps/arm/lpc24xx') diff --git a/bsps/arm/lpc24xx/rtc/rtc-config.c b/bsps/arm/lpc24xx/rtc/rtc-config.c new file mode 100644 index 0000000000..c154a98196 --- /dev/null +++ b/bsps/arm/lpc24xx/rtc/rtc-config.c @@ -0,0 +1,96 @@ +/** + * @file + * + * @ingroup lpc24xx + * + * @brief RTC configuration. + */ + +/* + * Copyright (c) 2008 + * Embedded Brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * rtems@embedded-brains.de + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include + +#include +#include + +#define LPC24XX_RTC_NUMBER 1 + +static void lpc24xx_rtc_initialize(int minor) +{ + /* Enable module power */ + lpc24xx_module_enable(LPC24XX_MODULE_RTC, LPC24XX_MODULE_PCLK_DEFAULT); + + /* Enable the RTC and use external clock */ + RTC_CCR = RTC_CCR_CLKEN | RTC_CCR_CLKSRC; + + /* Disable interrupts */ + RTC_CIIR = 0; + RTC_CISS = 0; + RTC_AMR = 0xff; + + /* Clear interrupts */ + RTC_ILR = RTC_ILR_RTCCIF | RTC_ILR_RTCALF | RTC_ILR_RTSSF; +} + +static int lpc24xx_rtc_get_time(int minor, rtems_time_of_day *tod) +{ + tod->ticks = 0; + tod->second = RTC_SEC; + tod->minute = RTC_MIN; + tod->hour = RTC_HOUR; + tod->day = RTC_DOM; + tod->month = RTC_MONTH; + tod->year = RTC_YEAR; + + return 0; +} + +static int lpc24xx_rtc_set_time(int minor, const rtems_time_of_day *tod) +{ + RTC_SEC = tod->second; + RTC_MIN = tod->minute; + RTC_HOUR = tod->hour; + RTC_DOM = tod->day; + RTC_MONTH = tod->month; + RTC_YEAR = tod->year; + + return 0; +} + +static bool lpc24xx_rtc_probe(int minor) +{ + return true; +} + +const rtc_fns lpc24xx_rtc_ops = { + .deviceInitialize = lpc24xx_rtc_initialize, + .deviceGetTime = lpc24xx_rtc_get_time, + .deviceSetTime = lpc24xx_rtc_set_time +}; + +size_t RTC_Count = LPC24XX_RTC_NUMBER; + +rtc_tbl RTC_Table [LPC24XX_RTC_NUMBER] = { + { + .sDeviceName = "/dev/rtc", + .deviceType = RTC_CUSTOM, + .pDeviceFns = &lpc24xx_rtc_ops, + .deviceProbe = lpc24xx_rtc_probe, + .pDeviceParams = NULL, + .ulCtrlPort1 = 0, + .ulDataPort = 0, + .getRegister = NULL, + .setRegister = NULL + } +}; -- cgit v1.2.3