[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJZ5v0gg=bTK1hKM14x9pE-XPCofr3SEn5Yg1ez8PY8cQ494WA@mail.gmail.com>
Date: Tue, 24 Oct 2023 21:10:58 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Michal Wilczynski <michal.wilczynski@...el.com>
Cc: linux-acpi@...r.kernel.org, linux-kernel@...r.kernel.org,
rafael.j.wysocki@...el.com, andriy.shevchenko@...ux.intel.com,
lenb@...nel.org
Subject: Re: [PATCH v2 1/3] ACPI: acpi_pad: Replace acpi_driver with platform_driver
On Wed, Oct 18, 2023 at 10:37 PM Michal Wilczynski
<michal.wilczynski@...el.com> wrote:
>
> The acpi_pad driver uses struct acpi_driver to register itself while it
> would be more logically consistent to use struct platform_driver for this
> purpose, because the corresponding platform device is present and the
> role of struct acpi_device is to amend the other bus types. ACPI devices
> are not meant to be used as proper representation of hardware entities,
> but to collect information on those hardware entities provided by the
> platform firmware.
>
> Use struct platform_driver for registering the acpi_pad driver.
>
> Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
> Signed-off-by: Michal Wilczynski <michal.wilczynski@...el.com>
> ---
> drivers/acpi/acpi_pad.c | 25 ++++++++++++++-----------
> 1 file changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
> index 7a453c5ff303..25068f2c5b4d 100644
> --- a/drivers/acpi/acpi_pad.c
> +++ b/drivers/acpi/acpi_pad.c
> @@ -18,6 +18,7 @@
> #include <linux/slab.h>
> #include <linux/acpi.h>
> #include <linux/perf_event.h>
> +#include <linux/platform_device.h>
> #include <asm/mwait.h>
> #include <xen/xen.h>
>
> @@ -430,8 +431,9 @@ static void acpi_pad_notify(acpi_handle handle, u32 event,
> }
> }
>
> -static int acpi_pad_add(struct acpi_device *device)
> +static int acpi_pad_probe(struct platform_device *pdev)
> {
> + struct acpi_device *device = ACPI_COMPANION(&pdev->dev);
> acpi_status status;
>
> strcpy(acpi_device_name(device), ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME);
> @@ -450,8 +452,10 @@ static int acpi_pad_add(struct acpi_device *device)
> return 0;
> }
>
> -static void acpi_pad_remove(struct acpi_device *device)
> +static void acpi_pad_remove(struct platform_device *pdev)
> {
> + struct acpi_device *device = ACPI_COMPANION(&pdev->dev);
> +
> mutex_lock(&isolated_cpus_lock);
> acpi_pad_idle_cpus(0);
> mutex_unlock(&isolated_cpus_lock);
> @@ -467,13 +471,12 @@ static const struct acpi_device_id pad_device_ids[] = {
> };
> MODULE_DEVICE_TABLE(acpi, pad_device_ids);
>
> -static struct acpi_driver acpi_pad_driver = {
> - .name = "processor_aggregator",
> - .class = ACPI_PROCESSOR_AGGREGATOR_CLASS,
> - .ids = pad_device_ids,
> - .ops = {
> - .add = acpi_pad_add,
> - .remove = acpi_pad_remove,
> +static struct platform_driver acpi_pad_driver = {
> + .probe = acpi_pad_probe,
> + .remove_new = acpi_pad_remove,
> + .driver = {
> + .name = "processor_aggregator",
> + .acpi_match_table = pad_device_ids,
> },
> };
>
> @@ -487,12 +490,12 @@ static int __init acpi_pad_init(void)
> if (power_saving_mwait_eax == 0)
> return -EINVAL;
>
> - return acpi_bus_register_driver(&acpi_pad_driver);
> + return platform_driver_register(&acpi_pad_driver);
> }
>
> static void __exit acpi_pad_exit(void)
> {
> - acpi_bus_unregister_driver(&acpi_pad_driver);
> + platform_driver_unregister(&acpi_pad_driver);
> }
>
> module_init(acpi_pad_init);
> --
Applied as 6.7 material along with the rest of the series, thanks!
Powered by blists - more mailing lists