aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/vp702x-fe.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/dvb-usb/vp702x-fe.c')
-rw-r--r--drivers/media/dvb/dvb-usb/vp702x-fe.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/drivers/media/dvb/dvb-usb/vp702x-fe.c b/drivers/media/dvb/dvb-usb/vp702x-fe.c
index d4da494132ec..41f733b47e70 100644
--- a/drivers/media/dvb/dvb-usb/vp702x-fe.c
+++ b/drivers/media/dvb/dvb-usb/vp702x-fe.c
@@ -24,6 +24,8 @@ struct vp702x_fe_state {
24 struct dvb_frontend fe; 24 struct dvb_frontend fe;
25 struct dvb_usb_device *d; 25 struct dvb_usb_device *d;
26 26
27 struct dvb_frontend_ops ops;
28
27 fe_sec_voltage_t voltage; 29 fe_sec_voltage_t voltage;
28 fe_sec_tone_mode_t tone_mode; 30 fe_sec_tone_mode_t tone_mode;
29 31
@@ -72,9 +74,6 @@ static int vp702x_fe_read_status(struct dvb_frontend* fe, fe_status_t *status)
72 else 74 else
73 *status = 0; 75 *status = 0;
74 76
75 deb_fe("real state: %x\n",*status);
76 *status = 0x1f;
77
78 if (*status & FE_HAS_LOCK) 77 if (*status & FE_HAS_LOCK)
79 st->status_check_interval = 1000; 78 st->status_check_interval = 1000;
80 else 79 else
@@ -171,8 +170,6 @@ static int vp702x_fe_set_frontend(struct dvb_frontend* fe,
171 st->status_check_interval = 250; 170 st->status_check_interval = 250;
172 st->next_status_check = jiffies; 171 st->next_status_check = jiffies;
173 172
174 vp702x_usb_in_op(st->d, RESET_TUNER, 0, 0, NULL, 0);
175 msleep(30);
176 vp702x_usb_inout_op(st->d,cmd,8,ibuf,10,100); 173 vp702x_usb_inout_op(st->d,cmd,8,ibuf,10,100);
177 174
178 if (ibuf[2] == 0 && ibuf[3] == 0) 175 if (ibuf[2] == 0 && ibuf[3] == 0)
@@ -183,6 +180,20 @@ static int vp702x_fe_set_frontend(struct dvb_frontend* fe,
183 return 0; 180 return 0;
184} 181}
185 182
183static int vp702x_fe_init(struct dvb_frontend *fe)
184{
185 struct vp702x_fe_state *st = fe->demodulator_priv;
186 deb_fe("%s\n",__FUNCTION__);
187 vp702x_usb_in_op(st->d, RESET_TUNER, 0, 0, NULL, 0);
188 return 0;
189}
190
191static int vp702x_fe_sleep(struct dvb_frontend *fe)
192{
193 deb_fe("%s\n",__FUNCTION__);
194 return 0;
195}
196
186static int vp702x_fe_get_frontend(struct dvb_frontend* fe, 197static int vp702x_fe_get_frontend(struct dvb_frontend* fe,
187 struct dvb_frontend_parameters *fep) 198 struct dvb_frontend_parameters *fep)
188{ 199{
@@ -207,12 +218,12 @@ static int vp702x_fe_send_diseqc_msg (struct dvb_frontend* fe,
207 memcpy(&cmd[3], m->msg, m->msg_len); 218 memcpy(&cmd[3], m->msg, m->msg_len);
208 cmd[7] = vp702x_chksum(cmd,0,7); 219 cmd[7] = vp702x_chksum(cmd,0,7);
209 220
210 vp702x_usb_inout_op(st->d,cmd,8,ibuf,10,100); 221// vp702x_usb_inout_op(st->d,cmd,8,ibuf,10,100);
211 222
212 if (ibuf[2] == 0 && ibuf[3] == 0) 223// if (ibuf[2] == 0 && ibuf[3] == 0)
213 deb_fe("diseqc cmd failed.\n"); 224// deb_fe("diseqc cmd failed.\n");
214 else 225// else
215 deb_fe("diseqc cmd succeeded.\n"); 226// deb_fe("diseqc cmd succeeded.\n");
216 227
217 return 0; 228 return 0;
218} 229}
@@ -318,8 +329,8 @@ static struct dvb_frontend_ops vp702x_fe_ops = {
318 }, 329 },
319 .release = vp702x_fe_release, 330 .release = vp702x_fe_release,
320 331
321 .init = NULL, 332 .init = vp702x_fe_init,
322 .sleep = NULL, 333 .sleep = vp702x_fe_sleep,
323 334
324 .set_frontend = vp702x_fe_set_frontend, 335 .set_frontend = vp702x_fe_set_frontend,
325 .get_frontend = vp702x_fe_get_frontend, 336 .get_frontend = vp702x_fe_get_frontend,