On Wed, Apr 17, 2013 at 2:41 AM, Javier Martinez Canillas <martinez.javier@xxxxxxxxx> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html