drm/rockchip: fix compile error when build as modules
[firefly-linux-kernel-4.4.55.git] / drivers / net / irda / bu92725guw.h
1 /***************************************************************************\r
2  *\r
3  * File:          bu92725guw.h\r
4  *\r
5  * Description:   This file contains configuration constants for the\r
6  *                bu92725guw board.\r
7  *\r
8  * Created:       2007/9\r
9  *\r
10  * Rev 1.1\r
11  *\r
12  *\r
13  * Confidential  ROHM CO.,LTD.\r
14  *\r
15  ****************************************************************************/\r
16 #ifndef __BU92725GUW_H\r
17 #define __BU92725GUW_H\r
18 \r
19 #include "mach/rk29_smc.h"\r
20 \r
21 \r
22 /* irda registers addr  must be 2*ori_register when use smc control*/\r
23 #define REG_TXD_ADDR            0\r
24 #define REG_RXD_ADDR            0\r
25 #define REG_IER_ADDR            2\r
26 #define REG_EIR_ADDR            4\r
27 #define REG_MCR_ADDR            6\r
28 #define REG_PWR_FIT_ADDR        8\r
29 #define REG_TRCR_ADDR           10\r
30 #define REG_FTLV_ADDR           12\r
31 #define REG_FLV_ADDR            14\r
32 #define REG_FLVII_ADDR          16\r
33 #define REG_FLVIII_ADDR         18\r
34 #define REG_FLVIV_ADDR          20\r
35 #define REG_TRCRII_ADDR         22\r
36 #define REG_TXEC_ADDR           24\r
37 #define REG_WREC_ADDR           26\r
38 \r
39 /*\r
40  *register bits definition (registers are all 16 bits)\r
41  */\r
42 //interrupt reg (IER and EIR)\r
43 #define REG_INT_DRX             (0x0001 << 0)\r
44 #define REG_INT_EOFRX   (0x0001 << 1)\r
45 #define REG_INT_STFRX   (0x0001 << 1)\r
46 #define REG_INT_TO              (0x0001 << 2)\r
47 #define REG_INT_TXE             (0x0001 << 3)\r
48 #define REG_INT_CRC             (0x0001 << 4)\r
49 #define REG_INT_OE              (0x0001 << 5)\r
50 #define REG_INT_EOF             (0x0001 << 6)\r
51 #define REG_INT_FE              (0x0001 << 7)\r
52 #define REG_INT_AC              (0x0001 << 7)\r
53 #define REG_INT_DECE    (0x0001 << 7)\r
54 #define REG_INT_RDOE    (0x0001 << 8)\r
55 #define REG_INT_DEX             (0x0001 << 9)\r
56 #define REG_INT_RDUE    (0x0001 << 10)\r
57 #define REG_INT_WRE             (0x0001 << 11)\r
58 #define REG_INT_RDE             (0x0001 << 12)\r
59 \r
60 //MCR\r
61 #define REG_MCR_CTLA    0x1000\r
62 #define REG_MCR_RC_MODE 0x0800\r
63 #define REG_MCR_RC_EN   0x0400\r
64 #define REG_MCR_2400    (0x0000 << 5)\r
65 #define REG_MCR_9600    (0x0002 << 5) //default\r
66 #define REG_MCR_19200   (0x0003 << 5)\r
67 #define REG_MCR_38400   (0x0004 << 5)\r
68 #define REG_MCR_57600   (0x0005 << 5)\r
69 #define REG_MCR_115200  (0x0006 << 5)\r
70 #define REG_MCR_576K    (0x0001 << 5)\r
71 #define REG_MCR_1152K   (0x0002 << 5)\r
72 #define REG_MCR_4M              (0x0002 << 5)\r
73 #define REG_MCR_SIR             0x0000 //default\r
74 #define REG_MCR_MIR             0x0001\r
75 #define REG_MCR_FIR             0x0002\r
76 \r
77 \r
78 /* flag event bit\r
79  */\r
80 #define FRM_EVT_RX_EOFRX        REG_INT_EOFRX   //IER1\r
81 #define FRM_EVT_RX_RDE          REG_INT_RDE             //IER12\r
82 #define FRM_EVT_TX_TXE          REG_INT_TXE             //IER3\r
83 #define FRM_EVT_TX_WRE          REG_INT_WRE             //IER11\r
84 #define FRM_EVT_EXIT_NOW        0x00010000\r
85 \r
86 \r
87 enum eTrans_Mode {\r
88         BU92725GUW_SIR = 0,\r
89         BU92725GUW_MIR,\r
90         BU92725GUW_FIR,\r
91 };\r
92 enum eTrans_Speed {\r
93         BU92725GUW_2400 = 0,\r
94         BU92725GUW_9600,\r
95         BU92725GUW_19200,\r
96         BU92725GUW_38400,\r
97         BU92725GUW_57600,\r
98         BU92725GUW_115200,\r
99         BU92725GUW_576K,\r
100         BU92725GUW_1152K,\r
101         BU92725GUW_4M,\r
102 };\r
103 \r
104 //PWR/FIT\r
105 #define REG_PWR_FIT_SPW         0x0001\r
106 #define REG_PWR_FIT_MPW_0       (0x0000 << 1)\r
107 #define REG_PWR_FIT_MPW_1       (0x0001 << 1)\r
108 #define REG_PWR_FIT_MPW_2       (0x0002 << 1)\r
109 #define REG_PWR_FIT_MPW_3       (0x0003 << 1) //default\r
110 #define REG_PWR_FIT_MPW_4       (0x0004 << 1)\r
111 #define REG_PWR_FIT_MPW_5       (0x0005 << 1)\r
112 #define REG_PWR_FIT_MPW_6       (0x0006 << 1)\r
113 #define REG_PWR_FIT_MPW_7       (0x0007 << 1)\r
114 #define REG_PWR_FIT_MPW_8       (0x0008 << 1)\r
115 #define REG_PWR_FIT_MPW_9       (0x0009 << 1)\r
116 #define REG_PWR_FIT_MPW_10      (0x000A << 1)\r
117 #define REG_PWR_FIT_MPW_11      (0x000B << 1)\r
118 #define REG_PWR_FIT_MPW_12      (0x000C << 1)\r
119 #define REG_PWR_FIT_MPW_13  (0x000D << 1)\r
120 #define REG_PWR_FIT_MPW_14      (0x000E << 1)\r
121 #define REG_PWR_FIT_MPW_15      (0x000F << 1)\r
122 #define REG_PWR_FIT_FPW_0       (0x0000 << 5)\r
123 #define REG_PWR_FIT_FPW_1       (0x0001 << 5)\r
124 #define REG_PWR_FIT_FPW_2       (0x0002 << 5) //default\r
125 #define REG_PWR_FIT_FPW_3       (0x0003 << 5)\r
126 #define REG_PWR_FIT_FIT_0       (0x0000 << 8) //default\r
127 #define REG_PWR_FIT_FIT_1       (0x0001 << 8)\r
128 #define REG_PWR_FIT_FIT_2       (0x0002 << 8)\r
129 #define REG_PWR_FIT_FIT_3       (0x0003 << 8)\r
130 #define REG_PWR_FIT_FIT_4       (0x0004 << 8)\r
131 #define REG_PWR_FIT_FIT_5       (0x0005 << 8)\r
132 #define REG_PWR_FIT_FIT_6       (0x0006 << 8)\r
133 #define REG_PWR_FIT_FIT_7       (0x0007 << 8)\r
134 #define REG_PWR_FIT_FIT_8       (0x0008 << 8) //default\r
135 #define REG_PWR_FIT_FIT_9       (0x0009 << 8)\r
136 #define REG_PWR_FIT_FIT_A       (0x000A << 8)\r
137 #define REG_PWR_FIT_FIT_B       (0x000B << 8)\r
138 #define REG_PWR_FIT_FIT_C       (0x000C << 8)\r
139 #define REG_PWR_FIT_FIT_D       (0x000D << 8)\r
140 #define REG_PWR_FIT_FIT_E       (0x000E << 8)\r
141 #define REG_PWR_FIT_FIT_F       (0x000F << 8)\r
142 \r
143 //TRCR\r
144 #define REG_TRCR_TX_EN                  0x0001\r
145 #define REG_TRCR_RX_EN                  (0x0001 << 1)\r
146 #define REG_TRCR_S_EOT                  (0x0001 << 2)\r
147 #define REG_TRCR_IR_PLS                 (0x0001 << 3)\r
148 #define REG_TRCR_FCLR                   (0x0001 << 4)\r
149 #define REG_TRCR_MS_EN                  (0x0001 << 5)\r
150 #define REG_TRCR_IRPD                   (0x0001 << 6)\r
151 #define REG_TRCR_M_STA                  (0x0001 << 7)\r
152 #define REG_TRCR_RXPWD                  (0x0001 << 8)\r
153 #define REG_TRCR_TXPWD                  (0x0001 << 9)\r
154 #define REG_TRCR_ONE_BIT_R              (0x0001 << 10)\r
155 #define REG_TRCR_AUTO_FLV_CP    (0x0001 << 11)\r
156 #define REG_TRCR_RX_CON                 (0x0001 << 12)\r
157 #define REG_TRCR_FLV_CP                 (0x0001 << 13)\r
158 #define REG_TRCR_TX_CON                 (0x0001 << 14)\r
159 #define REG_TRCR_TX_NUM                 (0x0001 << 15)\r
160 \r
161 enum eThrans_Way {\r
162         BU92725GUW_IDLE = 0,\r
163         BU92725GUW_REV, /* SIR use */\r
164         BU92725GUW_SEND, /* SIR use */\r
165         BU92725GUW_MIR_REV, /* MIR use */\r
166         BU92725GUW_MIR_SEND, /* MIR use */\r
167         BU92725GUW_FIR_REV, /* FIR use */\r
168         BU92725GUW_FIR_SEND, /* FIR use */\r
169         BU92725GUW_AUTO_MULTI_REV, /* M/FIR use */\r
170         BU92725GUW_MULTI_REV, /* not used */\r
171         BU92725GUW_MULTI_SEND, /* M/FIR use */\r
172 };\r
173 \r
174 \r
175 #define BU92725GUW_FIFO_SIZE    (2560 * 2)\r
176 \r
177 #define BU92725GUW_MAX_FRM_INTERVAL             1000 /* 1000us */\r
178 \r
179 /*---------------------------------------------------------------------------\r
180                                 Functions used by framer\r
181 ----------------------------------------------------------------------------*/\r
182 #define BU92725GUW_READ_REG(regAddr)                    smc0_read(regAddr)\r
183 #define BU92725GUW_WRITE_REG(regAddr, data)             smc0_write(regAddr, data)\r
184 \r
185 \r
186 /* board initialize */\r
187 extern void BU92725GUW_init(void);\r
188 \r
189 /* board deinit */\r
190 extern void BU92725GUW_deinit(void);\r
191 \r
192 /* set data transfer speed */\r
193 extern void BU92725GUW_set_trans_speed(u32 speed);\r
194 \r
195 /* set frame transfer way */\r
196 extern void BU92725GUW_set_trans_way(u32 way);\r
197 \r
198 /* flush fifo */\r
199 extern void BU92725GUW_clr_fifo(void);\r
200 \r
201 /* set frame sending interval */\r
202 extern void BU92725GUW_set_frame_interval(u32 us);\r
203 \r
204 /* insert IrDA pulse follow frame sending */\r
205 extern void BU92725GUW_add_pulse(void);\r
206 \r
207 /* soft reset when some error happened */\r
208 extern void BU92725GUW_reset(void);\r
209 \r
210 /* return transfer mode */\r
211 extern u32 BU92725GUW_get_trans_mode(void);\r
212 \r
213 /* get frame data from fifo */\r
214 extern u16 BU92725GUW_get_data(u8 *buf);\r
215 \r
216 /* send frame data into fifo */\r
217 extern void BU92725GUW_send_data(u8 *buf1, u16 len1, u8 *buf2, u16 len2);\r
218 \r
219 /*dump register*/\r
220 extern void BU92725GUW_dump_register(void);\r
221 \r
222 int irda_hw_tx_enable_irq(enum eTrans_Mode mode);\r
223 int irda_hw_get_mode(void);\r
224 void irda_hw_set_moderx(void);\r
225 int irda_hw_get_irqsrc(void);\r
226 int irda_hw_shutdown(void);\r
227 int irda_hw_startup(void);\r
228 int irda_hw_set_speed(u32 speed);\r
229 \r
230 /* [Add] AIC 2011/09/29 */\r
231 int BU92725GUW_get_length_in_fifo_buffer(void);\r
232 /* [Add-end] AIC 2011/09/29 */\r
233 \r
234 #endif /*__BU92725GUW_H*/\r