diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-08-07 10:44:33 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-08-07 10:44:33 -0300 |
commit | d9d5fc49ab313764d9b32189e259e7ef2d970927 (patch) | |
tree | 9de972ef5d18f39b447b144b6cebc07f69153309 /linux/drivers/media | |
parent | 41480cd76fdedd7a28a0e90cc602efd596a81eb9 (diff) | |
download | mediapointer-dvb-s2-d9d5fc49ab313764d9b32189e259e7ef2d970927.tar.gz mediapointer-dvb-s2-d9d5fc49ab313764d9b32189e259e7ef2d970927.tar.bz2 |
LNB voltage control was inverted for the benefit of geniatech cards on Kworld
From: Yeasah Pell <yeasah@schwide.com>
1) It sets LNBDCPol differently based on the card type. Now it should
work properly for both the kworld and geniatech cards.
2) It stops returning an error for the SEC_VOLTAGE_OFF voltage command
(the cx88-dvb level handles the actual voltage on/off, but it still
passes the ioctl down to the cx24123 level, which previously rejected
the OFF as invalid so the ioctl would report failure)
Signed-off-by: Yeasah Pell <yeasah at schwide.net>
Acked-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media')
-rw-r--r-- | linux/drivers/media/dvb/frontends/cx24123.c | 7 | ||||
-rw-r--r-- | linux/drivers/media/dvb/frontends/cx24123.h | 3 | ||||
-rw-r--r-- | linux/drivers/media/video/cx88/cx88-dvb.c | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/frontends/cx24123.c b/linux/drivers/media/dvb/frontends/cx24123.c index d13036d0a..842dc9a02 100644 --- a/linux/drivers/media/dvb/frontends/cx24123.c +++ b/linux/drivers/media/dvb/frontends/cx24123.c @@ -672,6 +672,10 @@ static int cx24123_initfe(struct dvb_frontend* fe) for (i = 0; i < sizeof(cx24123_regdata) / sizeof(cx24123_regdata[0]); i++) cx24123_writereg(state, cx24123_regdata[i].reg, cx24123_regdata[i].data); + /* Set the LNB polarity */ + if(state->config->lnb_polarity) + cx24123_writereg(state, 0x32, cx24123_readreg(state, 0x32) | 0x02); + return 0; } @@ -689,6 +693,9 @@ static int cx24123_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage case SEC_VOLTAGE_18: dprintk("%s: setting voltage 18V\n", __FUNCTION__); return cx24123_writereg(state, 0x29, val | 0x80); + case SEC_VOLTAGE_OFF: + /* already handled in cx88-dvb */ + return 0; default: return -EINVAL; }; diff --git a/linux/drivers/media/dvb/frontends/cx24123.h b/linux/drivers/media/dvb/frontends/cx24123.h index 6a8cb4c41..57a1dae1d 100644 --- a/linux/drivers/media/dvb/frontends/cx24123.h +++ b/linux/drivers/media/dvb/frontends/cx24123.h @@ -30,6 +30,9 @@ struct cx24123_config /* Need to set device param for start_dma */ int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured); + + /* 0 = LNB voltage normal, 1 = LNB voltage inverted */ + int lnb_polarity; }; #if defined(CONFIG_DVB_CX24123) || defined(CONFIG_DVB_CX24123_MODULE) diff --git a/linux/drivers/media/video/cx88/cx88-dvb.c b/linux/drivers/media/video/cx88/cx88-dvb.c index d147454f1..07914f558 100644 --- a/linux/drivers/media/video/cx88/cx88-dvb.c +++ b/linux/drivers/media/video/cx88/cx88-dvb.c @@ -499,6 +499,7 @@ static struct cx24123_config hauppauge_novas_config = { static struct cx24123_config kworld_dvbs_100_config = { .demod_address = 0x15, .set_ts_params = cx24123_set_ts_param, + .lnb_polarity = 1, }; static int dvb_register(struct cx8802_dev *dev) |