summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-clps711x
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2012-11-02 13:17:15 +0400
committerSascha Hauer <s.hauer@pengutronix.de>2012-11-02 11:24:58 +0100
commitbedf7dfce5bcf728937b9569ac0d038267f588f3 (patch)
treec1735852bc673c1bea1c9a46b24089277b16ba71 /arch/arm/mach-clps711x
parentdb3d934d92241c1b99454b908a7a3a4c969360e6 (diff)
downloadbarebox-bedf7dfce5bcf728937b9569ac0d038267f588f3.tar.gz
barebox-bedf7dfce5bcf728937b9569ac0d038267f588f3.tar.xz
ARM: clps711x: Add serial driver
This patch adds a simple serial driver for CLPS711X architecture. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-clps711x')
-rw-r--r--arch/arm/mach-clps711x/devices.c60
-rw-r--r--arch/arm/mach-clps711x/include/mach/devices.h1
2 files changed, 61 insertions, 0 deletions
diff --git a/arch/arm/mach-clps711x/devices.c b/arch/arm/mach-clps711x/devices.c
index c5fcbf28a8..08f27d26be 100644
--- a/arch/arm/mach-clps711x/devices.c
+++ b/arch/arm/mach-clps711x/devices.c
@@ -35,3 +35,63 @@ void clps711x_setup_memcfg(int bank, u32 val)
break;
}
}
+
+static struct resource uart0_resources[] = {
+ {
+ .start = UBRLCR1,
+ .end = UBRLCR1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = SYSCON1,
+ .end = SYSCON1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = SYSFLG1,
+ .end = SYSFLG1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = UARTDR1,
+ .end = UARTDR1,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+static struct resource uart1_resources[] = {
+ {
+ .start = UBRLCR2,
+ .end = UBRLCR2,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = SYSCON2,
+ .end = SYSCON2,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = SYSFLG2,
+ .end = SYSFLG2,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = UARTDR2,
+ .end = UARTDR2,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+void clps711x_add_uart(unsigned int id)
+{
+ switch (id) {
+ case 0:
+ add_generic_device_res("clps711x_serial", 0, uart0_resources,
+ ARRAY_SIZE(uart0_resources), NULL);
+ break;
+ case 1:
+ add_generic_device_res("clps711x_serial", 1, uart1_resources,
+ ARRAY_SIZE(uart1_resources), NULL);
+ break;
+ }
+}
diff --git a/arch/arm/mach-clps711x/include/mach/devices.h b/arch/arm/mach-clps711x/include/mach/devices.h
index 7e5eaf9f81..18a251a1d9 100644
--- a/arch/arm/mach-clps711x/include/mach/devices.h
+++ b/arch/arm/mach-clps711x/include/mach/devices.h
@@ -2,5 +2,6 @@
#define __MACH_DEVICES_H
void clps711x_setup_memcfg(int bank, u32 val);
+void clps711x_add_uart(unsigned int id);
#endif