aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMaxime Bizon <mbizon@freebox.fr>2009-09-18 07:04:58 -0400
committerRalf Baechle <ralf@linux-mips.org>2009-09-30 15:46:59 -0400
commit9fcd66e572b94974365a9119b073e0a43d496eb7 (patch)
tree9fa9e3212ecfad9e44a84730a0dfc2c54e1d0fb6 /arch
parent8813d33ee03eee04eb2a8130658d591767d9f4fe (diff)
MIPS: BCM63xx: Add serial driver for bcm63xx integrated UART.
Signed-off-by: Maxime Bizon <mbizon@freebox.fr> Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/bcm63xx/Makefile2
-rw-r--r--arch/mips/bcm63xx/boards/board_bcm963xx.c3
-rw-r--r--arch/mips/bcm63xx/dev-uart.c41
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h6
4 files changed, 51 insertions, 1 deletions
diff --git a/arch/mips/bcm63xx/Makefile b/arch/mips/bcm63xx/Makefile
index aaa585cf26e3..cff75de8449b 100644
--- a/arch/mips/bcm63xx/Makefile
+++ b/arch/mips/bcm63xx/Makefile
@@ -1,5 +1,5 @@
1obj-y += clk.o cpu.o cs.o gpio.o irq.o prom.o setup.o timer.o \ 1obj-y += clk.o cpu.o cs.o gpio.o irq.o prom.o setup.o timer.o \
2 dev-dsp.o dev-enet.o 2 dev-dsp.o dev-enet.o dev-uart.o
3obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 3obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
4 4
5obj-y += boards/ 5obj-y += boards/
diff --git a/arch/mips/bcm63xx/boards/board_bcm963xx.c b/arch/mips/bcm63xx/boards/board_bcm963xx.c
index 12add0ca9fed..5a327f3a7167 100644
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -23,6 +23,7 @@
23#include <bcm63xx_dev_pci.h> 23#include <bcm63xx_dev_pci.h>
24#include <bcm63xx_dev_enet.h> 24#include <bcm63xx_dev_enet.h>
25#include <bcm63xx_dev_dsp.h> 25#include <bcm63xx_dev_dsp.h>
26#include <bcm63xx_dev_uart.h>
26#include <board_bcm963xx.h> 27#include <board_bcm963xx.h>
27 28
28#define PFX "board_bcm963xx: " 29#define PFX "board_bcm963xx: "
@@ -792,6 +793,8 @@ int __init board_register_devices(void)
792{ 793{
793 u32 val; 794 u32 val;
794 795
796 bcm63xx_uart_register();
797
795 if (board.has_enet0 && 798 if (board.has_enet0 &&
796 !board_get_mac_address(board.enet0.mac_addr)) 799 !board_get_mac_address(board.enet0.mac_addr))
797 bcm63xx_enet_register(0, &board.enet0); 800 bcm63xx_enet_register(0, &board.enet0);
diff --git a/arch/mips/bcm63xx/dev-uart.c b/arch/mips/bcm63xx/dev-uart.c
new file mode 100644
index 000000000000..5f3d89c4a988
--- /dev/null
+++ b/arch/mips/bcm63xx/dev-uart.c
@@ -0,0 +1,41 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr>
7 */
8
9#include <linux/init.h>
10#include <linux/kernel.h>
11#include <linux/platform_device.h>
12#include <bcm63xx_cpu.h>
13#include <bcm63xx_dev_uart.h>
14
15static struct resource uart_resources[] = {
16 {
17 .start = -1, /* filled at runtime */
18 .end = -1, /* filled at runtime */
19 .flags = IORESOURCE_MEM,
20 },
21 {
22 .start = -1, /* filled at runtime */
23 .flags = IORESOURCE_IRQ,
24 },
25};
26
27static struct platform_device bcm63xx_uart_device = {
28 .name = "bcm63xx_uart",
29 .id = 0,
30 .num_resources = ARRAY_SIZE(uart_resources),
31 .resource = uart_resources,
32};
33
34int __init bcm63xx_uart_register(void)
35{
36 uart_resources[0].start = bcm63xx_regset_address(RSET_UART0);
37 uart_resources[0].end = uart_resources[0].start;
38 uart_resources[0].end += RSET_UART_SIZE - 1;
39 uart_resources[1].start = bcm63xx_get_irq_number(IRQ_UART0);
40 return platform_device_register(&bcm63xx_uart_device);
41}
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
new file mode 100644
index 000000000000..bf348f573bbc
--- /dev/null
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
@@ -0,0 +1,6 @@
1#ifndef BCM63XX_DEV_UART_H_
2#define BCM63XX_DEV_UART_H_
3
4int bcm63xx_uart_register(void);
5
6#endif /* BCM63XX_DEV_UART_H_ */