Lines Matching refs:card

45 	struct dvb_bt8xx_card *card = dev_get_drvdata(&bt->adapter->dev);
47 dprintk("%d\n", card->bt->finished_block);
49 while (card->bt->last_block != card->bt->finished_block) {
50 (card->bt->TS_Size ? dvb_dmx_swfilter_204 : dvb_dmx_swfilter)
51 (&card->demux,
52 &card->bt->buf_cpu[card->bt->last_block *
53 card->bt->block_bytes],
54 card->bt->block_bytes);
55 card->bt->last_block = (card->bt->last_block + 1) %
56 card->bt->block_count;
63 struct dvb_bt8xx_card *card = dvbdmx->priv;
71 mutex_lock(&card->lock);
72 card->nfeeds++;
73 rc = card->nfeeds;
74 if (card->nfeeds == 1)
75 bt878_start(card->bt, card->gpio_mode,
76 card->op_sync_orin, card->irq_err_ignore);
77 mutex_unlock(&card->lock);
84 struct dvb_bt8xx_card *card = dvbdmx->priv;
91 mutex_lock(&card->lock);
92 card->nfeeds--;
93 if (card->nfeeds == 0)
94 bt878_stop(card->bt);
95 mutex_unlock(&card->lock);
241 struct dvb_bt8xx_card *card = fe->dvb->priv;
243 bttv_gpio_enable(card->bttv_nr, 1, 1); /* output */
244 bttv_write_gpio(card->bttv_nr, 1, 1); /* relay on */
251 struct dvb_bt8xx_card *card = fe->dvb->priv;
253 bttv_write_gpio(card->bttv_nr, 1, 0); /* relay off */
265 struct dvb_bt8xx_card *card = (struct dvb_bt8xx_card *) fe->dvb->priv;
299 i2c_transfer(card->i2c_adapter, &msg, 1);
457 struct dvb_bt8xx_card *card = (struct dvb_bt8xx_card *) fe->dvb->priv;
480 i2c_transfer(card->i2c_adapter, &msg, 1);
582 static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
588 card->fe = dvb_attach(mt352_attach, &thomson_dtt7579_config, card->i2c_adapter);
590 if (card->fe == NULL)
591 card->fe = dvb_attach(zl10353_attach, &thomson_dtt7579_zl10353_config,
592 card->i2c_adapter);
594 if (card->fe != NULL) {
595 card->fe->ops.tuner_ops.calc_regs = thomson_dtt7579_tuner_calc_regs;
596 card->fe->ops.info.frequency_min_hz = 174 * MHz;
597 card->fe->ops.info.frequency_max_hz = 862 * MHz;
602 lgdt330x_reset(card);
603 card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config,
604 0x0e, card->i2c_adapter);
605 if (card->fe != NULL) {
606 dvb_attach(simple_tuner_attach, card->fe,
607 card->i2c_adapter, 0x61,
619 /* Old Nebula (marked (c)2003 on high profile pci card) has nxt6000 demod */
620 digitv_alps_tded4_reset(card);
621 card->fe = dvb_attach(nxt6000_attach, &vp3021_alps_tded4_config, card->i2c_adapter);
622 if (card->fe != NULL) {
623 card->fe->ops.tuner_ops.set_params = vp3021_alps_tded4_tuner_set_params;
624 dprintk("dvb_bt8xx: an nxt6000 was detected on your digitv card\n");
628 /* New Nebula (marked (c)2005 on low profile pci card) has mt352 demod */
629 digitv_alps_tded4_reset(card);
630 card->fe = dvb_attach(mt352_attach, &digitv_alps_tded4_config, card->i2c_adapter);
632 if (card->fe != NULL) {
633 card->fe->ops.tuner_ops.calc_regs = digitv_alps_tded4_tuner_calc_regs;
634 dprintk("dvb_bt8xx: an mt352 was detected on your digitv card\n");
639 card->fe = dvb_attach(sp887x_attach, &microtune_mt7202dtf_config, card->i2c_adapter);
640 if (card->fe) {
641 card->fe->ops.tuner_ops.set_params = microtune_mt7202dtf_tuner_set_params;
646 card->fe = dvb_attach(mt352_attach, &advbt771_samsung_tdtc9251dh0_config, card->i2c_adapter);
647 if (card->fe != NULL) {
648 card->fe->ops.tuner_ops.calc_regs = advbt771_samsung_tdtc9251dh0_tuner_calc_regs;
649 card->fe->ops.info.frequency_min_hz = 174 * MHz;
650 card->fe->ops.info.frequency_max_hz = 862 * MHz;
663 state->i2c = card->i2c_adapter;
664 state->bt = card->bt;
667 if (dvb_attach(dst_attach, state, &card->dvb_adapter) == NULL) {
674 card->fe = &state->frontend;
676 dvb_attach(dst_ca_attach, state, &card->dvb_adapter);
680 card->fe = dvb_attach(cx24110_attach, &pctvsat_config, card->i2c_adapter);
681 if (card->fe) {
682 card->fe->ops.tuner_ops.init = pinnsat_tuner_init;
683 card->fe->ops.tuner_ops.sleep = pinnsat_tuner_sleep;
684 card->fe->ops.tuner_ops.set_params = cx24108_tuner_set_params;
689 card->fe = dvb_attach(or51211_attach, &or51211_config, card->i2c_adapter);
690 if (card->fe != NULL)
691 dvb_attach(simple_tuner_attach, card->fe,
692 card->i2c_adapter, 0x61,
697 if (card->fe == NULL)
699 card->bt->dev->vendor,
700 card->bt->dev->device,
701 card->bt->dev->subsystem_vendor,
702 card->bt->dev->subsystem_device);
704 if (dvb_register_frontend(&card->dvb_adapter, card->fe)) {
706 dvb_frontend_detach(card->fe);
707 card->fe = NULL;
711 static int dvb_bt8xx_load_card(struct dvb_bt8xx_card *card, u32 type)
715 result = dvb_register_adapter(&card->dvb_adapter, card->card_name,
716 THIS_MODULE, &card->bt->dev->dev,
722 card->dvb_adapter.priv = card;
724 card->bt->adapter = card->i2c_adapter;
726 memset(&card->demux, 0, sizeof(struct dvb_demux));
728 card->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERING;
730 card->demux.priv = card;
731 card->demux.filternum = 256;
732 card->demux.feednum = 256;
733 card->demux.start_feed = dvb_bt8xx_start_feed;
734 card->demux.stop_feed = dvb_bt8xx_stop_feed;
735 card->demux.write_to_decoder = NULL;
737 result = dvb_dmx_init(&card->demux);
743 card->dmxdev.filternum = 256;
744 card->dmxdev.demux = &card->demux.dmx;
745 card->dmxdev.capabilities = 0;
747 result = dvb_dmxdev_init(&card->dmxdev, &card->dvb_adapter);
753 card->fe_hw.source = DMX_FRONTEND_0;
755 result = card->demux.dmx.add_frontend(&card->demux.dmx, &card->fe_hw);
761 card->fe_mem.source = DMX_MEMORY_FE;
763 result = card->demux.dmx.add_frontend(&card->demux.dmx, &card->fe_mem);
769 result = card->demux.dmx.connect_frontend(&card->demux.dmx, &card->fe_hw);
775 result = dvb_net_init(&card->dvb_adapter, &card->dvbnet, &card->demux.dmx);
781 tasklet_setup(&card->bt->tasklet, dvb_bt8xx_task);
783 frontend_init(card, type);
788 card->demux.dmx.disconnect_frontend(&card->demux.dmx);
790 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_mem);
792 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_hw);
794 dvb_dmxdev_release(&card->dmxdev);
796 dvb_dmx_release(&card->demux);
798 dvb_unregister_adapter(&card->dvb_adapter);
804 struct dvb_bt8xx_card *card;
808 if (!(card = kzalloc(sizeof(struct dvb_bt8xx_card), GFP_KERNEL)))
811 mutex_init(&card->lock);
812 card->bttv_nr = sub->core->nr;
813 strscpy(card->card_name, sub->core->v4l2_dev.name,
814 sizeof(card->card_name));
815 card->i2c_adapter = &sub->core->i2c_adap;
819 card->gpio_mode = 0x0400c060;
822 card->op_sync_orin = BT878_RISC_SYNC_MASK;
823 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR;
827 card->gpio_mode = 0x0400C060;
828 card->op_sync_orin = BT878_RISC_SYNC_MASK;
829 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR;
836 card->gpio_mode = 0x0400c060;
837 card->op_sync_orin = BT878_RISC_SYNC_MASK;
838 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR;
843 card->gpio_mode = (1 << 26) | (1 << 14) | (1 << 5);
844 card->op_sync_orin = BT878_RISC_SYNC_MASK;
845 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR;
850 card->gpio_mode = 0x0400402B;
851 card->op_sync_orin = BT878_RISC_SYNC_MASK;
852 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR;
857 card->gpio_mode = 0x2204f2c;
858 card->op_sync_orin = BT878_RISC_SYNC_MASK;
859 card->irq_err_ignore = BT878_APABORT | BT878_ARIPERR |
875 card->gpio_mode = 0x0100EC7B;
876 card->op_sync_orin = BT878_RISC_SYNC_MASK;
877 card->irq_err_ignore = BT878_AFBUS | BT878_AFDSR;
881 pr_err("Unknown bttv card type: %d\n", sub->core->type);
882 kfree(card);
886 dprintk("dvb_bt8xx: identified card%d as %s\n", card->bttv_nr, card->card_name);
888 if (!(bttv_pci_dev = bttv_get_pcidev(card->bttv_nr))) {
889 pr_err("no pci device for card %d\n", card->bttv_nr);
890 kfree(card);
894 if (!(card->bt = dvb_bt8xx_878_match(card->bttv_nr, bttv_pci_dev))) {
895 pr_err("unable to determine DMA core of card %d,\n", card->bttv_nr);
898 kfree(card);
902 mutex_init(&card->bt->gpio_lock);
903 card->bt->bttv_nr = sub->core->nr;
905 if ( (ret = dvb_bt8xx_load_card(card, sub->core->type)) ) {
906 kfree(card);
910 dev_set_drvdata(&sub->dev, card);
916 struct dvb_bt8xx_card *card = dev_get_drvdata(&sub->dev);
918 dprintk("dvb_bt8xx: unloading card%d\n", card->bttv_nr);
920 bt878_stop(card->bt);
921 tasklet_kill(&card->bt->tasklet);
922 dvb_net_release(&card->dvbnet);
923 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_mem);
924 card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_hw);
925 dvb_dmxdev_release(&card->dmxdev);
926 dvb_dmx_release(&card->demux);
927 if (card->fe) {
928 dvb_unregister_frontend(card->fe);
929 dvb_frontend_detach(card->fe);
931 dvb_unregister_adapter(&card->dvb_adapter);
933 kfree(card);