All of lore.kernel.org
 help / color / mirror / Atom feed
* [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
  2017-03-07 10:15 ` [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
  0 siblings, 2 replies; 5+ 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] 5+ 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
  2017-03-07 10:15 ` [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
  1 sibling, 0 replies; 5+ 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] 5+ messages in thread

* Re: [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs
  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
@ 2017-03-07 10:15 ` Andy Shevchenko
  2017-03-22 17:34   ` Shevchenko, Andriy
  1 sibling, 1 reply; 5+ messages in thread
From: Andy Shevchenko @ 2017-03-07 10:15 UTC (permalink / raw)
  To: Lauro Ramos Venancio, Aloisio Almeida Jr, Samuel Ortiz,
	linux-wireless, Mika Westerberg

On Tue, 2017-03-07 at 12:12 +0200, Andy Shevchenko wrote:
> 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.

Discard this series, it should be v2, just resent.

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

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

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

* Re: [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs
  2017-03-07 10:15 ` [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
@ 2017-03-22 17:34   ` Shevchenko, Andriy
  0 siblings, 0 replies; 5+ messages in thread
From: Shevchenko, Andriy @ 2017-03-22 17:34 UTC (permalink / raw)
  To: aloisio.almeida, sameo, linux-wireless, lauro.venancio, mika.westerberg

T24gVHVlLCAyMDE3LTAzLTA3IGF0IDEyOjE1ICswMjAwLCBBbmR5IFNoZXZjaGVua28gd3JvdGU6
DQo+IE9uIFR1ZSwgMjAxNy0wMy0wNyBhdCAxMjoxMiArMDIwMCwgQW5keSBTaGV2Y2hlbmtvIHdy
b3RlOg0KPiA+IFNpbmNlIEFDUEkgZG9lcyBzdXBwb3J0IF9EU0Qgd2UgbWlnaHQgaGF2ZSBhIGZp
cm13YXJlIHRoYXQgcHJvdmlkZXMNCj4gPiBhDQo+ID4gR1BJTyBtYXBwaW5nIGluIERTRFQuIFdo
ZW4gR1BJTyBpcyByZXF1ZXN0ZWQgdGhlIGNvcmUgd2lsbCBjaGVjayBmb3INCj4gPiBwcm9wZXJ0
eSB3aXRoIGdpdmVuIG5hbWUuIFRoYXQncyB3aHkgd2UgaGF2ZSB0byBmb2xsb3cgdGhlIHN0YW5k
YXJkDQo+ID4gbmFtZXMgd2hpY2ggYXJlIGFscmVhZHkgaW4gdXNlIGluIERUIGNhc2UuDQo+ID4g
DQo+ID4gUmVxdWVzdCBHUElPcyB3aXRoIHByb3BlciBjb25uZWN0aW9uIElEcywgaS5lLiB1c2Ug
c2FtZSBuYW1lcyBhcw0KPiA+IHVzZWQNCj4gPiBmb3IgRFQgY2FzZS4NCj4gPiANCj4gPiBJbiB0
aGUgZnV0dXJlIEFDUEkgYW5kIERUIGNhc2VzIG1pZ2h0IGJlIHVuaWZpZWQuDQo+IA0KPiBEaXNj
YXJkIHRoaXMgc2VyaWVzLCBpdCBzaG91bGQgYmUgdjIsIGp1c3QgcmVzZW50Lg0KDQpXaGlsZSBJ
J20gcHJlcGFyaW5nIHYyLCB0aGVyZSBpcyBhIG1vc3QgaW1wb3J0YW50IHF1ZXN0aW9uIGhhcyBh
cmlzZW4uDQoNCkRvIHdlIGhhdmUgYW55IGV2aWRlbmNlIG9mIE5YUDU0NDAgKEFDUEkgSUQpIGlu
ICpyZWFsKiB3b3JsZD8NCg0KVG8gbWUgaXQgKHRoZSBJRCBpdHNlbGYpIHNvdW5kcyBhcnRpZmlj
aWFsIGFuZCB3aWxmdWxseSBpbnZlbnRlZC4gSW4NCmNhc2UgSSdtIHJpZ2h0IGl0IG11c3QgYmUg
cmVtb3ZlZCBmcm9tIHRoZSBkcml2ZXIuIE90aGVyd2lzZSwgSSB3b3VsZA0KbGlrZSB0byBzZWUg
ZG9jdW1lbnRhdGlvbiBvciBhbGlrZSB3aXRoIERTRFQgZXhjZXJwdCBhbmQgbW9kZWwgb2YgdGhl
DQpyZWFsIGRldmljZSB3aGljaCBoYXMgaXQuDQoNCi0tIA0KQW5keSBTaGV2Y2hlbmtvIDxhbmRy
aXkuc2hldmNoZW5rb0BpbnRlbC5jb20+DQpJbnRlbCBGaW5sYW5kIE95IC0gQklDIDAzNTc2MDYt
NCAtIFdlc3RlbmRpbmthdHUgNywgMDIxNjAgRXNwb28=

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

* [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs
@ 2017-02-28 14:08 Andy Shevchenko
  0 siblings, 0 replies; 5+ 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] 5+ messages in thread

end of thread, other threads:[~2017-03-22 17:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2017-03-07 10:15 ` [PATCH v1 1/2] NFC: pn544: Request GPIOs with proper connection IDs Andy Shevchenko
2017-03-22 17:34   ` Shevchenko, Andriy
  -- strict thread matches above, loose matches on Subject: below --
2017-02-28 14:08 Andy Shevchenko

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.