This patch adds api to decode peripheral id based in interrupt number.

Signed-off-by: Piotr Wilczek <p.wilc...@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.p...@samsung.com>
CC: Minkyu Kang <mk7.k...@samsung.com>
---
 arch/arm/cpu/armv7/exynos/pinmux.c |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c 
b/arch/arm/cpu/armv7/exynos/pinmux.c
index 904177a..3201d53 100644
--- a/arch/arm/cpu/armv7/exynos/pinmux.c
+++ b/arch/arm/cpu/armv7/exynos/pinmux.c
@@ -741,6 +741,25 @@ int exynos_pinmux_config(int peripheral, int flags)
 }
 
 #ifdef CONFIG_OF_CONTROL
+
+static int exynos4_pinmux_decode_periph_id(const void *blob, int node)
+{
+       int err;
+       u32 cell[3];
+
+       err = fdtdec_get_int_array(blob, node, "interrupts", cell,
+                                       ARRAY_SIZE(cell));
+       if (err)
+               return PERIPH_ID_NONE;
+
+       /* check for invalid peripheral id */
+       if ((PERIPH_ID_SDMMC4 > cell[1]) || (cell[1] < PERIPH_ID_UART0))
+               return cell[1];
+
+       debug(" invalid peripheral id\n");
+       return PERIPH_ID_NONE;
+}
+
 static int exynos5_pinmux_decode_periph_id(const void *blob, int node)
 {
        int err;
@@ -763,6 +782,8 @@ int pinmux_decode_periph_id(const void *blob, int node)
 {
        if (cpu_is_exynos5())
                return  exynos5_pinmux_decode_periph_id(blob, node);
+       else if (cpu_is_exynos4())
+               return  exynos4_pinmux_decode_periph_id(blob, node);
        else
                return PERIPH_ID_NONE;
 }
-- 
1.7.9.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to