mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-21 14:21:48 +00:00
rtc: rework rtc_register_device() resource management
rtc_register_device() is a managed interface but it doesn't use devres by itself - instead it marks an rtc_device as "registered" and the devres callback for devm_rtc_allocate_device() takes care of resource release. This doesn't correspond with the design behind devres where managed structures should not be aware of being managed. The correct solution here is to register a separate devres callback for unregistering the device. While at it: rename rtc_register_device() to devm_rtc_register_device() and add it to the list of managed interfaces in devres.rst. This way we can avoid any potential confusion of driver developers who may expect there to exist a corresponding unregister function. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20201109163409.24301-8-brgl@bgdev.pl
This commit is contained in:
parent
6746bc095b
commit
fdcfd85433
114 changed files with 123 additions and 127 deletions
|
@ -118,8 +118,6 @@ struct rtc_device {
|
|||
*/
|
||||
long set_offset_nsec;
|
||||
|
||||
bool registered;
|
||||
|
||||
time64_t range_min;
|
||||
timeu64_t range_max;
|
||||
time64_t start_secs;
|
||||
|
@ -157,7 +155,7 @@ extern struct rtc_device *devm_rtc_device_register(struct device *dev,
|
|||
const struct rtc_class_ops *ops,
|
||||
struct module *owner);
|
||||
struct rtc_device *devm_rtc_allocate_device(struct device *dev);
|
||||
int __rtc_register_device(struct module *owner, struct rtc_device *rtc);
|
||||
int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc);
|
||||
|
||||
extern int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm);
|
||||
extern int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm);
|
||||
|
@ -234,8 +232,8 @@ static inline bool rtc_tv_nsec_ok(s64 set_offset_nsec,
|
|||
return false;
|
||||
}
|
||||
|
||||
#define rtc_register_device(device) \
|
||||
__rtc_register_device(THIS_MODULE, device)
|
||||
#define devm_rtc_register_device(device) \
|
||||
__devm_rtc_register_device(THIS_MODULE, device)
|
||||
|
||||
#ifdef CONFIG_RTC_HCTOSYS_DEVICE
|
||||
extern int rtc_hctosys_ret;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue