18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *  Copyright (C) 2005 Russell King.
48c2ecf20Sopenharmony_ci *  Data taken from include/asm-i386/serial.h
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci#include <linux/module.h>
78c2ecf20Sopenharmony_ci#include <linux/init.h>
88c2ecf20Sopenharmony_ci#include <linux/serial_8250.h>
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#define HUB6(card, port)						\
118c2ecf20Sopenharmony_ci	{								\
128c2ecf20Sopenharmony_ci		.iobase		= 0x302,				\
138c2ecf20Sopenharmony_ci		.irq		= 3,					\
148c2ecf20Sopenharmony_ci		.uartclk	= 1843200,				\
158c2ecf20Sopenharmony_ci		.iotype		= UPIO_HUB6,				\
168c2ecf20Sopenharmony_ci		.flags		= UPF_BOOT_AUTOCONF,			\
178c2ecf20Sopenharmony_ci		.hub6		= (card) << 6 | (port) << 3 | 1,	\
188c2ecf20Sopenharmony_ci	}
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_cistatic struct plat_serial8250_port hub6_data[] = {
218c2ecf20Sopenharmony_ci	HUB6(0, 0),
228c2ecf20Sopenharmony_ci	HUB6(0, 1),
238c2ecf20Sopenharmony_ci	HUB6(0, 2),
248c2ecf20Sopenharmony_ci	HUB6(0, 3),
258c2ecf20Sopenharmony_ci	HUB6(0, 4),
268c2ecf20Sopenharmony_ci	HUB6(0, 5),
278c2ecf20Sopenharmony_ci	HUB6(1, 0),
288c2ecf20Sopenharmony_ci	HUB6(1, 1),
298c2ecf20Sopenharmony_ci	HUB6(1, 2),
308c2ecf20Sopenharmony_ci	HUB6(1, 3),
318c2ecf20Sopenharmony_ci	HUB6(1, 4),
328c2ecf20Sopenharmony_ci	HUB6(1, 5),
338c2ecf20Sopenharmony_ci	{ },
348c2ecf20Sopenharmony_ci};
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_cistatic struct platform_device hub6_device = {
378c2ecf20Sopenharmony_ci	.name			= "serial8250",
388c2ecf20Sopenharmony_ci	.id			= PLAT8250_DEV_HUB6,
398c2ecf20Sopenharmony_ci	.dev			= {
408c2ecf20Sopenharmony_ci		.platform_data	= hub6_data,
418c2ecf20Sopenharmony_ci	},
428c2ecf20Sopenharmony_ci};
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_cistatic int __init hub6_init(void)
458c2ecf20Sopenharmony_ci{
468c2ecf20Sopenharmony_ci	return platform_device_register(&hub6_device);
478c2ecf20Sopenharmony_ci}
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_cimodule_init(hub6_init);
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ciMODULE_AUTHOR("Russell King");
528c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("8250 serial probe module for Hub6 cards");
538c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL");
54