The EFI RTC driver does not require the creation of a platform device. Originally, this approach was chosen for simplicity when the driver was first implemented. With the introduction of the lightweight faux device interface, we now have a more appropriate alternative. Migrate the driver to utilize the faux bus, given that the platform device it previously created was not a real one anyway. This will simplify the code, reducing its footprint while maintaining functionality. Cc: Ard Biesheuvel <ardb@xxxxxxxxxx> Cc: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> Cc: linux-rtc@xxxxxxxxxxxxxxx Cc: linux-efi@xxxxxxxxxxxxxxx Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx> --- drivers/firmware/efi/efi.c | 3 --- drivers/rtc/rtc-efi.c | 16 +++++----------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 7309394b8fc98cf7a3424af209b752f0251c8c89..8aebc747c65bc1b63d514a50fe6f35a9e3c1af0a 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -427,9 +427,6 @@ static int __init efisubsys_init(void) } } - if (efi_rt_services_supported(EFI_RT_SUPPORTED_TIME_SERVICES)) - platform_device_register_simple("rtc-efi", 0, NULL, 0); - /* We register the efi directory at /sys/firmware/efi */ efi_kobj = kobject_create_and_add("efi", firmware_kobj); if (!efi_kobj) { diff --git a/drivers/rtc/rtc-efi.c b/drivers/rtc/rtc-efi.c index fa8bf82df9488e7d1c23c058b4a3032dde74bc6e..681d917d541e51b37f2d59b0567caf6aa8bf05f4 100644 --- a/drivers/rtc/rtc-efi.c +++ b/drivers/rtc/rtc-efi.c @@ -14,7 +14,7 @@ #include <linux/module.h> #include <linux/stringify.h> #include <linux/time.h> -#include <linux/platform_device.h> +#include <linux/device/faux.h> #include <linux/rtc.h> #include <linux/efi.h> @@ -254,7 +254,7 @@ static const struct rtc_class_ops efi_rtc_ops = { .proc = efi_procfs, }; -static int __init efi_rtc_probe(struct platform_device *dev) +static int __init efi_rtc_probe(struct faux_device *dev) { struct rtc_device *rtc; efi_time_t eft; @@ -268,7 +268,7 @@ static int __init efi_rtc_probe(struct platform_device *dev) if (IS_ERR(rtc)) return PTR_ERR(rtc); - platform_set_drvdata(dev, rtc); + faux_device_set_drvdata(dev, rtc); rtc->ops = &efi_rtc_ops; clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, rtc->features); @@ -282,15 +282,9 @@ static int __init efi_rtc_probe(struct platform_device *dev) return devm_rtc_register_device(rtc); } -static struct platform_driver efi_rtc_driver = { - .driver = { - .name = "rtc-efi", - }, -}; - -module_platform_driver_probe(efi_rtc_driver, efi_rtc_probe); +module_faux_driver(rtc_efi, efi_rtc_probe, NULL, + efi_rt_services_supported(EFI_RT_SUPPORTED_TIME_SERVICES)); MODULE_AUTHOR("dann frazier <dannf@xxxxxxxxx>"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("EFI RTC driver"); -MODULE_ALIAS("platform:rtc-efi"); -- 2.34.1