summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2017-09-23 10:31:33 +0100
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2022-04-02 10:47:55 +0100
commit2ea0a44004d3cd951ddb084cf0b433ae91a951a7 (patch)
treefb58f78ffe903229d5f597de1d6a00bf9ac1ecb6
parent2fe552384c2bb4ab6c4db7166a0f11c451d3a27b (diff)
rtc: pre-register hook
Add a pre-register hook to allow RTC drivers to adjust the default set_offset_nsec value. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r--drivers/rtc/class.c3
-rw-r--r--include/linux/rtc.h3
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c
index 4b460c61f1d8..e0a29b252630 100644
--- a/drivers/rtc/class.c
+++ b/drivers/rtc/class.c
@@ -404,6 +404,9 @@ int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc)
if (!err && !rtc_valid_tm(&alrm.time))
rtc_initialize_alarm(rtc, &alrm);
+ if (rtc->ops->pre_register)
+ rtc->ops->pre_register(rtc);
+
rtc_dev_prepare(rtc);
err = cdev_device_add(&rtc->char_dev, &rtc->dev);
diff --git a/include/linux/rtc.h b/include/linux/rtc.h
index 47fd1c2d3a57..e864cf861bb4 100644
--- a/include/linux/rtc.h
+++ b/include/linux/rtc.h
@@ -44,6 +44,8 @@ static inline time64_t rtc_tm_sub(struct rtc_time *lhs, struct rtc_time *rhs)
extern struct class *rtc_class;
+struct rtc_device;
+
/*
* For these RTC methods the device parameter is the physical device
* on whatever bus holds the hardware (I2C, Platform, SPI, etc), which
@@ -68,6 +70,7 @@ struct rtc_class_ops {
int (*set_offset)(struct device *, long offset);
int (*param_get)(struct device *, struct rtc_param *param);
int (*param_set)(struct device *, struct rtc_param *param);
+ void (*pre_register)(struct rtc_device *);
};
struct rtc_device;