From fd359c21e9dfa8c9fd77f9860fcc3326e5a041f2 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Tue, 25 Jun 2019 15:53:59 -0400 Subject: [PATCH] cleanup: include/: move rtc.h to drivers/rtc.h move rtc.h to drivers/rtc.h and create a shim for backward-compatibility. No functional changes to the headers. A warning in the shim can be controlled with CONFIG_COMPAT_INCLUDES. Related to #16539 Signed-off-by: Anas Nashif --- drivers/rtc/rtc_handlers.c | 2 +- drivers/rtc/rtc_ll_stm32.c | 2 +- drivers/rtc/rtc_mcux.c | 2 +- include/drivers/rtc.h | 147 ++++++++++++++++++ include/rtc.h | 142 +---------------- samples/drivers/rtc/src/main.c | 2 +- .../drivers/rtc/rtc_basic_api/src/test_rtc.h | 2 +- 7 files changed, 157 insertions(+), 142 deletions(-) create mode 100644 include/drivers/rtc.h diff --git a/drivers/rtc/rtc_handlers.c b/drivers/rtc/rtc_handlers.c index 8d4dbdcb87f..69d7a2842d8 100644 --- a/drivers/rtc/rtc_handlers.c +++ b/drivers/rtc/rtc_handlers.c @@ -5,7 +5,7 @@ */ #include -#include +#include Z_SYSCALL_HANDLER(rtc_read, dev) { diff --git a/drivers/rtc/rtc_ll_stm32.c b/drivers/rtc/rtc_ll_stm32.c index 2f8b0600dea..6afce1847a2 100644 --- a/drivers/rtc/rtc_ll_stm32.c +++ b/drivers/rtc/rtc_ll_stm32.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #if defined(CONFIG_SOC_SERIES_STM32L4X) #define EXTI_LINE LL_EXTI_LINE_18 diff --git a/drivers/rtc/rtc_mcux.c b/drivers/rtc/rtc_mcux.c index 386ee9f8165..a2b1dd9fbb3 100644 --- a/drivers/rtc/rtc_mcux.c +++ b/drivers/rtc/rtc_mcux.c @@ -12,7 +12,7 @@ LOG_MODULE_REGISTER(rtc_mcux); #include #include #include -#include +#include #include #include #include diff --git a/include/drivers/rtc.h b/include/drivers/rtc.h new file mode 100644 index 00000000000..e32fa684c0f --- /dev/null +++ b/include/drivers/rtc.h @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2015 Intel Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_RTC_H_ +#define ZEPHYR_INCLUDE_DRIVERS_RTC_H_ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Number of RTC ticks in a second */ +#define RTC_ALARM_SECOND (32768 / CONFIG_RTC_PRESCALER) + +/** Number of RTC ticks in a minute */ +#define RTC_ALARM_MINUTE (RTC_ALARM_SECOND * 60) + +/** Number of RTC ticks in an hour */ +#define RTC_ALARM_HOUR (RTC_ALARM_MINUTE * 60) + +/** Number of RTC ticks in a day */ +#define RTC_ALARM_DAY (RTC_ALARM_HOUR * 24) + +typedef void (*rtc_callback_t)(struct device *dev); + +struct rtc_config { + u32_t init_val; + /*!< enable/disable alarm */ + u8_t alarm_enable; + /*!< initial configuration value for the 32bit RTC alarm value */ + u32_t alarm_val; + /*!< Pointer to function to call when alarm value + * matches current RTC value */ + rtc_callback_t cb_fn; +}; + +typedef void (*rtc_api_enable)(struct device *dev); +typedef void (*rtc_api_disable)(struct device *dev); +typedef int (*rtc_api_set_config)(struct device *dev, + struct rtc_config *config); +typedef int (*rtc_api_set_alarm)(struct device *dev, + const u32_t alarm_val); +typedef u32_t (*rtc_api_read)(struct device *dev); +typedef u32_t (*rtc_api_get_pending_int)(struct device *dev); + +struct rtc_driver_api { + rtc_api_enable enable; + rtc_api_disable disable; + rtc_api_read read; + rtc_api_set_config set_config; + rtc_api_set_alarm set_alarm; + rtc_api_get_pending_int get_pending_int; +}; + +__deprecated __syscall u32_t rtc_read(struct device *dev); + +static inline u32_t z_impl_rtc_read(struct device *dev) +{ + return counter_read(dev); +} + +__deprecated __syscall void rtc_enable(struct device *dev); + +static inline void z_impl_rtc_enable(struct device *dev) +{ + counter_start(dev); +} + +__deprecated __syscall void rtc_disable(struct device *dev); + +static inline void z_impl_rtc_disable(struct device *dev) +{ + counter_stop(dev); +} + +static inline void rtc_counter_top_callback(struct device *dev, + void *user_data) +{ + rtc_callback_t cb_fn = (rtc_callback_t)user_data; + + if (cb_fn) { + cb_fn(dev); + } +} + +__deprecated static inline int rtc_set_config(struct device *dev, + struct rtc_config *cfg) +{ + int err; + + if (cfg->init_val) { + return -ENOTSUP; + } + + err = counter_set_top_value(dev, cfg->alarm_val, + rtc_counter_top_callback, cfg->cb_fn); + + if (err == 0 && cfg->alarm_enable != 0U) { + err = counter_start(dev); + } + + return err; +} + +__deprecated __syscall int rtc_set_alarm(struct device *dev, + const u32_t alarm_val); + +static inline int z_impl_rtc_set_alarm(struct device *dev, + const u32_t alarm_val) +{ + return counter_set_top_value(dev, alarm_val, rtc_counter_top_callback, + counter_get_user_data(dev)); +} + +/** + * @brief Function to get pending interrupts + * + * The purpose of this function is to return the interrupt + * status register for the device. + * This is especially useful when waking up from + * low power states to check the wake up source. + * + * @param dev Pointer to the device structure for the driver instance. + * + * @retval 1 if the rtc interrupt is pending. + * @retval 0 if no rtc interrupt is pending. + */ +__deprecated __syscall int rtc_get_pending_int(struct device *dev); + +static inline int z_impl_rtc_get_pending_int(struct device *dev) +{ + return counter_get_pending_int(dev); +} + +#ifdef __cplusplus +} +#endif + +#include + +#endif diff --git a/include/rtc.h b/include/rtc.h index 605b15bf825..127a8f27bfd 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -1,147 +1,15 @@ /* - * Copyright (c) 2015 Intel Corporation. + * Copyright (c) 2019 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ - #ifndef ZEPHYR_INCLUDE_RTC_H_ #define ZEPHYR_INCLUDE_RTC_H_ -#include -#include -#include -#include -#ifdef __cplusplus -extern "C" { +#ifndef CONFIG_COMPAT_INCLUDES +#warning "This header file has moved, include instead." #endif -/** Number of RTC ticks in a second */ -#define RTC_ALARM_SECOND (32768 / CONFIG_RTC_PRESCALER) +#include -/** Number of RTC ticks in a minute */ -#define RTC_ALARM_MINUTE (RTC_ALARM_SECOND * 60) - -/** Number of RTC ticks in an hour */ -#define RTC_ALARM_HOUR (RTC_ALARM_MINUTE * 60) - -/** Number of RTC ticks in a day */ -#define RTC_ALARM_DAY (RTC_ALARM_HOUR * 24) - -typedef void (*rtc_callback_t)(struct device *dev); - -struct rtc_config { - u32_t init_val; - /*!< enable/disable alarm */ - u8_t alarm_enable; - /*!< initial configuration value for the 32bit RTC alarm value */ - u32_t alarm_val; - /*!< Pointer to function to call when alarm value - * matches current RTC value */ - rtc_callback_t cb_fn; -}; - -typedef void (*rtc_api_enable)(struct device *dev); -typedef void (*rtc_api_disable)(struct device *dev); -typedef int (*rtc_api_set_config)(struct device *dev, - struct rtc_config *config); -typedef int (*rtc_api_set_alarm)(struct device *dev, - const u32_t alarm_val); -typedef u32_t (*rtc_api_read)(struct device *dev); -typedef u32_t (*rtc_api_get_pending_int)(struct device *dev); - -struct rtc_driver_api { - rtc_api_enable enable; - rtc_api_disable disable; - rtc_api_read read; - rtc_api_set_config set_config; - rtc_api_set_alarm set_alarm; - rtc_api_get_pending_int get_pending_int; -}; - -__deprecated __syscall u32_t rtc_read(struct device *dev); - -static inline u32_t z_impl_rtc_read(struct device *dev) -{ - return counter_read(dev); -} - -__deprecated __syscall void rtc_enable(struct device *dev); - -static inline void z_impl_rtc_enable(struct device *dev) -{ - counter_start(dev); -} - -__deprecated __syscall void rtc_disable(struct device *dev); - -static inline void z_impl_rtc_disable(struct device *dev) -{ - counter_stop(dev); -} - -static inline void rtc_counter_top_callback(struct device *dev, - void *user_data) -{ - rtc_callback_t cb_fn = (rtc_callback_t)user_data; - - if (cb_fn) { - cb_fn(dev); - } -} - -__deprecated static inline int rtc_set_config(struct device *dev, - struct rtc_config *cfg) -{ - int err; - - if (cfg->init_val) { - return -ENOTSUP; - } - - err = counter_set_top_value(dev, cfg->alarm_val, - rtc_counter_top_callback, cfg->cb_fn); - - if (err == 0 && cfg->alarm_enable != 0U) { - err = counter_start(dev); - } - - return err; -} - -__deprecated __syscall int rtc_set_alarm(struct device *dev, - const u32_t alarm_val); - -static inline int z_impl_rtc_set_alarm(struct device *dev, - const u32_t alarm_val) -{ - return counter_set_top_value(dev, alarm_val, rtc_counter_top_callback, - counter_get_user_data(dev)); -} - -/** - * @brief Function to get pending interrupts - * - * The purpose of this function is to return the interrupt - * status register for the device. - * This is especially useful when waking up from - * low power states to check the wake up source. - * - * @param dev Pointer to the device structure for the driver instance. - * - * @retval 1 if the rtc interrupt is pending. - * @retval 0 if no rtc interrupt is pending. - */ -__deprecated __syscall int rtc_get_pending_int(struct device *dev); - -static inline int z_impl_rtc_get_pending_int(struct device *dev) -{ - return counter_get_pending_int(dev); -} - -#ifdef __cplusplus -} -#endif - -#include - -#endif +#endif /* ZEPHYR_INCLUDE_RTC_H_ */ diff --git a/samples/drivers/rtc/src/main.c b/samples/drivers/rtc/src/main.c index d8054840fff..5d341579d93 100644 --- a/samples/drivers/rtc/src/main.c +++ b/samples/drivers/rtc/src/main.c @@ -7,7 +7,7 @@ #include #include -#include +#include #include #define ALARM (RTC_ALARM_SECOND) diff --git a/tests/drivers/rtc/rtc_basic_api/src/test_rtc.h b/tests/drivers/rtc/rtc_basic_api/src/test_rtc.h index 424d3c0fe25..17b00a54c79 100644 --- a/tests/drivers/rtc/rtc_basic_api/src/test_rtc.h +++ b/tests/drivers/rtc/rtc_basic_api/src/test_rtc.h @@ -14,7 +14,7 @@ #ifndef __TEST_RTC_H__ #define __TEST_RTC_H__ -#include +#include #include #include