diff options
author | Johannes Stezenbach <devnull@localhost> | 2004-02-15 23:40:10 +0000 |
---|---|---|
committer | Johannes Stezenbach <devnull@localhost> | 2004-02-15 23:40:10 +0000 |
commit | 611265039398c47563020473b9e183b006a8dc2c (patch) | |
tree | 06d0ff0ffd9c45cdda77d40db9956e71997c5a2c /linux/drivers/media/dvb/frontends | |
parent | 189510537a87919b30295d4d862f440ba2fd400d (diff) | |
download | mediapointer-dvb-s2-611265039398c47563020473b9e183b006a8dc2c.tar.gz mediapointer-dvb-s2-611265039398c47563020473b9e183b006a8dc2c.tar.bz2 |
- change AFC handling as suggested by Robert Schlabbach
- use bit 1 of the SYNC register for FE_HAS_SIGNAL
Diffstat (limited to 'linux/drivers/media/dvb/frontends')
-rw-r--r-- | linux/drivers/media/dvb/frontends/ves1820.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/linux/drivers/media/dvb/frontends/ves1820.c b/linux/drivers/media/dvb/frontends/ves1820.c index 33e709626..8bd249f28 100644 --- a/linux/drivers/media/dvb/frontends/ves1820.c +++ b/linux/drivers/media/dvb/frontends/ves1820.c @@ -380,7 +380,7 @@ static int ves1820_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) sync = ves1820_readreg (fe, 0x11); - if (sync & 2) + if (sync & 1) *status |= FE_HAS_SIGNAL; if (sync & 2) @@ -439,14 +439,14 @@ static int ves1820_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) int sync; s8 afc = 0; - sync = ves1820_readreg (fe, 0x11); - if (sync & 2) { + sync = ves1820_readreg(fe, 0x11); + afc = ves1820_readreg(fe, 0x19); + if (verbose) { /* AFC only valid when carrier has been recovered */ - afc = ves1820_readreg(fe, 0x19); - if (verbose) - printk ("DVB: VES1820(%d): AFC (%d) %dHz\n", - fe->i2c->adapter->num, afc, - -((s32)(p->u.qam.symbol_rate >> 3) * afc >> 7)); + printk(sync & 2 ? "DVB: VES1820(%d): AFC (%d) %dHz\n" : + "DVB: VES1820(%d): [AFC (%d) %dHz]\n", + fe->i2c->adapter->num, afc, + -((s32)p->u.qam.symbol_rate * afc) >> 10); } p->inversion = HAS_INVERSION(reg0) ? INVERSION_ON : INVERSION_OFF; @@ -455,9 +455,8 @@ static int ves1820_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) p->u.qam.fec_inner = FEC_NONE; p->frequency = ((p->frequency + 31250) / 62500) * 62500; - /* To prevent overflow, shift symbol rate first a - couple of bits. */ - p->frequency -= (s32)(p->u.qam.symbol_rate >> 3) * afc >> 7; + if (sync & 2) + p->frequency -= ((s32)p->u.qam.symbol_rate * afc) >> 10; break; } case FE_SLEEP: |