summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/frontends
diff options
context:
space:
mode:
authorJohannes Stezenbach <devnull@localhost>2004-02-15 23:40:10 +0000
committerJohannes Stezenbach <devnull@localhost>2004-02-15 23:40:10 +0000
commit611265039398c47563020473b9e183b006a8dc2c (patch)
tree06d0ff0ffd9c45cdda77d40db9956e71997c5a2c /linux/drivers/media/dvb/frontends
parent189510537a87919b30295d4d862f440ba2fd400d (diff)
downloadmediapointer-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.c21
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: