diff options
author | Alexander Shiyan <shc_work@mail.ru> | 2012-11-02 13:17:15 +0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-02 11:24:58 +0100 |
commit | bedf7dfce5bcf728937b9569ac0d038267f588f3 (patch) | |
tree | c1735852bc673c1bea1c9a46b24089277b16ba71 /arch/arm/mach-clps711x | |
parent | db3d934d92241c1b99454b908a7a3a4c969360e6 (diff) | |
download | barebox-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.c | 60 | ||||
-rw-r--r-- | arch/arm/mach-clps711x/include/mach/devices.h | 1 |
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 |