diff options
Diffstat (limited to 'drivers/nfc/st-nci/spi.c')
-rw-r--r-- | drivers/nfc/st-nci/spi.c | 47 |
1 files changed, 16 insertions, 31 deletions
diff --git a/drivers/nfc/st-nci/spi.c b/drivers/nfc/st-nci/spi.c index 4585e205778b..2834f6984608 100644 --- a/drivers/nfc/st-nci/spi.c +++ b/drivers/nfc/st-nci/spi.c @@ -19,13 +19,12 @@ #include <linux/module.h> #include <linux/spi/spi.h> -#include <linux/gpio.h> #include <linux/gpio/consumer.h> -#include <linux/of_gpio.h> #include <linux/acpi.h> #include <linux/interrupt.h> #include <linux/delay.h> #include <linux/nfc.h> +#include <linux/of.h> #include <net/nfc/nci.h> #include "st-nci.h" @@ -50,7 +49,7 @@ struct st_nci_spi_phy { bool irq_active; - unsigned int gpio_reset; + struct gpio_desc *gpiod_reset; struct st_nci_se_status se_status; }; @@ -59,9 +58,9 @@ static int st_nci_spi_enable(void *phy_id) { struct st_nci_spi_phy *phy = phy_id; - gpio_set_value(phy->gpio_reset, 0); + gpiod_set_value(phy->gpiod_reset, 0); usleep_range(10000, 15000); - gpio_set_value(phy->gpio_reset, 1); + gpiod_set_value(phy->gpiod_reset, 1); usleep_range(80000, 85000); if (phy->ndlc->powered == 0 && phy->irq_active == 0) { @@ -224,20 +223,17 @@ static struct nfc_phy_ops spi_phy_ops = { static int st_nci_spi_acpi_request_resources(struct spi_device *spi_dev) { struct st_nci_spi_phy *phy = spi_get_drvdata(spi_dev); - struct gpio_desc *gpiod_reset; struct device *dev = &spi_dev->dev; u8 tmp; /* Get RESET GPIO from ACPI */ - gpiod_reset = devm_gpiod_get_index(dev, ST_NCI_GPIO_NAME_RESET, 1, - GPIOD_OUT_HIGH); - if (IS_ERR(gpiod_reset)) { + phy->gpiod_reset = devm_gpiod_get_index(dev, ST_NCI_GPIO_NAME_RESET, + 1, GPIOD_OUT_HIGH); + if (IS_ERR(phy->gpiod_reset)) { nfc_err(dev, "Unable to get RESET GPIO\n"); - return -ENODEV; + return PTR_ERR(phy->gpiod_reset); } - phy->gpio_reset = desc_to_gpio(gpiod_reset); - phy->se_status.is_ese_present = false; phy->se_status.is_uicc_present = false; @@ -254,33 +250,22 @@ static int st_nci_spi_acpi_request_resources(struct spi_device *spi_dev) return 0; } -static int st_nci_spi_of_request_resources(struct spi_device *dev) +static int st_nci_spi_of_request_resources(struct spi_device *spi) { - struct st_nci_spi_phy *phy = spi_get_drvdata(dev); + struct st_nci_spi_phy *phy = spi_get_drvdata(spi); + struct device *dev = &spi->dev; struct device_node *pp; - int gpio; - int r; - pp = dev->dev.of_node; + pp = spi->dev.of_node; if (!pp) return -ENODEV; /* Get GPIO from device tree */ - gpio = of_get_named_gpio(pp, "reset-gpios", 0); - if (gpio < 0) { - nfc_err(&dev->dev, - "Failed to retrieve reset-gpios from device tree\n"); - return gpio; - } - - /* GPIO request and configuration */ - r = devm_gpio_request_one(&dev->dev, gpio, - GPIOF_OUT_INIT_HIGH, ST_NCI_GPIO_NAME_RESET); - if (r) { - nfc_err(&dev->dev, "Failed to request reset pin\n"); - return r; + phy->gpiod_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(phy->gpiod_reset)) { + nfc_err(dev, "Unable to get RESET GPIO\n"); + return PTR_ERR(phy->gpiod_reset); } - phy->gpio_reset = gpio; phy->se_status.is_ese_present = of_property_read_bool(pp, "ese-present"); |