Lines Matching refs:pt3

120 static inline void pt3_lnb_ctrl(struct pt3_board *pt3, bool on)  in pt3_lnb_ctrl()  argument
122 iowrite32((on ? 0x0f : 0x0c), pt3->regs[0] + REG_SYSTEM_W); in pt3_lnb_ctrl()
127 struct pt3_board *pt3; in pt3_find_adapter() local
131 pt3 = fe->dvb->priv; in pt3_find_adapter()
133 if (pt3->adaps[i]->fe == fe) in pt3_find_adapter()
134 return pt3->adaps[i]; in pt3_find_adapter()
145 pt3_set_tuner_power(struct pt3_board *pt3, bool tuner_on, bool amp_on) in pt3_set_tuner_power() argument
153 return pt3_demod_write(pt3->adaps[PT3_NUM_FE - 1], &rv, 1); in pt3_set_tuner_power()
159 struct pt3_board *pt3; in pt3_set_lna() local
170 pt3 = adap->dvb_adap.priv; in pt3_set_lna()
171 if (mutex_lock_interruptible(&pt3->lock)) in pt3_set_lna()
174 pt3->lna_on_cnt++; in pt3_set_lna()
176 pt3->lna_on_cnt--; in pt3_set_lna()
178 if (val && pt3->lna_on_cnt <= 1) { in pt3_set_lna()
179 pt3->lna_on_cnt = 1; in pt3_set_lna()
180 ret = pt3_set_tuner_power(pt3, true, true); in pt3_set_lna()
181 } else if (!val && pt3->lna_on_cnt <= 0) { in pt3_set_lna()
182 pt3->lna_on_cnt = 0; in pt3_set_lna()
183 ret = pt3_set_tuner_power(pt3, true, false); in pt3_set_lna()
186 mutex_unlock(&pt3->lock); in pt3_set_lna()
194 struct pt3_board *pt3; in pt3_set_voltage() local
204 pt3 = adap->dvb_adap.priv; in pt3_set_voltage()
205 if (mutex_lock_interruptible(&pt3->lock)) in pt3_set_voltage()
208 pt3->lnb_on_cnt++; in pt3_set_voltage()
210 pt3->lnb_on_cnt--; in pt3_set_voltage()
212 if (on && pt3->lnb_on_cnt <= 1) { in pt3_set_voltage()
213 pt3->lnb_on_cnt = 1; in pt3_set_voltage()
214 pt3_lnb_ctrl(pt3, true); in pt3_set_voltage()
215 } else if (!on && pt3->lnb_on_cnt <= 0) { in pt3_set_voltage()
216 pt3->lnb_on_cnt = 0; in pt3_set_voltage()
217 pt3_lnb_ctrl(pt3, false); in pt3_set_voltage()
219 mutex_unlock(&pt3->lock); in pt3_set_voltage()
250 static int pt3_fe_init(struct pt3_board *pt3) in pt3_fe_init() argument
255 pt3_i2c_reset(pt3); in pt3_fe_init()
256 ret = pt3_init_all_demods(pt3); in pt3_fe_init()
258 dev_warn(&pt3->pdev->dev, "Failed to init demod chips\n"); in pt3_fe_init()
264 fe = pt3->adaps[i]->fe; in pt3_fe_init()
267 ret = pt3_demod_write(pt3->adaps[i], in pt3_fe_init()
270 ret = pt3_demod_write(pt3->adaps[i], in pt3_fe_init()
273 dev_warn(&pt3->pdev->dev, in pt3_fe_init()
283 ret = pt3_set_tuner_power(pt3, true, false); in pt3_fe_init()
285 dev_warn(&pt3->pdev->dev, "Failed to control tuner module\n"); in pt3_fe_init()
291 fe = pt3->adaps[i]->fe; in pt3_fe_init()
293 ret = pt3_demod_write(pt3->adaps[i], in pt3_fe_init()
296 ret = pt3_demod_write(pt3->adaps[i], in pt3_fe_init()
299 dev_warn(&pt3->pdev->dev, in pt3_fe_init()
307 fe = pt3->adaps[i]->fe; in pt3_fe_init()
313 dev_warn(&pt3->pdev->dev, in pt3_fe_init()
318 ret = pt3_init_all_mxl301rf(pt3); in pt3_fe_init()
320 dev_warn(&pt3->pdev->dev, "Failed to init TERR-tuners\n"); in pt3_fe_init()
324 ret = pt3_set_tuner_power(pt3, true, true); in pt3_fe_init()
326 dev_warn(&pt3->pdev->dev, "Failed to control tuner module\n"); in pt3_fe_init()
335 fe = pt3->adaps[i]->fe; in pt3_fe_init()
346 dev_warn(&pt3->pdev->dev, in pt3_fe_init()
354 fe = pt3->adaps[i]->fe; in pt3_fe_init()
369 dev_warn(&pt3->pdev->dev, "FE[%d] failed to standby\n", i); in pt3_fe_init()
376 static int pt3_attach_fe(struct pt3_board *pt3, int i) in pt3_attach_fe() argument
391 cl = i2c_new_device(&pt3->i2c_adap, &info); in pt3_attach_fe()
394 pt3->adaps[i]->i2c_demod = cl; in pt3_attach_fe()
419 pt3->adaps[i]->i2c_tuner = cl; in pt3_attach_fe()
423 dvb_adap = &pt3->adaps[one_adapter ? 0 : i]->dvb_adap; in pt3_attach_fe()
427 pt3->adaps[i]->fe = cfg.fe; in pt3_attach_fe()
431 module_put(pt3->adaps[i]->i2c_tuner->dev.driver->owner); in pt3_attach_fe()
433 i2c_unregister_device(pt3->adaps[i]->i2c_tuner); in pt3_attach_fe()
435 module_put(pt3->adaps[i]->i2c_demod->dev.driver->owner); in pt3_attach_fe()
437 i2c_unregister_device(pt3->adaps[i]->i2c_demod); in pt3_attach_fe()
549 static int pt3_alloc_adapter(struct pt3_board *pt3, int index) in pt3_alloc_adapter() argument
559 pt3->adaps[index] = adap; in pt3_alloc_adapter()
564 THIS_MODULE, &pt3->pdev->dev, adapter_nr); in pt3_alloc_adapter()
566 dev_err(&pt3->pdev->dev, in pt3_alloc_adapter()
572 da = &pt3->adaps[0]->dvb_adap; in pt3_alloc_adapter()
574 adap->dvb_adap.priv = pt3; in pt3_alloc_adapter()
583 dev_err(&pt3->pdev->dev, "failed to init dmx dev\n"); in pt3_alloc_adapter()
591 dev_err(&pt3->pdev->dev, "failed to init dmxdev\n"); in pt3_alloc_adapter()
597 dev_err(&pt3->pdev->dev, "failed to alloc DMA buffers\n"); in pt3_alloc_adapter()
613 pt3->adaps[index] = NULL; in pt3_alloc_adapter()
617 static void pt3_cleanup_adapter(struct pt3_board *pt3, int index) in pt3_cleanup_adapter() argument
622 adap = pt3->adaps[index]; in pt3_cleanup_adapter()
651 pt3->adaps[index] = NULL; in pt3_cleanup_adapter()
659 struct pt3_board *pt3 = pci_get_drvdata(pdev); in pt3_suspend() local
664 adap = pt3->adaps[i]; in pt3_suspend()
671 pt3_lnb_ctrl(pt3, false); in pt3_suspend()
672 pt3_set_tuner_power(pt3, false, false); in pt3_suspend()
679 struct pt3_board *pt3 = pci_get_drvdata(pdev); in pt3_resume() local
683 ret = pt3_fe_init(pt3); in pt3_resume()
687 if (pt3->lna_on_cnt > 0) in pt3_resume()
688 pt3_set_tuner_power(pt3, true, true); in pt3_resume()
689 if (pt3->lnb_on_cnt > 0) in pt3_resume()
690 pt3_lnb_ctrl(pt3, true); in pt3_resume()
693 adap = pt3->adaps[i]; in pt3_resume()
697 dev_err(&pt3->pdev->dev, "failed to alloc DMA bufs\n"); in pt3_resume()
712 struct pt3_board *pt3; in pt3_remove() local
715 pt3 = pci_get_drvdata(pdev); in pt3_remove()
717 pt3_cleanup_adapter(pt3, i); in pt3_remove()
718 i2c_del_adapter(&pt3->i2c_adap); in pt3_remove()
719 kfree(pt3->i2c_buf); in pt3_remove()
720 pci_iounmap(pt3->pdev, pt3->regs[0]); in pt3_remove()
721 pci_iounmap(pt3->pdev, pt3->regs[1]); in pt3_remove()
724 kfree(pt3); in pt3_remove()
732 struct pt3_board *pt3; in pt3_probe() local
761 pt3 = kzalloc(sizeof(*pt3), GFP_KERNEL); in pt3_probe()
762 if (!pt3) { in pt3_probe()
766 pci_set_drvdata(pdev, pt3); in pt3_probe()
767 pt3->pdev = pdev; in pt3_probe()
768 mutex_init(&pt3->lock); in pt3_probe()
769 pt3->regs[0] = pci_ioremap_bar(pdev, 0); in pt3_probe()
770 pt3->regs[1] = pci_ioremap_bar(pdev, 2); in pt3_probe()
771 if (pt3->regs[0] == NULL || pt3->regs[1] == NULL) { in pt3_probe()
777 ver = ioread32(pt3->regs[0] + REG_VERSION); in pt3_probe()
785 pt3->num_bufs = clamp_val(num_bufs, MIN_DATA_BUFS, MAX_DATA_BUFS); in pt3_probe()
787 pt3->i2c_buf = kmalloc(sizeof(*pt3->i2c_buf), GFP_KERNEL); in pt3_probe()
788 if (pt3->i2c_buf == NULL) { in pt3_probe()
792 i2c = &pt3->i2c_adap; in pt3_probe()
798 i2c_set_adapdata(i2c, pt3); in pt3_probe()
806 ret = pt3_alloc_adapter(pt3, i); in pt3_probe()
810 ret = pt3_attach_fe(pt3, i); in pt3_probe()
819 ret = pt3_fe_init(pt3); in pt3_probe()
833 pt3_cleanup_adapter(pt3, i--); in pt3_probe()
836 kfree(pt3->i2c_buf); in pt3_probe()
838 if (pt3->regs[0]) in pt3_probe()
839 pci_iounmap(pdev, pt3->regs[0]); in pt3_probe()
840 if (pt3->regs[1]) in pt3_probe()
841 pci_iounmap(pdev, pt3->regs[1]); in pt3_probe()
843 kfree(pt3); in pt3_probe()