Skip to content

Commit

Permalink
Input: soc_button_array - convert to platform bus
Browse files Browse the repository at this point in the history
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.

Signed-off-by: Jin Yao <yao.jin@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Jin Yao authored and Dmitry Torokhov committed Sep 24, 2014
1 parent 05f7588 commit 042e1c7
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 31 deletions.
2 changes: 0 additions & 2 deletions drivers/acpi/acpi_pnp.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
#include <linux/ctype.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 */
Expand Down
60 changes: 31 additions & 29 deletions drivers/input/misc/soc_button_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -138,30 +138,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);
Expand Down Expand Up @@ -192,30 +202,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");

0 comments on commit 042e1c7

Please sign in to comment.