Lines Matching refs:dev

327 	struct rc_dev		*dev;  member
374 #define dm_io_mem(reg) ((unsigned long)(&dev->io_mem[reg]))
396 static void dm1105_gpio_set(struct dm1105_dev *dev, u32 mask) in dm1105_gpio_set() argument
406 static void dm1105_gpio_clear(struct dm1105_dev *dev, u32 mask) in dm1105_gpio_clear() argument
416 static void dm1105_gpio_andor(struct dm1105_dev *dev, u32 mask, u32 val) in dm1105_gpio_andor() argument
426 static u32 dm1105_gpio_get(struct dm1105_dev *dev, u32 mask) in dm1105_gpio_get() argument
437 static void dm1105_gpio_enable(struct dm1105_dev *dev, u32 mask, int asoutput) in dm1105_gpio_enable() argument
449 static void dm1105_setline(struct dm1105_dev *dev, u32 line, int state) in dm1105_setline() argument
452 dm1105_gpio_enable(dev, line, 0); in dm1105_setline()
454 dm1105_gpio_enable(dev, line, 1); in dm1105_setline()
455 dm1105_gpio_clear(dev, line); in dm1105_setline()
461 struct dm1105_dev *dev = data; in dm1105_setsda() local
463 dm1105_setline(dev, dm1105_boards[dev->boardnr].gpio_sda, state); in dm1105_setsda()
468 struct dm1105_dev *dev = data; in dm1105_setscl() local
470 dm1105_setline(dev, dm1105_boards[dev->boardnr].gpio_scl, state); in dm1105_setscl()
475 struct dm1105_dev *dev = data; in dm1105_getsda() local
477 return dm1105_gpio_get(dev, dm1105_boards[dev->boardnr].gpio_sda) in dm1105_getsda()
483 struct dm1105_dev *dev = data; in dm1105_getscl() local
485 return dm1105_gpio_get(dev, dm1105_boards[dev->boardnr].gpio_scl) in dm1105_getscl()
492 struct dm1105_dev *dev ; in dm1105_i2c_xfer() local
497 dev = i2c_adap->algo_data; in dm1105_i2c_xfer()
597 struct dm1105_dev *dev = frontend_to_dm1105_dev(fe); in dm1105_set_voltage() local
599 dm1105_gpio_enable(dev, dm1105_boards[dev->boardnr].lnb.mask, 1); in dm1105_set_voltage()
601 dm1105_gpio_andor(dev, in dm1105_set_voltage()
602 dm1105_boards[dev->boardnr].lnb.mask, in dm1105_set_voltage()
603 dm1105_boards[dev->boardnr].lnb.v18); in dm1105_set_voltage()
605 dm1105_gpio_andor(dev, in dm1105_set_voltage()
606 dm1105_boards[dev->boardnr].lnb.mask, in dm1105_set_voltage()
607 dm1105_boards[dev->boardnr].lnb.v13); in dm1105_set_voltage()
609 dm1105_gpio_andor(dev, in dm1105_set_voltage()
610 dm1105_boards[dev->boardnr].lnb.mask, in dm1105_set_voltage()
611 dm1105_boards[dev->boardnr].lnb.off); in dm1105_set_voltage()
616 static void dm1105_set_dma_addr(struct dm1105_dev *dev) in dm1105_set_dma_addr() argument
618 dm_writel(DM1105_STADR, (__force u32)cpu_to_le32(dev->dma_addr)); in dm1105_set_dma_addr()
621 static int dm1105_dma_map(struct dm1105_dev *dev) in dm1105_dma_map() argument
623 dev->ts_buf = pci_alloc_consistent(dev->pdev, in dm1105_dma_map()
625 &dev->dma_addr); in dm1105_dma_map()
627 return !dev->ts_buf; in dm1105_dma_map()
630 static void dm1105_dma_unmap(struct dm1105_dev *dev) in dm1105_dma_unmap() argument
632 pci_free_consistent(dev->pdev, in dm1105_dma_unmap()
634 dev->ts_buf, in dm1105_dma_unmap()
635 dev->dma_addr); in dm1105_dma_unmap()
638 static void dm1105_enable_irqs(struct dm1105_dev *dev) in dm1105_enable_irqs() argument
644 static void dm1105_disable_irqs(struct dm1105_dev *dev) in dm1105_disable_irqs() argument
652 struct dm1105_dev *dev = feed_to_dm1105_dev(f); in dm1105_start_feed() local
654 if (dev->full_ts_users++ == 0) in dm1105_start_feed()
655 dm1105_enable_irqs(dev); in dm1105_start_feed()
662 struct dm1105_dev *dev = feed_to_dm1105_dev(f); in dm1105_stop_feed() local
664 if (--dev->full_ts_users == 0) in dm1105_stop_feed()
665 dm1105_disable_irqs(dev); in dm1105_stop_feed()
683 rc_keydown(ir->dev, RC_TYPE_UNKNOWN, data, 0); in dm1105_emit_key()
689 struct dm1105_dev *dev = container_of(work, struct dm1105_dev, work); in dm1105_dmx_buffer() local
691 u32 oldwrp = dev->wrp; in dm1105_dmx_buffer()
692 u32 nextwrp = dev->nextwrp; in dm1105_dmx_buffer()
694 if (!((dev->ts_buf[oldwrp] == 0x47) && in dm1105_dmx_buffer()
695 (dev->ts_buf[oldwrp + 188] == 0x47) && in dm1105_dmx_buffer()
696 (dev->ts_buf[oldwrp + 188 * 2] == 0x47))) { in dm1105_dmx_buffer()
697 dev->PacketErrorCount++; in dm1105_dmx_buffer()
699 if ((dev->PacketErrorCount >= 2) && in dm1105_dmx_buffer()
700 (dev->dmarst == 0)) { in dm1105_dmx_buffer()
702 dev->wrp = 0; in dm1105_dmx_buffer()
703 dev->PacketErrorCount = 0; in dm1105_dmx_buffer()
704 dev->dmarst = 0; in dm1105_dmx_buffer()
710 memcpy(dev->ts_buf + dev->buffer_size, dev->ts_buf, nextwrp); in dm1105_dmx_buffer()
711 nbpackets = ((dev->buffer_size - oldwrp) + nextwrp) / 188; in dm1105_dmx_buffer()
715 dev->wrp = nextwrp; in dm1105_dmx_buffer()
716 dvb_dmx_swfilter_packets(&dev->demux, &dev->ts_buf[oldwrp], nbpackets); in dm1105_dmx_buffer()
721 struct dm1105_dev *dev = dev_id; in dm1105_irq() local
730 dev->nextwrp = dm_readl(DM1105_WRP) - dm_readl(DM1105_STADR); in dm1105_irq()
731 queue_work(dev->wq, &dev->work); in dm1105_irq()
734 dev->ir.ir_command = dm_readl(DM1105_IRCODE); in dm1105_irq()
735 schedule_work(&dev->ir.work); in dm1105_irq()
744 struct rc_dev *dev; in dm1105_ir_init() local
747 dev = rc_allocate_device(); in dm1105_ir_init()
748 if (!dev) in dm1105_ir_init()
754 dev->driver_name = MODULE_NAME; in dm1105_ir_init()
755 dev->map_name = RC_MAP_DM1105_NEC; in dm1105_ir_init()
756 dev->driver_type = RC_DRIVER_SCANCODE; in dm1105_ir_init()
757 dev->input_name = "DVB on-card IR receiver"; in dm1105_ir_init()
758 dev->input_phys = dm1105->ir.input_phys; in dm1105_ir_init()
759 dev->input_id.bustype = BUS_PCI; in dm1105_ir_init()
760 dev->input_id.version = 1; in dm1105_ir_init()
762 dev->input_id.vendor = dm1105->pdev->subsystem_vendor; in dm1105_ir_init()
763 dev->input_id.product = dm1105->pdev->subsystem_device; in dm1105_ir_init()
765 dev->input_id.vendor = dm1105->pdev->vendor; in dm1105_ir_init()
766 dev->input_id.product = dm1105->pdev->device; in dm1105_ir_init()
768 dev->dev.parent = &dm1105->pdev->dev; in dm1105_ir_init()
772 err = rc_register_device(dev); in dm1105_ir_init()
774 rc_free_device(dev); in dm1105_ir_init()
778 dm1105->ir.dev = dev; in dm1105_ir_init()
784 rc_unregister_device(dm1105->ir.dev); in dm1105_ir_exit()
787 static int dm1105_hw_init(struct dm1105_dev *dev) in dm1105_hw_init() argument
789 dm1105_disable_irqs(dev); in dm1105_hw_init()
799 dm1105_dma_map(dev); in dm1105_hw_init()
800 dm1105_set_dma_addr(dev); in dm1105_hw_init()
813 static void dm1105_hw_exit(struct dm1105_dev *dev) in dm1105_hw_exit() argument
815 dm1105_disable_irqs(dev); in dm1105_hw_exit()
821 dm1105_dma_unmap(dev); in dm1105_hw_exit()
860 static int frontend_init(struct dm1105_dev *dev) in frontend_init() argument
864 switch (dev->boardnr) { in frontend_init()
866 dm1105_gpio_enable(dev, GPIO15, 1); in frontend_init()
867 dm1105_gpio_clear(dev, GPIO15); in frontend_init()
869 dm1105_gpio_set(dev, GPIO15); in frontend_init()
871 dev->fe = dvb_attach( in frontend_init()
873 &dev->i2c_bb_adap); in frontend_init()
874 if (dev->fe) { in frontend_init()
875 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
876 dvb_attach(dvb_pll_attach, dev->fe, 0x60, in frontend_init()
877 &dev->i2c_bb_adap, DVB_PLL_OPERA1); in frontend_init()
881 dev->fe = dvb_attach( in frontend_init()
883 &dev->i2c_bb_adap); in frontend_init()
884 if (dev->fe) { in frontend_init()
885 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
886 dvb_attach(stb6000_attach, dev->fe, 0x61, in frontend_init()
887 &dev->i2c_bb_adap); in frontend_init()
891 dev->fe = dvb_attach( in frontend_init()
893 &dev->i2c_bb_adap); in frontend_init()
894 if (dev->fe) in frontend_init()
895 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
898 dev->fe = dvb_attach( in frontend_init()
900 &dev->i2c_adap); in frontend_init()
901 if (dev->fe) { in frontend_init()
902 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
906 dev->fe = dvb_attach( in frontend_init()
908 &dev->i2c_adap); in frontend_init()
909 if (dev->fe) { in frontend_init()
910 dvb_attach(ts2020_attach, dev->fe, in frontend_init()
911 &dvbworld_ts2020_config, &dev->i2c_adap); in frontend_init()
912 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
919 dev->fe = dvb_attach( in frontend_init()
921 &dev->i2c_adap); in frontend_init()
922 if (dev->fe) { in frontend_init()
923 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
924 dvb_attach(dvb_pll_attach, dev->fe, 0x60, in frontend_init()
925 &dev->i2c_adap, DVB_PLL_OPERA1); in frontend_init()
929 dev->fe = dvb_attach( in frontend_init()
931 &dev->i2c_adap); in frontend_init()
932 if (dev->fe) { in frontend_init()
933 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
934 dvb_attach(stb6000_attach, dev->fe, 0x61, in frontend_init()
935 &dev->i2c_adap); in frontend_init()
939 dev->fe = dvb_attach( in frontend_init()
941 &dev->i2c_adap); in frontend_init()
942 if (dev->fe) in frontend_init()
943 dev->fe->ops.set_voltage = dm1105_set_voltage; in frontend_init()
947 if (!dev->fe) { in frontend_init()
948 dev_err(&dev->pdev->dev, "could not attach frontend\n"); in frontend_init()
952 ret = dvb_register_frontend(&dev->dvb_adapter, dev->fe); in frontend_init()
954 if (dev->fe->ops.release) in frontend_init()
955 dev->fe->ops.release(dev->fe); in frontend_init()
956 dev->fe = NULL; in frontend_init()
963 static void dm1105_read_mac(struct dm1105_dev *dev, u8 *mac) in dm1105_read_mac() argument
981 dm1105_i2c_xfer(&dev->i2c_adap, msg , 2); in dm1105_read_mac()
982 dev_info(&dev->pdev->dev, "MAC %pM\n", mac); in dm1105_read_mac()
988 struct dm1105_dev *dev; in dm1105_probe() local
995 dev = kzalloc(sizeof(struct dm1105_dev), GFP_KERNEL); in dm1105_probe()
996 if (!dev) in dm1105_probe()
1000 dev->nr = dm1105_devcount; in dm1105_probe()
1001 dev->boardnr = UNSET; in dm1105_probe()
1002 if (card[dev->nr] < ARRAY_SIZE(dm1105_boards)) in dm1105_probe()
1003 dev->boardnr = card[dev->nr]; in dm1105_probe()
1004 for (i = 0; UNSET == dev->boardnr && in dm1105_probe()
1010 dev->boardnr = dm1105_subids[i].card; in dm1105_probe()
1012 if (UNSET == dev->boardnr) { in dm1105_probe()
1013 dev->boardnr = DM1105_BOARD_UNKNOWN; in dm1105_probe()
1018 dev->pdev = pdev; in dm1105_probe()
1019 dev->buffer_size = 5 * DM1105_DMA_BYTES; in dm1105_probe()
1020 dev->PacketErrorCount = 0; in dm1105_probe()
1021 dev->dmarst = 0; in dm1105_probe()
1037 dev->io_mem = pci_iomap(pdev, 0, pci_resource_len(pdev, 0)); in dm1105_probe()
1038 if (!dev->io_mem) { in dm1105_probe()
1043 spin_lock_init(&dev->lock); in dm1105_probe()
1044 pci_set_drvdata(pdev, dev); in dm1105_probe()
1046 ret = dm1105_hw_init(dev); in dm1105_probe()
1051 i2c_set_adapdata(&dev->i2c_adap, dev); in dm1105_probe()
1052 strcpy(dev->i2c_adap.name, DRIVER_NAME); in dm1105_probe()
1053 dev->i2c_adap.owner = THIS_MODULE; in dm1105_probe()
1054 dev->i2c_adap.dev.parent = &pdev->dev; in dm1105_probe()
1055 dev->i2c_adap.algo = &dm1105_algo; in dm1105_probe()
1056 dev->i2c_adap.algo_data = dev; in dm1105_probe()
1057 ret = i2c_add_adapter(&dev->i2c_adap); in dm1105_probe()
1062 i2c_set_adapdata(&dev->i2c_bb_adap, dev); in dm1105_probe()
1063 strcpy(dev->i2c_bb_adap.name, DM1105_I2C_GPIO_NAME); in dm1105_probe()
1064 dev->i2c_bb_adap.owner = THIS_MODULE; in dm1105_probe()
1065 dev->i2c_bb_adap.dev.parent = &pdev->dev; in dm1105_probe()
1066 dev->i2c_bb_adap.algo_data = &dev->i2c_bit; in dm1105_probe()
1067 dev->i2c_bit.data = dev; in dm1105_probe()
1068 dev->i2c_bit.setsda = dm1105_setsda; in dm1105_probe()
1069 dev->i2c_bit.setscl = dm1105_setscl; in dm1105_probe()
1070 dev->i2c_bit.getsda = dm1105_getsda; in dm1105_probe()
1071 dev->i2c_bit.getscl = dm1105_getscl; in dm1105_probe()
1072 dev->i2c_bit.udelay = 10; in dm1105_probe()
1073 dev->i2c_bit.timeout = 10; in dm1105_probe()
1076 dm1105_setsda(dev, 1); in dm1105_probe()
1077 dm1105_setscl(dev, 1); in dm1105_probe()
1079 ret = i2c_bit_add_bus(&dev->i2c_bb_adap); in dm1105_probe()
1084 ret = dvb_register_adapter(&dev->dvb_adapter, DRIVER_NAME, in dm1105_probe()
1085 THIS_MODULE, &pdev->dev, adapter_nr); in dm1105_probe()
1089 dvb_adapter = &dev->dvb_adapter; in dm1105_probe()
1091 dm1105_read_mac(dev, dvb_adapter->proposed_mac); in dm1105_probe()
1093 dvbdemux = &dev->demux; in dm1105_probe()
1105 dev->dmxdev.filternum = 256; in dm1105_probe()
1106 dev->dmxdev.demux = dmx; in dm1105_probe()
1107 dev->dmxdev.capabilities = 0; in dm1105_probe()
1109 ret = dvb_dmxdev_init(&dev->dmxdev, dvb_adapter); in dm1105_probe()
1113 dev->hw_frontend.source = DMX_FRONTEND_0; in dm1105_probe()
1115 ret = dmx->add_frontend(dmx, &dev->hw_frontend); in dm1105_probe()
1119 dev->mem_frontend.source = DMX_MEMORY_FE; in dm1105_probe()
1121 ret = dmx->add_frontend(dmx, &dev->mem_frontend); in dm1105_probe()
1125 ret = dmx->connect_frontend(dmx, &dev->hw_frontend); in dm1105_probe()
1129 ret = dvb_net_init(dvb_adapter, &dev->dvbnet, dmx); in dm1105_probe()
1133 ret = frontend_init(dev); in dm1105_probe()
1137 dm1105_ir_init(dev); in dm1105_probe()
1139 INIT_WORK(&dev->work, dm1105_dmx_buffer); in dm1105_probe()
1140 sprintf(dev->wqn, "%s/%d", dvb_adapter->name, dvb_adapter->num); in dm1105_probe()
1141 dev->wq = create_singlethread_workqueue(dev->wqn); in dm1105_probe()
1142 if (!dev->wq) { in dm1105_probe()
1148 DRIVER_NAME, dev); in dm1105_probe()
1155 destroy_workqueue(dev->wq); in dm1105_probe()
1157 dvb_net_release(&dev->dvbnet); in dm1105_probe()
1161 dmx->remove_frontend(dmx, &dev->mem_frontend); in dm1105_probe()
1163 dmx->remove_frontend(dmx, &dev->hw_frontend); in dm1105_probe()
1165 dvb_dmxdev_release(&dev->dmxdev); in dm1105_probe()
1171 i2c_del_adapter(&dev->i2c_bb_adap); in dm1105_probe()
1173 i2c_del_adapter(&dev->i2c_adap); in dm1105_probe()
1175 dm1105_hw_exit(dev); in dm1105_probe()
1177 pci_iounmap(pdev, dev->io_mem); in dm1105_probe()
1183 kfree(dev); in dm1105_probe()
1189 struct dm1105_dev *dev = pci_get_drvdata(pdev); in dm1105_remove() local
1190 struct dvb_adapter *dvb_adapter = &dev->dvb_adapter; in dm1105_remove()
1191 struct dvb_demux *dvbdemux = &dev->demux; in dm1105_remove()
1194 dm1105_ir_exit(dev); in dm1105_remove()
1196 dvb_net_release(&dev->dvbnet); in dm1105_remove()
1197 if (dev->fe) in dm1105_remove()
1198 dvb_unregister_frontend(dev->fe); in dm1105_remove()
1201 dmx->remove_frontend(dmx, &dev->mem_frontend); in dm1105_remove()
1202 dmx->remove_frontend(dmx, &dev->hw_frontend); in dm1105_remove()
1203 dvb_dmxdev_release(&dev->dmxdev); in dm1105_remove()
1206 i2c_del_adapter(&dev->i2c_adap); in dm1105_remove()
1208 dm1105_hw_exit(dev); in dm1105_remove()
1210 free_irq(pdev->irq, dev); in dm1105_remove()
1211 pci_iounmap(pdev, dev->io_mem); in dm1105_remove()
1215 kfree(dev); in dm1105_remove()