Lines Matching refs:dev

258 	struct saa7164_dev *dev = port->dev;  in saa7164_work_enchandler_helper()  local
364 struct saa7164_dev *dev = port->dev; in saa7164_work_enchandler() local
441 struct saa7164_dev *dev = port->dev; in saa7164_work_vbihandler() local
515 struct saa7164_dev *dev = container_of(w, struct saa7164_dev, workcmd); in saa7164_work_cmdhandler() local
518 saa7164_irq_dequeue(dev); in saa7164_work_cmdhandler()
533 struct saa7164_dev *dev = port->dev; in saa7164_irq_vbi() local
558 struct saa7164_dev *dev = port->dev; in saa7164_irq_encoder() local
582 struct saa7164_dev *dev = port->dev; in saa7164_irq_ts() local
620 struct saa7164_dev *dev = dev_id; in saa7164_irq() local
621 struct saa7164_port *porta = &dev->ports[SAA7164_PORT_TS1]; in saa7164_irq()
622 struct saa7164_port *portb = &dev->ports[SAA7164_PORT_TS2]; in saa7164_irq()
623 struct saa7164_port *portc = &dev->ports[SAA7164_PORT_ENC1]; in saa7164_irq()
624 struct saa7164_port *portd = &dev->ports[SAA7164_PORT_ENC2]; in saa7164_irq()
625 struct saa7164_port *porte = &dev->ports[SAA7164_PORT_VBI1]; in saa7164_irq()
626 struct saa7164_port *portf = &dev->ports[SAA7164_PORT_VBI2]; in saa7164_irq()
631 if (dev == NULL) { in saa7164_irq()
646 intstat[i] = saa7164_readl(dev->int_status + (i * 4)); in saa7164_irq()
670 if (intid == dev->intfdesc.bInterruptId) { in saa7164_irq()
672 schedule_work(&dev->workcmd); in saa7164_irq()
714 saa7164_writel(dev->int_ack + (i * 4), intstat[i]); in saa7164_irq()
722 void saa7164_getfirmwarestatus(struct saa7164_dev *dev) in saa7164_getfirmwarestatus() argument
724 struct saa7164_fw_status *s = &dev->fw_status; in saa7164_getfirmwarestatus()
726 dev->fw_status.status = saa7164_readl(SAA_DEVICE_SYSINIT_STATUS); in saa7164_getfirmwarestatus()
727 dev->fw_status.mode = saa7164_readl(SAA_DEVICE_SYSINIT_MODE); in saa7164_getfirmwarestatus()
728 dev->fw_status.spec = saa7164_readl(SAA_DEVICE_SYSINIT_SPEC); in saa7164_getfirmwarestatus()
729 dev->fw_status.inst = saa7164_readl(SAA_DEVICE_SYSINIT_INST); in saa7164_getfirmwarestatus()
730 dev->fw_status.cpuload = saa7164_readl(SAA_DEVICE_SYSINIT_CPULOAD); in saa7164_getfirmwarestatus()
731 dev->fw_status.remainheap = in saa7164_getfirmwarestatus()
743 u32 saa7164_getcurrentfirmwareversion(struct saa7164_dev *dev) in saa7164_getcurrentfirmwareversion() argument
759 void saa7164_dumpregs(struct saa7164_dev *dev, u32 addr) in saa7164_dumpregs() argument
789 static void saa7164_dump_hwdesc(struct saa7164_dev *dev) in saa7164_dump_hwdesc() argument
792 &dev->hwdesc, (u32)sizeof(struct tmComResHWDescr)); in saa7164_dump_hwdesc()
794 dprintk(1, " .bLength = 0x%x\n", dev->hwdesc.bLength); in saa7164_dump_hwdesc()
795 dprintk(1, " .bDescriptorType = 0x%x\n", dev->hwdesc.bDescriptorType); in saa7164_dump_hwdesc()
797 dev->hwdesc.bDescriptorSubtype); in saa7164_dump_hwdesc()
799 dprintk(1, " .bcdSpecVersion = 0x%x\n", dev->hwdesc.bcdSpecVersion); in saa7164_dump_hwdesc()
800 dprintk(1, " .dwClockFrequency = 0x%x\n", dev->hwdesc.dwClockFrequency); in saa7164_dump_hwdesc()
801 dprintk(1, " .dwClockUpdateRes = 0x%x\n", dev->hwdesc.dwClockUpdateRes); in saa7164_dump_hwdesc()
802 dprintk(1, " .bCapabilities = 0x%x\n", dev->hwdesc.bCapabilities); in saa7164_dump_hwdesc()
804 dev->hwdesc.dwDeviceRegistersLocation); in saa7164_dump_hwdesc()
807 dev->hwdesc.dwHostMemoryRegion); in saa7164_dump_hwdesc()
810 dev->hwdesc.dwHostMemoryRegionSize); in saa7164_dump_hwdesc()
813 dev->hwdesc.dwHostHibernatMemRegion); in saa7164_dump_hwdesc()
816 dev->hwdesc.dwHostHibernatMemRegionSize); in saa7164_dump_hwdesc()
819 static void saa7164_dump_intfdesc(struct saa7164_dev *dev) in saa7164_dump_intfdesc() argument
823 &dev->intfdesc, (u32)sizeof(struct tmComResInterfaceDescr)); in saa7164_dump_intfdesc()
825 dprintk(1, " .bLength = 0x%x\n", dev->intfdesc.bLength); in saa7164_dump_intfdesc()
826 dprintk(1, " .bDescriptorType = 0x%x\n", dev->intfdesc.bDescriptorType); in saa7164_dump_intfdesc()
828 dev->intfdesc.bDescriptorSubtype); in saa7164_dump_intfdesc()
830 dprintk(1, " .bFlags = 0x%x\n", dev->intfdesc.bFlags); in saa7164_dump_intfdesc()
831 dprintk(1, " .bInterfaceType = 0x%x\n", dev->intfdesc.bInterfaceType); in saa7164_dump_intfdesc()
832 dprintk(1, " .bInterfaceId = 0x%x\n", dev->intfdesc.bInterfaceId); in saa7164_dump_intfdesc()
833 dprintk(1, " .bBaseInterface = 0x%x\n", dev->intfdesc.bBaseInterface); in saa7164_dump_intfdesc()
834 dprintk(1, " .bInterruptId = 0x%x\n", dev->intfdesc.bInterruptId); in saa7164_dump_intfdesc()
836 dev->intfdesc.bDebugInterruptId); in saa7164_dump_intfdesc()
838 dprintk(1, " .BARLocation = 0x%x\n", dev->intfdesc.BARLocation); in saa7164_dump_intfdesc()
841 static void saa7164_dump_busdesc(struct saa7164_dev *dev) in saa7164_dump_busdesc() argument
844 &dev->busdesc, (u32)sizeof(struct tmComResBusDescr)); in saa7164_dump_busdesc()
846 dprintk(1, " .CommandRing = 0x%016Lx\n", dev->busdesc.CommandRing); in saa7164_dump_busdesc()
847 dprintk(1, " .ResponseRing = 0x%016Lx\n", dev->busdesc.ResponseRing); in saa7164_dump_busdesc()
848 dprintk(1, " .CommandWrite = 0x%x\n", dev->busdesc.CommandWrite); in saa7164_dump_busdesc()
849 dprintk(1, " .CommandRead = 0x%x\n", dev->busdesc.CommandRead); in saa7164_dump_busdesc()
850 dprintk(1, " .ResponseWrite = 0x%x\n", dev->busdesc.ResponseWrite); in saa7164_dump_busdesc()
851 dprintk(1, " .ResponseRead = 0x%x\n", dev->busdesc.ResponseRead); in saa7164_dump_busdesc()
859 static void saa7164_get_descriptors(struct saa7164_dev *dev) in saa7164_get_descriptors() argument
861 memcpy_fromio(&dev->hwdesc, dev->bmmio, sizeof(struct tmComResHWDescr)); in saa7164_get_descriptors()
862 memcpy_fromio(&dev->intfdesc, dev->bmmio + sizeof(struct tmComResHWDescr), in saa7164_get_descriptors()
864 memcpy_fromio(&dev->busdesc, dev->bmmio + dev->intfdesc.BARLocation, in saa7164_get_descriptors()
867 if (dev->hwdesc.bLength != sizeof(struct tmComResHWDescr)) { in saa7164_get_descriptors()
869 printk(KERN_ERR "Need %x got %d\n", dev->hwdesc.bLength, in saa7164_get_descriptors()
872 saa7164_dump_hwdesc(dev); in saa7164_get_descriptors()
874 if (dev->intfdesc.bLength != sizeof(struct tmComResInterfaceDescr)) { in saa7164_get_descriptors()
876 printk(KERN_ERR "Need %x got %d\n", dev->intfdesc.bLength, in saa7164_get_descriptors()
879 saa7164_dump_intfdesc(dev); in saa7164_get_descriptors()
881 saa7164_dump_busdesc(dev); in saa7164_get_descriptors()
884 static int saa7164_pci_quirks(struct saa7164_dev *dev) in saa7164_pci_quirks() argument
889 static int get_resources(struct saa7164_dev *dev) in get_resources() argument
891 if (request_mem_region(pci_resource_start(dev->pci, 0), in get_resources()
892 pci_resource_len(dev->pci, 0), dev->name)) { in get_resources()
894 if (request_mem_region(pci_resource_start(dev->pci, 2), in get_resources()
895 pci_resource_len(dev->pci, 2), dev->name)) in get_resources()
900 dev->name, in get_resources()
901 (u64)pci_resource_start(dev->pci, 0), in get_resources()
902 (u64)pci_resource_start(dev->pci, 2)); in get_resources()
907 static int saa7164_port_init(struct saa7164_dev *dev, int portnr) in saa7164_port_init() argument
914 port = &dev->ports[portnr]; in saa7164_port_init()
916 port->dev = dev; in saa7164_port_init()
957 static int saa7164_dev_setup(struct saa7164_dev *dev) in saa7164_dev_setup() argument
961 mutex_init(&dev->lock); in saa7164_dev_setup()
962 atomic_inc(&dev->refcount); in saa7164_dev_setup()
963 dev->nr = saa7164_devcount++; in saa7164_dev_setup()
965 snprintf(dev->name, sizeof(dev->name), "saa7164[%d]", dev->nr); in saa7164_dev_setup()
968 list_add_tail(&dev->devlist, &saa7164_devlist); in saa7164_dev_setup()
972 dev->board = UNSET; in saa7164_dev_setup()
973 if (card[dev->nr] < saa7164_bcount) in saa7164_dev_setup()
974 dev->board = card[dev->nr]; in saa7164_dev_setup()
976 for (i = 0; UNSET == dev->board && i < saa7164_idcount; i++) in saa7164_dev_setup()
977 if (dev->pci->subsystem_vendor == saa7164_subids[i].subvendor && in saa7164_dev_setup()
978 dev->pci->subsystem_device == in saa7164_dev_setup()
980 dev->board = saa7164_subids[i].card; in saa7164_dev_setup()
982 if (UNSET == dev->board) { in saa7164_dev_setup()
983 dev->board = SAA7164_BOARD_UNKNOWN; in saa7164_dev_setup()
984 saa7164_card_list(dev); in saa7164_dev_setup()
987 dev->pci_bus = dev->pci->bus->number; in saa7164_dev_setup()
988 dev->pci_slot = PCI_SLOT(dev->pci->devfn); in saa7164_dev_setup()
991 dev->i2c_bus[0].dev = dev; in saa7164_dev_setup()
992 dev->i2c_bus[0].nr = 0; in saa7164_dev_setup()
993 dev->i2c_bus[1].dev = dev; in saa7164_dev_setup()
994 dev->i2c_bus[1].nr = 1; in saa7164_dev_setup()
995 dev->i2c_bus[2].dev = dev; in saa7164_dev_setup()
996 dev->i2c_bus[2].nr = 2; in saa7164_dev_setup()
999 saa7164_port_init(dev, SAA7164_PORT_TS1); in saa7164_dev_setup()
1000 saa7164_port_init(dev, SAA7164_PORT_TS2); in saa7164_dev_setup()
1001 saa7164_port_init(dev, SAA7164_PORT_ENC1); in saa7164_dev_setup()
1002 saa7164_port_init(dev, SAA7164_PORT_ENC2); in saa7164_dev_setup()
1003 saa7164_port_init(dev, SAA7164_PORT_VBI1); in saa7164_dev_setup()
1004 saa7164_port_init(dev, SAA7164_PORT_VBI2); in saa7164_dev_setup()
1006 if (get_resources(dev) < 0) { in saa7164_dev_setup()
1009 dev->name, dev->pci->subsystem_vendor, in saa7164_dev_setup()
1010 dev->pci->subsystem_device); in saa7164_dev_setup()
1017 dev->lmmio = ioremap(pci_resource_start(dev->pci, 0), in saa7164_dev_setup()
1018 pci_resource_len(dev->pci, 0)); in saa7164_dev_setup()
1020 dev->lmmio2 = ioremap(pci_resource_start(dev->pci, 2), in saa7164_dev_setup()
1021 pci_resource_len(dev->pci, 2)); in saa7164_dev_setup()
1023 dev->bmmio = (u8 __iomem *)dev->lmmio; in saa7164_dev_setup()
1024 dev->bmmio2 = (u8 __iomem *)dev->lmmio2; in saa7164_dev_setup()
1027 dev->int_status = 0x183000 + 0xf80; in saa7164_dev_setup()
1028 dev->int_ack = 0x183000 + 0xf90; in saa7164_dev_setup()
1032 dev->name, dev->pci->subsystem_vendor, in saa7164_dev_setup()
1033 dev->pci->subsystem_device, saa7164_boards[dev->board].name, in saa7164_dev_setup()
1034 dev->board, card[dev->nr] == dev->board ? in saa7164_dev_setup()
1037 saa7164_pci_quirks(dev); in saa7164_dev_setup()
1042 static void saa7164_dev_unregister(struct saa7164_dev *dev) in saa7164_dev_unregister() argument
1046 release_mem_region(pci_resource_start(dev->pci, 0), in saa7164_dev_unregister()
1047 pci_resource_len(dev->pci, 0)); in saa7164_dev_unregister()
1049 release_mem_region(pci_resource_start(dev->pci, 2), in saa7164_dev_unregister()
1050 pci_resource_len(dev->pci, 2)); in saa7164_dev_unregister()
1052 if (!atomic_dec_and_test(&dev->refcount)) in saa7164_dev_unregister()
1055 iounmap(dev->lmmio); in saa7164_dev_unregister()
1056 iounmap(dev->lmmio2); in saa7164_dev_unregister()
1064 struct saa7164_dev *dev; in saa7164_proc_show() local
1073 dev = list_entry(list, struct saa7164_dev, devlist); in saa7164_proc_show()
1074 seq_printf(m, "%s = %p\n", dev->name, dev); in saa7164_proc_show()
1077 b = &dev->bus; in saa7164_proc_show()
1154 struct saa7164_dev *dev = data; in saa7164_thread_function() local
1173 saa7164_api_collect_debug(dev); in saa7164_thread_function()
1177 saa7164_api_get_load_info(dev, &fwinfo); in saa7164_thread_function()
1190 struct saa7164_dev *dev; in saa7164_initdev() local
1194 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in saa7164_initdev()
1195 if (NULL == dev) in saa7164_initdev()
1198 err = v4l2_device_register(&pci_dev->dev, &dev->v4l2_dev); in saa7164_initdev()
1200 dev_err(&pci_dev->dev, "v4l2_device_register failed\n"); in saa7164_initdev()
1205 dev->pci = pci_dev; in saa7164_initdev()
1211 if (saa7164_dev_setup(dev) < 0) { in saa7164_initdev()
1217 dev->pci_rev = pci_dev->revision; in saa7164_initdev()
1218 pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &dev->pci_lat); in saa7164_initdev()
1220 "latency: %d, mmio: 0x%llx\n", dev->name, in saa7164_initdev()
1221 pci_name(pci_dev), dev->pci_rev, pci_dev->irq, in saa7164_initdev()
1222 dev->pci_lat, in saa7164_initdev()
1228 printk("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name); in saa7164_initdev()
1234 IRQF_SHARED, dev->name, dev); in saa7164_initdev()
1236 printk(KERN_ERR "%s: can't get IRQ %d\n", dev->name, in saa7164_initdev()
1242 pci_set_drvdata(pci_dev, dev); in saa7164_initdev()
1246 dev->cmds[i].seqno = i; in saa7164_initdev()
1247 dev->cmds[i].inuse = 0; in saa7164_initdev()
1248 mutex_init(&dev->cmds[i].lock); in saa7164_initdev()
1249 init_waitqueue_head(&dev->cmds[i].wait); in saa7164_initdev()
1253 INIT_WORK(&dev->workcmd, saa7164_work_cmdhandler); in saa7164_initdev()
1256 if (dev->board != SAA7164_BOARD_UNKNOWN) { in saa7164_initdev()
1258 err = saa7164_downloadfirmware(dev); in saa7164_initdev()
1266 saa7164_get_descriptors(dev); in saa7164_initdev()
1267 saa7164_dumpregs(dev, 0); in saa7164_initdev()
1268 saa7164_getcurrentfirmwareversion(dev); in saa7164_initdev()
1269 saa7164_getfirmwarestatus(dev); in saa7164_initdev()
1270 err = saa7164_bus_setup(dev); in saa7164_initdev()
1274 saa7164_bus_dump(dev); in saa7164_initdev()
1280 if (saa7164_api_get_fw_version(dev, &version) == SAA_OK) in saa7164_initdev()
1293 saa7164_i2c_register(&dev->i2c_bus[0]); in saa7164_initdev()
1294 saa7164_i2c_register(&dev->i2c_bus[1]); in saa7164_initdev()
1295 saa7164_i2c_register(&dev->i2c_bus[2]); in saa7164_initdev()
1296 saa7164_gpio_setup(dev); in saa7164_initdev()
1297 saa7164_card_setup(dev); in saa7164_initdev()
1305 saa7164_api_enum_subdevs(dev); in saa7164_initdev()
1308 if (saa7164_boards[dev->board].porta == SAA7164_MPEG_DVB) { in saa7164_initdev()
1309 if (saa7164_dvb_register(&dev->ports[SAA7164_PORT_TS1]) < 0) { in saa7164_initdev()
1316 if (saa7164_boards[dev->board].portb == SAA7164_MPEG_DVB) { in saa7164_initdev()
1317 if (saa7164_dvb_register(&dev->ports[SAA7164_PORT_TS2]) < 0) { in saa7164_initdev()
1324 if (saa7164_boards[dev->board].portc == SAA7164_MPEG_ENCODER) { in saa7164_initdev()
1325 if (saa7164_encoder_register(&dev->ports[SAA7164_PORT_ENC1]) < 0) { in saa7164_initdev()
1331 if (saa7164_boards[dev->board].portd == SAA7164_MPEG_ENCODER) { in saa7164_initdev()
1332 if (saa7164_encoder_register(&dev->ports[SAA7164_PORT_ENC2]) < 0) { in saa7164_initdev()
1338 if (saa7164_boards[dev->board].porte == SAA7164_MPEG_VBI) { in saa7164_initdev()
1339 if (saa7164_vbi_register(&dev->ports[SAA7164_PORT_VBI1]) < 0) { in saa7164_initdev()
1345 if (saa7164_boards[dev->board].portf == SAA7164_MPEG_VBI) { in saa7164_initdev()
1346 if (saa7164_vbi_register(&dev->ports[SAA7164_PORT_VBI2]) < 0) { in saa7164_initdev()
1351 saa7164_api_set_debug(dev, fw_debug); in saa7164_initdev()
1354 dev->kthread = kthread_run(saa7164_thread_function, dev, in saa7164_initdev()
1356 if (IS_ERR(dev->kthread)) { in saa7164_initdev()
1357 dev->kthread = NULL; in saa7164_initdev()
1375 saa7164_dev_unregister(dev); in saa7164_initdev()
1377 v4l2_device_unregister(&dev->v4l2_dev); in saa7164_initdev()
1378 kfree(dev); in saa7164_initdev()
1382 static void saa7164_shutdown(struct saa7164_dev *dev) in saa7164_shutdown() argument
1389 struct saa7164_dev *dev = pci_get_drvdata(pci_dev); in saa7164_finidev() local
1391 if (dev->board != SAA7164_BOARD_UNKNOWN) { in saa7164_finidev()
1392 if (fw_debug && dev->kthread) { in saa7164_finidev()
1393 kthread_stop(dev->kthread); in saa7164_finidev()
1394 dev->kthread = NULL; in saa7164_finidev()
1396 if (dev->firmwareloaded) in saa7164_finidev()
1397 saa7164_api_set_debug(dev, 0x00); in saa7164_finidev()
1400 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1401 &dev->ports[SAA7164_PORT_ENC1].irq_interval); in saa7164_finidev()
1402 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1403 &dev->ports[SAA7164_PORT_ENC1].svc_interval); in saa7164_finidev()
1404 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1405 &dev->ports[SAA7164_PORT_ENC1].irq_svc_interval); in saa7164_finidev()
1406 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1407 &dev->ports[SAA7164_PORT_ENC1].read_interval); in saa7164_finidev()
1408 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1409 &dev->ports[SAA7164_PORT_ENC1].poll_interval); in saa7164_finidev()
1410 saa7164_histogram_print(&dev->ports[SAA7164_PORT_VBI1], in saa7164_finidev()
1411 &dev->ports[SAA7164_PORT_VBI1].read_interval); in saa7164_finidev()
1412 saa7164_histogram_print(&dev->ports[SAA7164_PORT_VBI2], in saa7164_finidev()
1413 &dev->ports[SAA7164_PORT_VBI2].poll_interval); in saa7164_finidev()
1415 saa7164_shutdown(dev); in saa7164_finidev()
1417 if (saa7164_boards[dev->board].porta == SAA7164_MPEG_DVB) in saa7164_finidev()
1418 saa7164_dvb_unregister(&dev->ports[SAA7164_PORT_TS1]); in saa7164_finidev()
1420 if (saa7164_boards[dev->board].portb == SAA7164_MPEG_DVB) in saa7164_finidev()
1421 saa7164_dvb_unregister(&dev->ports[SAA7164_PORT_TS2]); in saa7164_finidev()
1423 if (saa7164_boards[dev->board].portc == SAA7164_MPEG_ENCODER) in saa7164_finidev()
1424 saa7164_encoder_unregister(&dev->ports[SAA7164_PORT_ENC1]); in saa7164_finidev()
1426 if (saa7164_boards[dev->board].portd == SAA7164_MPEG_ENCODER) in saa7164_finidev()
1427 saa7164_encoder_unregister(&dev->ports[SAA7164_PORT_ENC2]); in saa7164_finidev()
1429 if (saa7164_boards[dev->board].porte == SAA7164_MPEG_VBI) in saa7164_finidev()
1430 saa7164_vbi_unregister(&dev->ports[SAA7164_PORT_VBI1]); in saa7164_finidev()
1432 if (saa7164_boards[dev->board].portf == SAA7164_MPEG_VBI) in saa7164_finidev()
1433 saa7164_vbi_unregister(&dev->ports[SAA7164_PORT_VBI2]); in saa7164_finidev()
1435 saa7164_i2c_unregister(&dev->i2c_bus[0]); in saa7164_finidev()
1436 saa7164_i2c_unregister(&dev->i2c_bus[1]); in saa7164_finidev()
1437 saa7164_i2c_unregister(&dev->i2c_bus[2]); in saa7164_finidev()
1440 free_irq(pci_dev->irq, dev); in saa7164_finidev()
1445 list_del(&dev->devlist); in saa7164_finidev()
1448 saa7164_dev_unregister(dev); in saa7164_finidev()
1449 v4l2_device_unregister(&dev->v4l2_dev); in saa7164_finidev()
1450 kfree(dev); in saa7164_finidev()