nfc: st95hf: Switch to using gpiod API
This updates the driver to gpiod API, and removes yet another use of of_get_named_gpio(). Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20240326175836.1418718-1-andriy.shevchenko@linux.intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
b125f3eb07
commit
b7b1c59069
@ -7,14 +7,13 @@
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/nfc.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
@ -196,7 +195,7 @@ struct st95_digital_cmd_complete_arg {
|
||||
* for spi communication between st95hf and host.
|
||||
* @ddev: nfc digital device object.
|
||||
* @nfcdev: nfc device object.
|
||||
* @enable_gpio: gpio used to enable st95hf transceiver.
|
||||
* @enable_gpiod: gpio used to enable st95hf transceiver.
|
||||
* @complete_cb_arg: structure to store various context information
|
||||
* that is passed from nfc requesting thread to the threaded ISR.
|
||||
* @st95hf_supply: regulator "consumer" for NFC device.
|
||||
@ -219,7 +218,7 @@ struct st95hf_context {
|
||||
struct st95hf_spi_context spicontext;
|
||||
struct nfc_digital_dev *ddev;
|
||||
struct nfc_dev *nfcdev;
|
||||
unsigned int enable_gpio;
|
||||
struct gpio_desc *enable_gpiod;
|
||||
struct st95_digital_cmd_complete_arg complete_cb_arg;
|
||||
struct regulator *st95hf_supply;
|
||||
unsigned char sendrcv_trflag;
|
||||
@ -451,19 +450,19 @@ static int st95hf_select_protocol(struct st95hf_context *stcontext, int type)
|
||||
static void st95hf_send_st95enable_negativepulse(struct st95hf_context *st95con)
|
||||
{
|
||||
/* First make irq_in pin high */
|
||||
gpio_set_value(st95con->enable_gpio, HIGH);
|
||||
gpiod_set_value(st95con->enable_gpiod, HIGH);
|
||||
|
||||
/* wait for 1 milisecond */
|
||||
usleep_range(1000, 2000);
|
||||
|
||||
/* Make irq_in pin low */
|
||||
gpio_set_value(st95con->enable_gpio, LOW);
|
||||
gpiod_set_value(st95con->enable_gpiod, LOW);
|
||||
|
||||
/* wait for minimum interrupt pulse to make st95 active */
|
||||
usleep_range(1000, 2000);
|
||||
|
||||
/* At end make it high */
|
||||
gpio_set_value(st95con->enable_gpio, HIGH);
|
||||
gpiod_set_value(st95con->enable_gpiod, HIGH);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1063,6 +1062,7 @@ MODULE_DEVICE_TABLE(of, st95hf_spi_of_match);
|
||||
|
||||
static int st95hf_probe(struct spi_device *nfc_spi_dev)
|
||||
{
|
||||
struct device *dev = &nfc_spi_dev->dev;
|
||||
int ret;
|
||||
|
||||
struct st95hf_context *st95context;
|
||||
@ -1108,19 +1108,14 @@ static int st95hf_probe(struct spi_device *nfc_spi_dev)
|
||||
*/
|
||||
dev_set_drvdata(&nfc_spi_dev->dev, spicontext);
|
||||
|
||||
st95context->enable_gpio =
|
||||
of_get_named_gpio(nfc_spi_dev->dev.of_node,
|
||||
"enable-gpio",
|
||||
0);
|
||||
if (!gpio_is_valid(st95context->enable_gpio)) {
|
||||
st95context->enable_gpiod = devm_gpiod_get(dev, "enable", GPIOD_OUT_HIGH);
|
||||
if (IS_ERR(st95context->enable_gpiod)) {
|
||||
ret = PTR_ERR(st95context->enable_gpiod);
|
||||
dev_err(&nfc_spi_dev->dev, "No valid enable gpio\n");
|
||||
ret = st95context->enable_gpio;
|
||||
goto err_disable_regulator;
|
||||
}
|
||||
|
||||
ret = devm_gpio_request_one(&nfc_spi_dev->dev, st95context->enable_gpio,
|
||||
GPIOF_DIR_OUT | GPIOF_INIT_HIGH,
|
||||
"enable_gpio");
|
||||
ret = gpiod_set_consumer_name(st95context->enable_gpiod, "enable_gpio");
|
||||
if (ret)
|
||||
goto err_disable_regulator;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user