Lines Matching refs:budget

2  * budget.c: driver for the SAA7146 based Budget DVB cards
37 #include "budget.h"
62 static void Set22K (struct budget *budget, int state)
64 struct saa7146_dev *dev=budget->dev;
65 dprintk(2, "budget: %p\n", budget);
73 static void DiseqcSendBit (struct budget *budget, int data)
75 struct saa7146_dev *dev=budget->dev;
76 dprintk(2, "budget: %p\n", budget);
84 static void DiseqcSendByte (struct budget *budget, int data)
88 dprintk(2, "budget: %p\n", budget);
93 DiseqcSendBit(budget, d);
96 DiseqcSendBit(budget, par);
99 static int SendDiSEqCMsg (struct budget *budget, int len, u8 *msg, unsigned long burst)
101 struct saa7146_dev *dev=budget->dev;
104 dprintk(2, "budget: %p\n", budget);
110 DiseqcSendByte(budget, msg[i]);
116 DiseqcSendByte(budget, 0xff);
130 * Routines for the Fujitsu Siemens Activy budget card
135 static int SetVoltage_Activy (struct budget *budget, fe_sec_voltage_t voltage)
137 struct saa7146_dev *dev=budget->dev;
139 dprintk(2, "budget: %p\n", budget);
162 struct budget* budget = (struct budget*) fe->dvb->priv;
164 return SetVoltage_Activy (budget, voltage);
169 struct budget* budget = (struct budget*) fe->dvb->priv;
173 Set22K (budget, 1);
177 Set22K (budget, 0);
189 struct budget* budget = (struct budget*) fe->dvb->priv;
191 SendDiSEqCMsg (budget, cmd->msg_len, cmd->msg, 0);
198 struct budget* budget = (struct budget*) fe->dvb->priv;
200 SendDiSEqCMsg (budget, 0, NULL, minicmd);
208 struct budget* budget = (struct budget*) fe->dvb->priv;
236 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
250 struct budget* budget = (struct budget*) fe->dvb->priv;
264 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
278 struct budget *budget = fe->dvb->priv;
319 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
336 struct budget* budget = (struct budget*) fe->dvb->priv;
349 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
360 struct budget* budget = (struct budget*) fe->dvb->priv;
381 if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
421 struct budget *budget = (struct budget *)fe->dvb->priv;
423 return request_firmware(fw, name, &budget->dev->pci->dev);
438 static u8 read_pwm(struct budget* budget)
445 if ((i2c_transfer(&budget->i2c_adap, msg, 2) != 2) || (pwm == 0xff))
490 static void frontend_init(struct budget *budget)
494 switch(budget->dev->pci->subsystem_device) {
495 case 0x1003: // Hauppauge/TT Nova budget (stv0299/ALPS BSRU6(tsa5059) OR ves1893/ALPS BSRV2(sp5659))
498 budget->dvb_frontend = dvb_attach(ves1x93_attach, &alps_bsrv2_config, &budget->i2c_adap);
499 if (budget->dvb_frontend) {
500 budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsrv2_tuner_set_params;
501 budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_diseqc_send_master_cmd;
502 budget->dvb_frontend->ops.diseqc_send_burst = budget_diseqc_send_burst;
503 budget->dvb_frontend->ops.set_tone = budget_set_tone;
508 budget->dvb_frontend = dvb_attach(stv0299_attach, &alps_bsru6_config, &budget->i2c_adap);
509 if (budget->dvb_frontend) {
510 budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
511 budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
512 if (budget->dev->pci->subsystem_device == 0x1003 && diseqc_method == 0) {
513 budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_diseqc_send_master_cmd;
514 budget->dvb_frontend->ops.diseqc_send_burst = budget_diseqc_send_burst;
515 budget->dvb_frontend->ops.set_tone = budget_set_tone;
521 case 0x1004: // Hauppauge/TT DVB-C budget (ves1820/ALPS TDBE2(sp5659))
523 budget->dvb_frontend = dvb_attach(ves1820_attach, &alps_tdbe2_config, &budget->i2c_adap, read_pwm(budget));
524 if (budget->dvb_frontend) {
525 budget->dvb_frontend->ops.tuner_ops.set_params = alps_tdbe2_tuner_set_params;
530 case 0x1005: // Hauppauge/TT Nova-T budget (L64781/Grundig 29504-401(tsa5060))
532 budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config, &budget->i2c_adap);
533 if (budget->dvb_frontend) {
534 budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params;
535 budget->dvb_frontend->tuner_priv = NULL;
541 budget->dvb_frontend = dvb_attach(stv0299_attach, &alps_bsru6_config, &budget->i2c_adap);
542 if (budget->dvb_frontend) {
543 printk(KERN_INFO "budget: tuner ALPS BSRU6 in Philips Semi. Sylt detected\n");
544 budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
545 budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
552 int subtype = i2c_readreg(&budget->i2c_adap, 0x50, 0x67);
559 budget->dvb_frontend = dvb_attach(stv0299_attach, &alps_bsru6_config_activy, &budget->i2c_adap);
560 if (budget->dvb_frontend) {
561 printk(KERN_INFO "budget: tuner ALPS BSRU6 detected\n");
562 budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
563 budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
564 budget->dvb_frontend->ops.set_voltage = siemens_budget_set_voltage;
565 budget->dvb_frontend->ops.dishnetwork_send_legacy_command = NULL;
571 saa7146_setgpio(budget->dev, 3, SAA7146_GPIO_OUTLO);
573 saa7146_setgpio(budget->dev, 3, SAA7146_GPIO_OUTHI);
575 budget->dvb_frontend = dvb_attach(stv0299_attach, &alps_bsbe1_config_activy, &budget->i2c_adap);
576 if (budget->dvb_frontend) {
577 printk(KERN_INFO "budget: tuner ALPS BSBE1 detected\n");
578 budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsbe1_tuner_set_params;
579 budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
580 budget->dvb_frontend->ops.set_voltage = siemens_budget_set_voltage;
581 budget->dvb_frontend->ops.dishnetwork_send_legacy_command = NULL;
589 budget->dvb_frontend = dvb_attach(tda8083_attach, &grundig_29504_451_config, &budget->i2c_adap);
590 if (budget->dvb_frontend) {
591 budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_451_tuner_set_params;
592 budget->dvb_frontend->ops.set_voltage = siemens_budget_set_voltage;
593 budget->dvb_frontend->ops.dishnetwork_send_legacy_command = NULL;
598 budget->dvb_frontend = dvb_attach(tda10046_attach, &alps_tdhd1_204a_config, &budget->i2c_adap);
599 if (budget->dvb_frontend) {
600 budget->dvb_frontend->ops.tuner_ops.set_params = alps_tdhd1_204a_tuner_set_params;
601 budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
606 budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config_activy, &budget->i2c_adap);
607 if (budget->dvb_frontend) {
608 budget->dvb_frontend->tuner_priv = &tuner_address_grundig_29504_401_activy;
609 budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params;
614 budget->dvb_frontend = dvb_attach(s5h1420_attach, &s5h1420_config, &budget->i2c_adap);
615 if (budget->dvb_frontend) {
616 budget->dvb_frontend->ops.tuner_ops.set_params = s5h1420_tuner_set_params;
617 if (dvb_attach(lnbp21_attach, budget->dvb_frontend, &budget->i2c_adap, 0, 0) == NULL) {
626 saa7146_setgpio(budget->dev, 2, SAA7146_GPIO_OUTLO);
628 saa7146_setgpio(budget->dev, 2, SAA7146_GPIO_OUTHI);
631 budget->dvb_frontend = dvb_attach(tda10086_attach, &tda10086_config, &budget->i2c_adap);
632 if (budget->dvb_frontend) {
633 if (dvb_attach(tda826x_attach, budget->dvb_frontend, 0x60, &budget->i2c_adap, 0) == NULL)
635 if (dvb_attach(lnbp21_attach, budget->dvb_frontend, &budget->i2c_adap, 0, 0) == NULL) {
644 saa7146_setgpio(budget->dev, 2, SAA7146_GPIO_OUTLO);
646 saa7146_setgpio(budget->dev, 2, SAA7146_GPIO_OUTHI);
649 budget->dvb_frontend = dvb_attach(stv090x_attach,
651 &budget->i2c_adap,
654 if (budget->dvb_frontend) {
657 budget->dvb_frontend,
659 &budget->i2c_adap);
677 if (budget->dvb_frontend->ops.init)
678 budget->dvb_frontend->ops.init(budget->dvb_frontend);
681 budget->dvb_frontend,
682 &budget->i2c_adap,
697 saa7146_setgpio(budget->dev, 2, SAA7146_GPIO_OUTLO);
699 saa7146_setgpio(budget->dev, 2, SAA7146_GPIO_OUTHI);
702 budget->dvb_frontend = dvb_attach(stv090x_attach,
704 &budget->i2c_adap,
707 if (budget->dvb_frontend) {
708 printk(KERN_INFO "budget: Omicom S2 detected\n");
711 budget->dvb_frontend,
713 &budget->i2c_adap);
731 if (budget->dvb_frontend->ops.init)
732 budget->dvb_frontend->ops.init(budget->dvb_frontend);
735 budget->dvb_frontend,
736 &budget->i2c_adap,
752 if (budget->dvb_frontend == NULL) {
753 printk("budget: A frontend driver was not found for device [%04x:%04x] subsystem [%04x:%04x]\n",
754 budget->dev->pci->vendor,
755 budget->dev->pci->device,
756 budget->dev->pci->subsystem_vendor,
757 budget->dev->pci->subsystem_device);
759 if (dvb_register_frontend(&budget->dvb_adapter, budget->dvb_frontend))
765 printk("budget: Frontend registration failed!\n");
766 dvb_frontend_detach(budget->dvb_frontend);
767 budget->dvb_frontend = NULL;
773 struct budget *budget = NULL;
776 budget = kmalloc(sizeof(struct budget), GFP_KERNEL);
777 if( NULL == budget ) {
781 dprintk(2, "dev:%p, info:%p, budget:%p\n", dev, info, budget);
783 dev->ext_priv = budget;
785 err = ttpci_budget_init(budget, dev, info, THIS_MODULE, adapter_nr);
788 kfree (budget);
792 budget->dvb_adapter.priv = budget;
793 frontend_init(budget);
795 ttpci_budget_init_hooks(budget);
802 struct budget *budget = (struct budget*) dev->ext_priv;
805 if (budget->dvb_frontend) {
806 dvb_unregister_frontend(budget->dvb_frontend);
807 dvb_frontend_detach(budget->dvb_frontend);
810 err = ttpci_budget_deinit (budget);
812 kfree (budget);
855 .name = "budget dvb",
883 "budget PCI DVB cards by Siemens, Technotrend, Hauppauge");