1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  *  Copyright (C) 2005 Russell King.
4  *  Data taken from include/asm-i386/serial.h
5  */
6 #include <linux/module.h>
7 #include <linux/init.h>
8 #include <linux/serial_8250.h>
9 
10 #define HUB6(card, port)						\
11 	{								\
12 		.iobase		= 0x302,				\
13 		.irq		= 3,					\
14 		.uartclk	= 1843200,				\
15 		.iotype		= UPIO_HUB6,				\
16 		.flags		= UPF_BOOT_AUTOCONF,			\
17 		.hub6		= (card) << 6 | (port) << 3 | 1,	\
18 	}
19 
20 static struct plat_serial8250_port hub6_data[] = {
21 	HUB6(0, 0),
22 	HUB6(0, 1),
23 	HUB6(0, 2),
24 	HUB6(0, 3),
25 	HUB6(0, 4),
26 	HUB6(0, 5),
27 	HUB6(1, 0),
28 	HUB6(1, 1),
29 	HUB6(1, 2),
30 	HUB6(1, 3),
31 	HUB6(1, 4),
32 	HUB6(1, 5),
33 	{ },
34 };
35 
36 static struct platform_device hub6_device = {
37 	.name			= "serial8250",
38 	.id			= PLAT8250_DEV_HUB6,
39 	.dev			= {
40 		.platform_data	= hub6_data,
41 	},
42 };
43 
44 static int __init hub6_init(void)
45 {
46 	return platform_device_register(&hub6_device);
47 }
48 
49 module_init(hub6_init);
50 
51 MODULE_AUTHOR("Russell King");
52 MODULE_DESCRIPTION("8250 serial probe module for Hub6 cards");
53 MODULE_LICENSE("GPL");
54