All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
@ 2014-07-02 13:58 Zhang Rui
  2014-07-02 14:01 ` Zhang Rui
  0 siblings, 1 reply; 11+ messages in thread
From: Zhang Rui @ 2014-07-02 13:58 UTC (permalink / raw
  To: dmitry.torokhov; +Cc: LKML, yao.jin

>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

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. And ACPI folks will
continue their effort on shrinking this id list by converting the PNP drivers
to platform drivers.
But unfortunately, soc_button_array device id, aka, "PNP0C40", is missing
during this transition.

Thus soc_button_array driver fails to probe any device since 3.16-rc1 because
the device is enumerated to platform bus instead.

A simply fix is to add device id PNP0C40 back to drivers/acpi/acpi_pnp.c,
but given that the soc_button_array driver will be converted to platform
driver sooner or later, and the id will be removed from the list again,
it is better to fix the problem in one time.

This patch fixes the problem by converting the soc_button_driver
from PNP bus to platform bus.

Signed-off-by: Jin Yao <yao.jin@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/input/misc/soc_button_array.c | 60 ++++++++++++++++++-----------------
 1 file changed, 31 insertions(+), 29 deletions(-)

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");
-- 
1.8.3.2




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-07-02 13:58 [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1 Zhang Rui
@ 2014-07-02 14:01 ` Zhang Rui
  2014-07-08 20:50   ` Rafael J. Wysocki
  0 siblings, 1 reply; 11+ messages in thread
From: Zhang Rui @ 2014-07-02 14:01 UTC (permalink / raw
  To: dmitry.torokhov; +Cc: yao.jin, linux-input, Rafael J. Wysocki

>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

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. And ACPI folks will
continue their effort on shrinking this id list by converting the PNP drivers
to platform drivers.
But unfortunately, soc_button_array device id, aka, "PNP0C40", is missing
during this transition.

Thus soc_button_array driver fails to probe any device since 3.16-rc1 because
the device is enumerated to platform bus instead.

A simply fix is to add device id PNP0C40 back to drivers/acpi/acpi_pnp.c,
but given that the soc_button_array driver will be converted to platform
driver sooner or later, and the id will be removed from the list again,
it is better to fix the problem in one time.

This patch fixes the problem by converting the soc_button_driver
from PNP bus to platform bus.

Signed-off-by: Jin Yao <yao.jin@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/input/misc/soc_button_array.c | 60 ++++++++++++++++++-----------------
 1 file changed, 31 insertions(+), 29 deletions(-)

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");
-- 
1.8.3.2




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-07-02 14:01 ` Zhang Rui
@ 2014-07-08 20:50   ` Rafael J. Wysocki
  2014-07-09  2:27     ` Zhang Rui
  2014-07-09 16:57     ` Dmitry Torokhov
  0 siblings, 2 replies; 11+ messages in thread
From: Rafael J. Wysocki @ 2014-07-08 20:50 UTC (permalink / raw
  To: Zhang Rui; +Cc: dmitry.torokhov, yao.jin, linux-input

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.

> 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. And ACPI folks will
> continue their effort on shrinking this id list by converting the PNP drivers
> to platform drivers.
> But unfortunately, soc_button_array device id, aka, "PNP0C40", is missing
> during this transition.
> 
> Thus soc_button_array driver fails to probe any device since 3.16-rc1 because
> the device is enumerated to platform bus instead.
> 
> A simply fix is to add device id PNP0C40 back to drivers/acpi/acpi_pnp.c,
> but given that the soc_button_array driver will be converted to platform
> driver sooner or later, and the id will be removed from the list again,
> it is better to fix the problem in one time.
> 
> This patch fixes the problem by converting the soc_button_driver
> from PNP bus to platform bus.
> 
> Signed-off-by: Jin Yao <yao.jin@intel.com>
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> ---
>  drivers/input/misc/soc_button_array.c | 60 ++++++++++++++++++-----------------
>  1 file changed, 31 insertions(+), 29 deletions(-)
> 
> 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");
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  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
  1 sibling, 1 reply; 11+ messages in thread
From: Zhang Rui @ 2014-07-09  2:27 UTC (permalink / raw
  To: Rafael J. Wysocki; +Cc: dmitry.torokhov, yao.jin, linux-input

On Tue, 2014-07-08 at 22:50 +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.

Okay, then please take the patch below.

>From 846c16d9d863723ef9a2d9722778bce0633ea24c Mon Sep 17 00:00:00 2001
From: Zhang Rui <rui.zhang@intel.com>
Date: Wed, 9 Jul 2014 10:19:38 +0800
Subject: [PATCH] ACPI: add soc_button_array device id in acpi_pnp id list

soc_button_array pnp driver is introduced in 3.15.
But in commit eec15edbb0e14485998635ea7c62e30911b465f0,
when reworking the PNPACPI device enumeration, we missed
the soc_button_array device id.

This results in a regression in 3.16-rc1 that soc_button_array
pnp device fails to be enumerated.

Fix the problem by adding soc_button_array device id into the
acpi_pnp scan handler id list.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/acpi/acpi_pnp.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/acpi/acpi_pnp.c b/drivers/acpi/acpi_pnp.c
index 6703c1f..4ddb0dc 100644
--- a/drivers/acpi/acpi_pnp.c
+++ b/drivers/acpi/acpi_pnp.c
@@ -14,6 +14,8 @@
 #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 */
-- 
1.8.3.2




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-07-09  2:27     ` Zhang Rui
@ 2014-07-09 12:51       ` Rafael J. Wysocki
  0 siblings, 0 replies; 11+ messages in thread
From: Rafael J. Wysocki @ 2014-07-09 12:51 UTC (permalink / raw
  To: Zhang Rui; +Cc: dmitry.torokhov, yao.jin, linux-input

On Wednesday, July 09, 2014 10:27:25 AM Zhang Rui wrote:
> On Tue, 2014-07-08 at 22:50 +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.
> 
> Okay, then please take the patch below.
> 
> From 846c16d9d863723ef9a2d9722778bce0633ea24c Mon Sep 17 00:00:00 2001
> From: Zhang Rui <rui.zhang@intel.com>
> Date: Wed, 9 Jul 2014 10:19:38 +0800
> Subject: [PATCH] ACPI: add soc_button_array device id in acpi_pnp id list
> 
> soc_button_array pnp driver is introduced in 3.15.
> But in commit eec15edbb0e14485998635ea7c62e30911b465f0,
> when reworking the PNPACPI device enumeration, we missed
> the soc_button_array device id.
> 
> This results in a regression in 3.16-rc1 that soc_button_array
> pnp device fails to be enumerated.
> 
> Fix the problem by adding soc_button_array device id into the
> acpi_pnp scan handler id list.
> 
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>

Queued up as a fix for 3.16, thanks!

> ---
>  drivers/acpi/acpi_pnp.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/acpi/acpi_pnp.c b/drivers/acpi/acpi_pnp.c
> index 6703c1f..4ddb0dc 100644
> --- a/drivers/acpi/acpi_pnp.c
> +++ b/drivers/acpi/acpi_pnp.c
> @@ -14,6 +14,8 @@
>  #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 */
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-07-08 20:50   ` Rafael J. Wysocki
  2014-07-09  2:27     ` Zhang Rui
@ 2014-07-09 16:57     ` Dmitry Torokhov
  2014-07-10  6:24       ` Zhang Rui
  2014-07-30  6:45       ` Zhang Rui
  1 sibling, 2 replies; 11+ messages in thread
From: Dmitry Torokhov @ 2014-07-09 16:57 UTC (permalink / raw
  To: Rafael J. Wysocki; +Cc: Zhang Rui, yao.jin, linux-input

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?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-07-09 16:57     ` Dmitry Torokhov
@ 2014-07-10  6:24       ` Zhang Rui
  2014-07-30  6:45       ` Zhang Rui
  1 sibling, 0 replies; 11+ messages in thread
From: Zhang Rui @ 2014-07-10  6:24 UTC (permalink / raw
  To: Dmitry Torokhov; +Cc: Rafael J. Wysocki, yao.jin, linux-input

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?
> 
yes, but it needs a bit more work to revert the "PNP0C40" id from
drivers/acpi/acpi_pnp.c.
I will send an updated one once the "Adding PNP0C40 id" patch is merged.

thanks,
rui
> Thanks.
> 



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  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
  1 sibling, 1 reply; 11+ messages in thread
From: Zhang Rui @ 2014-07-30  6:45 UTC (permalink / raw
  To: Dmitry Torokhov; +Cc: Rafael J. Wysocki, yao.jin, linux-input

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.

>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");
-- 
1.8.3.2




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-07-30  6:45       ` Zhang Rui
@ 2014-09-22  1:44         ` Zhang Rui
  2014-09-22 17:36           ` Dmitry Torokhov
  0 siblings, 1 reply; 11+ messages in thread
From: Zhang Rui @ 2014-09-22  1:44 UTC (permalink / raw
  To: Dmitry Torokhov; +Cc: Rafael J. Wysocki, yao.jin, linux-input

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");



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-09-22  1:44         ` Zhang Rui
@ 2014-09-22 17:36           ` Dmitry Torokhov
  2014-09-23  1:05             ` Zhang Rui
  0 siblings, 1 reply; 11+ messages in thread
From: Dmitry Torokhov @ 2014-09-22 17:36 UTC (permalink / raw
  To: Zhang Rui; +Cc: Rafael J. Wysocki, yao.jin, linux-input

On Mon, Sep 22, 2014 at 09:44:32AM +0800, Zhang Rui wrote:
> 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?

Ah, yes, it looks good. I think it's OK to hold it for 3.18 though,
right?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1
  2014-09-22 17:36           ` Dmitry Torokhov
@ 2014-09-23  1:05             ` Zhang Rui
  0 siblings, 0 replies; 11+ messages in thread
From: Zhang Rui @ 2014-09-23  1:05 UTC (permalink / raw
  To: Dmitry Torokhov; +Cc: Rafael J. Wysocki, yao.jin, linux-input

On Mon, 2014-09-22 at 10:36 -0700, Dmitry Torokhov wrote:
> On Mon, Sep 22, 2014 at 09:44:32AM +0800, Zhang Rui wrote:
> > 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?
> 
> Ah, yes, it looks good. I think it's OK to hold it for 3.18 though,
> right?
> 
yes.

thanks,
rui
> Thanks.
> 



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-09-23  1:05 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-02 13:58 [PATCH] soc_button_array: fix the issue that button device can't be enumerated since 3.16-rc1 Zhang Rui
2014-07-02 14:01 ` 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
2014-09-22 17:36           ` Dmitry Torokhov
2014-09-23  1:05             ` Zhang Rui

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.