|
@@ -980,6 +980,32 @@ static int __init exynos_init_irq_eint(void)
|
|
|
{
|
|
|
int irq;
|
|
|
|
|
|
+#ifdef CONFIG_PINCTRL_SAMSUNG
|
|
|
+ /*
|
|
|
+ * The Samsung pinctrl driver provides an integrated gpio/pinmux/pinconf
|
|
|
+ * functionality along with support for external gpio and wakeup
|
|
|
+ * interrupts. If the samsung pinctrl driver is enabled and includes
|
|
|
+ * the wakeup interrupt support, then the setting up external wakeup
|
|
|
+ * interrupts here can be skipped. This check here is temporary to
|
|
|
+ * allow exynos4 platforms that do not use Samsung pinctrl driver to
|
|
|
+ * co-exist with platforms that do. When all of the Samsung Exynos4
|
|
|
+ * platforms switch over to using the pinctrl driver, the wakeup
|
|
|
+ * interrupt support code here can be completely removed.
|
|
|
+ */
|
|
|
+ struct device_node *pctrl_np, *wkup_np;
|
|
|
+ const char *pctrl_compat = "samsung,pinctrl-exynos4210";
|
|
|
+ const char *wkup_compat = "samsung,exynos4210-wakeup-eint";
|
|
|
+
|
|
|
+ for_each_compatible_node(pctrl_np, NULL, pctrl_compat) {
|
|
|
+ if (of_device_is_available(pctrl_np)) {
|
|
|
+ wkup_np = of_find_compatible_node(pctrl_np, NULL,
|
|
|
+ wkup_compat);
|
|
|
+ if (wkup_np)
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
if (soc_is_exynos5250())
|
|
|
exynos_eint_base = ioremap(EXYNOS5_PA_GPIO1, SZ_4K);
|
|
|
else
|