@@ -19,7 +19,7 @@
#define MMA9551_DRV_NAME "mma9551"
#define MMA9551_IRQ_NAME "mma9551_event"
-#define MMA9551_GPIO_COUNT 4
+#define MMA9551_IRQ_COUNT 4
/* Tilt application (inclination in IIO terms). */
#define MMA9551_TILT_XZ_ANG_REG 0x00
@@ -46,7 +46,7 @@ struct mma9551_data {
struct i2c_client *client;
struct mutex mutex;
int event_enabled[3];
- int irqs[MMA9551_GPIO_COUNT];
+ int irqs[MMA9551_IRQ_COUNT];
};
static int mma9551_read_incli_chan(struct i2c_client *client,
@@ -400,36 +400,26 @@ static int mma9551_init(struct mma9551_data *data)
return mma9551_set_device_state(data->client, true);
}
-static int mma9551_gpio_probe(struct iio_dev *indio_dev)
+static int mma9551_irq_probe(struct iio_dev *indio_dev)
{
- struct gpio_desc *gpio;
int i, ret;
struct mma9551_data *data = iio_priv(indio_dev);
struct device *dev = &data->client->dev;
- for (i = 0; i < MMA9551_GPIO_COUNT; i++) {
- gpio = devm_gpiod_get_index(dev, NULL, i, GPIOD_IN);
- if (IS_ERR(gpio)) {
- dev_err(dev, "acpi gpio get index failed\n");
- return PTR_ERR(gpio);
- }
-
- ret = gpiod_to_irq(gpio);
- if (ret < 0)
+ for (i = 0; i < MMA9551_IRQ_COUNT; i++) {
+ ret = fwnode_irq_get(dev_fwnode(dev), i);
+ if (ret)
return ret;
data->irqs[i] = ret;
ret = devm_request_threaded_irq(dev, data->irqs[i],
- NULL, mma9551_event_handler,
- IRQF_TRIGGER_RISING | IRQF_ONESHOT,
- MMA9551_IRQ_NAME, indio_dev);
+ NULL, mma9551_event_handler,
+ IRQF_ONESHOT,
+ MMA9551_IRQ_NAME, indio_dev);
if (ret < 0) {
dev_err(dev, "request irq %d failed\n", data->irqs[i]);
return ret;
}
-
- dev_dbg(dev, "gpio resource, no:%d irq:%d\n",
- desc_to_gpio(gpio), data->irqs[i]);
}
return 0;
@@ -466,7 +456,7 @@ static int mma9551_probe(struct i2c_client *client,
indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->info = &mma9551_info;
- ret = mma9551_gpio_probe(indio_dev);
+ ret = mma9551_irq_probe(indio_dev);
if (ret < 0)
goto out_poweroff;