Message ID | 1307458058-29030-2-git-send-email-amber@ti.com (mailing list archive) |
---|---|
State | RFC |
Headers | show |
> -----Original Message----- > From: Hiremath, Vaibhav > Sent: Wednesday, July 06, 2011 12:17 AM > To: JAIN, AMBER; linux-media@vger.kernel.org > Cc: Semwal, Sumit > Subject: RE: [PATCH 1/6] V4L2: OMAP: VOUT: isr handling extended for DPI > and HDMI interface > > > > -----Original Message----- > > From: JAIN, AMBER > > Sent: Tuesday, June 07, 2011 8:18 PM > > To: linux-media@vger.kernel.org > > Cc: Hiremath, Vaibhav; Semwal, Sumit; JAIN, AMBER > > Subject: [PATCH 1/6] V4L2: OMAP: VOUT: isr handling extended for DPI and > > HDMI interface > [Hiremath, Vaibhav] Few minor comments below - > > > > > Extending the omap vout isr handling for: > > - secondary lcd over DPI interface, > > - HDMI interface. > > > [Hiremath, Vaibhav] It would be useful to mention about OMAP4 DSS block > (these are new additions compared to OAMP3), that's where both the > interfaces are getting used, right? Ok, will add that. > > > Signed-off-by: Amber Jain <amber@ti.com> > > --- > > drivers/media/video/omap/omap_vout.c | 26 +++++++++++++++++++------- > > 1 files changed, 19 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/media/video/omap/omap_vout.c > > b/drivers/media/video/omap/omap_vout.c > > index a831241..6fe7efa 100644 > > --- a/drivers/media/video/omap/omap_vout.c > > +++ b/drivers/media/video/omap/omap_vout.c > > @@ -544,10 +544,20 @@ void omap_vout_isr(void *arg, unsigned int > > irqstatus) > > > > spin_lock(&vout->vbq_lock); > > do_gettimeofday(&timevalue); > > - if (cur_display->type == OMAP_DISPLAY_TYPE_DPI) { > > - if (!(irqstatus & DISPC_IRQ_VSYNC)) > > - goto vout_isr_err; > > > > + if (cur_display->type != OMAP_DISPLAY_TYPE_VENC) { > > + switch (cur_display->type) { > > + case OMAP_DISPLAY_TYPE_DPI: > > + if (!(irqstatus & (DISPC_IRQ_VSYNC | DISPC_IRQ_VSYNC2))) > > + goto vout_isr_err; > > + break; > > + case OMAP_DISPLAY_TYPE_HDMI: > > + if (!(irqstatus & DISPC_IRQ_EVSYNC_EVEN)) > > + goto vout_isr_err; > > + break; > > + default: > > + goto vout_isr_err; > > + } > [Hiremath, Vaibhav] how about implementing this like, > > > if (cur_display->type != OMAP_DISPLAY_TYPE_VENC) { > unsigned int status; > > switch (cur_display->type) { > case OMAP_DISPLAY_TYPE_DPI: > status = DISPC_IRQ_VSYNC | DISPC_IRQ_VSYNC2; > break; > case OMAP_DISPLAY_TYPE_HDMI: > status = DISPC_IRQ_EVSYNC_EVEN; > break; > default: > goto vout_isr_err; > } > If (!(irqstatus & status)) > goto vout_isr_err; > > > Thanks, > Vaibhav It can be done, but I don't really see a benefit of using a new variable for it as it is used just once for check. > > > if (!vout->first_int && (vout->cur_frm != vout->next_frm)) { > > vout->cur_frm->ts = timevalue; > > vout->cur_frm->state = VIDEOBUF_DONE; > > @@ -571,7 +581,7 @@ void omap_vout_isr(void *arg, unsigned int > irqstatus) > > ret = omapvid_init(vout, addr); > > if (ret) > > printk(KERN_ERR VOUT_NAME > > - "failed to set overlay info\n"); > > + [Hiremath, Vaibhav] "failed to set overlay > info\n"); > > /* Enable the pipeline and set the Go bit */ > > ret = omapvid_apply_changes(vout); > > if (ret) > > @@ -925,7 +935,7 @@ static int omap_vout_release(struct file *file) > > u32 mask = 0; > > > > mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | > > - DISPC_IRQ_EVSYNC_ODD; > > + DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_VSYNC2; > > omap_dispc_unregister_isr(omap_vout_isr, vout, mask); > > vout->streaming = 0; > > > > @@ -1596,7 +1606,8 @@ static int vidioc_streamon(struct file *file, void > > *fh, enum v4l2_buf_type i) > > addr = (unsigned long) vout->queued_buf_addr[vout->cur_frm->i] > > + vout->cropped_offset; > > > > - mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | > > DISPC_IRQ_EVSYNC_ODD; > > + mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | > > DISPC_IRQ_EVSYNC_ODD > > + | DISPC_IRQ_VSYNC2; > > > > omap_dispc_register_isr(omap_vout_isr, vout, mask); > > > > @@ -1646,7 +1657,8 @@ static int vidioc_streamoff(struct file *file, > void > > *fh, enum v4l2_buf_type i) > > return -EINVAL; > > > > vout->streaming = 0; > > - mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | > > DISPC_IRQ_EVSYNC_ODD; > > + mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | > > DISPC_IRQ_EVSYNC_ODD > > + | DISPC_IRQ_VSYNC2; > > > > omap_dispc_unregister_isr(omap_vout_isr, vout, mask); > > > > -- > > 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/video/omap/omap_vout.c b/drivers/media/video/omap/omap_vout.c index a831241..6fe7efa 100644 --- a/drivers/media/video/omap/omap_vout.c +++ b/drivers/media/video/omap/omap_vout.c @@ -544,10 +544,20 @@ void omap_vout_isr(void *arg, unsigned int irqstatus) spin_lock(&vout->vbq_lock); do_gettimeofday(&timevalue); - if (cur_display->type == OMAP_DISPLAY_TYPE_DPI) { - if (!(irqstatus & DISPC_IRQ_VSYNC)) - goto vout_isr_err; + if (cur_display->type != OMAP_DISPLAY_TYPE_VENC) { + switch (cur_display->type) { + case OMAP_DISPLAY_TYPE_DPI: + if (!(irqstatus & (DISPC_IRQ_VSYNC | DISPC_IRQ_VSYNC2))) + goto vout_isr_err; + break; + case OMAP_DISPLAY_TYPE_HDMI: + if (!(irqstatus & DISPC_IRQ_EVSYNC_EVEN)) + goto vout_isr_err; + break; + default: + goto vout_isr_err; + } if (!vout->first_int && (vout->cur_frm != vout->next_frm)) { vout->cur_frm->ts = timevalue; vout->cur_frm->state = VIDEOBUF_DONE; @@ -571,7 +581,7 @@ void omap_vout_isr(void *arg, unsigned int irqstatus) ret = omapvid_init(vout, addr); if (ret) printk(KERN_ERR VOUT_NAME - "failed to set overlay info\n"); + "failed to set overlay info\n"); /* Enable the pipeline and set the Go bit */ ret = omapvid_apply_changes(vout); if (ret) @@ -925,7 +935,7 @@ static int omap_vout_release(struct file *file) u32 mask = 0; mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | - DISPC_IRQ_EVSYNC_ODD; + DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_VSYNC2; omap_dispc_unregister_isr(omap_vout_isr, vout, mask); vout->streaming = 0; @@ -1596,7 +1606,8 @@ static int vidioc_streamon(struct file *file, void *fh, enum v4l2_buf_type i) addr = (unsigned long) vout->queued_buf_addr[vout->cur_frm->i] + vout->cropped_offset; - mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | DISPC_IRQ_EVSYNC_ODD; + mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | DISPC_IRQ_EVSYNC_ODD + | DISPC_IRQ_VSYNC2; omap_dispc_register_isr(omap_vout_isr, vout, mask); @@ -1646,7 +1657,8 @@ static int vidioc_streamoff(struct file *file, void *fh, enum v4l2_buf_type i) return -EINVAL; vout->streaming = 0; - mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | DISPC_IRQ_EVSYNC_ODD; + mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_EVEN | DISPC_IRQ_EVSYNC_ODD + | DISPC_IRQ_VSYNC2; omap_dispc_unregister_isr(omap_vout_isr, vout, mask);
Extending the omap vout isr handling for: - secondary lcd over DPI interface, - HDMI interface. Signed-off-by: Amber Jain <amber@ti.com> --- drivers/media/video/omap/omap_vout.c | 26 +++++++++++++++++++------- 1 files changed, 19 insertions(+), 7 deletions(-)