diff options
Diffstat (limited to 'drivers/media/dvb/ttpci/budget.c')
-rw-r--r-- | drivers/media/dvb/ttpci/budget.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/drivers/media/dvb/ttpci/budget.c b/drivers/media/dvb/ttpci/budget.c index f0068996ac07..1638e1d9f538 100644 --- a/drivers/media/dvb/ttpci/budget.c +++ b/drivers/media/dvb/ttpci/budget.c | |||
@@ -46,11 +46,14 @@ | |||
46 | #include "lnbp21.h" | 46 | #include "lnbp21.h" |
47 | #include "bsru6.h" | 47 | #include "bsru6.h" |
48 | #include "bsbe1.h" | 48 | #include "bsbe1.h" |
49 | #include "tdhd1.h" | ||
49 | 50 | ||
50 | static int diseqc_method; | 51 | static int diseqc_method; |
51 | module_param(diseqc_method, int, 0444); | 52 | module_param(diseqc_method, int, 0444); |
52 | MODULE_PARM_DESC(diseqc_method, "Select DiSEqC method for subsystem id 13c2:1003, 0: default, 1: more reliable (for newer revisions only)"); | 53 | MODULE_PARM_DESC(diseqc_method, "Select DiSEqC method for subsystem id 13c2:1003, 0: default, 1: more reliable (for newer revisions only)"); |
53 | 54 | ||
55 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | ||
56 | |||
54 | static void Set22K (struct budget *budget, int state) | 57 | static void Set22K (struct budget *budget, int state) |
55 | { | 58 | { |
56 | struct saa7146_dev *dev=budget->dev; | 59 | struct saa7146_dev *dev=budget->dev; |
@@ -390,6 +393,13 @@ static struct stv0299_config alps_bsbe1_config_activy = { | |||
390 | .set_symbol_rate = alps_bsbe1_set_symbol_rate, | 393 | .set_symbol_rate = alps_bsbe1_set_symbol_rate, |
391 | }; | 394 | }; |
392 | 395 | ||
396 | static int alps_tdhd1_204_request_firmware(struct dvb_frontend *fe, const struct firmware **fw, char *name) | ||
397 | { | ||
398 | struct budget *budget = (struct budget *)fe->dvb->priv; | ||
399 | |||
400 | return request_firmware(fw, name, &budget->dev->pci->dev); | ||
401 | } | ||
402 | |||
393 | 403 | ||
394 | static int i2c_readreg(struct i2c_adapter *i2c, u8 adr, u8 reg) | 404 | static int i2c_readreg(struct i2c_adapter *i2c, u8 adr, u8 reg) |
395 | { | 405 | { |
@@ -511,6 +521,14 @@ static void frontend_init(struct budget *budget) | |||
511 | } | 521 | } |
512 | break; | 522 | break; |
513 | 523 | ||
524 | case 0x5f60: /* Fujitsu Siemens Activy Budget-T PCI rev AL (tda10046/ALPS TDHD1-204A) */ | ||
525 | budget->dvb_frontend = dvb_attach(tda10046_attach, &alps_tdhd1_204a_config, &budget->i2c_adap); | ||
526 | if (budget->dvb_frontend) { | ||
527 | budget->dvb_frontend->ops.tuner_ops.set_params = alps_tdhd1_204a_tuner_set_params; | ||
528 | budget->dvb_frontend->tuner_priv = &budget->i2c_adap; | ||
529 | } | ||
530 | break; | ||
531 | |||
514 | case 0x5f61: /* Fujitsu Siemens Activy Budget-T PCI rev GR (L64781/Grundig 29504-401(tsa5060)) */ | 532 | case 0x5f61: /* Fujitsu Siemens Activy Budget-T PCI rev GR (L64781/Grundig 29504-401(tsa5060)) */ |
515 | budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config_activy, &budget->i2c_adap); | 533 | budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config_activy, &budget->i2c_adap); |
516 | if (budget->dvb_frontend) { | 534 | if (budget->dvb_frontend) { |
@@ -550,7 +568,7 @@ static void frontend_init(struct budget *budget) | |||
550 | } | 568 | } |
551 | 569 | ||
552 | if (budget->dvb_frontend == NULL) { | 570 | if (budget->dvb_frontend == NULL) { |
553 | printk("budget: A frontend driver was not found for device %04x/%04x subsystem %04x/%04x\n", | 571 | printk("budget: A frontend driver was not found for device [%04x:%04x] subsystem [%04x:%04x]\n", |
554 | budget->dev->pci->vendor, | 572 | budget->dev->pci->vendor, |
555 | budget->dev->pci->device, | 573 | budget->dev->pci->device, |
556 | budget->dev->pci->subsystem_vendor, | 574 | budget->dev->pci->subsystem_vendor, |
@@ -582,7 +600,8 @@ static int budget_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_ | |||
582 | 600 | ||
583 | dev->ext_priv = budget; | 601 | dev->ext_priv = budget; |
584 | 602 | ||
585 | if ((err = ttpci_budget_init (budget, dev, info, THIS_MODULE))) { | 603 | err = ttpci_budget_init(budget, dev, info, THIS_MODULE, adapter_nr); |
604 | if (err) { | ||
586 | printk("==> failed\n"); | 605 | printk("==> failed\n"); |
587 | kfree (budget); | 606 | kfree (budget); |
588 | return err; | 607 | return err; |
@@ -624,6 +643,7 @@ MAKE_BUDGET_INFO(ttbs1401, "TT-Budget-S-1401 PCI", BUDGET_TT); | |||
624 | MAKE_BUDGET_INFO(fsacs0, "Fujitsu Siemens Activy Budget-S PCI (rev GR/grundig frontend)", BUDGET_FS_ACTIVY); | 643 | MAKE_BUDGET_INFO(fsacs0, "Fujitsu Siemens Activy Budget-S PCI (rev GR/grundig frontend)", BUDGET_FS_ACTIVY); |
625 | MAKE_BUDGET_INFO(fsacs1, "Fujitsu Siemens Activy Budget-S PCI (rev AL/alps frontend)", BUDGET_FS_ACTIVY); | 644 | MAKE_BUDGET_INFO(fsacs1, "Fujitsu Siemens Activy Budget-S PCI (rev AL/alps frontend)", BUDGET_FS_ACTIVY); |
626 | MAKE_BUDGET_INFO(fsact, "Fujitsu Siemens Activy Budget-T PCI (rev GR/Grundig frontend)", BUDGET_FS_ACTIVY); | 645 | MAKE_BUDGET_INFO(fsact, "Fujitsu Siemens Activy Budget-T PCI (rev GR/Grundig frontend)", BUDGET_FS_ACTIVY); |
646 | MAKE_BUDGET_INFO(fsact1, "Fujitsu Siemens Activy Budget-T PCI (rev AL/ALPS TDHD1-204A)", BUDGET_FS_ACTIVY); | ||
627 | 647 | ||
628 | static struct pci_device_id pci_tbl[] = { | 648 | static struct pci_device_id pci_tbl[] = { |
629 | MAKE_EXTENSION_PCI(ttbs, 0x13c2, 0x1003), | 649 | MAKE_EXTENSION_PCI(ttbs, 0x13c2, 0x1003), |
@@ -634,6 +654,7 @@ static struct pci_device_id pci_tbl[] = { | |||
634 | MAKE_EXTENSION_PCI(ttbs1401, 0x13c2, 0x1018), | 654 | MAKE_EXTENSION_PCI(ttbs1401, 0x13c2, 0x1018), |
635 | MAKE_EXTENSION_PCI(fsacs1,0x1131, 0x4f60), | 655 | MAKE_EXTENSION_PCI(fsacs1,0x1131, 0x4f60), |
636 | MAKE_EXTENSION_PCI(fsacs0,0x1131, 0x4f61), | 656 | MAKE_EXTENSION_PCI(fsacs0,0x1131, 0x4f61), |
657 | MAKE_EXTENSION_PCI(fsact1, 0x1131, 0x5f60), | ||
637 | MAKE_EXTENSION_PCI(fsact, 0x1131, 0x5f61), | 658 | MAKE_EXTENSION_PCI(fsact, 0x1131, 0x5f61), |
638 | { | 659 | { |
639 | .vendor = 0, | 660 | .vendor = 0, |