Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 821ace29 authored by Vlad Dogaru's avatar Vlad Dogaru Committed by Jonathan Cameron
Browse files

iio: sx9500: refactor GPIO interrupt code

parent 59bd0427
Loading
Loading
Loading
Loading
+11 −18
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@
#define SX9500_DRIVER_NAME		"sx9500"
#define SX9500_IRQ_NAME			"sx9500_event"

#define SX9500_GPIO_NAME		"interrupt"
#define SX9500_GPIO_INT			"interrupt"

/* Register definitions. */
#define SX9500_REG_IRQ_SRC		0x00
@@ -857,30 +857,24 @@ static int sx9500_init_device(struct iio_dev *indio_dev)
	return 0;
}

static int sx9500_gpio_probe(struct i2c_client *client,
static void sx9500_gpio_probe(struct i2c_client *client,
			      struct sx9500_data *data)
{
	struct device *dev;
	struct gpio_desc *gpio;
	int ret;

	if (!client)
		return -EINVAL;
		return;

	dev = &client->dev;

	/* data ready gpio interrupt pin */
	gpio = devm_gpiod_get_index(dev, SX9500_GPIO_NAME, 0, GPIOD_IN);
	if (IS_ERR(gpio)) {
		dev_err(dev, "acpi gpio get index failed\n");
		return PTR_ERR(gpio);
	if (client->irq <= 0) {
		gpio = devm_gpiod_get_index(dev, SX9500_GPIO_INT, 0, GPIOD_IN);
		if (IS_ERR(gpio))
			dev_err(dev, "gpio get irq failed\n");
		else
			client->irq = gpiod_to_irq(gpio);
	}

	ret = gpiod_to_irq(gpio);

	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret);

	return ret;
}

static int sx9500_probe(struct i2c_client *client,
@@ -914,8 +908,7 @@ static int sx9500_probe(struct i2c_client *client,
	indio_dev->modes = INDIO_DIRECT_MODE;
	i2c_set_clientdata(client, indio_dev);

	if (client->irq <= 0)
		client->irq = sx9500_gpio_probe(client, data);
	sx9500_gpio_probe(client, data);

	if (client->irq <= 0)
		dev_warn(&client->dev, "no valid irq found\n");