From: Zhang Rui <rui.zhang@intel.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
yao.jin@intel.com, linux-input <linux-input@vger.kernel.org>
Subject: Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
Date: Mon, 22 Sep 2014 09:44:32 +0800 [thread overview]
Message-ID: <1411350272.1280.51.camel@rzhang1-toshiba> (raw)
In-Reply-To: <1406702719.10148.3.camel@rzhang1-toshiba>
Hi, Dmitry,
On Wed, 2014-07-30 at 14:45 +0800, Zhang Rui wrote:
> Hi, Dmitry,
>
> On Wed, 2014-07-09 at 09:57 -0700, Dmitry Torokhov wrote:
> > On Tue, Jul 08, 2014 at 10:50:04PM +0200, Rafael J. Wysocki wrote:
> > > On Wednesday, July 02, 2014 10:01:53 PM Zhang Rui wrote:
> > > > From c2ee1886ba230d9d93d2ea2f350b1dc1a2d5ead5 Mon Sep 17 00:00:00 2001
> > > > From: Jin Yao <yao.jin@linux.intel.com>
> > > > Date: Thu, 26 Jun 2014 10:26:44 +0800
> > > > Subject: [PATCH] soc_button_array: fix the issue that button device can't be
> > > > enumerated since 3.16-rc1
> > >
> > > Hi Rui,
> > >
> > > For 3.16 I'm afraid we need to add the missing device ID to the PNP list.
> > > It is too late to do the conversion at this point IMO and we can do it later.
> >
> > But for 3.17 this patch is the right way of doing things, right?
>
> This is the patch we should use for 3.17.
> Compared with the previous version, I just removed the soc_button_array id
> from acpi pnp id list, which was added in 3.16-rc5, as an urgent fix.
>
> Please review.
>
Can you please take a look at this patch?
thanks,
rui
> From f09ff78ba75a9de0f6df333be6238a5b1bf36464 Mon Sep 17 00:00:00 2001
> From: Jin Yao <yao.jin@linux.intel.com>
> Date: Thu, 26 Jun 2014 10:26:44 +0800
> Subject: [PATCH] convert soc_button_array driver to platform bus
>
> ACPI device enumeration mechanism changed a lot since 3.16-rc1.
> ACPI device objects with _HID will be enumerated to platform bus by default.
> For the existing PNP drivers that probe the PNPACPI devices, the device ids
> are listed explicitly in drivers/acpi/acpi_pnp.c.
> But ACPI folks will continue their effort on shrinking this id list by
> converting the PNP drivers to platform drivers, for the devices that don't
> belong to PNP bus in nature.
>
> convert soc_button_array driver from PNP bus to platform bus in this patch.
>
> Signed-off-by: Jin Yao <yao.jin@intel.com>
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> ---
> drivers/acpi/acpi_pnp.c | 2 --
> drivers/input/misc/soc_button_array.c | 60 ++++++++++++++++++-----------------
> 2 files changed, 31 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/acpi/acpi_pnp.c b/drivers/acpi/acpi_pnp.c
> index 4ddb0dc..6703c1f 100644
> --- a/drivers/acpi/acpi_pnp.c
> +++ b/drivers/acpi/acpi_pnp.c
> @@ -14,8 +14,6 @@
> #include <linux/module.h>
>
> static const struct acpi_device_id acpi_pnp_device_ids[] = {
> - /* soc_button_array */
> - {"PNP0C40"},
> /* pata_isapnp */
> {"PNP0600"}, /* Generic ESDI/IDE/ATA compatible hard disk controller */
> /* floppy */
> diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
> index 5a6334b..16ca162 100644
> --- a/drivers/input/misc/soc_button_array.c
> +++ b/drivers/input/misc/soc_button_array.c
> @@ -18,7 +18,7 @@
> #include <linux/gpio/consumer.h>
> #include <linux/gpio_keys.h>
> #include <linux/platform_device.h>
> -#include <linux/pnp.h>
> +#include <linux/acpi.h>
>
> /*
> * Definition of buttons on the tablet. The ACPI index of each button
> @@ -67,7 +67,7 @@ static int soc_button_lookup_gpio(struct device *dev, int acpi_index)
> }
>
> static struct platform_device *
> -soc_button_device_create(struct pnp_dev *pdev,
> +soc_button_device_create(struct platform_device *pdev,
> const struct soc_button_info *button_info,
> bool autorepeat)
> {
> @@ -135,30 +135,40 @@ soc_button_device_create(struct pnp_dev *pdev,
> return ERR_PTR(error);
> }
>
> -static void soc_button_remove(struct pnp_dev *pdev)
> +static int soc_button_remove(struct platform_device *pdev)
> {
> - struct soc_button_data *priv = pnp_get_drvdata(pdev);
> + struct soc_button_data *priv = platform_get_drvdata(pdev);
> +
> int i;
>
> for (i = 0; i < BUTTON_TYPES; i++)
> if (priv->children[i])
> platform_device_unregister(priv->children[i]);
> +
> + return 0;
> }
>
> -static int soc_button_pnp_probe(struct pnp_dev *pdev,
> - const struct pnp_device_id *id)
> +static int soc_button_probe(struct platform_device *pdev)
> {
> - const struct soc_button_info *button_info = (void *)id->driver_data;
> + struct device *dev = &pdev->dev;
> + const struct acpi_device_id *id;
> + struct soc_button_info *button_info;
> struct soc_button_data *priv;
> struct platform_device *pd;
> int i;
> int error;
>
> + id = acpi_match_device(dev->driver->acpi_match_table, dev);
> + if (!id)
> + return -ENODEV;
> +
> + button_info = (struct soc_button_info *)id->driver_data;
> +
> priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
> if (!priv)
> return -ENOMEM;
>
> - pnp_set_drvdata(pdev, priv);
> + platform_set_drvdata(pdev, priv);
>
> for (i = 0; i < BUTTON_TYPES; i++) {
> pd = soc_button_device_create(pdev, button_info, i == 0);
> @@ -189,30 +199,22 @@ static struct soc_button_info soc_button_PNP0C40[] = {
> { }
> };
>
> -static const struct pnp_device_id soc_button_pnp_match[] = {
> - { .id = "PNP0C40", .driver_data = (long)soc_button_PNP0C40 },
> - { .id = "" }
> +static const struct acpi_device_id soc_button_acpi_match[] = {
> + { "PNP0C40", (unsigned long)soc_button_PNP0C40 },
> + { }
> };
> -MODULE_DEVICE_TABLE(pnp, soc_button_pnp_match);
>
> -static struct pnp_driver soc_button_pnp_driver = {
> - .name = KBUILD_MODNAME,
> - .id_table = soc_button_pnp_match,
> - .probe = soc_button_pnp_probe,
> +MODULE_DEVICE_TABLE(acpi, soc_button_acpi_match);
> +
> +static struct platform_driver soc_button_driver = {
> + .probe = soc_button_probe,
> .remove = soc_button_remove,
> + .driver = {
> + .name = KBUILD_MODNAME,
> + .owner = THIS_MODULE,
> + .acpi_match_table = ACPI_PTR(soc_button_acpi_match),
> + },
> };
> -
> -static int __init soc_button_init(void)
> -{
> - return pnp_register_driver(&soc_button_pnp_driver);
> -}
> -
> -static void __exit soc_button_exit(void)
> -{
> - pnp_unregister_driver(&soc_button_pnp_driver);
> -}
> -
> -module_init(soc_button_init);
> -module_exit(soc_button_exit);
> +module_platform_driver(soc_button_driver);
>
> MODULE_LICENSE("GPL");
next prev parent reply other threads:[~2014-09-22 1:45 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1404309504.8366.93.camel@rzhang1-toshiba>
2014-07-02 14:01 ` [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1 Zhang Rui
2014-07-08 20:50 ` Rafael J. Wysocki
2014-07-09 2:27 ` Zhang Rui
2014-07-09 12:51 ` Rafael J. Wysocki
2014-07-09 16:57 ` Dmitry Torokhov
2014-07-10 6:24 ` Zhang Rui
2014-07-30 6:45 ` Zhang Rui
2014-09-22 1:44 ` Zhang Rui [this message]
2014-09-22 17:36 ` Dmitry Torokhov
2014-09-23 1:05 ` Zhang Rui
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1411350272.1280.51.camel@rzhang1-toshiba \
--to=rui.zhang@intel.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=yao.jin@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).