[PATCH 3/5] gpio/omap: Add DT support to GPIO driver
Linus Walleij
linus.walleij at linaro.org
Fri Apr 26 17:31:46 EST 2013
On Wed, Apr 17, 2013 at 2:41 AM, Javier Martinez Canillas
<martinez.javier at gmail.com> wrote:
So:
> +static int omap_gpio_irq_domain_xlate(struct irq_domain *d,
> + struct device_node *ctrlr,
> + const u32 *intspec, unsigned int intsize,
> + irq_hw_number_t *out_hwirq,
> + unsigned int *out_type)
> +{
> + int ret;
> + struct gpio_bank *bank = d->host_data;
> + int gpio = bank->chip.base + intspec[0];
> +
> + if (WARN_ON(intsize < 2))
> + return -EINVAL;
> +
> + ret = gpio_request_one(gpio, GPIOF_IN, ctrlr->full_name);
> + if (ret)
> + return ret;
So how to figure out if a device is already requesting this GPIO
on some orthogonal axis?
if (this_gpio_was_hogged_as_input_in_gpiolib) {
ret = gpio_request_on()...
}
Is my suggestion, then you can explicitly mark which GPIOs
shall have their IRQs implicitly translated to GPIOs and
requested.
Alas, this requires the DTS:es to have this hogging added, but
it is fully backwards-compatible.
Then the applicabl OMAP drivers (like MMC) can be fixed to
do gpio_to_irq() on their pins instead of using the IRQ
directly.
Yours,
Linus Walleij
More information about the devicetree-discuss
mailing list