* [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs
@ 2017-02-28 14:08 Andy Shevchenko
2017-02-28 14:08 ` [PATCH v1 2/2] NFC: pn544: Add GPIO ACPI mapping table Andy Shevchenko
0 siblings, 1 reply; 3+ messages in thread
From: Andy Shevchenko @ 2017-02-28 14:08 UTC (permalink / raw)
To: Lauro Ramos Venancio, Aloisio Almeida Jr, Samuel Ortiz,
linux-wireless, Mika Westerberg
Cc: Andy Shevchenko
Since ACPI does support _DSD we might have a firmware that provides a
GPIO mapping in DSDT. When GPIO is requested the core will check for
property with given name. That's why we have to follow the standard
names which are already in use in DT case.
Request GPIOs with proper connection IDs, i.e. use same names as used
for DT case.
In the future ACPI and DT cases might be unified.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/nfc/pn544/i2c.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c
index f837c39a8017..2df3176205c4 100644
--- a/drivers/nfc/pn544/i2c.c
+++ b/drivers/nfc/pn544/i2c.c
@@ -881,8 +881,7 @@ static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
struct device *dev = &client->dev;
/* Get EN GPIO from ACPI */
- gpiod_en = devm_gpiod_get_index(dev, PN544_GPIO_NAME_EN, 1,
- GPIOD_OUT_LOW);
+ gpiod_en = devm_gpiod_get_index(dev, "enable", 1, GPIOD_OUT_LOW);
if (IS_ERR(gpiod_en)) {
nfc_err(dev, "Unable to get EN GPIO\n");
return -ENODEV;
@@ -891,8 +890,7 @@ static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
phy->gpio_en = desc_to_gpio(gpiod_en);
/* Get FW GPIO from ACPI */
- gpiod_fw = devm_gpiod_get_index(dev, PN544_GPIO_NAME_FW, 2,
- GPIOD_OUT_LOW);
+ gpiod_fw = devm_gpiod_get_index(dev, "firmware", 2, GPIOD_OUT_LOW);
if (IS_ERR(gpiod_fw)) {
nfc_err(dev, "Unable to get FW GPIO\n");
return -ENODEV;
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH v1 2/2] NFC: pn544: Add GPIO ACPI mapping table
2017-02-28 14:08 [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
@ 2017-02-28 14:08 ` Andy Shevchenko
0 siblings, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2017-02-28 14:08 UTC (permalink / raw)
To: Lauro Ramos Venancio, Aloisio Almeida Jr, Samuel Ortiz,
linux-wireless, Mika Westerberg
Cc: Andy Shevchenko
In order to make GPIO ACPI library stricter prepare users of
gpiod_get_index() to correctly behave when there no mapping is
provided by firmware.
Here we add explicit mapping between _CRS GpioIo() resources and
their names used in the driver.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/nfc/pn544/i2c.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c
index 2df3176205c4..5364bbd5ce55 100644
--- a/drivers/nfc/pn544/i2c.c
+++ b/drivers/nfc/pn544/i2c.c
@@ -874,6 +874,15 @@ static void pn544_hci_i2c_fw_work(struct work_struct *work)
}
}
+static const struct acpi_gpio_params enable_gpios = { 1, 0, false };
+static const struct acpi_gpio_params firmware_gpios = { 2, 0, false };
+
+static const struct acpi_gpio_mapping acpi_pn544_default_gpios[] = {
+ { "enable-gpios", &enable_gpios, 1 },
+ { "firmware-gpios", &firmware_gpios, 1 },
+ { },
+};
+
static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
{
struct pn544_i2c_phy *phy = i2c_get_clientdata(client);
@@ -982,6 +991,11 @@ static int pn544_hci_i2c_probe(struct i2c_client *client,
return -ENODEV;
}
+ r = acpi_dev_add_driver_gpios(ACPI_COMPANION(&client->dev),
+ acpi_pn544_default_gpios);
+ if (r)
+ return r;
+
phy = devm_kzalloc(&client->dev, sizeof(struct pn544_i2c_phy),
GFP_KERNEL);
if (!phy)
@@ -1092,6 +1106,7 @@ static int pn544_hci_i2c_remove(struct i2c_client *client)
pdata->free_resources();
}
+ acpi_dev_remove_driver_gpios(ACPI_COMPANION(&client->dev));
return 0;
}
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs
@ 2017-03-07 10:12 Andy Shevchenko
2017-03-07 10:12 ` [PATCH v1 2/2] NFC: pn544: Add GPIO ACPI mapping table Andy Shevchenko
0 siblings, 1 reply; 3+ messages in thread
From: Andy Shevchenko @ 2017-03-07 10:12 UTC (permalink / raw)
To: Lauro Ramos Venancio, Aloisio Almeida Jr, Samuel Ortiz,
linux-wireless, Mika Westerberg
Cc: Andy Shevchenko
Since ACPI does support _DSD we might have a firmware that provides a
GPIO mapping in DSDT. When GPIO is requested the core will check for
property with given name. That's why we have to follow the standard
names which are already in use in DT case.
Request GPIOs with proper connection IDs, i.e. use same names as used
for DT case.
In the future ACPI and DT cases might be unified.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/nfc/pn544/i2c.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c
index f837c39a8017..2df3176205c4 100644
--- a/drivers/nfc/pn544/i2c.c
+++ b/drivers/nfc/pn544/i2c.c
@@ -881,8 +881,7 @@ static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
struct device *dev = &client->dev;
/* Get EN GPIO from ACPI */
- gpiod_en = devm_gpiod_get_index(dev, PN544_GPIO_NAME_EN, 1,
- GPIOD_OUT_LOW);
+ gpiod_en = devm_gpiod_get_index(dev, "enable", 1, GPIOD_OUT_LOW);
if (IS_ERR(gpiod_en)) {
nfc_err(dev, "Unable to get EN GPIO\n");
return -ENODEV;
@@ -891,8 +890,7 @@ static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
phy->gpio_en = desc_to_gpio(gpiod_en);
/* Get FW GPIO from ACPI */
- gpiod_fw = devm_gpiod_get_index(dev, PN544_GPIO_NAME_FW, 2,
- GPIOD_OUT_LOW);
+ gpiod_fw = devm_gpiod_get_index(dev, "firmware", 2, GPIOD_OUT_LOW);
if (IS_ERR(gpiod_fw)) {
nfc_err(dev, "Unable to get FW GPIO\n");
return -ENODEV;
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH v1 2/2] NFC: pn544: Add GPIO ACPI mapping table
2017-03-07 10:12 [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
@ 2017-03-07 10:12 ` Andy Shevchenko
0 siblings, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2017-03-07 10:12 UTC (permalink / raw)
To: Lauro Ramos Venancio, Aloisio Almeida Jr, Samuel Ortiz,
linux-wireless, Mika Westerberg
Cc: Andy Shevchenko
In order to make GPIO ACPI library stricter prepare users of
gpiod_get_index() to correctly behave when there no mapping is
provided by firmware.
Here we add explicit mapping between _CRS GpioIo() resources and
their names used in the driver.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
- assign table only for ACPI case
drivers/nfc/pn544/i2c.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c
index 2df3176205c4..bfe099f3d347 100644
--- a/drivers/nfc/pn544/i2c.c
+++ b/drivers/nfc/pn544/i2c.c
@@ -874,11 +874,25 @@ static void pn544_hci_i2c_fw_work(struct work_struct *work)
}
}
+static const struct acpi_gpio_params enable_gpios = { 1, 0, false };
+static const struct acpi_gpio_params firmware_gpios = { 2, 0, false };
+
+static const struct acpi_gpio_mapping acpi_pn544_gpios[] = {
+ { "enable-gpios", &enable_gpios, 1 },
+ { "firmware-gpios", &firmware_gpios, 1 },
+ { },
+};
+
static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
{
struct pn544_i2c_phy *phy = i2c_get_clientdata(client);
struct gpio_desc *gpiod_en, *gpiod_fw;
struct device *dev = &client->dev;
+ int ret;
+
+ ret = acpi_dev_add_driver_gpios(ACPI_COMPANION(dev), acpi_pn544_gpios);
+ if (ret)
+ return ret;
/* Get EN GPIO from ACPI */
gpiod_en = devm_gpiod_get_index(dev, "enable", 1, GPIOD_OUT_LOW);
@@ -1092,6 +1106,7 @@ static int pn544_hci_i2c_remove(struct i2c_client *client)
pdata->free_resources();
}
+ acpi_dev_remove_driver_gpios(ACPI_COMPANION(&client->dev));
return 0;
}
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-03-07 10:14 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-28 14:08 [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
2017-02-28 14:08 ` [PATCH v1 2/2] NFC: pn544: Add GPIO ACPI mapping table Andy Shevchenko
-- strict thread matches above, loose matches on Subject: below --
2017-03-07 10:12 [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
2017-03-07 10:12 ` [PATCH v1 2/2] NFC: pn544: Add GPIO ACPI mapping table Andy Shevchenko
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).