uboot-oxnas: switch to u-boot.mk
[openwrt/staging/lynxis/omap.git] / package / boot / uboot-oxnas / src / arch / arm / cpu / arm1136 / nas782x / pinmux.c
diff --git a/package/boot/uboot-oxnas/src/arch/arm/cpu/arm1136/nas782x/pinmux.c b/package/boot/uboot-oxnas/src/arch/arm/cpu/arm1136/nas782x/pinmux.c
new file mode 100644 (file)
index 0000000..a6f5e9a
--- /dev/null
@@ -0,0 +1,43 @@
+#include <common.h>
+#include <asm/arch/pinmux.h>
+
+void pinmux_set(int bank, int pin, int func)
+{
+       u32 reg;
+       u32 base;
+       /* TODO: check parameters */
+
+       if (bank == PINMUX_BANK_MFA)
+               base = SYS_CONTROL_BASE;
+       else
+               base = SEC_CONTROL_BASE;
+
+       clrbits_le32(base + PINMUX_SECONDARY_SEL, BIT(pin));
+       clrbits_le32(base + PINMUX_TERTIARY_SEL, BIT(pin));
+       clrbits_le32(base + PINMUX_QUATERNARY_SEL, BIT(pin));
+       clrbits_le32(base + PINMUX_DEBUG_SEL, BIT(pin));
+       clrbits_le32(base + PINMUX_ALTERNATIVE_SEL, BIT(pin));
+
+       switch (func) {
+       case PINMUX_GPIO:
+       default:
+               return;
+               break;
+       case PINMUX_2:
+               reg = base + PINMUX_SECONDARY_SEL;
+               break;
+       case PINMUX_3:
+               reg = base + PINMUX_TERTIARY_SEL;
+               break;
+       case PINMUX_4:
+               reg = base + PINMUX_QUATERNARY_SEL;
+               break;
+       case PINMUX_DEBUG:
+               reg = base + PINMUX_DEBUG_SEL;
+               break;
+       case PINMUX_ALT:
+               reg = base + PINMUX_ALTERNATIVE_SEL;
+               break;
+       }
+       setbits_le32(reg, BIT(pin));
+}