]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ARM: nomadik: move GPIO and pinctrl to device tree
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 5 Jan 2013 22:10:09 +0000 (23:10 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 28 Jan 2013 22:24:39 +0000 (23:24 +0100)
This moves the instances of the Nomadik pin controller and the
Nomadik GPIO blocks (also handled by the GPIO driver) over to
the device tree. A new compatible string is added to the
pin control driver in the process.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
arch/arm/mach-nomadik/cpu-8815.c
drivers/pinctrl/pinctrl-nomadik.c

index c73df370373bd2af13cb767a0bbd4baf55475892..2c8aaa5c6ac42aa9dd7014c2fc8e5e7b18c886d0 100644 (file)
                interrupts = <5>;
        };
 
+       gpio0: gpio@101e4000 {
+               compatible = "st,nomadik-gpio";
+               reg =  <0x101e4000 0x80>;
+               interrupt-parent = <&vica>;
+               interrupts = <6>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-bank = <0>;
+       };
+
+       gpio1: gpio@101e5000 {
+               compatible = "st,nomadik-gpio";
+               reg =  <0x101e5000 0x80>;
+               interrupt-parent = <&vica>;
+               interrupts = <7>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-bank = <1>;
+       };
+
+       gpio2: gpio@101e6000 {
+               compatible = "st,nomadik-gpio";
+               reg =  <0x101e6000 0x80>;
+               interrupt-parent = <&vica>;
+               interrupts = <8>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-bank = <2>;
+       };
+
+       gpio3: gpio@101e7000 {
+               compatible = "st,nomadik-gpio";
+               reg =  <0x101e7000 0x80>;
+               interrupt-parent = <&vica>;
+               interrupts = <9>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-bank = <3>;
+       };
+
+       pinctrl {
+               compatible = "stericsson,nmk-pinctrl-stn8815";
+       };
+
        /* A NAND flash of 128 MiB */
        fsmc: flash@40000000 {
                compatible = "stericsson,fsmc-nand";
index a3894ca45bb86da43b94d1133ad779e77d12d226..3a59459d6e9a98f81dd5ca8d7aba40a03f08c9c4 100644 (file)
@@ -153,13 +153,15 @@ static int __init cpu8815_init(void)
                /* No custom data yet */
        };
 
+       /* For e.g. device tree boots */
+       if (!machine_is_nomadik())
+               return 0;
+
        cpu8815_add_gpios(cpu8815_gpio_base, ARRAY_SIZE(cpu8815_gpio_base),
                          IRQ_GPIO0, &pdata);
        cpu8815_add_pinctrl(NULL, "pinctrl-stn8815");
-       if (machine_is_nomadik()) {
-               amba_apb_device_add(NULL, "rng", NOMADIK_RNG_BASE, SZ_4K, 0, 0, NULL, 0);
-               amba_apb_device_add(NULL, "rtc-pl031", NOMADIK_RTC_BASE, SZ_4K, IRQ_RTC_RTT, 0, NULL, 0);
-       }
+       amba_apb_device_add(NULL, "rng", NOMADIK_RNG_BASE, SZ_4K, 0, 0, NULL, 0);
+       amba_apb_device_add(NULL, "rtc-pl031", NOMADIK_RTC_BASE, SZ_4K, IRQ_RTC_RTT, 0, NULL, 0);
        return 0;
 }
 arch_initcall(cpu8815_init);
@@ -263,6 +265,16 @@ static struct fsmc_nand_platform_data cpu8815_nand_data = {
 
 /* These are mostly to get the right device names for the clock lookups */
 static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = {
+       OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO0_BASE,
+               "gpio.0", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO1_BASE,
+               "gpio.1", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO2_BASE,
+               "gpio.2", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO3_BASE,
+               "gpio.3", NULL),
+       OF_DEV_AUXDATA("stericsson,nmk-pinctrl-stn8815", 0,
+               "pinctrl-stn8815", NULL),
        OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART0_BASE,
                "uart0", NULL),
        OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART1_BASE,
@@ -283,6 +295,7 @@ static void __init cpu8815_init_of(void)
        /* At full speed latency must be >=2, so 0x249 in low bits */
        l2x0_of_init(0x00730249, 0xfe000fff);
 #endif
+       pinctrl_register_mappings(nhk8815_pinmap, ARRAY_SIZE(nhk8815_pinmap));
        of_platform_populate(NULL, of_default_bus_match_table,
                        cpu8815_auxdata_lookup, NULL);
 }
index 1bb16ffb4e41a9d0f252fc8a563188f97f343642..ef21a662b974e8bae872c0a436bec38cdc1d7c31 100644 (file)
@@ -1845,6 +1845,10 @@ static struct pinctrl_desc nmk_pinctrl_desc = {
 };
 
 static const struct of_device_id nmk_pinctrl_match[] = {
+       {
+               .compatible = "stericsson,nmk-pinctrl-stn8815",
+               .data = (void *)PINCTRL_NMK_STN8815,
+       },
        {
                .compatible = "stericsson,nmk_pinctrl",
                .data = (void *)PINCTRL_NMK_DB8500,