Lines Matching refs:dev

77 void tw5864_irqmask_apply(struct tw5864_dev *dev)  in tw5864_irqmask_apply()  argument
79 tw_writel(TW5864_INTR_ENABLE_L, dev->irqmask & 0xffff); in tw5864_irqmask_apply()
80 tw_writel(TW5864_INTR_ENABLE_H, (dev->irqmask >> 16)); in tw5864_irqmask_apply()
83 static void tw5864_interrupts_disable(struct tw5864_dev *dev) in tw5864_interrupts_disable() argument
87 spin_lock_irqsave(&dev->slock, flags); in tw5864_interrupts_disable()
88 dev->irqmask = 0; in tw5864_interrupts_disable()
89 tw5864_irqmask_apply(dev); in tw5864_interrupts_disable()
90 spin_unlock_irqrestore(&dev->slock, flags); in tw5864_interrupts_disable()
93 static void tw5864_timer_isr(struct tw5864_dev *dev);
94 static void tw5864_h264_isr(struct tw5864_dev *dev);
98 struct tw5864_dev *dev = dev_id; in tw5864_isr() local
110 tw5864_h264_isr(dev); in tw5864_isr()
113 tw5864_timer_isr(dev); in tw5864_isr()
116 dev_dbg(&dev->pci->dev, "Unknown interrupt, status 0x%08X\n", in tw5864_isr()
123 static void tw5864_h264_isr(struct tw5864_dev *dev) in tw5864_h264_isr() argument
126 struct tw5864_input *input = &dev->inputs[channel]; in tw5864_h264_isr()
131 spin_lock_irqsave(&dev->slock, flags); in tw5864_h264_isr()
133 cur_frame_index = dev->h264_buf_w_index; in tw5864_h264_isr()
135 cur_frame = &dev->h264_buf[cur_frame_index]; in tw5864_h264_isr()
136 next_frame = &dev->h264_buf[next_frame_index]; in tw5864_h264_isr()
138 if (next_frame_index != dev->h264_buf_r_index) { in tw5864_h264_isr()
146 dev->h264_buf_w_index = next_frame_index; in tw5864_h264_isr()
147 tasklet_schedule(&dev->tasklet); in tw5864_h264_isr()
158 dev_err(&dev->pci->dev, in tw5864_h264_isr()
163 dev->encoder_busy = 0; in tw5864_h264_isr()
165 spin_unlock_irqrestore(&dev->slock, flags); in tw5864_h264_isr()
180 static void tw5864_timer_isr(struct tw5864_dev *dev) in tw5864_timer_isr() argument
189 spin_lock_irqsave(&dev->slock, flags); in tw5864_timer_isr()
190 encoder_busy = dev->encoder_busy; in tw5864_timer_isr()
191 spin_unlock_irqrestore(&dev->slock, flags); in tw5864_timer_isr()
201 int next_input = (i + dev->next_input) % TW5864_INPUTS; in tw5864_timer_isr()
202 struct tw5864_input *input = &dev->inputs[next_input]; in tw5864_timer_isr()
218 spin_lock_irqsave(&dev->slock, flags); in tw5864_timer_isr()
219 dev->encoder_busy = 1; in tw5864_timer_isr()
220 dev->next_input = (next_input + 1) % TW5864_INPUTS; in tw5864_timer_isr()
221 spin_unlock_irqrestore(&dev->slock, flags); in tw5864_timer_isr()
242 struct tw5864_dev *dev; in tw5864_initdev() local
245 dev = devm_kzalloc(&pci_dev->dev, sizeof(*dev), GFP_KERNEL); in tw5864_initdev()
246 if (!dev) in tw5864_initdev()
249 snprintf(dev->name, sizeof(dev->name), "tw5864:%s", pci_name(pci_dev)); in tw5864_initdev()
251 err = v4l2_device_register(&pci_dev->dev, &dev->v4l2_dev); in tw5864_initdev()
256 dev->pci = pci_dev; in tw5864_initdev()
259 dev_err(&dev->pci->dev, "pcim_enable_device() failed\n"); in tw5864_initdev()
265 err = dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(32)); in tw5864_initdev()
267 dev_err(&dev->pci->dev, "32 bit PCI DMA is not supported\n"); in tw5864_initdev()
272 err = pcim_iomap_regions(pci_dev, BIT(0), dev->name); in tw5864_initdev()
274 dev_err(&dev->pci->dev, "Cannot request regions for MMIO\n"); in tw5864_initdev()
277 dev->mmio = pcim_iomap_table(pci_dev)[0]; in tw5864_initdev()
279 spin_lock_init(&dev->slock); in tw5864_initdev()
281 dev_info(&pci_dev->dev, "TW5864 hardware version: %04x\n", in tw5864_initdev()
283 dev_info(&pci_dev->dev, "TW5864 H.264 core version: %04x:%04x\n", in tw5864_initdev()
287 err = tw5864_video_init(dev, video_nr); in tw5864_initdev()
292 err = devm_request_irq(&pci_dev->dev, pci_dev->irq, tw5864_isr, in tw5864_initdev()
293 IRQF_SHARED, "tw5864", dev); in tw5864_initdev()
295 dev_err(&dev->pci->dev, "can't get IRQ %d\n", pci_dev->irq); in tw5864_initdev()
299 dev_info(&pci_dev->dev, "Note: there are known video quality issues. For details\n"); in tw5864_initdev()
300 dev_info(&pci_dev->dev, "see the comment in drivers/media/pci/tw5864/tw5864-core.c.\n"); in tw5864_initdev()
305 tw5864_video_fini(dev); in tw5864_initdev()
307 v4l2_device_unregister(&dev->v4l2_dev); in tw5864_initdev()
314 struct tw5864_dev *dev = in tw5864_finidev() local
318 tw5864_interrupts_disable(dev); in tw5864_finidev()
321 tw5864_video_fini(dev); in tw5864_finidev()
323 v4l2_device_unregister(&dev->v4l2_dev); in tw5864_finidev()