mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-19 05:12:39 +00:00
rtc: introduce new registration method
Introduce rtc_register_device() to register an already allocated and initialized struct rtc_device. It automatically sets up the owner and the two steps allocation/registration will allow to remove race conditions in the IRQ handling of some driver. It also allows to properly extend the core without adding more arguments to rtc_device_register(). Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
This commit is contained in:
parent
b91336df8a
commit
3068a254d5
2 changed files with 91 additions and 0 deletions
|
@ -142,6 +142,8 @@ struct rtc_device {
|
|||
/* Some hardware can't support UIE mode */
|
||||
int uie_unsupported;
|
||||
|
||||
bool registered;
|
||||
|
||||
#ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
|
||||
struct work_struct uie_task;
|
||||
struct timer_list uie_timer;
|
||||
|
@ -163,6 +165,8 @@ extern struct rtc_device *devm_rtc_device_register(struct device *dev,
|
|||
const char *name,
|
||||
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);
|
||||
extern void rtc_device_unregister(struct rtc_device *rtc);
|
||||
extern void devm_rtc_device_unregister(struct device *dev,
|
||||
struct rtc_device *rtc);
|
||||
|
@ -218,6 +222,9 @@ static inline bool is_leap_year(unsigned int year)
|
|||
return (!(year % 4) && (year % 100)) || !(year % 400);
|
||||
}
|
||||
|
||||
#define rtc_register_device(device) \
|
||||
__rtc_register_device(THIS_MODULE, device)
|
||||
|
||||
#ifdef CONFIG_RTC_HCTOSYS_DEVICE
|
||||
extern int rtc_hctosys_ret;
|
||||
#else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue