1 /***************************************************************************
\r
5 * Description: This file contains configuration constants for the
\r
13 * Confidential ROHM CO.,LTD.
\r
15 ****************************************************************************/
\r
16 #ifndef __BU92725GUW_H
\r
17 #define __BU92725GUW_H
\r
19 #include "mach/rk29_smc.h"
\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
40 *register bits definition (registers are all 16 bits)
\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
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
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
93 BU92725GUW_2400 = 0,
\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
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
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
175 #define BU92725GUW_FIFO_SIZE (2560 * 2)
\r
177 #define BU92725GUW_MAX_FRM_INTERVAL 1000 /* 1000us */
\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
186 /* board initialize */
\r
187 extern void BU92725GUW_init(void);
\r
190 extern void BU92725GUW_deinit(void);
\r
192 /* set data transfer speed */
\r
193 extern void BU92725GUW_set_trans_speed(u32 speed);
\r
195 /* set frame transfer way */
\r
196 extern void BU92725GUW_set_trans_way(u32 way);
\r
199 extern void BU92725GUW_clr_fifo(void);
\r
201 /* set frame sending interval */
\r
202 extern void BU92725GUW_set_frame_interval(u32 us);
\r
204 /* insert IrDA pulse follow frame sending */
\r
205 extern void BU92725GUW_add_pulse(void);
\r
207 /* soft reset when some error happened */
\r
208 extern void BU92725GUW_reset(void);
\r
210 /* return transfer mode */
\r
211 extern u32 BU92725GUW_get_trans_mode(void);
\r
213 /* get frame data from fifo */
\r
214 extern u16 BU92725GUW_get_data(u8 *buf);
\r
216 /* send frame data into fifo */
\r
217 extern void BU92725GUW_send_data(u8 *buf1, u16 len1, u8 *buf2, u16 len2);
\r
220 extern void BU92725GUW_dump_register(void);
\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
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
234 #endif /*__BU92725GUW_H*/
\r