1 #include <linux/module.h>
2 #include <linux/config.h>
3 #include <linux/kernel.h>
4 #include <linux/init.h>
6 #include <linux/serial.h>
7 #include <linux/serial_core.h>
8 #include <linux/types.h>
11 #include <asm/serial.h>
12 #include <asm/mach-types.h>
14 #include <asm/arch/map.h>
15 #include <asm/arch/irqs.h>
16 #include <asm/arch/bast-map.h>
17 #include <asm/arch/bast-irq.h>
19 static int __init serial_bast_register(unsigned long port, unsigned int irq)
21 struct serial_struct serial_req;
24 printk("BAST: SuperIO serial (%08lx,%d)\n", port, irq);
27 serial_req.flags = UPF_AUTOPROBE | UPF_RESOURCES | UPF_SHARE_IRQ;
28 serial_req.baud_base = BASE_BAUD;
30 serial_req.io_type = UPIO_MEM;
31 serial_req.iomap_base = port;
32 serial_req.iomem_base = ioremap(port, 0x10);
33 serial_req.iomem_reg_shift = 0;
35 return register_serial(&serial_req);
38 #define SERIAL_BASE (S3C2410_CS2 + BAST_PA_SUPERIO)
40 static int __init serial_bast_init(void)
42 if (machine_is_bast()) {
43 serial_bast_register(SERIAL_BASE + 0x2f8, IRQ_PCSERIAL1);
44 serial_bast_register(SERIAL_BASE + 0x3f8, IRQ_PCSERIAL2);
50 static void __exit serial_bast_exit(void)
52 /* todo -> remove both our ports */
56 module_init(serial_bast_init);
57 module_exit(serial_bast_exit);
59 MODULE_LICENSE("GPL");
60 MODULE_AUTHOR("Ben Dooks, ben@simtec.co.uk");
61 MODULE_DESCRIPTION("BAST Onboard Serial setup");