Lines Matching refs: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);
695 struct pt3_board *pt3;
716 pt3 = devm_kzalloc(&pdev->dev, sizeof(*pt3), GFP_KERNEL);
717 if (!pt3)
719 pci_set_drvdata(pdev, pt3);
720 pt3->pdev = pdev;
721 mutex_init(&pt3->lock);
722 pt3->regs[0] = pcim_iomap_table(pdev)[0];
723 pt3->regs[1] = pcim_iomap_table(pdev)[2];
725 ver = ioread32(pt3->regs[0] + REG_VERSION);
732 pt3->num_bufs = clamp_val(num_bufs, MIN_DATA_BUFS, MAX_DATA_BUFS);
734 pt3->i2c_buf = devm_kmalloc(&pdev->dev, sizeof(*pt3->i2c_buf), GFP_KERNEL);
735 if (!pt3->i2c_buf)
737 i2c = &pt3->i2c_adap;
743 i2c_set_adapdata(i2c, pt3);
749 ret = pt3_alloc_adapter(pt3, i);
753 ret = pt3_attach_fe(pt3, i);
762 ret = pt3_fe_init(pt3);
776 pt3_cleanup_adapter(pt3, i--);