Lines Matching refs:dev
311 struct rc_dev *dev;
358 #define dm_io_mem(reg) ((unsigned long)(&dev->io_mem[reg]))
380 static void dm1105_gpio_set(struct dm1105_dev *dev, u32 mask)
390 static void dm1105_gpio_clear(struct dm1105_dev *dev, u32 mask)
400 static void dm1105_gpio_andor(struct dm1105_dev *dev, u32 mask, u32 val)
410 static u32 dm1105_gpio_get(struct dm1105_dev *dev, u32 mask)
421 static void dm1105_gpio_enable(struct dm1105_dev *dev, u32 mask, int asoutput)
433 static void dm1105_setline(struct dm1105_dev *dev, u32 line, int state)
436 dm1105_gpio_enable(dev, line, 0);
438 dm1105_gpio_enable(dev, line, 1);
439 dm1105_gpio_clear(dev, line);
445 struct dm1105_dev *dev = data;
447 dm1105_setline(dev, dm1105_boards[dev->boardnr].gpio_sda, state);
452 struct dm1105_dev *dev = data;
454 dm1105_setline(dev, dm1105_boards[dev->boardnr].gpio_scl, state);
459 struct dm1105_dev *dev = data;
461 return dm1105_gpio_get(dev, dm1105_boards[dev->boardnr].gpio_sda)
467 struct dm1105_dev *dev = data;
469 return dm1105_gpio_get(dev, dm1105_boards[dev->boardnr].gpio_scl)
476 struct dm1105_dev *dev ;
481 dev = i2c_adap->algo_data;
581 struct dm1105_dev *dev = frontend_to_dm1105_dev(fe);
583 dm1105_gpio_enable(dev, dm1105_boards[dev->boardnr].lnb.mask, 1);
585 dm1105_gpio_andor(dev,
586 dm1105_boards[dev->boardnr].lnb.mask,
587 dm1105_boards[dev->boardnr].lnb.v18);
589 dm1105_gpio_andor(dev,
590 dm1105_boards[dev->boardnr].lnb.mask,
591 dm1105_boards[dev->boardnr].lnb.v13);
593 dm1105_gpio_andor(dev,
594 dm1105_boards[dev->boardnr].lnb.mask,
595 dm1105_boards[dev->boardnr].lnb.off);
600 static void dm1105_set_dma_addr(struct dm1105_dev *dev)
602 dm_writel(DM1105_STADR, (__force u32)cpu_to_le32(dev->dma_addr));
605 static int dm1105_dma_map(struct dm1105_dev *dev)
607 dev->ts_buf = pci_alloc_consistent(dev->pdev,
609 &dev->dma_addr);
611 return !dev->ts_buf;
614 static void dm1105_dma_unmap(struct dm1105_dev *dev)
616 pci_free_consistent(dev->pdev,
618 dev->ts_buf,
619 dev->dma_addr);
622 static void dm1105_enable_irqs(struct dm1105_dev *dev)
628 static void dm1105_disable_irqs(struct dm1105_dev *dev)
636 struct dm1105_dev *dev = feed_to_dm1105_dev(f);
638 if (dev->full_ts_users++ == 0)
639 dm1105_enable_irqs(dev);
646 struct dm1105_dev *dev = feed_to_dm1105_dev(f);
648 if (--dev->full_ts_users == 0)
649 dm1105_disable_irqs(dev);
667 rc_keydown(ir->dev, RC_PROTO_UNKNOWN, data, 0);
673 struct dm1105_dev *dev = container_of(work, struct dm1105_dev, work);
675 u32 oldwrp = dev->wrp;
676 u32 nextwrp = dev->nextwrp;
678 if (!((dev->ts_buf[oldwrp] == 0x47) &&
679 (dev->ts_buf[oldwrp + 188] == 0x47) &&
680 (dev->ts_buf[oldwrp + 188 * 2] == 0x47))) {
681 dev->PacketErrorCount++;
683 if ((dev->PacketErrorCount >= 2) &&
684 (dev->dmarst == 0)) {
686 dev->wrp = 0;
687 dev->PacketErrorCount = 0;
688 dev->dmarst = 0;
694 memcpy(dev->ts_buf + dev->buffer_size, dev->ts_buf, nextwrp);
695 nbpackets = ((dev->buffer_size - oldwrp) + nextwrp) / 188;
699 dev->wrp = nextwrp;
700 dvb_dmx_swfilter_packets(&dev->demux, &dev->ts_buf[oldwrp], nbpackets);
705 struct dm1105_dev *dev = dev_id;
714 dev->nextwrp = dm_readl(DM1105_WRP) - dm_readl(DM1105_STADR);
715 queue_work(dev->wq, &dev->work);
718 dev->ir.ir_command = dm_readl(DM1105_IRCODE);
719 schedule_work(&dev->ir.work);
728 struct rc_dev *dev;
731 dev = rc_allocate_device(RC_DRIVER_SCANCODE);
732 if (!dev)
738 dev->driver_name = MODULE_NAME;
739 dev->map_name = RC_MAP_DM1105_NEC;
740 dev->device_name = "DVB on-card IR receiver";
741 dev->input_phys = dm1105->ir.input_phys;
742 dev->input_id.bustype = BUS_PCI;
743 dev->input_id.version = 1;
745 dev->input_id.vendor = dm1105->pdev->subsystem_vendor;
746 dev->input_id.product = dm1105->pdev->subsystem_device;
748 dev->input_id.vendor = dm1105->pdev->vendor;
749 dev->input_id.product = dm1105->pdev->device;
751 dev->dev.parent = &dm1105->pdev->dev;
755 err = rc_register_device(dev);
757 rc_free_device(dev);
761 dm1105->ir.dev = dev;
767 rc_unregister_device(dm1105->ir.dev);
770 static int dm1105_hw_init(struct dm1105_dev *dev)
772 dm1105_disable_irqs(dev);
782 dm1105_dma_map(dev);
783 dm1105_set_dma_addr(dev);
796 static void dm1105_hw_exit(struct dm1105_dev *dev)
798 dm1105_disable_irqs(dev);
804 dm1105_dma_unmap(dev);
843 static int frontend_init(struct dm1105_dev *dev)
847 switch (dev->boardnr) {
849 dm1105_gpio_enable(dev, GPIO15, 1);
850 dm1105_gpio_clear(dev, GPIO15);
852 dm1105_gpio_set(dev, GPIO15);
854 dev->fe = dvb_attach(
856 &dev->i2c_bb_adap);
857 if (dev->fe) {
858 dev->fe->ops.set_voltage = dm1105_set_voltage;
859 dvb_attach(dvb_pll_attach, dev->fe, 0x60,
860 &dev->i2c_bb_adap, DVB_PLL_OPERA1);
864 dev->fe = dvb_attach(
866 &dev->i2c_bb_adap);
867 if (dev->fe) {
868 dev->fe->ops.set_voltage = dm1105_set_voltage;
869 dvb_attach(stb6000_attach, dev->fe, 0x61,
870 &dev->i2c_bb_adap);
874 dev->fe = dvb_attach(
876 &dev->i2c_bb_adap);
877 if (dev->fe)
878 dev->fe->ops.set_voltage = dm1105_set_voltage;
881 dev->fe = dvb_attach(
883 &dev->i2c_adap);
884 if (dev->fe) {
885 dev->fe->ops.set_voltage = dm1105_set_voltage;
889 dev->fe = dvb_attach(
891 &dev->i2c_adap);
892 if (dev->fe) {
893 dvb_attach(ts2020_attach, dev->fe,
894 &dvbworld_ts2020_config, &dev->i2c_adap);
895 dev->fe->ops.set_voltage = dm1105_set_voltage;
902 dev->fe = dvb_attach(
904 &dev->i2c_adap);
905 if (dev->fe) {
906 dev->fe->ops.set_voltage = dm1105_set_voltage;
907 dvb_attach(dvb_pll_attach, dev->fe, 0x60,
908 &dev->i2c_adap, DVB_PLL_OPERA1);
912 dev->fe = dvb_attach(
914 &dev->i2c_adap);
915 if (dev->fe) {
916 dev->fe->ops.set_voltage = dm1105_set_voltage;
917 dvb_attach(stb6000_attach, dev->fe, 0x61,
918 &dev->i2c_adap);
922 dev->fe = dvb_attach(
924 &dev->i2c_adap);
925 if (dev->fe)
926 dev->fe->ops.set_voltage = dm1105_set_voltage;
930 if (!dev->fe) {
931 dev_err(&dev->pdev->dev, "could not attach frontend\n");
935 ret = dvb_register_frontend(&dev->dvb_adapter, dev->fe);
937 if (dev->fe->ops.release)
938 dev->fe->ops.release(dev->fe);
939 dev->fe = NULL;
946 static void dm1105_read_mac(struct dm1105_dev *dev, u8 *mac)
964 dm1105_i2c_xfer(&dev->i2c_adap, msg , 2);
965 dev_info(&dev->pdev->dev, "MAC %pM\n", mac);
971 struct dm1105_dev *dev;
981 dev = kzalloc(sizeof(struct dm1105_dev), GFP_KERNEL);
982 if (!dev)
986 dev->nr = dm1105_devcount;
987 dev->boardnr = UNSET;
988 if (card[dev->nr] < ARRAY_SIZE(dm1105_boards))
989 dev->boardnr = card[dev->nr];
990 for (i = 0; UNSET == dev->boardnr &&
996 dev->boardnr = dm1105_subids[i].card;
998 if (UNSET == dev->boardnr) {
999 dev->boardnr = DM1105_BOARD_UNKNOWN;
1004 dev->pdev = pdev;
1005 dev->buffer_size = 5 * DM1105_DMA_BYTES;
1006 dev->PacketErrorCount = 0;
1007 dev->dmarst = 0;
1023 dev->io_mem = pci_iomap(pdev, 0, pci_resource_len(pdev, 0));
1024 if (!dev->io_mem) {
1029 spin_lock_init(&dev->lock);
1030 pci_set_drvdata(pdev, dev);
1032 ret = dm1105_hw_init(dev);
1037 i2c_set_adapdata(&dev->i2c_adap, dev);
1038 strscpy(dev->i2c_adap.name, DRIVER_NAME, sizeof(dev->i2c_adap.name));
1039 dev->i2c_adap.owner = THIS_MODULE;
1040 dev->i2c_adap.dev.parent = &pdev->dev;
1041 dev->i2c_adap.algo = &dm1105_algo;
1042 dev->i2c_adap.algo_data = dev;
1043 ret = i2c_add_adapter(&dev->i2c_adap);
1048 i2c_set_adapdata(&dev->i2c_bb_adap, dev);
1049 strscpy(dev->i2c_bb_adap.name, DM1105_I2C_GPIO_NAME,
1050 sizeof(dev->i2c_bb_adap.name));
1051 dev->i2c_bb_adap.owner = THIS_MODULE;
1052 dev->i2c_bb_adap.dev.parent = &pdev->dev;
1053 dev->i2c_bb_adap.algo_data = &dev->i2c_bit;
1054 dev->i2c_bit.data = dev;
1055 dev->i2c_bit.setsda = dm1105_setsda;
1056 dev->i2c_bit.setscl = dm1105_setscl;
1057 dev->i2c_bit.getsda = dm1105_getsda;
1058 dev->i2c_bit.getscl = dm1105_getscl;
1059 dev->i2c_bit.udelay = 10;
1060 dev->i2c_bit.timeout = 10;
1063 dm1105_setsda(dev, 1);
1064 dm1105_setscl(dev, 1);
1066 ret = i2c_bit_add_bus(&dev->i2c_bb_adap);
1071 ret = dvb_register_adapter(&dev->dvb_adapter, DRIVER_NAME,
1072 THIS_MODULE, &pdev->dev, adapter_nr);
1076 dvb_adapter = &dev->dvb_adapter;
1078 dm1105_read_mac(dev, dvb_adapter->proposed_mac);
1080 dvbdemux = &dev->demux;
1092 dev->dmxdev.filternum = 256;
1093 dev->dmxdev.demux = dmx;
1094 dev->dmxdev.capabilities = 0;
1096 ret = dvb_dmxdev_init(&dev->dmxdev, dvb_adapter);
1100 dev->hw_frontend.source = DMX_FRONTEND_0;
1102 ret = dmx->add_frontend(dmx, &dev->hw_frontend);
1106 dev->mem_frontend.source = DMX_MEMORY_FE;
1108 ret = dmx->add_frontend(dmx, &dev->mem_frontend);
1112 ret = dmx->connect_frontend(dmx, &dev->hw_frontend);
1116 ret = dvb_net_init(dvb_adapter, &dev->dvbnet, dmx);
1120 ret = frontend_init(dev);
1124 dm1105_ir_init(dev);
1126 INIT_WORK(&dev->work, dm1105_dmx_buffer);
1127 sprintf(dev->wqn, "%s/%d", dvb_adapter->name, dvb_adapter->num);
1128 dev->wq = create_singlethread_workqueue(dev->wqn);
1129 if (!dev->wq) {
1135 DRIVER_NAME, dev);
1142 destroy_workqueue(dev->wq);
1144 dvb_net_release(&dev->dvbnet);
1148 dmx->remove_frontend(dmx, &dev->mem_frontend);
1150 dmx->remove_frontend(dmx, &dev->hw_frontend);
1152 dvb_dmxdev_release(&dev->dmxdev);
1158 i2c_del_adapter(&dev->i2c_bb_adap);
1160 i2c_del_adapter(&dev->i2c_adap);
1162 dm1105_hw_exit(dev);
1164 pci_iounmap(pdev, dev->io_mem);
1170 kfree(dev);
1176 struct dm1105_dev *dev = pci_get_drvdata(pdev);
1177 struct dvb_adapter *dvb_adapter = &dev->dvb_adapter;
1178 struct dvb_demux *dvbdemux = &dev->demux;
1181 cancel_work_sync(&dev->ir.work);
1182 dm1105_ir_exit(dev);
1184 dvb_net_release(&dev->dvbnet);
1185 if (dev->fe)
1186 dvb_unregister_frontend(dev->fe);
1189 dmx->remove_frontend(dmx, &dev->mem_frontend);
1190 dmx->remove_frontend(dmx, &dev->hw_frontend);
1191 dvb_dmxdev_release(&dev->dmxdev);
1194 i2c_del_adapter(&dev->i2c_adap);
1196 dm1105_hw_exit(dev);
1197 free_irq(pdev->irq, dev);
1198 pci_iounmap(pdev, dev->io_mem);
1202 kfree(dev);