Lines Matching refs:ar

109 struct ar {  struct
125 static struct ar ardev; argument
249 static void wait_for_vertical_sync(struct ar *ar, int exp_line) in wait_for_vertical_sync() argument
264 v4l2_err(&ar->v4l2_dev, "lost %d -> %d\n", exp_line, l); in wait_for_vertical_sync()
273 struct ar *ar = video_drvdata(file); in ar_read() local
274 long ret = ar->frame_bytes; /* return read bytes */ in ar_read()
286 if (ar->size == AR_SIZE_QVGA) in ar_read()
288 if (ar->mode == AR_MODE_NORMAL) in ar_read()
291 mutex_lock(&ar->lock); in ar_read()
302 ar_outl(ar->line_buff, M32R_DMA0CDA_PORTL); /* destination addr. */ in ar_read()
303 ar_outl(ar->line_buff, M32R_DMA0RDA_PORTL); /* reload address */ in ar_read()
304 ar_outl(ar->line_bytes, M32R_DMA0CBCUT_PORTL); /* byte count (bytes) */ in ar_read()
305 ar_outl(ar->line_bytes, M32R_DMA0RBCUT_PORTL); /* reload count (bytes) */ in ar_read()
310 ar->start_capture = -1; in ar_read()
314 wait_event_interruptible(ar->wait, ar->start_capture == 0); in ar_read()
329 ar_outl(ar->line_bytes, M32R_DMA0CBCUT_PORTL); in ar_read()
330 ar_outl(ar->line_bytes, M32R_DMA0RBCUT_PORTL); in ar_read()
335 if (ar->mode == AR_MODE_INTERLACE && ar->size == AR_SIZE_VGA) { in ar_read()
336 for (h = 0; h < ar->height; h++) { in ar_read()
337 wait_for_vertical_sync(ar, h); in ar_read()
342 ar_outl(virt_to_phys(ar->frame[l]), M32R_DMA0CDA_PORTL); in ar_read()
351 for (h = 0; h < ar->height; h++) { in ar_read()
352 wait_for_vertical_sync(ar, h); in ar_read()
353 ar_outl(virt_to_phys(ar->frame[h]), M32R_DMA0CDA_PORTL); in ar_read()
377 pu = py + (ar->frame_bytes / 2); in ar_read()
378 pv = pu + (ar->frame_bytes / 4); in ar_read()
379 for (h = 0; h < ar->height; h++) { in ar_read()
380 p = ar->frame[h]; in ar_read()
381 for (w = 0; w < ar->line_bytes; w += 4) { in ar_read()
388 if (copy_to_user(buf, yuv, ar->frame_bytes)) { in ar_read()
389 v4l2_err(&ar->v4l2_dev, "failed while copy_to_user yuv.\n"); in ar_read()
395 mutex_unlock(&ar->lock); in ar_read()
402 struct ar *ar = video_drvdata(file); in ar_querycap() local
404 strlcpy(vcap->driver, ar->vdev.name, sizeof(vcap->driver)); in ar_querycap()
438 struct ar *ar = video_drvdata(file); in ar_g_fmt_vid_cap() local
441 pix->width = ar->width; in ar_g_fmt_vid_cap()
442 pix->height = ar->height; in ar_g_fmt_vid_cap()
444 pix->field = (ar->mode == AR_MODE_NORMAL) ? V4L2_FIELD_NONE : V4L2_FIELD_INTERLACED; in ar_g_fmt_vid_cap()
445 pix->bytesperline = ar->width; in ar_g_fmt_vid_cap()
446 pix->sizeimage = 2 * ar->width * ar->height; in ar_g_fmt_vid_cap()
454 struct ar *ar = video_drvdata(file); in ar_try_fmt_vid_cap() local
467 pix->bytesperline = ar->width; in ar_try_fmt_vid_cap()
468 pix->sizeimage = 2 * ar->width * ar->height; in ar_try_fmt_vid_cap()
476 struct ar *ar = video_drvdata(file); in ar_s_fmt_vid_cap() local
482 mutex_lock(&ar->lock); in ar_s_fmt_vid_cap()
483 ar->width = pix->width; in ar_s_fmt_vid_cap()
484 ar->height = pix->height; in ar_s_fmt_vid_cap()
485 if (ar->width == AR_WIDTH_VGA) { in ar_s_fmt_vid_cap()
486 ar->size = AR_SIZE_VGA; in ar_s_fmt_vid_cap()
487 ar->frame_bytes = AR_FRAME_BYTES_VGA; in ar_s_fmt_vid_cap()
488 ar->line_bytes = AR_LINE_BYTES_VGA; in ar_s_fmt_vid_cap()
490 ar->mode = AR_MODE_INTERLACE; in ar_s_fmt_vid_cap()
492 ar->mode = AR_MODE_NORMAL; in ar_s_fmt_vid_cap()
494 ar->size = AR_SIZE_QVGA; in ar_s_fmt_vid_cap()
495 ar->frame_bytes = AR_FRAME_BYTES_QVGA; in ar_s_fmt_vid_cap()
496 ar->line_bytes = AR_LINE_BYTES_QVGA; in ar_s_fmt_vid_cap()
497 ar->mode = AR_MODE_INTERLACE; in ar_s_fmt_vid_cap()
500 mutex_unlock(&ar->lock); in ar_s_fmt_vid_cap()
528 struct ar *ar = dev; in ar_interrupt() local
534 if (ar->mode == AR_MODE_INTERLACE && ar->size == AR_SIZE_VGA) { in ar_interrupt()
552 ar_outl(ar->line_buff, M32R_DMA0CDA_PORTL); /* needless? */ in ar_interrupt()
554 memcpy(ar->frame[0], ar->line_buff, ar->line_bytes); in ar_interrupt()
559 ar->start_capture = 1; /* during capture */ in ar_interrupt()
563 if (ar->start_capture == 1 && line_number <= (ar->height - 1)) { in ar_interrupt()
565 memcpy(ar->frame[line_number], ar->line_buff, ar->line_bytes); in ar_interrupt()
571 if (line_number == (ar->height - 1)) { /* end of line */ in ar_interrupt()
573 ar->start_capture = 0; in ar_interrupt()
579 wake_up_interruptible(&ar->wait); in ar_interrupt()
582 ar_outl(ar->line_buff, M32R_DMA0CDA_PORTL); in ar_interrupt()
600 static int ar_initialize(struct ar *ar) in ar_initialize() argument
620 if (ar->size == AR_SIZE_QVGA) in ar_initialize()
622 if (ar->mode == AR_MODE_NORMAL) in ar_initialize()
642 v4l2_info(&ar->v4l2_dev, "Initializing "); in ar_initialize()
735 struct ar *ar; in ar_init() local
740 ar = &ardev; in ar_init()
741 v4l2_dev = &ar->v4l2_dev; in ar_init()
754 ar->line_buff = kmalloc(MAX_AR_LINE_BYTES, GFP_KERNEL | GFP_DMA); in ar_init()
755 if (ar->line_buff == NULL || !ALIGN4(ar->line_buff)) { in ar_init()
763 ar->frame[i] = kmalloc(MAX_AR_LINE_BYTES, GFP_KERNEL); in ar_init()
764 if (ar->frame[i] == NULL || !ALIGN4(ar->frame[i])) { in ar_init()
771 strlcpy(ar->vdev.name, "Colour AR VGA", sizeof(ar->vdev.name)); in ar_init()
772 ar->vdev.v4l2_dev = v4l2_dev; in ar_init()
773 ar->vdev.fops = &ar_fops; in ar_init()
774 ar->vdev.ioctl_ops = &ar_ioctl_ops; in ar_init()
775 ar->vdev.release = video_device_release_empty; in ar_init()
776 video_set_drvdata(&ar->vdev, ar); in ar_init()
779 ar->width = AR_WIDTH_VGA; in ar_init()
780 ar->height = AR_HEIGHT_VGA; in ar_init()
781 ar->size = AR_SIZE_VGA; in ar_init()
782 ar->frame_bytes = AR_FRAME_BYTES_VGA; in ar_init()
783 ar->line_bytes = AR_LINE_BYTES_VGA; in ar_init()
785 ar->mode = AR_MODE_INTERLACE; in ar_init()
787 ar->mode = AR_MODE_NORMAL; in ar_init()
789 ar->width = AR_WIDTH_QVGA; in ar_init()
790 ar->height = AR_HEIGHT_QVGA; in ar_init()
791 ar->size = AR_SIZE_QVGA; in ar_init()
792 ar->frame_bytes = AR_FRAME_BYTES_QVGA; in ar_init()
793 ar->line_bytes = AR_LINE_BYTES_QVGA; in ar_init()
794 ar->mode = AR_MODE_INTERLACE; in ar_init()
796 mutex_init(&ar->lock); in ar_init()
797 init_waitqueue_head(&ar->wait); in ar_init()
800 if (request_irq(M32R_IRQ_INT3, ar_interrupt, 0, "arv", ar)) { in ar_init()
807 if (ar_initialize(ar) != 0) { in ar_init()
819 if (video_register_device(&ar->vdev, VFL_TYPE_GRABBER, video_nr) != 0) { in ar_init()
827 video_device_node_name(&ar->vdev), M32R_IRQ_INT3, freq); in ar_init()
833 free_irq(M32R_IRQ_INT3, ar); in ar_init()
838 kfree(ar->frame[i]); in ar_init()
842 kfree(ar->line_buff); in ar_init()
846 v4l2_device_unregister(&ar->v4l2_dev); in ar_init()
862 struct ar *ar; in ar_cleanup_module() local
865 ar = &ardev; in ar_cleanup_module()
866 video_unregister_device(&ar->vdev); in ar_cleanup_module()
868 free_irq(M32R_IRQ_INT3, ar); in ar_cleanup_module()
871 kfree(ar->frame[i]); in ar_cleanup_module()
873 kfree(ar->line_buff); in ar_cleanup_module()
875 v4l2_device_unregister(&ar->v4l2_dev); in ar_cleanup_module()