Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sccnxp.h
Go to the documentation of this file.
1 /*
2  * NXP (Philips) SCC+++(SCN+++) serial driver
3  *
4  * Copyright (C) 2012 Alexander Shiyan <[email protected]>
5  *
6  * Based on sc26xx.c, by Thomas Bogendörfer ([email protected])
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  */
13 
14 #ifndef __SCCNXP_H
15 #define __SCCNXP_H
16 
17 #define SCCNXP_MAX_UARTS 2
18 
19 /* Output lines */
20 #define LINE_OP0 1
21 #define LINE_OP1 2
22 #define LINE_OP2 3
23 #define LINE_OP3 4
24 #define LINE_OP4 5
25 #define LINE_OP5 6
26 #define LINE_OP6 7
27 #define LINE_OP7 8
28 
29 /* Input lines */
30 #define LINE_IP0 9
31 #define LINE_IP1 10
32 #define LINE_IP2 11
33 #define LINE_IP3 12
34 #define LINE_IP4 13
35 #define LINE_IP5 14
36 #define LINE_IP6 15
37 
38 /* Signals */
39 #define DTR_OP 0 /* DTR */
40 #define RTS_OP 4 /* RTS */
41 #define DSR_IP 8 /* DSR */
42 #define CTS_IP 12 /* CTS */
43 #define DCD_IP 16 /* DCD */
44 #define RNG_IP 20 /* RNG */
45 
46 #define DIR_OP 24 /* Special signal for control RS-485.
47  * Goes high when transmit,
48  * then goes low.
49  */
50 
51 /* Routing control signal 'sig' to line 'line' */
52 #define MCTRL_SIG(sig, line) ((line) << (sig))
53 
54 /*
55  * Example board initialization data:
56  *
57  * static struct resource sc2892_resources[] = {
58  * DEFINE_RES_MEM(UART_PHYS_START, 0x10),
59  * DEFINE_RES_IRQ(IRQ_EXT2),
60  * };
61  *
62  * static struct sccnxp_pdata sc2892_info = {
63  * .frequency = 3686400,
64  * .mctrl_cfg[0] = MCTRL_SIG(DIR_OP, LINE_OP0),
65  * .mctrl_cfg[1] = MCTRL_SIG(DIR_OP, LINE_OP1),
66  * };
67  *
68  * static struct platform_device sc2892 = {
69  * .name = "sc2892",
70  * .id = -1,
71  * .resource = sc2892_resources,
72  * .num_resources = ARRAY_SIZE(sc2892_resources),
73  * .dev = {
74  * .platform_data = &sc2892_info,
75  * },
76  * };
77  */
78 
79 /* SCCNXP platform data structure */
80 struct sccnxp_pdata {
81  /* Frequency (extrenal clock or crystal) */
82  int frequency;
83  /* Shift for A0 line */
84  const u8 reg_shift;
85  /* Modem control lines configuration */
87  /* Called during startup */
88  void (*init)(void);
89  /* Called before finish */
90  void (*exit)(void);
91 };
92 
93 #endif