diff options
Diffstat (limited to 'linux/drivers/media/dvb/bt8xx')
-rw-r--r-- | linux/drivers/media/dvb/bt8xx/Kconfig | 4 | ||||
-rw-r--r-- | linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c | 27 | ||||
-rw-r--r-- | linux/drivers/media/dvb/bt8xx/dvb-bt8xx.h | 1 |
3 files changed, 31 insertions, 1 deletions
diff --git a/linux/drivers/media/dvb/bt8xx/Kconfig b/linux/drivers/media/dvb/bt8xx/Kconfig index bc7b48ed1..726a60515 100644 --- a/linux/drivers/media/dvb/bt8xx/Kconfig +++ b/linux/drivers/media/dvb/bt8xx/Kconfig @@ -5,9 +5,11 @@ config DVB_BT8XX select DVB_SP887X select DVB_NXT6000 select DVB_CX24110 + select DVB_OR51211 help Support for PCI cards based on the Bt8xx PCI bridge. Examples are - the Nebula cards, the Pinnacle PCTV cards and Twinhan DST cards. + the Nebula cards, the Pinnacle PCTV cards, the Twinhan DST cards and + pcHDTV HD2000 cards. Since these cards have no MPEG decoder onboard, they transmit only compressed MPEG data over the PCI bus, so you need diff --git a/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c b/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c index 3da64f580..ca15bdd42 100644 --- a/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c +++ b/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c @@ -369,6 +369,20 @@ static struct dst_config dst_config = { }; +static int or51211_request_firmware(struct dvb_frontend* fe, const struct firmware **fw, char* name) +{ + struct dvb_bt8xx_card* bt = (struct dvb_bt8xx_card*) fe->dvb->priv; + + return request_firmware(fw, name, &bt->bt->dev->dev); +} + +static struct or51211_config or51211_config = { + + .demod_address = 0x15, + .request_firmware = or51211_request_firmware, +}; + + static int vp3021_alps_tded4_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) { struct dvb_bt8xx_card *card = (struct dvb_bt8xx_card *) fe->dvb->priv; @@ -458,6 +472,13 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) break; } break; + + case BTTV_PC_HDTV: + card->fe = or51211_attach(&or51211_config, card->i2c_adapter, card->bt); + if (card->fe != NULL) { + break; + } + break; } if (card->fe == NULL) { @@ -637,6 +658,12 @@ static int dvb_bt8xx_probe(struct device *dev) * RISC+FIFO ENABLE */ break; + case BTTV_PC_HDTV: + card->gpio_mode = 0x0100EC7B; + card->op_sync_orin = 0; + card->irq_err_ignore = 0; + break; + default: printk(KERN_WARNING "dvb_bt8xx: Unknown bttv card type: %d.\n", sub->core->type); diff --git a/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.h b/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.h index f9bf4e2e4..80ef189f9 100644 --- a/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.h +++ b/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.h @@ -34,6 +34,7 @@ #include "dst.h" #include "nxt6000.h" #include "cx24110.h" +#include "or51211.h" struct dvb_bt8xx_card { struct semaphore lock; |