diff options
author | Antti Palosaari <crope@iki.fi> | 2012-09-08 21:07:24 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-09-23 16:12:23 -0400 |
commit | d9cb41afbf2aab54133c804009a1b8e76cedaef3 (patch) | |
tree | c1e518e4c95542d8bb009901eb2acc8b8dfb53d9 /drivers/media/tuners/fc2580_priv.h | |
parent | aa468cc550ff3e81aef37aca8fdd9a3456ca5f3a (diff) |
[media] tuners: add FCI FC2580 silicon tuner driver
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/tuners/fc2580_priv.h')
-rw-r--r-- | drivers/media/tuners/fc2580_priv.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/drivers/media/tuners/fc2580_priv.h b/drivers/media/tuners/fc2580_priv.h new file mode 100644 index 000000000000..be38a9e637e0 --- /dev/null +++ b/drivers/media/tuners/fc2580_priv.h | |||
@@ -0,0 +1,134 @@ | |||
1 | /* | ||
2 | * FCI FC2580 silicon tuner driver | ||
3 | * | ||
4 | * Copyright (C) 2012 Antti Palosaari <crope@iki.fi> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License along | ||
17 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef FC2580_PRIV_H | ||
22 | #define FC2580_PRIV_H | ||
23 | |||
24 | #include "fc2580.h" | ||
25 | |||
26 | struct fc2580_reg_val { | ||
27 | u8 reg; | ||
28 | u8 val; | ||
29 | }; | ||
30 | |||
31 | static const struct fc2580_reg_val fc2580_init_reg_vals[] = { | ||
32 | {0x00, 0x00}, | ||
33 | {0x12, 0x86}, | ||
34 | {0x14, 0x5c}, | ||
35 | {0x16, 0x3c}, | ||
36 | {0x1f, 0xd2}, | ||
37 | {0x09, 0xd7}, | ||
38 | {0x0b, 0xd5}, | ||
39 | {0x0c, 0x32}, | ||
40 | {0x0e, 0x43}, | ||
41 | {0x21, 0x0a}, | ||
42 | {0x22, 0x82}, | ||
43 | {0x45, 0x10}, | ||
44 | {0x4c, 0x00}, | ||
45 | {0x3f, 0x88}, | ||
46 | {0x02, 0x0e}, | ||
47 | {0x58, 0x14}, | ||
48 | }; | ||
49 | |||
50 | struct fc2580_pll { | ||
51 | u32 freq; | ||
52 | u8 div; | ||
53 | u8 band; | ||
54 | }; | ||
55 | |||
56 | static const struct fc2580_pll fc2580_pll_lut[] = { | ||
57 | /* VCO min VCO max */ | ||
58 | { 400000000, 12, 0x80}, /* .......... 4800000000 */ | ||
59 | {1000000000, 4, 0x00}, /* 1600000000 4000000000 */ | ||
60 | {0xffffffff, 2, 0x40}, /* 2000000000 .......... */ | ||
61 | }; | ||
62 | |||
63 | struct fc2580_if_filter { | ||
64 | u32 freq; | ||
65 | u16 mul; | ||
66 | u8 r36_val; | ||
67 | u8 r39_val; | ||
68 | }; | ||
69 | |||
70 | static const struct fc2580_if_filter fc2580_if_filter_lut[] = { | ||
71 | { 6000000, 4400, 0x18, 0x00}, | ||
72 | { 7000000, 3910, 0x18, 0x80}, | ||
73 | { 8000000, 3300, 0x18, 0x80}, | ||
74 | {0xffffffff, 3300, 0x18, 0x80}, | ||
75 | }; | ||
76 | |||
77 | struct fc2580_freq_regs { | ||
78 | u32 freq; | ||
79 | u8 r25_val; | ||
80 | u8 r27_val; | ||
81 | u8 r28_val; | ||
82 | u8 r29_val; | ||
83 | u8 r2b_val; | ||
84 | u8 r2c_val; | ||
85 | u8 r2d_val; | ||
86 | u8 r30_val; | ||
87 | u8 r44_val; | ||
88 | u8 r50_val; | ||
89 | u8 r53_val; | ||
90 | u8 r5f_val; | ||
91 | u8 r61_val; | ||
92 | u8 r62_val; | ||
93 | u8 r63_val; | ||
94 | u8 r67_val; | ||
95 | u8 r68_val; | ||
96 | u8 r69_val; | ||
97 | u8 r6a_val; | ||
98 | u8 r6b_val; | ||
99 | u8 r6c_val; | ||
100 | u8 r6d_val; | ||
101 | u8 r6e_val; | ||
102 | u8 r6f_val; | ||
103 | }; | ||
104 | |||
105 | /* XXX: 0xff is used for don't-care! */ | ||
106 | static const struct fc2580_freq_regs fc2580_freq_regs_lut[] = { | ||
107 | { 400000000, | ||
108 | 0xff, 0x77, 0x33, 0x40, 0xff, 0xff, 0xff, 0x09, 0xff, 0x8c, | ||
109 | 0x50, 0x0f, 0x07, 0x00, 0x15, 0x03, 0x05, 0x10, 0x12, 0x08, | ||
110 | 0x0a, 0x78, 0x32, 0x54}, | ||
111 | { 538000000, | ||
112 | 0xf0, 0x77, 0x53, 0x60, 0xff, 0xff, 0xff, 0x09, 0xff, 0x8c, | ||
113 | 0x50, 0x13, 0x07, 0x06, 0x15, 0x06, 0x08, 0x10, 0x12, 0x0b, | ||
114 | 0x0c, 0x78, 0x32, 0x14}, | ||
115 | { 794000000, | ||
116 | 0xf0, 0x77, 0x53, 0x60, 0xff, 0xff, 0xff, 0x09, 0xff, 0x8c, | ||
117 | 0x50, 0x15, 0x03, 0x03, 0x15, 0x03, 0x05, 0x0c, 0x0e, 0x0b, | ||
118 | 0x0c, 0x78, 0x32, 0x14}, | ||
119 | {1000000000, | ||
120 | 0xf0, 0x77, 0x53, 0x60, 0xff, 0xff, 0xff, 0x09, 0xff, 0x8c, | ||
121 | 0x50, 0x15, 0x07, 0x06, 0x15, 0x07, 0x09, 0x10, 0x12, 0x0b, | ||
122 | 0x0c, 0x78, 0x32, 0x14}, | ||
123 | {0xffffffff, | ||
124 | 0xff, 0xff, 0xff, 0xff, 0x70, 0x37, 0xe7, 0x09, 0x20, 0x8c, | ||
125 | 0x50, 0x0f, 0x0f, 0x00, 0x13, 0x00, 0x02, 0x0c, 0x0e, 0x08, | ||
126 | 0x0a, 0xa0, 0x50, 0x14}, | ||
127 | }; | ||
128 | |||
129 | struct fc2580_priv { | ||
130 | const struct fc2580_config *cfg; | ||
131 | struct i2c_adapter *i2c; | ||
132 | }; | ||
133 | |||
134 | #endif | ||