• Javier Martinez Canillas's avatar
    gpio/omap: auto request GPIO as input if used as IRQ via DT · b4419e1a
    Javier Martinez Canillas authored
    When an OMAP GPIO is used as an IRQ line, a call to gpio_request()
    has to be made to initialize the OMAP GPIO bank before a driver
    request the IRQ. Otherwise the call to request_irq() fails.
    
    Drives should not be aware of this neither care wether an IRQ line
    is a GPIO or not. They should just request the IRQ and this has to
    be handled by the irq_chip driver.
    
    With the current OMAP GPIO DT binding, if we define:
    
        gpio6: gpio@49058000 {
        	   compatible = "ti,omap3-gpio";
    	   reg = <0x49058000 0x200>;
    	   interrupts = <34>;
    	   ti,hwmods = "gpio6";
    	   gpio-controller;
    	   #gpio-cells = <2>;
    	   interrupt-controller;
    	   #interrupt-cells = <2>;
        };
    
    	   interrupt-parent = <&gpio6>;
               interrupts = <16 8>;
    
    The GPIO is correctly mapped as an IRQ but a call to gpio_request()
    is never made. Since a call to the custom IRQ domain .map function
    handler is made for each GPIO used as an IRQ, the GPIO can be setup
    and configured as input there automatically.
    
    Changes since v3:
      - Use bank->chip.of_node instead of_have_populated_dt() to check
        DT or legacy boot as suggested by Jean-Christophe PLAGNIOL-VILLARD
      - Add a comment that this is just a temporary solution until and
        that it has to be removed once is handled by the IRQ core.
    
    Changes since v2:
     - Only make the call to gpio_request_one() conditional in the DT
       case as suggested by Grant Likely.
    
    Changes since v1:
      - Split the irq domain mapping function handler and the GPIO
        request in two different patches.
    Signed-off-by: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
    Tested-by: default avatarEnric Balletbo i Serra <eballetbo@gmail.com>
    Acked-by: default avatarGrant Likely <grant.likely@secretlab.ca>
    Acked-by: default avatarJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
    Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    b4419e1a
gpio-omap.c 42.7 KB