blob: 4a6f801701a738970dcd04f8c88b2e77a52c723f (
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
|
/*
* NXP TDA18250BHN silicon tuner driver
*
* Copyright (C) 2017 Olli Salonen <olli.salonen@iki.fi>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* 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.
*/
#ifndef TDA18250_PRIV_H
#define TDA18250_PRIV_H
#include "tda18250.h"
#define R00_ID1 0x00 /* ID byte 1 */
#define R01_ID2 0x01 /* ID byte 2 */
#define R02_ID3 0x02 /* ID byte 3 */
#define R03_THERMO1 0x03 /* Thermo byte 1 */
#define R04_THERMO2 0x04 /* Thermo byte 2 */
#define R05_POWER1 0x05 /* Power byte 1 */
#define R06_POWER2 0x06 /* Power byte 2 */
#define R07_GPIO 0x07 /* GPIO */
#define R08_IRQ1 0x08 /* IRQ */
#define R09_IRQ2 0x09 /* IRQ */
#define R0A_IRQ3 0x0a /* IRQ */
#define R0B_IRQ4 0x0b /* IRQ */
#define R0C_AGC11 0x0c /* AGC1 byte 1 */
#define R0D_AGC12 0x0d /* AGC1 byte 2 */
#define R0E_AGC13 0x0e /* AGC1 byte 3 */
#define R0F_AGC14 0x0f /* AGC1 byte 4 */
#define R10_LT1 0x10 /* LT byte 1 */
#define R11_LT2 0x11 /* LT byte 2 */
#define R12_AGC21 0x12 /* AGC2 byte 1 */
#define R13_AGC22 0x13 /* AGC2 byte 2 */
#define R14_AGC23 0x14 /* AGC2 byte 3 */
#define R15_AGC24 0x15 /* AGC2 byte 4 */
#define R16_AGC25 0x16 /* AGC2 byte 5 */
#define R17_AGC31 0x17 /* AGC3 byte 1 */
#define R18_AGC32 0x18 /* AGC3 byte 2 */
#define R19_AGC33 0x19 /* AGC3 byte 3 */
#define R1A_AGCK 0x1a
#define R1B_GAIN1 0x1b
#define R1C_GAIN2 0x1c
#define R1D_GAIN3 0x1d
#define R1E_WI_FI 0x1e /* Wireless Filter */
#define R1F_RF_BPF 0x1f /* RF Band Pass Filter */
#define R20_IR_MIX 0x20 /* IR Mixer */
#define R21_IF_AGC 0x21
#define R22_IF1 0x22 /* IF byte 1 */
#define R23_IF2 0x23 /* IF byte 2 */
#define R24_IF3 0x24 /* IF byte 3 */
#define R25_REF 0x25 /* reference byte */
#define R26_IF 0x26 /* IF frequency */
#define R27_RF1 0x27 /* RF frequency byte 1 */
#define R28_RF2 0x28 /* RF frequency byte 2 */
#define R29_RF3 0x29 /* RF frequency byte 3 */
#define R2A_MSM1 0x2a
#define R2B_MSM2 0x2b
#define R2C_PS1 0x2c /* power saving mode byte 1 */
#define R2D_PS2 0x2d /* power saving mode byte 2 */
#define R2E_PS3 0x2e /* power saving mode byte 3 */
#define R2F_RSSI1 0x2f
#define R30_RSSI2 0x30
#define R31_IRQ_CTRL 0x31
#define R32_DUMMY 0x32
#define R33_TEST 0x33
#define R34_MD1 0x34
#define R35_SD1 0x35
#define R36_SD2 0x36
#define R37_SD3 0x37
#define R38_SD4 0x38
#define R39_SD5 0x39
#define R3A_SD_TEST 0x3a
#define R3B_REGU 0x3b
#define R3C_RCCAL1 0x3c
#define R3D_RCCAL2 0x3d
#define R3E_IRCAL1 0x3e
#define R3F_IRCAL2 0x3f
#define R40_IRCAL3 0x40
#define R41_IRCAL4 0x41
#define R42_IRCAL5 0x42
#define R43_PD1 0x43 /* power down byte 1 */
#define R44_PD2 0x44 /* power down byte 2 */
#define R45_PD 0x45 /* power down */
#define R46_CPUMP 0x46 /* charge pump */
#define R47_LNAPOL 0x47 /* LNA polar casc */
#define R48_SMOOTH1 0x48 /* smooth test byte 1 */
#define R49_SMOOTH2 0x49 /* smooth test byte 2 */
#define R4A_SMOOTH3 0x4a /* smooth test byte 3 */
#define R4B_XTALOSC1 0x4b
#define R4C_XTALOSC2 0x4c
#define R4D_XTALFLX1 0x4d
#define R4E_XTALFLX2 0x4e
#define R4F_XTALFLX3 0x4f
#define R50_XTALFLX4 0x50
#define R51_XTALFLX5 0x51
#define R52_IRLOOP0 0x52
#define R53_IRLOOP1 0x53
#define R54_IRLOOP2 0x54
#define R55_IRLOOP3 0x55
#define R56_IRLOOP4 0x56
#define R57_PLL_LOG 0x57
#define R58_AGC2_UP1 0x58
#define R59_AGC2_UP2 0x59
#define R5A_H3H5 0x5a
#define R5B_AGC_AUTO 0x5b
#define R5C_AGC_DEBUG 0x5c
#define TDA18250_NUM_REGS 93
#define TDA18250_POWER_STANDBY 0
#define TDA18250_POWER_NORMAL 1
#define TDA18250_IRQ_CAL 0x81
#define TDA18250_IRQ_HW_INIT 0x82
#define TDA18250_IRQ_TUNE 0x88
struct tda18250_dev {
struct mutex i2c_mutex;
struct dvb_frontend *fe;
struct i2c_adapter *i2c;
struct regmap *regmap;
u8 xtal_freq;
/* IF in kHz */
u16 if_dvbt_6;
u16 if_dvbt_7;
u16 if_dvbt_8;
u16 if_dvbc_6;
u16 if_dvbc_8;
u16 if_atsc;
u16 if_frequency;
bool slave;
bool loopthrough;
bool warm;
u8 regs[TDA18250_NUM_REGS];
};
#endif
|