aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/tdmb/tcc3170/inc/tcbd_drv_register.h
blob: ca80812455fbbe4a4b73bfa231e822cec538fb5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
/*
 * tcbd_drv_register.h
 *
 * Author:  <linux@telechips.com>
 * Description: Telechips broadcast driver
 *
 * Copyright (c) Telechips, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef __TCBD_DRV_REGISTER_H__
#define __TCBD_DRV_REGISTER_H__

#define Bit31	0x80000000
#define Bit30	0x40000000
#define Bit29	0x20000000
#define Bit28	0x10000000
#define Bit27	0x08000000
#define Bit26	0x04000000
#define Bit25	0x02000000
#define Bit24	0x01000000
#define Bit23	0x00800000
#define Bit22	0x00400000
#define Bit21	0x00200000
#define Bit20	0x00100000
#define Bit19	0x00080000
#define Bit18	0x00040000
#define Bit17	0x00020000
#define Bit16	0x00010000
#define Bit15	0x00008000
#define Bit14	0x00004000
#define Bit13	0x00002000
#define Bit12	0x00001000
#define Bit11	0x00000800
#define Bit10	0x00000400
#define Bit9	 0x00000200
#define Bit8	 0x00000100
#define Bit7	 0x00000080
#define Bit6	 0x00000040
#define Bit5	 0x00000020
#define Bit4	 0x00000010
#define Bit3	 0x00000008
#define Bit2	 0x00000004
#define Bit1	 0x00000002
#define Bit0	 0x00000001
#define BitNONE  0x00000000

#define TCBD_SYS_EN	   0x00
#define TCBD_SYS_RESET	0x01
#define TCBD_IRQ_MODE	 0x02
#define TCBD_IRQ_EN	   0x03
#define TCBD_IRQ_STAT_CLR 0x04
#define TCBD_IRQ_ERROR	0x05
#define TCBD_IRQ_LATCH	0x05
#define TCBD_PLL_6		0x06
#define TCBD_PLL_7		0x07
#define TCBD_PLL_8		0x08
#define TCBD_PLL_9		0x09
#define TCBD_CHIPADDR	 0x0a
#define TCBD_PROGRAMID	0x0b
#define TCBD_CHIPID	   0x0c
#define TCBD_INIT_REMAP   0x0d
#define TCBD_INIT_PC	  0x0e

#define TCBD_GPIO_ALT 0x10
#define TCBD_GPIO_DR  0x12
#define TCBD_GPIO_LR  0x14
#define TCBD_GPIO_DRV 0x16
#define TCBD_GPIO_PE  0x18
#define TCBD_DIVIO	0x1a

#define TCBD_STREAM_CFG0 0x1b
#define TCBD_STREAM_CFG1 0x1c
#define TCBD_STREAM_CFG2 0x1d
#define TCBD_STREAM_CFG3 0x1e
#define TCBD_STREAM_CFG4 0x1f

#define TCBD_CMDDMA_CTRL	  0x20
#define TCBD_CMDDMA_SADDR	 0x21
#define TCBD_CMDDMA_SIZE	  0x27
#define TCBD_CMDDMA_STARTCTRL 0x29
#define TCBD_CMDDMA_DATA_WIND 0x2a
#define TCBD_TGTBUFF_CIR_MODE 0x2b
#define TCBD_CMDDMA_CRC32	 0x2c

#define TCBD_PERI_CTRL  0x30
#define TCBD_PERI_MODE0 0x31
#define TCBD_PERI_MODE1 0x32
#define TCBD_PERI_MODE2 0x33
#define TCBD_PERI_MODE3 0x34
#define TCBD_PERI_TEST0 0x37
#define TCBD_PERI_TEST1 0x38
#define TCBD_PERI_TEST2 0x39
#define TCBD_PERI_TEST3 0x3a
#define TCBD_PERI_TEST4 0x3b

#define TCBD_MAIL_CTRL		 0x3c
#define TCBD_MAIL_FIFO_R	   0x3d
#define TCBD_MAIL_FIFO_R_LATCH 0x3d
#define TCBD_MAIL_FIFO_W	   0x3e
#define TCBD_MAIL_FIFO_W_LATCH 0x3e
#define TCBD_MAIL_FIFO_WIND	0x3f

#define TCBD_I2CMST_CTRL	   0x40
#define TCBD_I2CMST_FILTER	 0x41
#define TCBD_I2CMST_PRER_H	 0x42
#define TCBD_I2CMST_PRER_L	 0x43
#define TCBD_I2CMST_DEV_ADDR   0x44
#define TCBD_I2CMST_TGT_ADDR   0x45
#define TCBD_I2CMST_TXRX	   0x46
#define TCBD_I2CMST_AUTOCONFIG 0x47
#define TCBD_I2CMST_START	  0x48
#define TCBD_I2CMST_STAT0	  0x49
#define TCBD_I2CMST_STAT1	  0x4A

#define TCBD_STREAMMIX_CFG0 0x4D

#define TCBD_OBUFF_CONFIG			  0x4e
#define TCBD_OBUFF_INIT				0x4f
#define TCBD_OBUFF_A_SADDR			 0x50
#define TCBD_OBUFF_A_EADDR			 0x52
#define TCBD_OBUFF_A_FIFO_THR		  0x54
#define TCBD_OBUFF_A_CIRBUFF_DATA_ADDR 0x54
#define TCBD_OBUFF_A_FIFO_STAT		 0x56
#define TCBD_OBUFF_A_CIRBUFF_DATA_SIZE 0x56
#define TCBD_OBUFF_B_SADDR			 0x58
#define TCBD_OBUFF_B_EADDR			 0x5a
#define TCBD_OBUFF_B_FIFO_THR		  0x5c
#define TCBD_OBUFF_B_CIRBUFF_DATA_ADDR 0x5c
#define TCBD_OBUFF_B_FIFO_STAT		 0x5e
#define TCBD_OBUFF_B_CIRBUFF_DATA_SIZE 0x5e
#define TCBD_OBUFF_C_SADDR			 0x60
#define TCBD_OBUFF_C_EADDR			 0x62
#define TCBD_OBUFF_C_FIFO_THR		  0x64
#define TCBD_OBUFF_C_CIRBUFF_DATA_ADDR 0x64
#define TCBD_OBUFF_C_FIFO_STAT		 0x66
#define TCBD_OBUFF_C_CIRBUFF_DATA_SIZE 0x66
#define TCBD_OBUFF_D_SADDR			 0x68
#define TCBD_OBUFF_D_EADDR			 0x6a
#define TCBD_OBUFF_D_FIFO_THR		  0x6c
#define TCBD_OBUFF_D_CIRBUFF_DATA_ADDR 0x6c
#define TCBD_OBUFF_D_FIFO_STAT		 0x6e
#define TCBD_OBUFF_D_CIRBUFF_DATA_SIZE 0x6e

#define TCBD_RF_CFG0		  0x70
#define TCBD_RF_CFG1		  0x71
#define TCBD_RF_CFG2		  0x72
#define TCBD_RF_CFG3		  0x73
#define TCBD_RF_CFG4		  0x74
#define TCBD_RF_CFG5		  0x75
#define TCBD_RF_CFG6		  0x76
#define TCBD_OP_DEBUG0		0x78
#define TCBD_OP_DEBUG1		0x79
#define TCBD_OP_DEBUG2		0x7a
#define TCBD_OP_LDO_CONFIG	0x7b
#define TCBD_OP_XTAL_BIAS	 0x7c
#define TCBD_OP_XTAL_BIAS_KEY 0x7d
#define TCBD_OP_STATUS0	   0x7e
#define TCBD_OP_STATUS1	   0x7f


#define TCBD_SYS_COMP_DSP			   Bit1
#define TCBD_SYS_COMP_EP				Bit0
#define TCBD_SYS_COMP_ALL			   (Bit0|Bit1)

#define TCBD_IRQ_MODE_PAD_ENABLE	  Bit2
#define TCBD_IRQ_MODE_TRIGER		  Bit1
#define TCBD_IRQ_MODE_LEVEL		   BitNONE
#define TCBD_IRQ_MODE_RISING		  Bit0
#define TCBD_IRQ_MODE_FALLING		 BitNONE
#define TCBD_IRQ_EN_FIFODINIT		 Bit7
#define TCBD_IRQ_EN_FIFOCINIT		 Bit6
#define TCBD_IRQ_EN_FIFOBINIT		 Bit5
#define TCBD_IRQ_EN_FIFOAINIT		 Bit4
#define TCBD_IRQ_EN_DATAINT		   Bit3
#define TCBD_IRQ_EN_I2C			   Bit1
#define TCBD_IRQ_EN_MAILBOX		   Bit0

/*
 * @DEFGROUP INTERRUPTSTATUS
 * BIT POSTION OF INTERRUPT.
 * @{
 */
#define TCBD_IRQ_STAT_FIFODINIT	   Bit7
#define TCBD_IRQ_STAT_FIFOCINIT	   Bit6
#define TCBD_IRQ_STAT_FIFOBINIT	   Bit5
#define TCBD_IRQ_STAT_FIFOAINIT	   Bit4
#define TCBD_IRQ_STAT_DATAINT		 Bit3
#define TCBD_IRQ_STAT_I2C			 Bit1
#define TCBD_IRQ_STAT_MAILBOX		 Bit0
/**}@*/


/*
 * @defgroup InterruptClear
 * bit position of insterrupt clear. if you done processing interrupt
 * then you must clear corresponding bit.
 * @{
 */
#define TCBD_IRQ_STATCLR_FIFODINIT	Bit7
#define TCBD_IRQ_STATCLR_FIFOCINIT	Bit6
#define TCBD_IRQ_STATCLR_FIFOBINIT	Bit5
#define TCBD_IRQ_STATCLR_FIFOAINIT	Bit4
#define TCBD_IRQ_STATCLR_DATAINT	  Bit3
#define TCBD_IRQ_STATCLR_I2C		  Bit1
#define TCBD_IRQ_STATCLR_MAILBOX	  Bit0
#define TCBD_IRQ_STATCLR_ALL		  (Bit0|Bit1|Bit3|Bit4|Bit5|Bit6|Bit7)
/**}@*/


/*
 * @defgroup ErrorStatus
 * error status of interrupt.
 * if buffer overflow occurs then this bit is set.
 * @{
 */
#define TCBD_IRQ_ERROR_FIFOD		  Bit7
#define TCBD_IRQ_ERROR_FIFOC		  Bit6
#define TCBD_IRQ_ERROR_FIFOB		  Bit5
#define TCBD_IRQ_ERROR_FIFOA		  Bit4
#define TCBD_IRQ_ERROR_DATA		   Bit3
#define TCBD_IRQ_ERROR_I2C			Bit1
#define TCBD_IRQ_ERROR_MAILBOX		Bit0
/**}@*/
#define TCBD_I2CREPEAT_EN			 Bit2
#define TCBD_I2CREPEAT_MODE_CONTINUE  BitNONE
#define TCBD_I2CREPEAT_MODE_ONESHOT   Bit1
#define TCBD_I2CREPEAT_SCL_CMOS	   BitNONE
#define TCBD_I2CREPEAT_SCL_OPENDRAIN  Bit0
#define TCBD_I2CREPEAT_START		  Bit0
#define TCBD_I2CREPEAT_STARTCTRL	  0x4F

#define TCBD_CMDDMA_DMAEN			 Bit7
#define TCBD_CMDDMA_CIRCULARMODE	  Bit5
#define TCBD_CMDDMA_CRC32EN		   Bit4
#define TCBD_CMDDMA_ADDRFIX		   Bit3
#define TCBD_CMDDMA_WRITEMODE		 Bit2
#define TCBD_CMDDMA_READMODE		  BitNONE
#define TCBD_CMDDMA_BYTEMSB		   Bit1
#define TCBD_CMDDMA_BITMSB			Bit0
#define TCBD_CMDDMA_START_AUTOCLR	 Bit7
#define TCBD_CMDDMA_CRC32INIT_AUTOCLR Bit1
#define TCBD_CMDDMA_INIT_AUTOCLR	  Bit0

#define TCBD_TGTBUFF_DEFAULT		  BitNONE
#define TCBD_TGTBUFF_CIR_MODE_C	   (Bit0|Bit1)
#define TCBD_TGTBUFF_CIR_MODE_B	   Bit1
#define TCBD_TGTBUFF_CIR_MODE_A	   Bit0

#define TCBD_PERI_EN				  Bit7
#define TCBD_PERI_SEL_SPI			 Bit4
#define TCBD_PERI_SEL_TS			  Bit5
#define TCBD_PERI_SEL_HPI			 (Bit4|Bit5)
#define TCBD_PERI_SEL_OTHER		   BitNONE
#define TCBD_PERI_INIT_AUTOCLR		Bit1
#define TCBD_PERI_HEADER_ON		   Bit0
#define TCBD_PERI_SPI_TISSP		   Bit7
#define TCBD_PERI_SPI_MOTOROLA_SSP	BitNONE
#define TCBD_PERI_SPI_SLAVE		   Bit6
#define TCBD_PERI_SPI_MASTER		  BitNONE
#define TCBD_PERI_SPI_FASTON		  Bit5
#define TCBD_PERI_SPI_SIZE8BITB	   it0
#define TCBD_PERI_SPI_SIZE16BIT	   Bit1
#define TCBD_PERI_SPI_SIZE32BIT	   BitNONE
#define TCBD_PERI_TS_MSM_SLAVE		Bit1
#define TCBD_PERI_TS_NORMAL_SLAVE	 BitNONE
#define TCBD_PERI_TS_STS			  BitNONE
#define TCBD_PERI_TS_PTS			  Bit6
#define TCBD_PERI_TS_FASTON		   Bit5
#define TCBD_PERI_TS_TSCLKMASKON	  Bit4
#define TCBD_PERI_HPI_INTEL		   Bit7
#define TCBD_PERI_HPI_MOTOROLA		BitNONE
#define TCBD_PERI_HPI_BYTEMSB		 Bit6
#define TCBD_PERI_HPI_BITMSB		  Bit5
#define TCBD_PERI_SPI_CLKINIT_LOW	 BitNONE
#define TCBD_PERI_SPI_CLKINIT_HIGH	Bit7
#define TCBD_PERI_SPI_CLKPOL_POS	  BitNONE
#define TCBD_PERI_SPI_CLKPOL_NEG	  Bit6
#define TCBD_PERI_SPI_BYTEMSB1		Bit5
#define TCBD_PERI_SPI_BITMSB1		 Bit4
#define TCBD_PERI_TS_CLKPHASE_POS	 BitNONE
#define TCBD_PERI_TS_CLKPHASE_NEG	 Bit7
#define TCBD_PERI_TS_SYNC_ACTIVEHIGH  BitNONE
#define TCBD_PERI_TS_SYNC_ACTIVELOW   Bit6
#define TCBD_PERI_TS_ENPOL_ACTIVEHIGH BitNONE
#define TCBD_PERI_TS_ENPOL_ACTIVELOW  Bit5
#define TCBD_PERI_TS_STREAM_WAIT_ON   Bit4
#define TCBD_PERI_TS_BYTEMSB		  Bit7
#define TCBD_PERI_TS_BITMSB		   Bit6
#define TCBD_PERI_TS_ERR_POL		  Bit1
#define TCBD_PERI_TS_ERR_SIG_ON	   Bit0
#define TCBD_PERI_TS_ERR_SIG_OFF	  BitNONE
#define TCBD_PERI_TEST0_START		 Bit7
#define TCBD_PERI_TEST0_CIRCULAR_EN   Bit2
#define TCBD_PERI_TEST0_TESTMODE	  Bit1
#define TCBD_PERI_TEST0_FIXMODE	   Bit0

#define TCBD_MAIL_INIT				Bit6
#define TCBD_MAIL_HOSTMAILPOST		Bit5
#define TCBD_MAIL_OPACCEPTEN		  Bit4

#define TCBD_I2CMST_INIT				   Bit7
#define TCBD_I2CMST_EN					 Bit2
#define TCBD_I2CMST_NORMALMODE			 BitNONE
#define TCBD_I2CMST_AUTOMODE			   Bit1
#define TCBD_I2CMST_SCL_CMOS			   BitNONE
#define TCBD_I2CMST_SCL_OPENDRAIN		  Bit0
#define TCBD_I2CMST_DEV_ADDR_WRITE		 BitNONE
#define TCBD_I2CMST_DEV_ADDR_READ		  Bit0
#define TCBD_I2CMST_AUTOCONFIG_CMDQUE_ADD  Bit7
#define TCBD_I2CMST_AUTOCONFIG_CMDQUE_INIT Bit6
#define TCBD_I2CMST_AUTOCONFIG_CMDQUE_CNT4 Bit4
#define TCBD_I2CMST_AUTOCONFIG_CMDQUE_CNT3 Bit3
#define TCBD_I2CMST_AUTOCONFIG_CMDQUE_CNT2 Bit2
#define TCBD_I2CMST_AUTOCONFIG_CMDQUE_CNT1 Bit1
#define TCBD_I2CMST_AUTOCONFIG_CMDQUE_CNT0 Bit0
#define TCBD_I2CMST_AUTOSTART			  Bit7
#define TCBD_I2CMST_NORMALSTART			Bit4
#define TCBD_I2CMST_NORMALSTOP			 Bit3
#define TCBD_I2CMST_NORMALREAD			 Bit2
#define TCBD_I2CMST_NORMALWRITE			Bit1
#define TCBD_I2CMST_NORMALACK			  Bit0
#define TCBD_I2CMST_STAT0_NORMAL_ACKIN	 Bit7
#define TCBD_I2CMST_STAT0_NORMAL_DONE	  Bit6
#define TCBD_I2CMST_STAT0_ARBIT_LOST	   Bit5
#define TCBD_I2CMST_STAT0_SDA			  Bit1
#define TCBD_I2CMST_STAT0_SCL			  Bit0
#define TCBD_I2CMST_STAT1_AUTOERR		  Bit7
#define TCBD_I2CMST_STAT1_AUTODONE		 Bit6
#define TCBD_I2CMST_STAT1_ARBIT_LOST	   Bit5
#define TCBD_I2CMST_STAT1_RXRFIFOCNT4	  Bit4
#define TCBD_I2CMST_STAT1_RXRFIFOCNT3	  Bit3
#define TCBD_I2CMST_STAT1_RXRFIFOCNT2	  Bit2
#define TCBD_I2CMST_STAT1_RXRFIFOCNT1	  Bit1
#define TCBD_I2CMST_STAT1_RXRFIFOCNT0	  Bit0

#define TCBD_RF_MANAGE_ENABLE	Bit1
#define TCBD_RF_MANAGE_DISABLE   BitNONE
#define TCBD_RF_READ			 BitNONE
#define TCBD_RF_WRITE			Bit0
#define TCBD_RF_ACTION		   Bit0

#define TCBD_OBUFF_CONFIG_BUFF_D_EN	   Bit7
#define TCBD_OBUFF_CONFIG_BUFF_C_EN	   Bit6
#define TCBD_OBUFF_CONFIG_BUFF_B_EN	   Bit5
#define TCBD_OBUFF_CONFIG_BUFF_A_EN	   Bit4
#define TCBD_OBUFF_CONFIG_BUFF_D_CIRCULAR BitNONE
#define TCBD_OBUFF_CONFIG_BUFF_C_CIRCULAR BitNONE
#define TCBD_OBUFF_CONFIG_BUFF_B_CIRCULAR BitNONE
#define TCBD_OBUFF_CONFIG_BUFF_A_CIRCULAR BitNONE
#define TCBD_OBUFF_CONFIG_BUFF_D_FIFO	 Bit3
#define TCBD_OBUFF_CONFIG_BUFF_C_FIFO	 Bit2
#define TCBD_OBUFF_CONFIG_BUFF_B_FIFO	 Bit1
#define TCBD_OBUFF_CONFIG_BUFF_A_FIFO	 Bit0
#define TCBD_OBUFF_DBUFF_STATLATCH		Bit7
#define TCBD_OBUFF_CBUFF_STATLATCH		Bit6
#define TCBD_OBUFF_BBUFF_STATLATCH		Bit5
#define TCBD_OBUFF_ABUFF_STATLATCH		Bit4
#define TCBD_OBUFF_BUFF_D_INIT			Bit3
#define TCBD_OBUFF_BUFF_C_INIT			Bit2
#define TCBD_OBUFF_BUFF_B_INIT			Bit1
#define TCBD_OBUFF_BUFF_A_INIT			Bit0

/**
 * @defgroup StreamDataConfig
 * You can mask unused buffer by @ref tcbd_init_stream_data_config
 */
/** @{*/
#define STREAM_DATA_ENABLE  Bit7
#define STREAM_HEADER_ON	Bit6
#define STREAM_MASK_BUFFERD Bit3
#define STREAM_MASK_BUFFERC Bit2
#define STREAM_MASK_BUFFERB Bit1
#define STREAM_MASK_BUFFERA Bit0

#define STREAM_BUFFER_ALL (\
	STREAM_DATA_ENABLE  |  \
	STREAM_HEADER_ON	|  \
	STREAM_MASK_BUFFERD |  \
	STREAM_MASK_BUFFERC |  \
	STREAM_MASK_BUFFERB |  \
	STREAM_MASK_BUFFERA)
/**@}*/

#define STREAM_CMD_FIFO_MSB	 Bit0
#define STREAM_CMD_FIFO_ENABLE  Bit1
#define STREAM_CMD_FIFO_INIT	Bit4
#define STREAM_LATCH_TOTAL_SIZE Bit5

/**
 * @defgroup TypesOfStream
 * Types of stream.
 * You can change the type of stream by @ref tcbd_change_stream_type
 */
/** @{*/
#define STREAM_TYPE_GARBAGE	Bit7
#define STREAM_TYPE_DAB_PLUS   Bit6
#define STREAM_TYPE_EPM		Bit5
#define STREAM_TYPE_DMB		Bit4
#define STREAM_TYPE_DAB		Bit3
#define STREAM_TYPE_FIC		Bit2
#define STREAM_TYPE_FIB_FILTER Bit1
#define STREAM_TYPE_STATUS	 Bit0

#define STREAM_TYPE_ALL	  \
	(STREAM_TYPE_DAB_PLUS  |\
	STREAM_TYPE_EPM		|\
	STREAM_TYPE_DMB		|\
	STREAM_TYPE_DAB		|\
	STREAM_TYPE_FIC		|\
	STREAM_TYPE_FIB_FILTER |\
	STREAM_TYPE_STATUS)

#define STREAM_SET_GARBAGE(_garbage)\
	(((_garbage >> 2) << 16) | STREAM_TYPE_GARBAGE)
/**@}*/

#define IRQ_ERR_MAILBOX Bit0
#define IRQ_ERR_I2C	 Bit1
#define IRQ_ERR_DATA	Bit3
#define IRQ_ERR_BUFFERA Bit4
#define IRQ_ERR_BUFFERB Bit5
#define IRQ_ERR_BUFFERC Bit6
#define IRQ_ERR_BUFFERD Bit7

#define MB_CMD_READ	 0
#define MB_CMD_WRITE 1

#define MB_ERR_OK		0x00
#define MB_ERR_CMD		0x01
#define MB_ERR_PARA		0x02

#define MBCMD_SYS		   (0x00<<11)
#define MBPARA_SYS_WARMBOOT (MBCMD_SYS | 0x00)
#define MBPARA_SYS_START	(MBCMD_SYS | 0x01)
#define MBPARA_SYS_SYNC	 (MBCMD_SYS | 0x02)

#define MBPARA_SYS_DAB_STREAM_SET	(MBCMD_SYS | 0x0D)
#define MBPARA_SYS_DAB_STREAM_ON	 (MBCMD_SYS | 0x0E)
#define MBPARA_SYS_DAB_RECONFIG_CLR  (MBCMD_SYS | 0x12)

#define MBPARA_SYS_DAB_MCI_UPDATE	(MBCMD_SYS | 0x0c)
#define MBPARA_SYS_DAB_DP_FLT		(MBCMD_SYS | 0x0f)
#define MBPARA_SYS_DAB_RESYNC_PARAM  (MBCMD_SYS | 0x10)
#define MBPARA_SYS_DAB_RESYNC_RESULT (MBCMD_SYS | 0x11)
#define MBPARA_SYS_DAB_RF_FREQ_NO	(MBCMD_SYS | 0x20)
#define MBPARA_SYS_DAB_RF_FREQ	   (MBCMD_SYS | 0x21)
#define MBPARA_SYS_DAB_ASM_VER	   (MBCMD_SYS | 0xff)

#define MBCMD_AGC_DAB	  (0x01<<11)
#define MBCMD_AGC_DAB_CFG  (MBCMD_AGC_DAB | 0)
#define MBCMD_AGC_DAB_GAIN (MBCMD_AGC_DAB | 1)
#define MBCMD_AGC_DAB_JAM  (MBCMD_AGC_DAB | 2)
#define MBCMD_AGC_DAB_3	(MBCMD_AGC_DAB | 3)
#define MBCMD_AGC_DAB_4	(MBCMD_AGC_DAB | 4)
#define MBCMD_AGC_DAB_5	(MBCMD_AGC_DAB | 5)
#define MBCMD_AGC_DAB_6	(MBCMD_AGC_DAB | 6)
#define MBCMD_AGC_DAB_7	(MBCMD_AGC_DAB | 7)
#define MBCMD_AGC_DAB_8	(MBCMD_AGC_DAB | 8)
#define MBCMD_AGC_DAB_9	(MBCMD_AGC_DAB | 9)
#define MBCMD_AGC_DAB_A	(MBCMD_AGC_DAB | 10)
#define MBCMD_AGC_DAB_B	(MBCMD_AGC_DAB | 11)
#define MBCMD_AGC_DAB_C	(MBCMD_AGC_DAB | 12)
#define MBCMD_AGC_DAB_D	(MBCMD_AGC_DAB | 13)
#define MBCMD_AGC_DAB_E	(MBCMD_AGC_DAB | 14)
#define MBCMD_AGC_DAB_F	(MBCMD_AGC_DAB | 15)

#define MBCMD_FP_DAB	   (0x02 << 11)
#define MBCMD_FP_DAB_CFG   (MBCMD_FP_DAB | 0)
#define MBCMD_FP_DAB_IIR   (MBCMD_FP_DAB | 1)

#define MBCMD_CTO_DAB		(0x04<<11)
#define MBCMD_CTO_DAB_PARAM  (MBCMD_CTO_DAB | 0x00)
#define MBCMD_CTO_DAB_RESULT (MBCMD_CTO_DAB | 0x01)

#define MBCMD_CFO_DAB		(0x06<<11)
#define MBCMD_CFO_DAB_PARAM  (MBCMD_CFO_DAB | 0x00)
#define MBCMD_CFO_DAB_RESULT (MBCMD_CFO_DAB | 0x01)

#define MBCMD_FFO_DAB		(0x07<<11)
#define MBCMD_FTO_DAB		(0x0A<<11)

#define MBCMD_SFE_DAB		(0x0B<<11)
#define MBCMD_SFE_DAB_PARAM  (MBCMD_SFE_DAB | 0x00)
#define MBCMD_SFE_DAB_RESULT (MBCMD_SFE_DAB | 0x01)

#define MBCMD_CIR_DAB		(0x0C<<11)
#define MBCMD_CIR_DAB_PARAM  (MBCMD_CIR_DAB | 0x00)
#define MBCMD_CIR_DAB_RESULT (MBCMD_CIR_DAB | 0x01)

#define MBCMD_DP_DAB		 (0x10<<11)
#define MBCMD_DP_DAB_RESULT  (MBCMD_DP_DAB | 0x00)
#define MBCMD_DP_DAB_CFG1	(MBCMD_DP_DAB | 0x01)
#define MBCMD_DP_DAB_CFG2	(MBCMD_DP_DAB | 0x02)

#define MBCMD_DEBUG_DAB	  (0x1F<<11)

#define MBPARA_SYS_VERSION   (MBCMD_SYS | 0xFF)

#define MBPARA_SYS_NUM_FREQ   (MBCMD_SYS | 0x20)
#define MBPARA_SYS_FREQ_0_6   (MBCMD_SYS | 0x21)
#define MBPARA_SYS_FREQ_7_13  (MBCMD_SYS | 0x22)
#define MBPARA_SYS_FREQ_14_20 (MBCMD_SYS | 0x23)
#define MBPARA_SYS_FREQ_21_27 (MBCMD_SYS | 0x24)

#define MBCMD_SEL_CH_INFO		 (0x13<<11)
#define MBPARA_SEL_CH_INFO_PRAM   (MBCMD_SEL_CH_INFO | 0x00)
#define MBPARA_SEL_CH_INFO_RESULT (MBCMD_SEL_CH_INFO | 0x01)

#define MBCMD_VARI_OSC		(0x15<<11)
#define MBCMD_VARI_OSC_SPUR   (MBCMD_VARI_OSC | 0x00)
#define MBCMD_VARI_OSC_RCSTEP (MBCMD_VARI_OSC | 0x01)
#define MBCMD_VARI_OSC_RFPLL  (MBCMD_VARI_OSC | 0x02)

#ifndef BITSET
#define BITSET(X, MASK) ((X) |= (u32)(MASK))
#endif

#ifndef BITSCLR
#define BITSCLR(X, SMASK, CMASK)\
	((X) = ((\
		((u32)(X)) |\
		((u32)(SMASK))) & ~((u32)(CMASK))))
#endif
#ifndef BITCSET
#define BITCSET(X, CMASK, SMASK)\
	((X) = (\
		(((u32)(X)) & ~((u32)(CMASK))) |\
		((u32)(SMASK))))
#endif
#ifndef BITCLR
#define BITCLR(X, MASK) ((X) &= ~((u32)(MASK)))
#endif
#ifndef BITXOR
#define BITXOR(X, MASK) ((X) ^= (u32)(MASK))
#endif
#ifndef ISZERO
#define ISZERO(X, MASK)\
	(!(((u32)(X)) & ((u32)(MASK))))
#endif

#ifndef ISSET
#define ISSET(X, MASK) ((u32)(X) & ((u32)(MASK)))
#endif

#endif /*__TCBD_DRV_REGISTER_H__*/