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
6 * Copyright (C) 2007 Aurelien Jarno <aurelien@aurel32.net>
9 #include <linux/module.h>
10 #include <linux/init.h>
11 #include <linux/serial.h>
12 #include <linux/serial_8250.h>
13 #include <linux/ssb/ssb.h>
16 static struct plat_serial8250_port uart8250_data
[5];
18 static struct platform_device uart8250_device
= {
20 .id
= PLAT8250_DEV_PLATFORM
,
22 .platform_data
= uart8250_data
,
26 static int __init
uart8250_init(void)
29 struct ssb_mipscore
*mcore
= &(ssb_bcm47xx
.mipscore
);
31 memset(&uart8250_data
, 0, sizeof(uart8250_data
));
33 for (i
= 0; i
< mcore
->nr_serial_ports
; i
++) {
34 struct plat_serial8250_port
*p
= &(uart8250_data
[i
]);
35 struct ssb_serial_port
*ssb_port
= &(mcore
->serial_ports
[i
]);
37 p
->mapbase
= (unsigned int) ssb_port
->regs
;
38 p
->membase
= (void *) ssb_port
->regs
;
39 p
->irq
= ssb_port
->irq
+ 2;
40 p
->uartclk
= ssb_port
->baud_base
;
41 p
->regshift
= ssb_port
->reg_shift
;
43 p
->flags
= UPF_BOOT_AUTOCONF
| UPF_SHARE_IRQ
;
45 return platform_device_register(&uart8250_device
);
48 module_init(uart8250_init
);
50 MODULE_AUTHOR("Aurelien Jarno <aurelien@aurel32.net>");
51 MODULE_LICENSE("GPL");
52 MODULE_DESCRIPTION("8250 UART probe driver for the BCM47XX platforms");