On Fri, 3 Nov 2017 15:03:37 +0200 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > In order to satisfy GPIO ACPI library requirements convert 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@xxxxxxxxxxxxxxx> Added cc's as for previous patch. I guess this makes sense if we accept that fixes like the previous one should be in drivers at all. If not the reset part still makes sense I suppose. > --- > drivers/iio/proximity/sx9500.c | 21 ++++++++++++++++----- > 1 file changed, 16 insertions(+), 5 deletions(-) > > diff --git a/drivers/iio/proximity/sx9500.c > b/drivers/iio/proximity/sx9500.c index df23dbcc030a..eb687b3dd442 > 100644 --- a/drivers/iio/proximity/sx9500.c > +++ b/drivers/iio/proximity/sx9500.c > @@ -32,9 +32,6 @@ > #define SX9500_DRIVER_NAME "sx9500" > #define SX9500_IRQ_NAME "sx9500_event" > > -#define SX9500_GPIO_INT "interrupt" > -#define SX9500_GPIO_RESET "reset" > - > /* Register definitions. */ > #define SX9500_REG_IRQ_SRC 0x00 > #define SX9500_REG_STAT 0x01 > @@ -866,26 +863,40 @@ static int sx9500_init_device(struct iio_dev > *indio_dev) return sx9500_init_compensation(indio_dev); > } > > +static const struct acpi_gpio_params reset_gpios = { 0, 0, false }; > +static const struct acpi_gpio_params interrupt_gpios = { 2, 0, > false }; + > +static const struct acpi_gpio_mapping acpi_sx9500_gpios[] = { > + { "reset-gpios", &reset_gpios, 1 }, > + { "interrupt-gpios", &interrupt_gpios, 1 }, > + { }, > +}; > + > static void sx9500_gpio_probe(struct i2c_client *client, > struct sx9500_data *data) > { > struct gpio_desc *gpiod_int; > struct device *dev; > + int ret; > > if (!client) > return; > > dev = &client->dev; > > + ret = devm_acpi_dev_add_driver_gpios(dev, acpi_sx9500_gpios); > + if (ret) > + dev_dbg(dev, "Unable to add GPIO mapping table\n"); > + > if (client->irq <= 0) { > - gpiod_int = devm_gpiod_get(dev, SX9500_GPIO_INT, > GPIOD_IN); > + gpiod_int = devm_gpiod_get(dev, "interrupt", > GPIOD_IN); if (IS_ERR(gpiod_int)) > dev_err(dev, "gpio get irq failed\n"); > else > client->irq = gpiod_to_irq(gpiod_int); > } > > - data->gpiod_rst = devm_gpiod_get(dev, SX9500_GPIO_RESET, > GPIOD_OUT_HIGH); > + data->gpiod_rst = devm_gpiod_get(dev, "reset", > GPIOD_OUT_HIGH); if (IS_ERR(data->gpiod_rst)) { > dev_warn(dev, "gpio get reset pin failed\n"); > data->gpiod_rst = NULL; -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html