Lines Matching refs:pd

140 	struct dt3155_priv *pd = vb2_get_drv_priv(vq);  in dt3155_queue_setup()  local
141 unsigned size = pd->width * pd->height; in dt3155_queue_setup()
149 alloc_ctxs[0] = pd->alloc_ctx; in dt3155_queue_setup()
155 struct dt3155_priv *pd = vb2_get_drv_priv(vb->vb2_queue); in dt3155_buf_prepare() local
157 vb2_set_plane_payload(vb, 0, pd->width * pd->height); in dt3155_buf_prepare()
163 struct dt3155_priv *pd = vb2_get_drv_priv(q); in dt3155_start_streaming() local
164 struct vb2_buffer *vb = &pd->curr_buf->vb2_buf; in dt3155_start_streaming()
167 pd->sequence = 0; in dt3155_start_streaming()
169 iowrite32(dma_addr, pd->regs + EVEN_DMA_START); in dt3155_start_streaming()
170 iowrite32(dma_addr + pd->width, pd->regs + ODD_DMA_START); in dt3155_start_streaming()
171 iowrite32(pd->width, pd->regs + EVEN_DMA_STRIDE); in dt3155_start_streaming()
172 iowrite32(pd->width, pd->regs + ODD_DMA_STRIDE); in dt3155_start_streaming()
175 FLD_END_EVEN | FLD_END_ODD, pd->regs + INT_CSR); in dt3155_start_streaming()
178 pd->regs + CSR1); in dt3155_start_streaming()
179 wait_i2c_reg(pd->regs); in dt3155_start_streaming()
180 write_i2c_reg(pd->regs, CONFIG, pd->config); in dt3155_start_streaming()
181 write_i2c_reg(pd->regs, EVEN_CSR, CSR_ERROR | CSR_DONE); in dt3155_start_streaming()
182 write_i2c_reg(pd->regs, ODD_CSR, CSR_ERROR | CSR_DONE); in dt3155_start_streaming()
185 write_i2c_reg(pd->regs, CSR2, pd->csr2 | BUSY_EVEN | BUSY_ODD); in dt3155_start_streaming()
191 struct dt3155_priv *pd = vb2_get_drv_priv(q); in dt3155_stop_streaming() local
194 spin_lock_irq(&pd->lock); in dt3155_stop_streaming()
196 write_i2c_reg_nowait(pd->regs, CSR2, pd->csr2); in dt3155_stop_streaming()
198 FLD_DN_ODD | FLD_DN_EVEN, pd->regs + CSR1); in dt3155_stop_streaming()
200 iowrite32(FLD_START | FLD_END_EVEN | FLD_END_ODD, pd->regs + INT_CSR); in dt3155_stop_streaming()
201 spin_unlock_irq(&pd->lock); in dt3155_stop_streaming()
210 spin_lock_irq(&pd->lock); in dt3155_stop_streaming()
211 if (pd->curr_buf) { in dt3155_stop_streaming()
212 vb2_buffer_done(&pd->curr_buf->vb2_buf, VB2_BUF_STATE_ERROR); in dt3155_stop_streaming()
213 pd->curr_buf = NULL; in dt3155_stop_streaming()
216 while (!list_empty(&pd->dmaq)) { in dt3155_stop_streaming()
217 vb = list_first_entry(&pd->dmaq, typeof(*vb), done_entry); in dt3155_stop_streaming()
221 spin_unlock_irq(&pd->lock); in dt3155_stop_streaming()
227 struct dt3155_priv *pd = vb2_get_drv_priv(vb->vb2_queue); in dt3155_buf_queue() local
230 spin_lock_irq(&pd->lock); in dt3155_buf_queue()
231 if (pd->curr_buf) in dt3155_buf_queue()
232 list_add_tail(&vb->done_entry, &pd->dmaq); in dt3155_buf_queue()
234 pd->curr_buf = vbuf; in dt3155_buf_queue()
235 spin_unlock_irq(&pd->lock); in dt3155_buf_queue()
310 struct dt3155_priv *pd = video_drvdata(filp); in dt3155_querycap() local
314 sprintf(cap->bus_info, "PCI:%s", pci_name(pd->pdev)); in dt3155_querycap()
333 struct dt3155_priv *pd = video_drvdata(filp); in dt3155_fmt_vid_cap() local
335 f->fmt.pix.width = pd->width; in dt3155_fmt_vid_cap()
336 f->fmt.pix.height = pd->height; in dt3155_fmt_vid_cap()
347 struct dt3155_priv *pd = video_drvdata(filp); in dt3155_g_std() local
349 *norm = pd->std; in dt3155_g_std()
355 struct dt3155_priv *pd = video_drvdata(filp); in dt3155_s_std() local
357 if (pd->std == norm) in dt3155_s_std()
359 if (vb2_is_busy(&pd->vidq)) in dt3155_s_std()
361 pd->std = norm; in dt3155_s_std()
362 if (pd->std & V4L2_STD_525_60) { in dt3155_s_std()
363 pd->csr2 = VT_60HZ; in dt3155_s_std()
364 pd->width = 640; in dt3155_s_std()
365 pd->height = 480; in dt3155_s_std()
367 pd->csr2 = VT_50HZ; in dt3155_s_std()
368 pd->width = 768; in dt3155_s_std()
369 pd->height = 576; in dt3155_s_std()
392 struct dt3155_priv *pd = video_drvdata(filp); in dt3155_g_input() local
394 *i = pd->input; in dt3155_g_input()
400 struct dt3155_priv *pd = video_drvdata(filp); in dt3155_s_input() local
404 pd->input = i; in dt3155_s_input()
405 write_i2c_reg(pd->regs, AD_ADDR, AD_CMD_REG); in dt3155_s_input()
406 write_i2c_reg(pd->regs, AD_CMD, (i << 6) | (i << 4) | SYNC_LVL_3); in dt3155_s_input()
431 static int dt3155_init_board(struct dt3155_priv *pd) in dt3155_init_board() argument
433 struct pci_dev *pdev = pd->pdev; in dt3155_init_board()
441 FLD_DN_ODD | FLD_DN_EVEN, pd->regs + CSR1); in dt3155_init_board()
446 iowrite32(FIFO_EN | SRST, pd->regs + CSR1); in dt3155_init_board()
448 iowrite32(0xEEEEEE01, pd->regs + EVEN_PIXEL_FMT); in dt3155_init_board()
449 iowrite32(0xEEEEEE01, pd->regs + ODD_PIXEL_FMT); in dt3155_init_board()
450 iowrite32(0x00000020, pd->regs + FIFO_TRIGER); in dt3155_init_board()
451 iowrite32(0x00000103, pd->regs + XFER_MODE); in dt3155_init_board()
452 iowrite32(0, pd->regs + RETRY_WAIT_CNT); in dt3155_init_board()
453 iowrite32(0, pd->regs + INT_CSR); in dt3155_init_board()
454 iowrite32(1, pd->regs + EVEN_FLD_MASK); in dt3155_init_board()
455 iowrite32(1, pd->regs + ODD_FLD_MASK); in dt3155_init_board()
456 iowrite32(0, pd->regs + MASK_LENGTH); in dt3155_init_board()
457 iowrite32(0x0005007C, pd->regs + FIFO_FLAG_CNT); in dt3155_init_board()
458 iowrite32(0x01010101, pd->regs + IIC_CLK_DUR); in dt3155_init_board()
462 read_i2c_reg(pd->regs, DT_ID, &tmp); in dt3155_init_board()
467 write_i2c_reg(pd->regs, AD_ADDR, 0); in dt3155_init_board()
469 write_i2c_reg(pd->regs, AD_LUT, i); in dt3155_init_board()
473 write_i2c_reg(pd->regs, AD_ADDR, AD_CMD_REG); in dt3155_init_board()
474 write_i2c_reg(pd->regs, AD_CMD, VIDEO_CNL_1 | SYNC_CNL_1 | SYNC_LVL_3); in dt3155_init_board()
475 write_i2c_reg(pd->regs, AD_ADDR, AD_POS_REF); in dt3155_init_board()
476 write_i2c_reg(pd->regs, AD_CMD, 34); in dt3155_init_board()
477 write_i2c_reg(pd->regs, AD_ADDR, AD_NEG_REF); in dt3155_init_board()
478 write_i2c_reg(pd->regs, AD_CMD, 0); in dt3155_init_board()
481 write_i2c_reg(pd->regs, CONFIG, pd->config | PM_LUT_PGM); in dt3155_init_board()
483 write_i2c_reg(pd->regs, PM_LUT_ADDR, i); in dt3155_init_board()
484 write_i2c_reg(pd->regs, PM_LUT_DATA, i); in dt3155_init_board()
486 write_i2c_reg(pd->regs, CONFIG, pd->config | PM_LUT_PGM | PM_LUT_SEL); in dt3155_init_board()
488 write_i2c_reg(pd->regs, PM_LUT_ADDR, i); in dt3155_init_board()
489 write_i2c_reg(pd->regs, PM_LUT_DATA, i); in dt3155_init_board()
491 write_i2c_reg(pd->regs, CONFIG, pd->config); /* ACQ_MODE_EVEN */ in dt3155_init_board()
494 write_i2c_reg(pd->regs, AD_ADDR, AD_CMD_REG); in dt3155_init_board()
495 write_i2c_reg(pd->regs, AD_CMD, VIDEO_CNL_1 | SYNC_CNL_1 | SYNC_LVL_3); in dt3155_init_board()
499 pd->regs + INT_CSR); in dt3155_init_board()
516 struct dt3155_priv *pd; in dt3155_probe() local
521 pd = devm_kzalloc(&pdev->dev, sizeof(*pd), GFP_KERNEL); in dt3155_probe()
522 if (!pd) in dt3155_probe()
525 err = v4l2_device_register(&pdev->dev, &pd->v4l2_dev); in dt3155_probe()
528 pd->vdev = dt3155_vdev; in dt3155_probe()
529 pd->vdev.v4l2_dev = &pd->v4l2_dev; in dt3155_probe()
530 video_set_drvdata(&pd->vdev, pd); /* for use in video_fops */ in dt3155_probe()
531 pd->pdev = pdev; in dt3155_probe()
532 pd->std = V4L2_STD_625_50; in dt3155_probe()
533 pd->csr2 = VT_50HZ; in dt3155_probe()
534 pd->width = 768; in dt3155_probe()
535 pd->height = 576; in dt3155_probe()
536 INIT_LIST_HEAD(&pd->dmaq); in dt3155_probe()
537 mutex_init(&pd->mux); in dt3155_probe()
538 pd->vdev.lock = &pd->mux; /* for locking v4l2_file_operations */ in dt3155_probe()
539 pd->vidq.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; in dt3155_probe()
540 pd->vidq.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; in dt3155_probe()
541 pd->vidq.io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ; in dt3155_probe()
542 pd->vidq.ops = &q_ops; in dt3155_probe()
543 pd->vidq.mem_ops = &vb2_dma_contig_memops; in dt3155_probe()
544 pd->vidq.drv_priv = pd; in dt3155_probe()
545 pd->vidq.min_buffers_needed = 2; in dt3155_probe()
546 pd->vidq.gfp_flags = GFP_DMA32; in dt3155_probe()
547 pd->vidq.lock = &pd->mux; /* for locking v4l2_file_operations */ in dt3155_probe()
548 pd->vdev.queue = &pd->vidq; in dt3155_probe()
549 err = vb2_queue_init(&pd->vidq); in dt3155_probe()
552 pd->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev); in dt3155_probe()
553 if (IS_ERR(pd->alloc_ctx)) { in dt3155_probe()
555 err = PTR_ERR(pd->alloc_ctx); in dt3155_probe()
558 spin_lock_init(&pd->lock); in dt3155_probe()
559 pd->config = ACQ_MODE_EVEN; in dt3155_probe()
566 pd->regs = pci_iomap(pdev, 0, pci_resource_len(pd->pdev, 0)); in dt3155_probe()
567 if (!pd->regs) { in dt3155_probe()
571 err = dt3155_init_board(pd); in dt3155_probe()
574 err = request_irq(pd->pdev->irq, dt3155_irq_handler_even, in dt3155_probe()
575 IRQF_SHARED, DT3155_NAME, pd); in dt3155_probe()
578 err = video_register_device(&pd->vdev, VFL_TYPE_GRABBER, -1); in dt3155_probe()
581 dev_info(&pdev->dev, "/dev/video%i is ready\n", pd->vdev.minor); in dt3155_probe()
585 free_irq(pd->pdev->irq, pd); in dt3155_probe()
587 pci_iounmap(pdev, pd->regs); in dt3155_probe()
593 vb2_dma_contig_cleanup_ctx(pd->alloc_ctx); in dt3155_probe()
595 v4l2_device_unregister(&pd->v4l2_dev); in dt3155_probe()
602 struct dt3155_priv *pd = container_of(v4l2_dev, struct dt3155_priv, in dt3155_remove() local
605 video_unregister_device(&pd->vdev); in dt3155_remove()
606 free_irq(pd->pdev->irq, pd); in dt3155_remove()
607 vb2_queue_release(&pd->vidq); in dt3155_remove()
608 v4l2_device_unregister(&pd->v4l2_dev); in dt3155_remove()
609 pci_iounmap(pdev, pd->regs); in dt3155_remove()
612 vb2_dma_contig_cleanup_ctx(pd->alloc_ctx); in dt3155_remove()