1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 *  NXP (Philips) SCC+++(SCN+++) serial driver
4 *
5 *  Copyright (C) 2012 Alexander Shiyan <shc_work@mail.ru>
6 *
7 *  Based on sc26xx.c, by Thomas Bogend��rfer (tsbogend@alpha.franken.de)
8 */
9
10#ifndef _PLATFORM_DATA_SERIAL_SCCNXP_H_
11#define _PLATFORM_DATA_SERIAL_SCCNXP_H_
12
13#define SCCNXP_MAX_UARTS	2
14
15/* Output lines */
16#define LINE_OP0		1
17#define LINE_OP1		2
18#define LINE_OP2		3
19#define LINE_OP3		4
20#define LINE_OP4		5
21#define LINE_OP5		6
22#define LINE_OP6		7
23#define LINE_OP7		8
24
25/* Input lines */
26#define LINE_IP0		9
27#define LINE_IP1		10
28#define LINE_IP2		11
29#define LINE_IP3		12
30#define LINE_IP4		13
31#define LINE_IP5		14
32#define LINE_IP6		15
33
34/* Signals */
35#define DTR_OP			0	/* DTR */
36#define RTS_OP			4	/* RTS */
37#define DSR_IP			8	/* DSR */
38#define CTS_IP			12	/* CTS */
39#define DCD_IP			16	/* DCD */
40#define RNG_IP			20	/* RNG */
41
42#define DIR_OP			24	/* Special signal for control RS-485.
43					 * Goes high when transmit,
44					 * then goes low.
45					 */
46
47/* Routing control signal 'sig' to line 'line' */
48#define MCTRL_SIG(sig, line)	((line) << (sig))
49
50/*
51 * Example board initialization data:
52 *
53 * static struct resource sc2892_resources[] = {
54 *	DEFINE_RES_MEM(UART_PHYS_START, 0x10),
55 *	DEFINE_RES_IRQ(IRQ_EXT2),
56 * };
57 *
58 * static struct sccnxp_pdata sc2892_info = {
59 *	.mctrl_cfg[0]	= MCTRL_SIG(DIR_OP, LINE_OP0),
60 *	.mctrl_cfg[1]	= MCTRL_SIG(DIR_OP, LINE_OP1),
61 * };
62 *
63 * static struct platform_device sc2892 = {
64 *	.name		= "sc2892",
65 *	.id		= -1,
66 *	.resource	= sc2892_resources,
67 *	.num_resources	= ARRAY_SIZE(sc2892_resources),
68 *	.dev = {
69 *		.platform_data	= &sc2892_info,
70 *	},
71 * };
72 */
73
74/* SCCNXP platform data structure */
75struct sccnxp_pdata {
76	/* Shift for A0 line */
77	const u8		reg_shift;
78	/* Modem control lines configuration */
79	const u32		mctrl_cfg[SCCNXP_MAX_UARTS];
80	/* Timer value for polling mode (usecs) */
81	const unsigned int	poll_time_us;
82};
83
84#endif
85