diff options
| -rw-r--r-- | arch/arm/boot/dts/omap4.dtsi | 54 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/gpio.c | 8 | 
2 files changed, 60 insertions, 2 deletions
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi index 3d35559e77b..7f8463b666f 100644 --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi @@ -104,6 +104,60 @@  			      <0x48240100 0x0100>;  		}; +		gpio1: gpio@4a310000 { +			compatible = "ti,omap4-gpio"; +			ti,hwmods = "gpio1"; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <1>; +		}; + +		gpio2: gpio@48055000 { +			compatible = "ti,omap4-gpio"; +			ti,hwmods = "gpio2"; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <1>; +		}; + +		gpio3: gpio@48057000 { +			compatible = "ti,omap4-gpio"; +			ti,hwmods = "gpio3"; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <1>; +		}; + +		gpio4: gpio@48059000 { +			compatible = "ti,omap4-gpio"; +			ti,hwmods = "gpio4"; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <1>; +		}; + +		gpio5: gpio@4805b000 { +			compatible = "ti,omap4-gpio"; +			ti,hwmods = "gpio5"; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <1>; +		}; + +		gpio6: gpio@4805d000 { +			compatible = "ti,omap4-gpio"; +			ti,hwmods = "gpio6"; +			gpio-controller; +			#gpio-cells = <2>; +			interrupt-controller; +			#interrupt-cells = <1>; +		}; +  		uart1: serial@4806a000 {  			compatible = "ti,omap4-uart";  			ti,hwmods = "uart1"; diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c index 8cbfbc2918c..8412746bad7 100644 --- a/arch/arm/mach-omap2/gpio.c +++ b/arch/arm/mach-omap2/gpio.c @@ -20,6 +20,7 @@  #include <linux/err.h>  #include <linux/slab.h>  #include <linux/interrupt.h> +#include <linux/of.h>  #include <plat/omap_hwmod.h>  #include <plat/omap_device.h> @@ -122,7 +123,10 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)   */  static int __init omap2_gpio_init(void)  { -	return omap_hwmod_for_each_by_class("gpio", omap2_gpio_dev_init, -						NULL); +	/* If dtb is there, the devices will be created dynamically */ +	if (of_have_populated_dt()) +		return -ENODEV; + +	return omap_hwmod_for_each_by_class("gpio", omap2_gpio_dev_init, NULL);  }  postcore_initcall(omap2_gpio_init);  |