From c00d9912bf6afef52f9eef0fb106b1b22a3276e9 Mon Sep 17 00:00:00 2001 From: Holger Waechtler Date: Sun, 7 Sep 2003 15:40:35 +0000 Subject: - apply Avermedia DVB-T related patches contributed by Mark Edwards - add a workaround for the bogus no-ack returvalue of the kernel-i2c bitbanging driver - add sp887x.o to the Makefile --- linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c | 22 ++++++++++++++++++---- linux/drivers/media/dvb/frontends/Makefile | 1 + linux/drivers/media/dvb/frontends/sp887x.c | 4 +++- 3 files changed, 22 insertions(+), 5 deletions(-) (limited to 'linux/drivers/media/dvb') diff --git a/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c b/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c index 2e9905b79..b79d94d22 100644 --- a/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c +++ b/linux/drivers/media/dvb/bt8xx/dvb-bt8xx.c @@ -288,21 +288,35 @@ static void dvb_bt8xx_close(void) static int __init dvb_bt8xx_init(void) { + unsigned int card_nr = 0; int card_id; - unsigned int card_nr; int card_type; dprintk("dvb_bt8xx: enumerating availible bttv cards...\n"); - for (card_nr = 0; !bttv_get_cardinfo(card_nr, &card_type, &card_id); card_nr++) { + while (bttv_get_cardinfo(card_nr, &card_type, &card_id) == 0) { switch(card_id) { case 0x001C11BD: - dvb_bt8xx_load(card_nr, "Pinnacle PCTV DVB-S", 0x0400C060); + dvb_bt8xx_load(card_nr, "Pinnacle PCTV DVB-S", + 0x0400C060); break; case 0x01010071: - dvb_bt8xx_load(card_nr, "Nebula DigiTV DVB-T", (1 << 26) | (1 << 14) | (1 << 5)); + dvb_bt8xx_load(card_nr, "Nebula DigiTV DVB-T", + (1 << 26) | (1 << 14) | (1 << 5)); + break; + case 0x07611461: + dvb_bt8xx_load(card_nr, "Avermedia DVB-T", + (1 << 26) | (1 << 14) | (1 << 5)); break; + default: + dprintk("%s: unknown card_nr found %0X\n", + __FUNCTION__, card_nr); + dprintk("%s: unknown card_id found %0X\n", + __FUNCTION__, card_id); + dprintk("%s: unknown card_type found %0X\n", + __FUNCTION__, card_type); } + card_nr++; } return 0; diff --git a/linux/drivers/media/dvb/frontends/Makefile b/linux/drivers/media/dvb/frontends/Makefile index da998647e..f2685f556 100644 --- a/linux/drivers/media/dvb/frontends/Makefile +++ b/linux/drivers/media/dvb/frontends/Makefile @@ -15,3 +15,4 @@ obj-$(CONFIG_DVB_GRUNDIG_29504_401) += grundig_29504-401.o obj-$(CONFIG_DVB_MT312) += mt312.o obj-$(CONFIG_DVB_VES1820) += ves1820.o obj-$(CONFIG_DVB_TDA1004X) += tda1004x.o +obj-$(CONFIG_DVB_SP887X) += sp887x.o diff --git a/linux/drivers/media/dvb/frontends/sp887x.c b/linux/drivers/media/dvb/frontends/sp887x.c index 337c61ea3..664600b53 100644 --- a/linux/drivers/media/dvb/frontends/sp887x.c +++ b/linux/drivers/media/dvb/frontends/sp887x.c @@ -75,7 +75,9 @@ int sp887x_writereg (struct dvb_frontend *fe, u16 reg, u16 data) /** * in case of soft reset we ignore ACK errors... */ - if (!(reg == 0xf1a && data == 0x000 && ret == -EREMOTEIO)) { + if (!(reg == 0xf1a && data == 0x000 && + (ret == -EREMOTEIO || ret == -EFAULT))) + { printk("%s: writereg error " "(reg %03x, data %03x, ret == %i)\n", __FUNCTION__, reg & 0xffff, data & 0xffff, ret); -- cgit v1.2.3