diff options
Diffstat (limited to 'drivers/media/dvb/frontends/cx24110.c')
-rw-r--r-- | drivers/media/dvb/frontends/cx24110.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/media/dvb/frontends/cx24110.c b/drivers/media/dvb/frontends/cx24110.c index ce3c7398bac9..ae96395217a2 100644 --- a/drivers/media/dvb/frontends/cx24110.c +++ b/drivers/media/dvb/frontends/cx24110.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | cx24110 - Single Chip Satellite Channel Receiver driver module | 2 | cx24110 - Single Chip Satellite Channel Receiver driver module |
3 | 3 | ||
4 | Copyright (C) 2002 Peter Hettkamp <peter.hettkamp@htp-tel.de> based on | 4 | Copyright (C) 2002 Peter Hettkamp <peter.hettkamp@htp-tel.de> based on |
@@ -311,16 +311,17 @@ static int cx24110_set_symbolrate (struct cx24110_state* state, u32 srate) | |||
311 | 311 | ||
312 | } | 312 | } |
313 | 313 | ||
314 | int cx24110_pll_write (struct dvb_frontend* fe, u32 data) | 314 | static int _cx24110_pll_write (struct dvb_frontend* fe, u8 *buf, int len) |
315 | { | 315 | { |
316 | struct cx24110_state *state = fe->demodulator_priv; | 316 | struct cx24110_state *state = fe->demodulator_priv; |
317 | 317 | ||
318 | if (len != 3) | ||
319 | return -EINVAL; | ||
320 | |||
318 | /* tuner data is 21 bits long, must be left-aligned in data */ | 321 | /* tuner data is 21 bits long, must be left-aligned in data */ |
319 | /* tuner cx24108 is written through a dedicated 3wire interface on the demod chip */ | 322 | /* tuner cx24108 is written through a dedicated 3wire interface on the demod chip */ |
320 | /* FIXME (low): add error handling, avoid infinite loops if HW fails... */ | 323 | /* FIXME (low): add error handling, avoid infinite loops if HW fails... */ |
321 | 324 | ||
322 | dprintk("cx24110 debug: cx24108_write(%8.8x)\n",data); | ||
323 | |||
324 | cx24110_writereg(state,0x6d,0x30); /* auto mode at 62kHz */ | 325 | cx24110_writereg(state,0x6d,0x30); /* auto mode at 62kHz */ |
325 | cx24110_writereg(state,0x70,0x15); /* auto mode 21 bits */ | 326 | cx24110_writereg(state,0x70,0x15); /* auto mode 21 bits */ |
326 | 327 | ||
@@ -329,19 +330,19 @@ int cx24110_pll_write (struct dvb_frontend* fe, u32 data) | |||
329 | cx24110_writereg(state,0x72,0); | 330 | cx24110_writereg(state,0x72,0); |
330 | 331 | ||
331 | /* write the topmost 8 bits */ | 332 | /* write the topmost 8 bits */ |
332 | cx24110_writereg(state,0x72,(data>>24)&0xff); | 333 | cx24110_writereg(state,0x72,buf[0]); |
333 | 334 | ||
334 | /* wait for the send to be completed */ | 335 | /* wait for the send to be completed */ |
335 | while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) | 336 | while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) |
336 | ; | 337 | ; |
337 | 338 | ||
338 | /* send another 8 bytes */ | 339 | /* send another 8 bytes */ |
339 | cx24110_writereg(state,0x72,(data>>16)&0xff); | 340 | cx24110_writereg(state,0x72,buf[1]); |
340 | while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) | 341 | while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) |
341 | ; | 342 | ; |
342 | 343 | ||
343 | /* and the topmost 5 bits of this byte */ | 344 | /* and the topmost 5 bits of this byte */ |
344 | cx24110_writereg(state,0x72,(data>>8)&0xff); | 345 | cx24110_writereg(state,0x72,buf[2]); |
345 | while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) | 346 | while ((cx24110_readreg(state,0x6d)&0xc0)==0x80) |
346 | ; | 347 | ; |
347 | 348 | ||
@@ -642,6 +643,7 @@ static struct dvb_frontend_ops cx24110_ops = { | |||
642 | .release = cx24110_release, | 643 | .release = cx24110_release, |
643 | 644 | ||
644 | .init = cx24110_initfe, | 645 | .init = cx24110_initfe, |
646 | .write = _cx24110_pll_write, | ||
645 | .set_frontend = cx24110_set_frontend, | 647 | .set_frontend = cx24110_set_frontend, |
646 | .get_frontend = cx24110_get_frontend, | 648 | .get_frontend = cx24110_get_frontend, |
647 | .read_status = cx24110_read_status, | 649 | .read_status = cx24110_read_status, |
@@ -664,4 +666,3 @@ MODULE_AUTHOR("Peter Hettkamp"); | |||
664 | MODULE_LICENSE("GPL"); | 666 | MODULE_LICENSE("GPL"); |
665 | 667 | ||
666 | EXPORT_SYMBOL(cx24110_attach); | 668 | EXPORT_SYMBOL(cx24110_attach); |
667 | EXPORT_SYMBOL(cx24110_pll_write); | ||