Lines Matching refs:card
56 struct dvb_bt8xx_card *card = (struct dvb_bt8xx_card *)data; in dvb_bt8xx_task() local
60 while (card->bt->last_block != card->bt->finished_block) { in dvb_bt8xx_task()
61 (card->bt->TS_Size ? dvb_dmx_swfilter_204 : dvb_dmx_swfilter) in dvb_bt8xx_task()
62 (&card->demux, in dvb_bt8xx_task()
63 &card->bt->buf_cpu[card->bt->last_block * in dvb_bt8xx_task()
64 card->bt->block_bytes], in dvb_bt8xx_task()
65 card->bt->block_bytes); in dvb_bt8xx_task()
66 card->bt->last_block = (card->bt->last_block + 1) % in dvb_bt8xx_task()
67 card->bt->block_count; in dvb_bt8xx_task()
74 struct dvb_bt8xx_card *card = dvbdmx->priv; in dvb_bt8xx_start_feed() local
82 mutex_lock(&card->lock); in dvb_bt8xx_start_feed()
83 card->nfeeds++; in dvb_bt8xx_start_feed()
84 rc = card->nfeeds; in dvb_bt8xx_start_feed()
85 if (card->nfeeds == 1) in dvb_bt8xx_start_feed()
86 bt878_start(card->bt, card->gpio_mode, in dvb_bt8xx_start_feed()
87 card->op_sync_orin, card->irq_err_ignore); in dvb_bt8xx_start_feed()
88 mutex_unlock(&card->lock); in dvb_bt8xx_start_feed()
95 struct dvb_bt8xx_card *card = dvbdmx->priv; in dvb_bt8xx_stop_feed() local
102 mutex_lock(&card->lock); in dvb_bt8xx_stop_feed()
103 card->nfeeds--; in dvb_bt8xx_stop_feed()
104 if (card->nfeeds == 0) in dvb_bt8xx_stop_feed()
105 bt878_stop(card->bt); in dvb_bt8xx_stop_feed()
106 mutex_unlock(&card->lock); in dvb_bt8xx_stop_feed()
252 struct dvb_bt8xx_card *card = fe->dvb->priv; in pinnsat_tuner_init() local
254 bttv_gpio_enable(card->bttv_nr, 1, 1); /* output */ in pinnsat_tuner_init()
255 bttv_write_gpio(card->bttv_nr, 1, 1); /* relay on */ in pinnsat_tuner_init()
262 struct dvb_bt8xx_card *card = fe->dvb->priv; in pinnsat_tuner_sleep() local
264 bttv_write_gpio(card->bttv_nr, 1, 0); /* relay off */ in pinnsat_tuner_sleep()
276 struct dvb_bt8xx_card *card = (struct dvb_bt8xx_card *) fe->dvb->priv; in microtune_mt7202dtf_tuner_set_params() local
310 i2c_transfer(card->i2c_adapter, &msg, 1); in microtune_mt7202dtf_tuner_set_params()
472 struct dvb_bt8xx_card *card = (struct dvb_bt8xx_card *) fe->dvb->priv; in vp3021_alps_tded4_tuner_set_params() local
495 i2c_transfer(card->i2c_adapter, &msg, 1); in vp3021_alps_tded4_tuner_set_params()
597 static void frontend_init(struct dvb_bt8xx_card *card, u32 type) in frontend_init() argument
603 card->fe = dvb_attach(mt352_attach, &thomson_dtt7579_config, card->i2c_adapter); in frontend_init()
605 if (card->fe == NULL) in frontend_init()
606 card->fe = dvb_attach(zl10353_attach, &thomson_dtt7579_zl10353_config, in frontend_init()
607 card->i2c_adapter); in frontend_init()
609 if (card->fe != NULL) { in frontend_init()
610 card->fe->ops.tuner_ops.calc_regs = thomson_dtt7579_tuner_calc_regs; in frontend_init()
611 card->fe->ops.info.frequency_min = 174000000; in frontend_init()
612 card->fe->ops.info.frequency_max = 862000000; in frontend_init()
617 lgdt330x_reset(card); in frontend_init()
618 card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config, card->i2c_adapter); in frontend_init()
619 if (card->fe != NULL) { in frontend_init()
620 dvb_attach(simple_tuner_attach, card->fe, in frontend_init()
621 card->i2c_adapter, 0x61, in frontend_init()
634 digitv_alps_tded4_reset(card); in frontend_init()
635 card->fe = dvb_attach(nxt6000_attach, &vp3021_alps_tded4_config, card->i2c_adapter); in frontend_init()
636 if (card->fe != NULL) { in frontend_init()
637 card->fe->ops.tuner_ops.set_params = vp3021_alps_tded4_tuner_set_params; in frontend_init()
643 digitv_alps_tded4_reset(card); in frontend_init()
644 card->fe = dvb_attach(mt352_attach, &digitv_alps_tded4_config, card->i2c_adapter); in frontend_init()
646 if (card->fe != NULL) { in frontend_init()
647 card->fe->ops.tuner_ops.calc_regs = digitv_alps_tded4_tuner_calc_regs; in frontend_init()
653 card->fe = dvb_attach(sp887x_attach, µtune_mt7202dtf_config, card->i2c_adapter); in frontend_init()
654 if (card->fe) { in frontend_init()
655 card->fe->ops.tuner_ops.set_params = microtune_mt7202dtf_tuner_set_params; in frontend_init()
660 card->fe = dvb_attach(mt352_attach, &advbt771_samsung_tdtc9251dh0_config, card->i2c_adapter); in frontend_init()
661 if (card->fe != NULL) { in frontend_init()
662 card->fe->ops.tuner_ops.calc_regs = advbt771_samsung_tdtc9251dh0_tuner_calc_regs; in frontend_init()
663 card->fe->ops.info.frequency_min = 174000000; in frontend_init()
664 card->fe->ops.info.frequency_max = 862000000; in frontend_init()
677 state->i2c = card->i2c_adapter; in frontend_init()
678 state->bt = card->bt; in frontend_init()
681 if (dvb_attach(dst_attach, state, &card->dvb_adapter) == NULL) { in frontend_init()
687 card->fe = &state->frontend; in frontend_init()
689 dvb_attach(dst_ca_attach, state, &card->dvb_adapter); in frontend_init()
693 card->fe = dvb_attach(cx24110_attach, &pctvsat_config, card->i2c_adapter); in frontend_init()
694 if (card->fe) { in frontend_init()
695 card->fe->ops.tuner_ops.init = pinnsat_tuner_init; in frontend_init()
696 card->fe->ops.tuner_ops.sleep = pinnsat_tuner_sleep; in frontend_init()
697 card->fe->ops.tuner_ops.set_params = cx24108_tuner_set_params; in frontend_init()
702 card->fe = dvb_attach(or51211_attach, &or51211_config, card->i2c_adapter); in frontend_init()
703 if (card->fe != NULL) in frontend_init()
704 dvb_attach(simple_tuner_attach, card->fe, in frontend_init()
705 card->i2c_adapter, 0x61, in frontend_init()
710 if (card->fe == NULL) in frontend_init()
712 card->bt->dev->vendor, in frontend_init()
713 card->bt->dev->device, in frontend_init()
714 card->bt->dev->subsystem_vendor, in frontend_init()
715 card->bt->dev->subsystem_device); in frontend_init()
717 if (dvb_register_frontend(&card->dvb_adapter, card->fe)) { in frontend_init()
719 dvb_frontend_detach(card->fe); in frontend_init()
720 card->fe = NULL; in frontend_init()
724 static int dvb_bt8xx_load_card(struct dvb_bt8xx_card *card, u32 type) in dvb_bt8xx_load_card() argument
728 result = dvb_register_adapter(&card->dvb_adapter, card->card_name, in dvb_bt8xx_load_card()
729 THIS_MODULE, &card->bt->dev->dev, in dvb_bt8xx_load_card()
735 card->dvb_adapter.priv = card; in dvb_bt8xx_load_card()
737 card->bt->adapter = card->i2c_adapter; in dvb_bt8xx_load_card()
739 memset(&card->demux, 0, sizeof(struct dvb_demux)); in dvb_bt8xx_load_card()
741 …card->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERI… in dvb_bt8xx_load_card()
743 card->demux.priv = card; in dvb_bt8xx_load_card()
744 card->demux.filternum = 256; in dvb_bt8xx_load_card()
745 card->demux.feednum = 256; in dvb_bt8xx_load_card()
746 card->demux.start_feed = dvb_bt8xx_start_feed; in dvb_bt8xx_load_card()
747 card->demux.stop_feed = dvb_bt8xx_stop_feed; in dvb_bt8xx_load_card()
748 card->demux.write_to_decoder = NULL; in dvb_bt8xx_load_card()
750 result = dvb_dmx_init(&card->demux); in dvb_bt8xx_load_card()
756 card->dmxdev.filternum = 256; in dvb_bt8xx_load_card()
757 card->dmxdev.demux = &card->demux.dmx; in dvb_bt8xx_load_card()
758 card->dmxdev.capabilities = 0; in dvb_bt8xx_load_card()
760 result = dvb_dmxdev_init(&card->dmxdev, &card->dvb_adapter); in dvb_bt8xx_load_card()
766 card->fe_hw.source = DMX_FRONTEND_0; in dvb_bt8xx_load_card()
768 result = card->demux.dmx.add_frontend(&card->demux.dmx, &card->fe_hw); in dvb_bt8xx_load_card()
774 card->fe_mem.source = DMX_MEMORY_FE; in dvb_bt8xx_load_card()
776 result = card->demux.dmx.add_frontend(&card->demux.dmx, &card->fe_mem); in dvb_bt8xx_load_card()
782 result = card->demux.dmx.connect_frontend(&card->demux.dmx, &card->fe_hw); in dvb_bt8xx_load_card()
788 result = dvb_net_init(&card->dvb_adapter, &card->dvbnet, &card->demux.dmx); in dvb_bt8xx_load_card()
794 tasklet_init(&card->bt->tasklet, dvb_bt8xx_task, (unsigned long) card); in dvb_bt8xx_load_card()
796 frontend_init(card, type); in dvb_bt8xx_load_card()
801 card->demux.dmx.disconnect_frontend(&card->demux.dmx); in dvb_bt8xx_load_card()
803 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_mem); in dvb_bt8xx_load_card()
805 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_hw); in dvb_bt8xx_load_card()
807 dvb_dmxdev_release(&card->dmxdev); in dvb_bt8xx_load_card()
809 dvb_dmx_release(&card->demux); in dvb_bt8xx_load_card()
811 dvb_unregister_adapter(&card->dvb_adapter); in dvb_bt8xx_load_card()
817 struct dvb_bt8xx_card *card; in dvb_bt8xx_probe() local
821 if (!(card = kzalloc(sizeof(struct dvb_bt8xx_card), GFP_KERNEL))) in dvb_bt8xx_probe()
824 mutex_init(&card->lock); in dvb_bt8xx_probe()
825 card->bttv_nr = sub->core->nr; in dvb_bt8xx_probe()
826 strlcpy(card->card_name, sub->core->v4l2_dev.name, sizeof(card->card_name)); in dvb_bt8xx_probe()
827 card->i2c_adapter = &sub->core->i2c_adap; in dvb_bt8xx_probe()
831 card->gpio_mode = 0x0400c060; in dvb_bt8xx_probe()
834 card->op_sync_orin = BT878_RISC_SYNC_MASK; in dvb_bt8xx_probe()
835 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR; in dvb_bt8xx_probe()
839 card->gpio_mode = 0x0400C060; in dvb_bt8xx_probe()
840 card->op_sync_orin = BT878_RISC_SYNC_MASK; in dvb_bt8xx_probe()
841 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR; in dvb_bt8xx_probe()
848 card->gpio_mode = 0x0400c060; in dvb_bt8xx_probe()
849 card->op_sync_orin = BT878_RISC_SYNC_MASK; in dvb_bt8xx_probe()
850 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR; in dvb_bt8xx_probe()
855 card->gpio_mode = (1 << 26) | (1 << 14) | (1 << 5); in dvb_bt8xx_probe()
856 card->op_sync_orin = BT878_RISC_SYNC_MASK; in dvb_bt8xx_probe()
857 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR; in dvb_bt8xx_probe()
862 card->gpio_mode = 0x0400402B; in dvb_bt8xx_probe()
863 card->op_sync_orin = BT878_RISC_SYNC_MASK; in dvb_bt8xx_probe()
864 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR; in dvb_bt8xx_probe()
869 card->gpio_mode = 0x2204f2c; in dvb_bt8xx_probe()
870 card->op_sync_orin = BT878_RISC_SYNC_MASK; in dvb_bt8xx_probe()
871 card->irq_err_ignore = BT878_APABORT | BT878_ARIPERR | in dvb_bt8xx_probe()
887 card->gpio_mode = 0x0100EC7B; in dvb_bt8xx_probe()
888 card->op_sync_orin = BT878_RISC_SYNC_MASK; in dvb_bt8xx_probe()
889 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR; in dvb_bt8xx_probe()
894 kfree(card); in dvb_bt8xx_probe()
898 dprintk("dvb_bt8xx: identified card%d as %s\n", card->bttv_nr, card->card_name); in dvb_bt8xx_probe()
900 if (!(bttv_pci_dev = bttv_get_pcidev(card->bttv_nr))) { in dvb_bt8xx_probe()
901 pr_err("no pci device for card %d\n", card->bttv_nr); in dvb_bt8xx_probe()
902 kfree(card); in dvb_bt8xx_probe()
906 if (!(card->bt = dvb_bt8xx_878_match(card->bttv_nr, bttv_pci_dev))) { in dvb_bt8xx_probe()
907 pr_err("unable to determine DMA core of card %d,\n", card->bttv_nr); in dvb_bt8xx_probe()
910 kfree(card); in dvb_bt8xx_probe()
914 mutex_init(&card->bt->gpio_lock); in dvb_bt8xx_probe()
915 card->bt->bttv_nr = sub->core->nr; in dvb_bt8xx_probe()
917 if ( (ret = dvb_bt8xx_load_card(card, sub->core->type)) ) { in dvb_bt8xx_probe()
918 kfree(card); in dvb_bt8xx_probe()
922 dev_set_drvdata(&sub->dev, card); in dvb_bt8xx_probe()
928 struct dvb_bt8xx_card *card = dev_get_drvdata(&sub->dev); in dvb_bt8xx_remove() local
930 dprintk("dvb_bt8xx: unloading card%d\n", card->bttv_nr); in dvb_bt8xx_remove()
932 bt878_stop(card->bt); in dvb_bt8xx_remove()
933 tasklet_kill(&card->bt->tasklet); in dvb_bt8xx_remove()
934 dvb_net_release(&card->dvbnet); in dvb_bt8xx_remove()
935 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_mem); in dvb_bt8xx_remove()
936 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_hw); in dvb_bt8xx_remove()
937 dvb_dmxdev_release(&card->dmxdev); in dvb_bt8xx_remove()
938 dvb_dmx_release(&card->demux); in dvb_bt8xx_remove()
939 if (card->fe) { in dvb_bt8xx_remove()
940 dvb_unregister_frontend(card->fe); in dvb_bt8xx_remove()
941 dvb_frontend_detach(card->fe); in dvb_bt8xx_remove()
943 dvb_unregister_adapter(&card->dvb_adapter); in dvb_bt8xx_remove()
945 kfree(card); in dvb_bt8xx_remove()