Lines Matching defs:pt3
22 #include "pt3.h"
112 static inline void pt3_lnb_ctrl(struct pt3_board *pt3, bool on)
114 iowrite32((on ? 0x0f : 0x0c), pt3->regs[0] + REG_SYSTEM_W);
119 struct pt3_board *pt3;
123 pt3 = fe->dvb->priv;
125 if (pt3->adaps[i]->fe == fe)
126 return pt3->adaps[i];
137 pt3_set_tuner_power(struct pt3_board *pt3, bool tuner_on, bool amp_on)
145 return pt3_demod_write(pt3->adaps[PT3_NUM_FE - 1], &rv, 1);
151 struct pt3_board *pt3;
162 pt3 = adap->dvb_adap.priv;
163 if (mutex_lock_interruptible(&pt3->lock))
166 pt3->lna_on_cnt++;
168 pt3->lna_on_cnt--;
170 if (val && pt3->lna_on_cnt <= 1) {
171 pt3->lna_on_cnt = 1;
172 ret = pt3_set_tuner_power(pt3, true, true);
173 } else if (!val && pt3->lna_on_cnt <= 0) {
174 pt3->lna_on_cnt = 0;
175 ret = pt3_set_tuner_power(pt3, true, false);
178 mutex_unlock(&pt3->lock);
186 struct pt3_board *pt3;
196 pt3 = adap->dvb_adap.priv;
197 if (mutex_lock_interruptible(&pt3->lock))
200 pt3->lnb_on_cnt++;
202 pt3->lnb_on_cnt--;
204 if (on && pt3->lnb_on_cnt <= 1) {
205 pt3->lnb_on_cnt = 1;
206 pt3_lnb_ctrl(pt3, true);
207 } else if (!on && pt3->lnb_on_cnt <= 0) {
208 pt3->lnb_on_cnt = 0;
209 pt3_lnb_ctrl(pt3, false);
211 mutex_unlock(&pt3->lock);
242 static int pt3_fe_init(struct pt3_board *pt3)
247 pt3_i2c_reset(pt3);
248 ret = pt3_init_all_demods(pt3);
250 dev_warn(&pt3->pdev->dev, "Failed to init demod chips\n");
256 fe = pt3->adaps[i]->fe;
259 ret = pt3_demod_write(pt3->adaps[i],
262 ret = pt3_demod_write(pt3->adaps[i],
265 dev_warn(&pt3->pdev->dev,
275 ret = pt3_set_tuner_power(pt3, true, false);
277 dev_warn(&pt3->pdev->dev, "Failed to control tuner module\n");
283 fe = pt3->adaps[i]->fe;
285 ret = pt3_demod_write(pt3->adaps[i],
288 ret = pt3_demod_write(pt3->adaps[i],
291 dev_warn(&pt3->pdev->dev,
299 fe = pt3->adaps[i]->fe;
305 dev_warn(&pt3->pdev->dev,
310 ret = pt3_init_all_mxl301rf(pt3);
312 dev_warn(&pt3->pdev->dev, "Failed to init TERR-tuners\n");
316 ret = pt3_set_tuner_power(pt3, true, true);
318 dev_warn(&pt3->pdev->dev, "Failed to control tuner module\n");
327 fe = pt3->adaps[i]->fe;
338 dev_warn(&pt3->pdev->dev,
346 fe = pt3->adaps[i]->fe;
361 dev_warn(&pt3->pdev->dev, "FE[%d] failed to standby\n", i);
368 static int pt3_attach_fe(struct pt3_board *pt3, int i)
381 cl = dvb_module_probe("tc90522", info->type, &pt3->i2c_adap,
385 pt3->adaps[i]->i2c_demod = cl;
407 pt3->adaps[i]->i2c_tuner = cl;
409 dvb_adap = &pt3->adaps[one_adapter ? 0 : i]->dvb_adap;
413 pt3->adaps[i]->fe = cfg.fe;
417 dvb_module_release(pt3->adaps[i]->i2c_tuner);
419 dvb_module_release(pt3->adaps[i]->i2c_demod);
463 thread = kthread_run(pt3_fetch_thread, adap, "pt3-ad%i-dmx%i",
526 static int pt3_alloc_adapter(struct pt3_board *pt3, int index)
536 pt3->adaps[index] = adap;
541 THIS_MODULE, &pt3->pdev->dev, adapter_nr);
543 dev_err(&pt3->pdev->dev,
549 da = &pt3->adaps[0]->dvb_adap;
551 adap->dvb_adap.priv = pt3;
560 dev_err(&pt3->pdev->dev, "failed to init dmx dev\n");
568 dev_err(&pt3->pdev->dev, "failed to init dmxdev\n");
574 dev_err(&pt3->pdev->dev, "failed to alloc DMA buffers\n");
590 pt3->adaps[index] = NULL;
594 static void pt3_cleanup_adapter(struct pt3_board *pt3, int index)
599 adap = pt3->adaps[index];
622 pt3->adaps[index] = NULL;
629 struct pt3_board *pt3 = dev_get_drvdata(dev);
634 adap = pt3->adaps[i];
641 pt3_lnb_ctrl(pt3, false);
642 pt3_set_tuner_power(pt3, false, false);
648 struct pt3_board *pt3 = dev_get_drvdata(dev);
652 ret = pt3_fe_init(pt3);
656 if (pt3->lna_on_cnt > 0)
657 pt3_set_tuner_power(pt3, true, true);
658 if (pt3->lnb_on_cnt > 0)
659 pt3_lnb_ctrl(pt3, true);
662 adap = pt3->adaps[i];
666 dev_err(&pt3->pdev->dev, "failed to alloc DMA bufs\n");
681 struct pt3_board *pt3;
684 pt3 = pci_get_drvdata(pdev);
686 pt3_cleanup_adapter(pt3, i);
687 i2c_del_adapter(&pt3->i2c_adap);
688 kfree(pt3->i2c_buf);
689 pci_iounmap(pt3->pdev, pt3->regs[0]);
690 pci_iounmap(pt3->pdev, pt3->regs[1]);
693 kfree(pt3);
701 struct pt3_board *pt3;
730 pt3 = kzalloc(sizeof(*pt3), GFP_KERNEL);
731 if (!pt3) {
735 pci_set_drvdata(pdev, pt3);
736 pt3->pdev = pdev;
737 mutex_init(&pt3->lock);
738 pt3->regs[0] = pci_ioremap_bar(pdev, 0);
739 pt3->regs[1] = pci_ioremap_bar(pdev, 2);
740 if (pt3->regs[0] == NULL || pt3->regs[1] == NULL) {
746 ver = ioread32(pt3->regs[0] + REG_VERSION);
754 pt3->num_bufs = clamp_val(num_bufs, MIN_DATA_BUFS, MAX_DATA_BUFS);
756 pt3->i2c_buf = kmalloc(sizeof(*pt3->i2c_buf), GFP_KERNEL);
757 if (pt3->i2c_buf == NULL) {
761 i2c = &pt3->i2c_adap;
767 i2c_set_adapdata(i2c, pt3);
773 ret = pt3_alloc_adapter(pt3, i);
777 ret = pt3_attach_fe(pt3, i);
786 ret = pt3_fe_init(pt3);
800 pt3_cleanup_adapter(pt3, i--);
803 kfree(pt3->i2c_buf);
805 if (pt3->regs[0])
806 pci_iounmap(pdev, pt3->regs[0]);
807 if (pt3->regs[1])
808 pci_iounmap(pdev, pt3->regs[1]);
810 kfree(pt3);