diff options
author | Tommy Jonsson <quazzie2@gmail.com> | 2010-09-12 15:03:45 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-21 05:54:09 -0400 |
commit | d2fd44a33083973157d6e0e0e8bcfd5faa214bbb (patch) | |
tree | 0e7c54a391db750e543397ba9ad61733942524a6 /drivers/media/dvb | |
parent | b4d752b308493b08b51ea04361848ef63d0cad42 (diff) |
[media] firedtv: support for PSK8 for S2 devices. To watch HD
Add support for tuning with PSK8 modulation, pilot and rolloff
with the S2 versions of firedtv.
Signed-off-by: Tommy Jonsson <quazzie2@gmail.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (trivial simplification)
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r-- | drivers/media/dvb/firewire/firedtv-avc.c | 30 | ||||
-rw-r--r-- | drivers/media/dvb/firewire/firedtv-fe.c | 36 |
2 files changed, 60 insertions, 6 deletions
diff --git a/drivers/media/dvb/firewire/firedtv-avc.c b/drivers/media/dvb/firewire/firedtv-avc.c index 28294af752db..1f3d1fbf446c 100644 --- a/drivers/media/dvb/firewire/firedtv-avc.c +++ b/drivers/media/dvb/firewire/firedtv-avc.c | |||
@@ -24,6 +24,8 @@ | |||
24 | #include <linux/wait.h> | 24 | #include <linux/wait.h> |
25 | #include <linux/workqueue.h> | 25 | #include <linux/workqueue.h> |
26 | 26 | ||
27 | #include <dvb_frontend.h> | ||
28 | |||
27 | #include "firedtv.h" | 29 | #include "firedtv.h" |
28 | 30 | ||
29 | #define FCP_COMMAND_REGISTER 0xfffff0000b00ULL | 31 | #define FCP_COMMAND_REGISTER 0xfffff0000b00ULL |
@@ -368,10 +370,30 @@ static int avc_tuner_tuneqpsk(struct firedtv *fdtv, | |||
368 | c->operand[12] = 0; | 370 | c->operand[12] = 0; |
369 | 371 | ||
370 | if (fdtv->type == FIREDTV_DVB_S2) { | 372 | if (fdtv->type == FIREDTV_DVB_S2) { |
371 | c->operand[13] = 0x1; | 373 | if (fdtv->fe.dtv_property_cache.delivery_system == SYS_DVBS2) { |
372 | c->operand[14] = 0xff; | 374 | switch (fdtv->fe.dtv_property_cache.modulation) { |
373 | c->operand[15] = 0xff; | 375 | case QAM_16: c->operand[13] = 0x1; break; |
374 | 376 | case QPSK: c->operand[13] = 0x2; break; | |
377 | case PSK_8: c->operand[13] = 0x3; break; | ||
378 | default: c->operand[13] = 0x2; break; | ||
379 | } | ||
380 | switch (fdtv->fe.dtv_property_cache.rolloff) { | ||
381 | case ROLLOFF_AUTO: c->operand[14] = 0x2; break; | ||
382 | case ROLLOFF_35: c->operand[14] = 0x2; break; | ||
383 | case ROLLOFF_20: c->operand[14] = 0x0; break; | ||
384 | case ROLLOFF_25: c->operand[14] = 0x1; break; | ||
385 | /* case ROLLOFF_NONE: c->operand[14] = 0xff; break; */ | ||
386 | } | ||
387 | switch (fdtv->fe.dtv_property_cache.pilot) { | ||
388 | case PILOT_AUTO: c->operand[15] = 0x0; break; | ||
389 | case PILOT_OFF: c->operand[15] = 0x0; break; | ||
390 | case PILOT_ON: c->operand[15] = 0x1; break; | ||
391 | } | ||
392 | } else { | ||
393 | c->operand[13] = 0x1; /* auto modulation */ | ||
394 | c->operand[14] = 0xff; /* disable rolloff */ | ||
395 | c->operand[15] = 0xff; /* disable pilot */ | ||
396 | } | ||
375 | return 16; | 397 | return 16; |
376 | } else { | 398 | } else { |
377 | return 13; | 399 | return 13; |
diff --git a/drivers/media/dvb/firewire/firedtv-fe.c b/drivers/media/dvb/firewire/firedtv-fe.c index e49cdc88b0c7..d10920e2f3a2 100644 --- a/drivers/media/dvb/firewire/firedtv-fe.c +++ b/drivers/media/dvb/firewire/firedtv-fe.c | |||
@@ -155,6 +155,16 @@ static int fdtv_get_frontend(struct dvb_frontend *fe, | |||
155 | return -EOPNOTSUPP; | 155 | return -EOPNOTSUPP; |
156 | } | 156 | } |
157 | 157 | ||
158 | static int fdtv_get_property(struct dvb_frontend *fe, struct dtv_property *tvp) | ||
159 | { | ||
160 | return 0; | ||
161 | } | ||
162 | |||
163 | static int fdtv_set_property(struct dvb_frontend *fe, struct dtv_property *tvp) | ||
164 | { | ||
165 | return 0; | ||
166 | } | ||
167 | |||
158 | void fdtv_frontend_init(struct firedtv *fdtv) | 168 | void fdtv_frontend_init(struct firedtv *fdtv) |
159 | { | 169 | { |
160 | struct dvb_frontend_ops *ops = &fdtv->fe.ops; | 170 | struct dvb_frontend_ops *ops = &fdtv->fe.ops; |
@@ -166,6 +176,9 @@ void fdtv_frontend_init(struct firedtv *fdtv) | |||
166 | ops->set_frontend = fdtv_set_frontend; | 176 | ops->set_frontend = fdtv_set_frontend; |
167 | ops->get_frontend = fdtv_get_frontend; | 177 | ops->get_frontend = fdtv_get_frontend; |
168 | 178 | ||
179 | ops->get_property = fdtv_get_property; | ||
180 | ops->set_property = fdtv_set_property; | ||
181 | |||
169 | ops->read_status = fdtv_read_status; | 182 | ops->read_status = fdtv_read_status; |
170 | ops->read_ber = fdtv_read_ber; | 183 | ops->read_ber = fdtv_read_ber; |
171 | ops->read_signal_strength = fdtv_read_signal_strength; | 184 | ops->read_signal_strength = fdtv_read_signal_strength; |
@@ -179,7 +192,6 @@ void fdtv_frontend_init(struct firedtv *fdtv) | |||
179 | 192 | ||
180 | switch (fdtv->type) { | 193 | switch (fdtv->type) { |
181 | case FIREDTV_DVB_S: | 194 | case FIREDTV_DVB_S: |
182 | case FIREDTV_DVB_S2: | ||
183 | fi->type = FE_QPSK; | 195 | fi->type = FE_QPSK; |
184 | 196 | ||
185 | fi->frequency_min = 950000; | 197 | fi->frequency_min = 950000; |
@@ -188,7 +200,7 @@ void fdtv_frontend_init(struct firedtv *fdtv) | |||
188 | fi->symbol_rate_min = 1000000; | 200 | fi->symbol_rate_min = 1000000; |
189 | fi->symbol_rate_max = 40000000; | 201 | fi->symbol_rate_max = 40000000; |
190 | 202 | ||
191 | fi->caps = FE_CAN_INVERSION_AUTO | | 203 | fi->caps = FE_CAN_INVERSION_AUTO | |
192 | FE_CAN_FEC_1_2 | | 204 | FE_CAN_FEC_1_2 | |
193 | FE_CAN_FEC_2_3 | | 205 | FE_CAN_FEC_2_3 | |
194 | FE_CAN_FEC_3_4 | | 206 | FE_CAN_FEC_3_4 | |
@@ -198,6 +210,26 @@ void fdtv_frontend_init(struct firedtv *fdtv) | |||
198 | FE_CAN_QPSK; | 210 | FE_CAN_QPSK; |
199 | break; | 211 | break; |
200 | 212 | ||
213 | case FIREDTV_DVB_S2: | ||
214 | fi->type = FE_QPSK; | ||
215 | |||
216 | fi->frequency_min = 950000; | ||
217 | fi->frequency_max = 2150000; | ||
218 | fi->frequency_stepsize = 125; | ||
219 | fi->symbol_rate_min = 1000000; | ||
220 | fi->symbol_rate_max = 40000000; | ||
221 | |||
222 | fi->caps = FE_CAN_INVERSION_AUTO | | ||
223 | FE_CAN_FEC_1_2 | | ||
224 | FE_CAN_FEC_2_3 | | ||
225 | FE_CAN_FEC_3_4 | | ||
226 | FE_CAN_FEC_5_6 | | ||
227 | FE_CAN_FEC_7_8 | | ||
228 | FE_CAN_FEC_AUTO | | ||
229 | FE_CAN_QPSK | | ||
230 | FE_CAN_2G_MODULATION; | ||
231 | break; | ||
232 | |||
201 | case FIREDTV_DVB_C: | 233 | case FIREDTV_DVB_C: |
202 | fi->type = FE_QAM; | 234 | fi->type = FE_QAM; |
203 | 235 | ||