11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * dib3000mb_priv.h
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2004 Patrick Boettcher (patrick.boettcher@desy.de)
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	This program is free software; you can redistribute it and/or
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	modify it under the terms of the GNU General Public License as
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	published by the Free Software Foundation, version 2.
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * for more information see dib3000mb.c .
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __DIB3000MB_PRIV_H_INCLUDED__
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __DIB3000MB_PRIV_H_INCLUDED__
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher/* info and err, taken from usb.h, if there is anything available like by default. */
1774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define err(format, arg...)  printk(KERN_ERR     "dib3000: " format "\n" , ## arg)
1874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define info(format, arg...) printk(KERN_INFO    "dib3000: " format "\n" , ## arg)
1974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define warn(format, arg...) printk(KERN_WARNING "dib3000: " format "\n" , ## arg)
2074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
2174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher/* handy shortcuts */
2274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define rd(reg) dib3000_read_reg(state,reg)
2374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
2474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define wr(reg,val) if (dib3000_write_reg(state,reg,val)) \
2574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	{ err("while sending 0x%04x to 0x%04x.",val,reg); return -EREMOTEIO; }
2674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
2774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define wr_foreach(a,v) { int i; \
2874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	if (sizeof(a) != sizeof(v)) \
2974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher		err("sizeof: %zu %zu is different",sizeof(a),sizeof(v));\
3074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	for (i=0; i < sizeof(a)/sizeof(u16); i++) \
3174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher		wr(a[i],v[i]); \
3274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	}
3374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
3474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define set_or(reg,val) wr(reg,rd(reg) | val)
3574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
3674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define set_and(reg,val) wr(reg,rd(reg) & val)
3774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
3874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher/* debug */
3974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
4074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define dprintk(level,args...) \
4174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher    do { if ((debug & level)) { printk(args); } } while (0)
4274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
4374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher/* mask for enabling a specific pid for the pid_filter */
4474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_ACTIVATE_PID_FILTERING	(0x2000)
4574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
4674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher/* common values for tuning */
4774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_ALPHA_0					(     0)
4874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_ALPHA_1					(     1)
4974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_ALPHA_2					(     2)
5074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_ALPHA_4					(     4)
5174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
5274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_CONSTELLATION_QPSK		(     0)
5374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_CONSTELLATION_16QAM		(     1)
5474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_CONSTELLATION_64QAM		(     2)
5574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
5674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_GUARD_TIME_1_32			(     0)
5774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_GUARD_TIME_1_16			(     1)
5874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_GUARD_TIME_1_8			(     2)
5974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_GUARD_TIME_1_4			(     3)
6074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
6174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_TRANSMISSION_MODE_2K	(     0)
6274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_TRANSMISSION_MODE_8K	(     1)
6374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
6474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_SELECT_LP				(     0)
6574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_SELECT_HP				(     1)
6674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
6774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_FEC_1_2					(     1)
6874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_FEC_2_3					(     2)
6974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_FEC_3_4					(     3)
7074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_FEC_5_6					(     5)
7174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_FEC_7_8					(     7)
7274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
7374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_HRCH_OFF				(     0)
7474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_HRCH_ON					(     1)
7574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
7674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_DDS_INVERSION_OFF		(     0)
7774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_DDS_INVERSION_ON		(     1)
7874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
7974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_TUNER_WRITE_ENABLE(a)	(0xffff & (a << 8))
8074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_TUNER_WRITE_DISABLE(a)	(0xffff & ((a << 8) | (1 << 7)))
8174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
8274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_REG_MANUFACTOR_ID		(  1025)
8374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_I2C_ID_DIBCOM			(0x01b3)
8474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
8574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000_REG_DEVICE_ID			(  1026)
8674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000MB_DEVICE_ID				(0x3000)
8774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000MC_DEVICE_ID				(0x3001)
8874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher#define DIB3000P_DEVICE_ID				(0x3002)
8974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
9074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher/* frontend state */
9174340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcherstruct dib3000_state {
9274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	struct i2c_adapter* i2c;
9374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
9474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher/* configuration settings */
9574340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	struct dib3000_config config;
9674340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
9774340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	struct dvb_frontend frontend;
9874340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	int timing_offset;
9974340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	int timing_offset_comp_done;
10074340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
101c6f56e7d794cba022353d464dfa3383d1b3e0125Mauro Carvalho Chehab	u32 last_tuned_bw;
10274340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher	u32 last_tuned_freq;
10374340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher};
10474340b0a8bc60b400c7e5fe4950303aa6f914d16Patrick Boettcher
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* register addresses and some of their default values */
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* restart subsystems */
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_RESTART			(     0)
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_RESTART_OFF			(     0)
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_RESTART_AUTO_SEARCH		(1 << 1)
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_RESTART_CTRL				(1 << 2)
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_RESTART_AGC				(1 << 3)
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* FFT size */
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_FFT				(     1)
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Guard time */
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_GUARD_TIME		(     2)
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* QAM */
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_QAM				(     3)
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Alpha coefficient high priority Viterbi algorithm */
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_VIT_ALPHA			(     4)
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* spectrum inversion */
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_DDS_INV			(     5)
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* DDS frequency value (IF position) ad ? values don't match reg_3000mb.txt */
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_DDS_FREQ_MSB		(     6)
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_DDS_FREQ_LSB		(     7)
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_DDS_FREQ_MSB				(   178)
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_DDS_FREQ_LSB				(  8990)
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* timing frequency (carrier spacing) */
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_timing_freq[] = { 8,9 };
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_timing_freq[][2] = {
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 126 , 48873 }, /* 6 MHz */
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 147 , 57019 }, /* 7 MHz */
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 168 , 65164 }, /* 8 MHz */
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* impulse noise parameter */
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 36 ??? */
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_impulse_noise[] = { 10,11,12,15,36 };
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsenum dib3000mb_impulse_noise_type {
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	DIB3000MB_IMPNOISE_OFF,
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	DIB3000MB_IMPNOISE_MOBILE,
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	DIB3000MB_IMPNOISE_FIXED,
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	DIB3000MB_IMPNOISE_DEFAULT
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_impulse_noise_values[][5] = {
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0x0000, 0x0004, 0x0014, 0x01ff, 0x0399 }, /* off */
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0x0001, 0x0004, 0x0014, 0x01ff, 0x037b }, /* mobile */
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0x0001, 0x0004, 0x0020, 0x01bd, 0x0399 }, /* fixed */
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0x0000, 0x0002, 0x000a, 0x01ff, 0x0399 }, /* default */
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Dual Automatic-Gain-Control
1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * - gains RF in tuner (AGC1)
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * - gains IF after filtering (AGC2)
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* also from 16 to 18 */
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_agc_gain[] = {
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	19,20,21,22,23,24,25,26,27,28,29,30,31,32
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_default_agc_gain[] =
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0x0001, 52429,   623, 128, 166, 195, 61,   /* RF ??? */
1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  0x0001, 53766, 38011,   0,  90,  33, 23 }; /* IF ??? */
1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* phase noise */
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 36 is set when setting the impulse noise */
1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_phase_noise[] = { 33,34,35,37,38 };
1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_default_noise_phase[] = { 2, 544, 0, 5, 4 };
1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* lock duration */
1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_lock_duration[] = { 39,40 };
1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_default_lock_duration[] = { 135, 135 };
1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* AGC loop bandwidth */
1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_agc_bandwidth[] = { 43,44,45,46,47,48,49,50 };
1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_agc_bandwidth_low[]  =
1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 2088, 10, 2088, 10, 3448, 5, 3448, 5 };
1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_agc_bandwidth_high[] =
1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 2349,  5, 2349,  5, 2586, 2, 2586, 2 };
1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * lock0 definition (coff_lock)
1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_LOCK0_MASK		(    51)
2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_LOCK0_DEFAULT				(     4)
2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * lock1 definition (cpil_lock)
2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * for auto search
2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * which values hide behind the lock masks
2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_LOCK1_MASK		(    52)
2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_LOCK1_SEARCH_4			(0x0004)
2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_LOCK1_SEARCH_2048			(0x0800)
2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_LOCK1_DEFAULT				(0x0001)
2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * lock2 definition (fec_lock) */
2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_LOCK2_MASK		(    53)
2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_LOCK2_DEFAULT				(0x0080)
2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SEQ ? what was that again ... :)
2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * changes when, inversion, guard time and fft is
2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * either automatically detected or not
2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_SEQ				(    54)
2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* bandwidth */
2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_bandwidth[] = { 55,56,57,58,59,60,61,62,63,64,65,66,67 };
2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_bandwidth_6mhz[] =
2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0, 33, 53312, 112, 46635, 563, 36565, 0, 1000, 0, 1010, 1, 45264 };
2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_bandwidth_7mhz[] =
2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0, 28, 64421,  96, 39973, 483,  3255, 0, 1000, 0, 1010, 1, 45264 };
2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_bandwidth_8mhz[] =
2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ 0, 25, 23600,  84, 34976, 422, 43808, 0, 1000, 0, 1010, 1, 45264 };
2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_68				(    68)
2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_68						(     0)
2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_69				(    69)
2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_69						(     0)
2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_71				(    71)
2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_71						(     0)
2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_77				(    77)
2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_77						(     6)
2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_78				(    78)
2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_78						(0x0080)
2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* isi */
2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_ISI				(    79)
2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_ISI_ACTIVATE				(     0)
2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_ISI_INHIBIT				(     1)
2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* sync impovement */
2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_SYNC_IMPROVEMENT	(    84)
2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_SYNC_IMPROVE_2K_1_8		(     3)
2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_SYNC_IMPROVE_DEFAULT		(     0)
2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* phase noise compensation inhibition */
2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_PHASE_NOISE		(    87)
2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_PHASE_NOISE_DEFAULT	(     0)
2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_92				(    92)
2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_92						(0x0080)
2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_96				(    96)
2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_96						(0x0010)
2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_97				(    97)
2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_97						(0x0009)
2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* mobile mode ??? */
2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MOBILE_MODE		(   101)
2751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MOBILE_MODE_ON			(     1)
2761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MOBILE_MODE_OFF			(     0)
2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_106			(   106)
2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_106					(0x0080)
2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_107			(   107)
2821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_107					(0x0080)
2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_108			(   108)
2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_108					(0x0080)
2861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* fft */
2881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_121			(   121)
2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_121_2K				(     7)
2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_121_DEFAULT			(     5)
2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNK_122			(   122)
2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_UNK_122					(  2867)
2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* QAM for mobile mode */
2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MOBILE_MODE_QAM	(   126)
2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MOBILE_MODE_QAM_64		(     3)
2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MOBILE_MODE_QAM_QPSK_16	(     1)
2991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MOBILE_MODE_QAM_OFF		(     0)
3001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * data diversity when having more than one chip on-board
3031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * see also DIB3000MB_OUTPUT_MODE_DATA_DIVERSITY
3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_DATA_IN_DIVERSITY		(   127)
3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_DATA_DIVERSITY_IN_OFF			(     0)
3071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_DATA_DIVERSITY_IN_ON			(     2)
3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* vit hrch */
3101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_VIT_HRCH			(   128)
3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* vit code rate */
3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_VIT_CODE_RATE		(   129)
3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* vit select hp */
3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_VIT_HP			(   130)
3171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* time frame for Bit-Error-Rate calculation */
3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_BERLEN			(   135)
3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_BERLEN_LONG				(     0)
3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_BERLEN_DEFAULT			(     1)
3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_BERLEN_MEDIUM				(     2)
3231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_BERLEN_SHORT				(     3)
3241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 142 - 152 FIFO parameters
3261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * which is what ?
3271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_FIFO_142			(   142)
3301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_FIFO_142					(     0)
3311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* MPEG2 TS output mode */
3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MPEG2_OUT_MODE	(   143)
3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MPEG2_OUT_MODE_204		(     0)
3351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MPEG2_OUT_MODE_188		(     1)
3361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_PID_PARSE			(   144)
3381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_PID_PARSE_INHIBIT		(     0)
3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_PID_PARSE_ACTIVATE	(     1)
3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_FIFO				(   145)
3421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_FIFO_INHIBIT				(     1)
3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_FIFO_ACTIVATE				(     0)
3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_FIFO_146			(   146)
3461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_FIFO_146					(     3)
3471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_FIFO_147			(   147)
3491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_FIFO_147					(0x0100)
3501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * pidfilter
3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * it is not a hardware pidfilter but a filter which drops all pids
3541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * except the ones set. Necessary because of the limited USB1.1 bandwidth.
3551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * regs 153-168
3561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_FIRST_PID			(   153)
3591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_NUM_PIDS				(    16)
3601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * output mode
3631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * USB devices have to use 'slave'-mode
3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * see also DIB3000MB_REG_ELECT_OUT_MODE
3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_OUTPUT_MODE		(   169)
3671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_OUTPUT_MODE_GATED_CLK		(     0)
3681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_OUTPUT_MODE_CONT_CLK		(     1)
3691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_OUTPUT_MODE_SERIAL		(     2)
3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_OUTPUT_MODE_DATA_DIVERSITY	(     5)
3711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_OUTPUT_MODE_SLAVE			(     6)
3721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* irq event mask */
3741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_IRQ_EVENT_MASK		(   170)
3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_IRQ_EVENT_MASK				(     0)
3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* filter coefficients */
3781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_reg_filter_coeffs[] = {
3791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	171, 172, 173, 174, 175, 176, 177, 178,
3801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	179, 180, 181, 182, 183, 184, 185, 186,
3811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	188, 189, 190, 191, 192, 194
3821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic u16 dib3000mb_filter_coeffs[] = {
3851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	 226,  160,   29,
386776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach	 979,  998,   19,
3871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  22, 1019, 1006,
3881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	1022,   12,    6,
3891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	1017, 1017,    3,
3901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	   6,       1019,
3911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	1021,    2,    3,
3921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	   1,          0,
3931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * mobile algorithm (when you are moving with your device)
3971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * but not faster than 90 km/h
3981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MOBILE_ALGO		(   195)
4001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MOBILE_ALGO_ON			(     0)
4011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MOBILE_ALGO_OFF			(     1)
4021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* multiple demodulators algorithm */
4041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MULTI_DEMOD_MSB	(   206)
4051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MULTI_DEMOD_LSB	(   207)
4061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* terminator, no more demods */
4081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MULTI_DEMOD_MSB			( 32767)
4091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_MULTI_DEMOD_LSB			(  4095)
4101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* bring the device into a known  */
4121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_RESET_DEVICE		(  1024)
4131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_RESET_DEVICE				(0x812c)
4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_RESET_DEVICE_RST			(     0)
4151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* hardware clock configuration */
4171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_CLOCK				(  1027)
4181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_CLOCK_DEFAULT				(0x9000)
4191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_CLOCK_DIVERSITY			(0x92b0)
4201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* power down config */
4221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_POWER_CONTROL		(  1028)
4231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_POWER_DOWN				(     1)
4241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_POWER_UP					(     0)
4251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* electrical output mode */
4271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_ELECT_OUT_MODE	(  1029)
4281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_ELECT_OUT_MODE_OFF		(     0)
4291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_ELECT_OUT_MODE_ON			(     1)
4301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* set the tuner i2c address */
4321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TUNER				(  1089)
4331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* monitoring registers (read only) */
4351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* agc loop locked (size: 1) */
4371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_AGC_LOCK			(   324)
4381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* agc power (size: 16) */
4401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_AGC_POWER			(   325)
4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* agc1 value (16) */
4431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_AGC1_VALUE		(   326)
4441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* agc2 value (16) */
4461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_AGC2_VALUE		(   327)
4471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* total RF power (16), can be used for signal strength */
4491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_RF_POWER			(   328)
4501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* dds_frequency with offset (24) */
4521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_DDS_VALUE_MSB		(   339)
4531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_DDS_VALUE_LSB		(   340)
4541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* timing offset signed (24) */
4561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TIMING_OFFSET_MSB	(   341)
4571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TIMING_OFFSET_LSB	(   342)
4581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* fft start position (13) */
4601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_FFT_WINDOW_POS	(   353)
4611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* carriers locked (1) */
4631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_CARRIER_LOCK		(   355)
4641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* noise power (24) */
4661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_NOISE_POWER_MSB	(   372)
4671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_NOISE_POWER_LSB	(   373)
4681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MOBILE_NOISE_MSB	(   374)
4701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MOBILE_NOISE_LSB	(   375)
4711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * signal power (16), this and the above can be
4741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * used to calculate the signal/noise - ratio
4751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_SIGNAL_POWER		(   380)
4771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* mer (24) */
4791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MER_MSB			(   381)
4801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_MER_LSB			(   382)
4811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Transmission Parameter Signalling (TPS)
4841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the following registers can be used to get TPS-information.
4851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The values are according to the DVB-T standard.
4861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TPS locked (1) */
4891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_LOCK			(   394)
4901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* QAM from TPS (2) (values according to DIB3000MB_REG_QAM) */
4921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_QAM			(   398)
4931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* hierarchy from TPS (1) */
4951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_HRCH			(   399)
4961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* alpha from TPS (3) (values according to DIB3000MB_REG_VIT_ALPHA) */
4981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_VIT_ALPHA		(   400)
4991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* code rate high priority from TPS (3) (values according to DIB3000MB_FEC_*) */
5011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_CODE_RATE_HP	(   401)
5021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* code rate low priority from TPS (3) if DIB3000MB_REG_TPS_VIT_ALPHA */
5041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_CODE_RATE_LP	(   402)
5051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* guard time from TPS (2) (values according to DIB3000MB_REG_GUARD_TIME */
5071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_GUARD_TIME	(   403)
5081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* fft size from TPS (2) (values according to DIB3000MB_REG_FFT) */
5101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_FFT			(   404)
5111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* cell id from TPS (16) */
5131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_CELL_ID		(   406)
5141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TPS (68) */
5161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_1				(   408)
5171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_2				(   409)
5181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_3				(   410)
5191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_4				(   411)
5201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TPS_5				(   412)
5211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* bit error rate (before RS correction) (21) */
5231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_BER_MSB			(   414)
5241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_BER_LSB			(   415)
5251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* packet error rate (uncorrected TS packets) (16) */
5271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_PACKET_ERROR_RATE	(   417)
5281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* uncorrected packet count (16) */
5301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_UNC				(   420)
5311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* viterbi locked (1) */
5331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_VIT_LCK			(   421)
5341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* viterbi inidcator (16) */
5361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_VIT_INDICATOR		(   422)
5371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* transport stream sync lock (1) */
5391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TS_SYNC_LOCK		(   423)
5401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* transport stream RS lock (1) */
5421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_TS_RS_LOCK		(   424)
5431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* lock mask 0 value (1) */
5451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_LOCK0_VALUE		(   425)
5461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* lock mask 1 value (1) */
5481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_LOCK1_VALUE		(   426)
5491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* lock mask 2 value (1) */
5511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_LOCK2_VALUE		(   427)
5521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* interrupt pending for auto search */
5541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIB3000MB_REG_AS_IRQ_PENDING	(   434)
5551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
557