diff options
author | Guenter Roeck <linux@roeck-us.net> | 2023-09-15 08:22:37 -0700 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2023-10-09 15:03:28 +0200 |
commit | a0fddaa0b5a587cc8d185f8802fe7e48493c43ed (patch) | |
tree | faab420f52fe0713d6b9e7396a4a48b5f510a4fa | |
parent | 6c774377359923e4bb46c6f26381edd9189389ed (diff) | |
download | linux-a0fddaa0b5a587cc8d185f8802fe7e48493c43ed.tar.gz linux-a0fddaa0b5a587cc8d185f8802fe7e48493c43ed.tar.bz2 linux-a0fddaa0b5a587cc8d185f8802fe7e48493c43ed.zip |
rtc: Add API function to return alarm time bound by hardware limit
Add rtc_bound_alarmtime() to return the requested alarm timeout bound by
the maxmum alarm timeout that is supported by a given RTC.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20230915152238.1144706-2-linux@roeck-us.net
-rw-r--r-- | include/linux/rtc.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index 4c0bcbeb1f00..5f8e438a0312 100644 --- a/include/linux/rtc.h +++ b/include/linux/rtc.h @@ -225,6 +225,23 @@ static inline bool is_leap_year(unsigned int year) return (!(year % 4) && (year % 100)) || !(year % 400); } +/** + * rtc_bound_alarmtime() - Return alarm time bound by rtc limit + * @rtc: Pointer to rtc device structure + * @requested: Requested alarm timeout + * + * Return: Alarm timeout bound by maximum alarm time supported by rtc. + */ +static inline ktime_t rtc_bound_alarmtime(struct rtc_device *rtc, + ktime_t requested) +{ + if (rtc->alarm_offset_max && + rtc->alarm_offset_max * MSEC_PER_SEC < ktime_to_ms(requested)) + return ms_to_ktime(rtc->alarm_offset_max * MSEC_PER_SEC); + + return requested; +} + #define devm_rtc_register_device(device) \ __devm_rtc_register_device(THIS_MODULE, device) |