Hi Ricardo,

On Mon,  1 Oct 2018 14:43:49 +0200
Ricardo Ribalda Delgado <ricardo.riba...@gmail.com> wrote:

> @@ -248,14 +252,19 @@ static int gpio_flash_probe(struct platform_device 
> *pdev)
>  
>       i = 0;
>       do {
> -             if (devm_gpio_request(&pdev->dev, state->gpio_addrs[i],
> -                                   DRIVER_NAME)) {
> +             unsigned int *gpio_id = (unsigned int *)gpios->start;
> +
> +             if (devm_gpio_request_one(&pdev->dev, gpio_id[i], GPIOD_OUT_LOW,
> +                                     DRIVER_NAME)) {
>                       dev_err(&pdev->dev, "failed to request gpio %d\n",
> -                             state->gpio_addrs[i]);
> +                             gpio_id[i]);
>                       return -EBUSY;
>               }
> -             gpio_direction_output(state->gpio_addrs[i], 0);
> -     } while (++i < state->gpio_count);
> +
> +             state->gpios->desc[i] = gpio_to_desc(gpio_id[i]);
> +             if (!state->gpios->desc[i])
> +                     return -EINVAL;
> +     } while (++i < state->gpios->ndescs);

Actually, I was thinking about using devm_gpiod_get_array() here and
defining a gpio lookup table in the board file registering the device.
This way, adding support for DT based parsing is transparent.

Regards,

Boris

Reply via email to