summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/b2c2/skystar2.c
diff options
context:
space:
mode:
authorHolger Waechtler <devnull@localhost>2003-12-01 08:28:49 +0000
committerHolger Waechtler <devnull@localhost>2003-12-01 08:28:49 +0000
commit3680ccbf9a8c098794b1de328049ff9fe8c2cf55 (patch)
tree9e98cfd74558ac374fefcd763bf14ff0ce7fc317 /linux/drivers/media/dvb/b2c2/skystar2.c
parent819173108ff264ac976ae6184b612719a6648b2c (diff)
downloadmediapointer-dvb-s2-3680ccbf9a8c098794b1de328049ff9fe8c2cf55.tar.gz
mediapointer-dvb-s2-3680ccbf9a8c098794b1de328049ff9fe8c2cf55.tar.bz2
add support for the FCIII. Contributed by Augusto Cardoso.
Diffstat (limited to 'linux/drivers/media/dvb/b2c2/skystar2.c')
-rw-r--r--linux/drivers/media/dvb/b2c2/skystar2.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/linux/drivers/media/dvb/b2c2/skystar2.c b/linux/drivers/media/dvb/b2c2/skystar2.c
index 87d9e2115..2566898f8 100644
--- a/linux/drivers/media/dvb/b2c2/skystar2.c
+++ b/linux/drivers/media/dvb/b2c2/skystar2.c
@@ -2096,15 +2096,25 @@ static int driver_initialize(struct pci_dev * pdev)
adapter->b2c2_revision = (read_reg_dw(adapter, 0x204) >> 0x18);
- if ((adapter->b2c2_revision != 0x82) && (adapter->b2c2_revision != 0xC3))
- if (adapter->b2c2_revision != 0x82) {
- dprintk("%s: The revision of the FlexCopII chip on your card is - %d\n", __FUNCTION__, adapter->b2c2_revision);
- dprintk("%s: This driver works now only with FlexCopII(rev.130) and FlexCopIIB(rev.195).\n", __FUNCTION__);
-
- free_adapter_object(adapter);
-
- return -ENODEV;
- }
+ switch(adapter->b2c2_revision) {
+ case 0x82:
+ printk("%s: FlexCopII(rev.130) chip found\n", __FILE__);
+ break;
+ case 0xC3:
+ printk("%s: FlexCopIIB(rev.195) chip found\n", __FILE__);
+ break;
+ case 0xC0:
+ printk("%s: FlexCopIII(rev.192) chip found\n", __FILE__);
+ break;
+ default:
+ printk("%s: The revision of the FlexCop chip on your card is %d\n", __FILE__, adapter->b2c2_revision);
+ printk("%s: This driver works only with FlexCopII(rev.130), FlexCopIIB(rev.195) and FlexCopIII(rev. 192).\n", __FILE__);
+ free_adapter_object(adapter);
+ pci_set_drvdata(pdev, NULL);
+ release_region(pci_resource_start(pdev,1), pci_resource_len(pdev,1));
+ release_mem_region(pci_resource_start(pdev,0), pci_resource_len(pdev,0));
+ return -ENODEV;
+ }
tmp = read_reg_dw(adapter, 0x204);
@@ -2501,8 +2511,9 @@ static void skystar2_remove(struct pci_dev *pdev)
}
static struct pci_device_id skystar2_pci_tbl[] = {
- {0x000013D0, 0x00002103, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000},
- {0,},
+ { 0x000013D0, 0x00002103, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000 },
+ { 0x000013D0, 0x00002200, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000 }, //FCIII
+ { 0, },
};
static struct pci_driver skystar2_pci_driver = {