aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/davinci/vpif.h13
-rw-r--r--drivers/media/video/davinci/vpif_capture.c13
-rw-r--r--drivers/media/video/davinci/vpif_display.c16
3 files changed, 25 insertions, 17 deletions
diff --git a/drivers/media/video/davinci/vpif.h b/drivers/media/video/davinci/vpif.h
index b6695bee3c59..10550bd93b06 100644
--- a/drivers/media/video/davinci/vpif.h
+++ b/drivers/media/video/davinci/vpif.h
@@ -577,11 +577,10 @@ struct vpif_channel_config_params {
577 char name[VPIF_MAX_NAME]; /* Name of the mode */ 577 char name[VPIF_MAX_NAME]; /* Name of the mode */
578 u16 width; /* Indicates width of the image */ 578 u16 width; /* Indicates width of the image */
579 u16 height; /* Indicates height of the image */ 579 u16 height; /* Indicates height of the image */
580 u8 frm_fmt; /* Indicates whether this is interlaced 580 u8 frm_fmt; /* Interlaced (0) or progressive (1) */
581 * or progressive format */ 581 u8 ycmux_mode; /* This mode requires one (0) or two (1)
582 u8 ycmux_mode; /* Indicates whether this mode requires 582 channels */
583 * single or two channels */ 583 u16 eav2sav; /* length of eav 2 sav */
584 u16 eav2sav; /* length of sav 2 eav */
585 u16 sav2eav; /* length of sav 2 eav */ 584 u16 sav2eav; /* length of sav 2 eav */
586 u16 l1, l3, l5, l7, l9, l11; /* Other parameter configurations */ 585 u16 l1, l3, l5, l7, l9, l11; /* Other parameter configurations */
587 u16 vsize; /* Vertical size of the image */ 586 u16 vsize; /* Vertical size of the image */
@@ -589,8 +588,8 @@ struct vpif_channel_config_params {
589 * is in BT or in CCD/CMOS */ 588 * is in BT or in CCD/CMOS */
590 u8 vbi_supported; /* Indicates whether this mode 589 u8 vbi_supported; /* Indicates whether this mode
591 * supports capturing vbi or not */ 590 * supports capturing vbi or not */
592 u8 hd_sd; 591 u8 hd_sd; /* HDTV (1) or SDTV (0) format */
593 v4l2_std_id stdid; 592 v4l2_std_id stdid; /* SDTV format */
594 u32 dv_preset; /* HDTV format */ 593 u32 dv_preset; /* HDTV format */
595}; 594};
596 595
diff --git a/drivers/media/video/davinci/vpif_capture.c b/drivers/media/video/davinci/vpif_capture.c
index be2b9919937c..f8e65909dc37 100644
--- a/drivers/media/video/davinci/vpif_capture.c
+++ b/drivers/media/video/davinci/vpif_capture.c
@@ -329,7 +329,7 @@ static void vpif_schedule_next_buffer(struct common_obj *common)
329 * @dev_id: dev_id ptr 329 * @dev_id: dev_id ptr
330 * 330 *
331 * It changes status of the captured buffer, takes next buffer from the queue 331 * It changes status of the captured buffer, takes next buffer from the queue
332 * and sets its address in VPIF registers 332 * and sets its address in VPIF registers
333 */ 333 */
334static irqreturn_t vpif_channel_isr(int irq, void *dev_id) 334static irqreturn_t vpif_channel_isr(int irq, void *dev_id)
335{ 335{
@@ -422,14 +422,12 @@ static int vpif_update_std_info(struct channel_obj *ch)
422 struct common_obj *common = &ch->common[VPIF_VIDEO_INDEX]; 422 struct common_obj *common = &ch->common[VPIF_VIDEO_INDEX];
423 struct vpif_params *vpifparams = &ch->vpifparams; 423 struct vpif_params *vpifparams = &ch->vpifparams;
424 const struct vpif_channel_config_params *config; 424 const struct vpif_channel_config_params *config;
425 struct vpif_channel_config_params *std_info; 425 struct vpif_channel_config_params *std_info = &vpifparams->std_info;
426 struct video_obj *vid_ch = &ch->video; 426 struct video_obj *vid_ch = &ch->video;
427 int index; 427 int index;
428 428
429 vpif_dbg(2, debug, "vpif_update_std_info\n"); 429 vpif_dbg(2, debug, "vpif_update_std_info\n");
430 430
431 std_info = &vpifparams->std_info;
432
433 for (index = 0; index < vpif_ch_params_count; index++) { 431 for (index = 0; index < vpif_ch_params_count; index++) {
434 config = &ch_params[index]; 432 config = &ch_params[index];
435 if (config->hd_sd == 0) { 433 if (config->hd_sd == 0) {
@@ -458,6 +456,7 @@ static int vpif_update_std_info(struct channel_obj *ch)
458 common->fmt.fmt.pix.bytesperline = std_info->width; 456 common->fmt.fmt.pix.bytesperline = std_info->width;
459 vpifparams->video_params.hpitch = std_info->width; 457 vpifparams->video_params.hpitch = std_info->width;
460 vpifparams->video_params.storage_mode = std_info->frm_fmt; 458 vpifparams->video_params.storage_mode = std_info->frm_fmt;
459
461 return 0; 460 return 0;
462} 461}
463 462
@@ -1692,7 +1691,7 @@ static int vpif_s_fmt_vid_cap(struct file *file, void *priv,
1692 struct v4l2_pix_format *pixfmt; 1691 struct v4l2_pix_format *pixfmt;
1693 int ret = 0; 1692 int ret = 0;
1694 1693
1695 vpif_dbg(2, debug, "VIDIOC_S_FMT\n"); 1694 vpif_dbg(2, debug, "%s\n", __func__);
1696 1695
1697 /* If streaming is started, return error */ 1696 /* If streaming is started, return error */
1698 if (common->started) { 1697 if (common->started) {
@@ -2336,9 +2335,9 @@ static __init int vpif_probe(struct platform_device *pdev)
2336 if (vpif_obj.sd[i]) 2335 if (vpif_obj.sd[i])
2337 vpif_obj.sd[i]->grp_id = 1 << i; 2336 vpif_obj.sd[i]->grp_id = 1 << i;
2338 } 2337 }
2339 v4l2_info(&vpif_obj.v4l2_dev, "DM646x VPIF Capture driver"
2340 " initialized\n");
2341 2338
2339 v4l2_info(&vpif_obj.v4l2_dev,
2340 "DM646x VPIF capture driver initialized\n");
2342 return 0; 2341 return 0;
2343 2342
2344probe_subdev_out: 2343probe_subdev_out:
diff --git a/drivers/media/video/davinci/vpif_display.c b/drivers/media/video/davinci/vpif_display.c
index 44a885878ebf..7cb70d916f4b 100644
--- a/drivers/media/video/davinci/vpif_display.c
+++ b/drivers/media/video/davinci/vpif_display.c
@@ -580,7 +580,10 @@ static void vpif_config_addr(struct channel_obj *ch, int muxmode)
580static int vpif_mmap(struct file *filep, struct vm_area_struct *vma) 580static int vpif_mmap(struct file *filep, struct vm_area_struct *vma)
581{ 581{
582 struct vpif_fh *fh = filep->private_data; 582 struct vpif_fh *fh = filep->private_data;
583 struct common_obj *common = &fh->channel->common[VPIF_VIDEO_INDEX]; 583 struct channel_obj *ch = fh->channel;
584 struct common_obj *common = &(ch->common[VPIF_VIDEO_INDEX]);
585
586 vpif_dbg(2, debug, "vpif_mmap\n");
584 587
585 return videobuf_mmap_mapper(&common->buffer_queue, vma); 588 return videobuf_mmap_mapper(&common->buffer_queue, vma);
586} 589}
@@ -692,7 +695,12 @@ static int vpif_release(struct file *filep)
692} 695}
693 696
694/* functions implementing ioctls */ 697/* functions implementing ioctls */
695 698/**
699 * vpif_querycap() - QUERYCAP handler
700 * @file: file ptr
701 * @priv: file handle
702 * @cap: ptr to v4l2_capability structure
703 */
696static int vpif_querycap(struct file *file, void *priv, 704static int vpif_querycap(struct file *file, void *priv,
697 struct v4l2_capability *cap) 705 struct v4l2_capability *cap)
698{ 706{
@@ -1106,7 +1114,7 @@ static int vpif_streamon(struct file *file, void *priv,
1106 if (ret < 0) 1114 if (ret < 0)
1107 return ret; 1115 return ret;
1108 1116
1109 /* Call videobuf_streamon to start streaming in videobuf */ 1117 /* Call videobuf_streamon to start streaming in videobuf */
1110 ret = videobuf_streamon(&common->buffer_queue); 1118 ret = videobuf_streamon(&common->buffer_queue);
1111 if (ret < 0) { 1119 if (ret < 0) {
1112 vpif_err("videobuf_streamon\n"); 1120 vpif_err("videobuf_streamon\n");
@@ -1873,6 +1881,8 @@ static __init int vpif_probe(struct platform_device *pdev)
1873 vpif_obj.sd[i]->grp_id = 1 << i; 1881 vpif_obj.sd[i]->grp_id = 1 << i;
1874 } 1882 }
1875 1883
1884 v4l2_info(&vpif_obj.v4l2_dev,
1885 "DM646x VPIF display driver initialized\n");
1876 return 0; 1886 return 0;
1877 1887
1878probe_subdev_out: 1888probe_subdev_out: