With the switch to a pinctrl driver, and the dropping of the gpio driver, the code in vt8500_init now always fails, and drops back to LEGACY mode.
Update the gpio mux init code, and removing the #ifdef's and the LEGACY mode fallback. Signed-off-by: Tony Prisk <li...@prisktech.co.nz> --- arch/arm/mach-vt8500/vt8500.c | 91 ++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 61 deletions(-) diff --git a/arch/arm/mach-vt8500/vt8500.c b/arch/arm/mach-vt8500/vt8500.c index 4a73464..fe5243e 100644 --- a/arch/arm/mach-vt8500/vt8500.c +++ b/arch/arm/mach-vt8500/vt8500.c @@ -32,9 +32,6 @@ #include <linux/of_irq.h> #include <linux/of_platform.h> -#define LEGACY_GPIO_BASE 0xD8110000 -#define LEGACY_PMC_BASE 0xD8130000 - /* Registers in GPIO Controller */ #define VT8500_GPIO_MUX_REG 0x200 @@ -75,89 +72,61 @@ static void vt8500_power_off(void) void __init vt8500_init(void) { struct device_node *np; -#if defined(CONFIG_FB_VT8500) || defined(CONFIG_FB_WM8505) struct device_node *fb; - void __iomem *gpio_base; -#endif + void __iomem *base; -#ifdef CONFIG_FB_VT8500 fb = of_find_compatible_node(NULL, NULL, "via,vt8500-fb"); if (fb) { - np = of_find_compatible_node(NULL, NULL, "via,vt8500-gpio"); - if (np) { - gpio_base = of_iomap(np, 0); - - if (!gpio_base) - pr_err("%s: of_iomap(gpio_mux) failed\n", - __func__); + np = of_find_compatible_node(NULL, NULL, "via,vt8500-pinctrl"); + if (!np) { + pr_err("pinctrl node required for framebuffer\n"); + BUG(); + } - of_node_put(np); + base = of_iomap(np, 0); + if (base) { + writel(readl(base + VT8500_GPIO_MUX_REG) | 1, + base + VT8500_GPIO_MUX_REG); + iounmap(base); } else { - gpio_base = ioremap(LEGACY_GPIO_BASE, 0x1000); - if (!gpio_base) - pr_err("%s: ioremap(legacy_gpio_mux) failed\n", - __func__); + pr_err("%s: of_iomap(gpio_mux) failed\n", __func__); } - if (gpio_base) { - writel(readl(gpio_base + VT8500_GPIO_MUX_REG) | 1, - gpio_base + VT8500_GPIO_MUX_REG); - iounmap(gpio_base); - } else - pr_err("%s: Could not remap GPIO mux\n", __func__); + of_node_put(np); of_node_put(fb); } -#endif -#ifdef CONFIG_FB_WM8505 fb = of_find_compatible_node(NULL, NULL, "wm,wm8505-fb"); if (fb) { - np = of_find_compatible_node(NULL, NULL, "wm,wm8505-gpio"); - if (!np) - np = of_find_compatible_node(NULL, NULL, - "wm,wm8650-gpio"); - if (np) { - gpio_base = of_iomap(np, 0); - - if (!gpio_base) - pr_err("%s: of_iomap(gpio_mux) failed\n", - __func__); - - of_node_put(np); + np = of_find_compatible_node(NULL, NULL, "wm,prizm-pinctrl"); + if (!np) { + pr_err("pinctrl node required for framebuffer\n"); + BUG(); + } + + base = of_iomap(np, 0); + if (base) { + writel(readl(base + VT8500_GPIO_MUX_REG) | + 0x80000000, base + VT8500_GPIO_MUX_REG); + iounmap(base); } else { - gpio_base = ioremap(LEGACY_GPIO_BASE, 0x1000); - if (!gpio_base) - pr_err("%s: ioremap(legacy_gpio_mux) failed\n", - __func__); + pr_err("%s: of_iomap(gpio_mux) failed\n", __func__); } - if (gpio_base) { - writel(readl(gpio_base + VT8500_GPIO_MUX_REG) | - 0x80000000, gpio_base + VT8500_GPIO_MUX_REG); - iounmap(gpio_base); - } else - pr_err("%s: Could not remap GPIO mux\n", __func__); + of_node_put(np); of_node_put(fb); } -#endif np = of_find_compatible_node(NULL, NULL, "via,vt8500-pmc"); if (np) { pmc_base = of_iomap(np, 0); - - if (!pmc_base) - pr_err("%s:of_iomap(pmc) failed\n", __func__); + if (pmc_base) + pm_power_off = &vt8500_power_off; + else + pr_err("%s: of_iomap(pmc) failed\n", __func__); of_node_put(np); - } else { - pmc_base = ioremap(LEGACY_PMC_BASE, 0x1000); - if (!pmc_base) - pr_err("%s:ioremap(power_off) failed\n", __func__); } - if (pmc_base) - pm_power_off = &vt8500_power_off; - else - pr_err("%s: PMC Hibernation register could not be remapped, not enabling power off!\n", __func__); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); } -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/