From: Archit Taneja <archit@ti.com>
To: "Hiremath, Vaibhav" <hvaibhav@ti.com>
Cc: "Valkeinen, Tomi" <tomi.valkeinen@ti.com>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"Semwal, Sumit" <sumit.semwal@ti.com>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: Re: [PATCH 3/5] [media]: OMAP_VOUT: Fix VSYNC IRQ handling in omap_vout_isr
Date: Thu, 22 Sep 2011 11:45:56 +0530 [thread overview]
Message-ID: <4E7AD29C.4070804@ti.com> (raw)
In-Reply-To: <19F8576C6E063C45BE387C64729E739404EC941F86@dbde02.ent.ti.com>
Hi,
On Wednesday 21 September 2011 07:04 PM, Hiremath, Vaibhav wrote:
>> -----Original Message-----
>> From: Taneja, Archit
>> Sent: Friday, September 16, 2011 3:31 PM
>> To: Hiremath, Vaibhav
>> Cc: Valkeinen, Tomi; linux-omap@vger.kernel.org; Semwal, Sumit; linux-
>> media@vger.kernel.org; Taneja, Archit
>> Subject: [PATCH 3/5] [media]: OMAP_VOUT: Fix VSYNC IRQ handling in
>> omap_vout_isr
>>
>> Currently, in omap_vout_isr(), if the panel type is DPI, and if we
>> get either VSYNC or VSYNC2 interrupts, we proceed ahead to set the
>> current buffers state to VIDEOBUF_DONE and prepare to display the
>> next frame in the queue.
>>
>> On OMAP4, because we have 2 LCD managers, the panel type itself is not
>> sufficient to tell if we have received the correct irq, i.e, we shouldn't
>> proceed ahead if we get a VSYNC interrupt for LCD2 manager, or a VSYNC2
>> interrupt for LCD manager.
>>
>> Fix this by correlating LCD manager to VSYNC interrupt and LCD2 manager
>> to VSYNC2 interrupt.
>>
>> Signed-off-by: Archit Taneja<archit@ti.com>
>> ---
>> drivers/media/video/omap/omap_vout.c | 14 +++++++++++---
>> 1 files changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/media/video/omap/omap_vout.c
>> b/drivers/media/video/omap/omap_vout.c
>> index c5f2ea0..20638c3 100644
>> --- a/drivers/media/video/omap/omap_vout.c
>> +++ b/drivers/media/video/omap/omap_vout.c
>> @@ -566,8 +566,8 @@ err:
>>
>> static void omap_vout_isr(void *arg, unsigned int irqstatus)
>> {
>> - int ret, fid;
>> - u32 addr;
>> + int ret, fid, mgr_id;
>> + u32 addr, irq;
>> struct omap_overlay *ovl;
>> struct timeval timevalue;
>> struct omapvideo_info *ovid;
>> @@ -583,6 +583,7 @@ static void omap_vout_isr(void *arg, unsigned int
>> irqstatus)
>> if (!ovl->manager || !ovl->manager->device)
>> return;
>>
>> + mgr_id = ovl->manager->id;
>> cur_display = ovl->manager->device;
>>
>> spin_lock(&vout->vbq_lock);
>> @@ -590,7 +591,14 @@ static void omap_vout_isr(void *arg, unsigned int
>> irqstatus)
>>
>> switch (cur_display->type) {
>> case OMAP_DISPLAY_TYPE_DPI:
>> - if (!(irqstatus& (DISPC_IRQ_VSYNC | DISPC_IRQ_VSYNC2)))
>> + if (mgr_id == OMAP_DSS_CHANNEL_LCD)
>> + irq = DISPC_IRQ_VSYNC;
>> + else if (mgr_id == OMAP_DSS_CHANNEL_LCD2)
>> + irq = DISPC_IRQ_VSYNC2;
>> + else
>> + goto vout_isr_err;
>> +
>> + if (!(irqstatus& irq))
>> goto vout_isr_err;
>> break;
> I understand what this patch meant for, but I am more curious to know
> What is value addition of this patch?
>
> if (!(irqstatus& (DISPC_IRQ_VSYNC | DISPC_IRQ_VSYNC2)))
>
> Vs
>
> if (mgr_id == OMAP_DSS_CHANNEL_LCD)
> irq = DISPC_IRQ_VSYNC;
> else if (mgr_id == OMAP_DSS_CHANNEL_LCD2)
> irq = DISPC_IRQ_VSYNC2;
>
> Isn't this same, because we are not doing anything separate and special
> for VSYNC and VSYNC2?
Consider a use case where the primary LCD panel(connected to LCD
manager) is configured at a 60 Hz refresh rate, and the secondary
panel(connected to LCD2) refreshes at 30 Hz. Let the overlay
configuration be something like this:
/dev/video1----->overlay1----->LCD manager----->Primary panel(60 Hz)
/dev/video2----->overlay2----->LCD2 manager----->Secondary Panel(30 Hz)
Now if we are doing streaming on both video1 and video2, since we deque
on either VSYNC or VSYNC2, video2 buffers will deque faster than the
panels refresh, which is incorrect. So for video2, we should only deque
when we get a VSYNC2 interrupt. Thats why there is a need to correlate
the interrupt and the overlay manager.
Regards,
Archit
>
> Thanks,
> Vaibhav
>
>
>> case OMAP_DISPLAY_TYPE_VENC:
>> --
>> 1.7.1
>
>
next prev parent reply other threads:[~2011-09-22 6:13 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-16 10:00 [PATCH 0/5] [media]: OMAP_VOUT: Misc fixes and cleanup patches for 3.2 Archit Taneja
2011-09-16 10:00 ` [PATCH 1/5] [media]: OMAP_VOUT: Fix check in reqbuf & mmap for buf_size allocation Archit Taneja
2011-09-21 8:40 ` Hiremath, Vaibhav
2011-09-21 10:49 ` Archit Taneja
2011-09-16 10:00 ` [PATCH 2/5] [media]: OMAP_VOUT: CLEANUP: Remove redundant code from omap_vout_isr Archit Taneja
2011-09-21 10:05 ` Hiremath, Vaibhav
2011-09-21 10:45 ` Archit Taneja
2011-09-26 5:34 ` Archit Taneja
2011-09-16 10:00 ` [PATCH 3/5] [media]: OMAP_VOUT: Fix VSYNC IRQ handling in omap_vout_isr Archit Taneja
2011-09-21 13:34 ` Hiremath, Vaibhav
2011-09-22 6:15 ` Archit Taneja [this message]
2011-09-26 10:19 ` Hiremath, Vaibhav
[not found] ` <CAB2ybb8ab9jSFB1J_CQfObB11QcdtQ=6Kf9zdbg0v5Jckf09sw@mail.gmail.com>
[not found] ` <CAB2ybb-rZgDvS9Bo6AJF=KVd0irXHa0S0LrPJ=SWr0daJ6gX1w@mail.gmail.com>
2011-09-27 5:41 ` Semwal, Sumit
2011-09-27 6:39 ` Hiremath, Vaibhav
2011-09-27 6:49 ` Tomi Valkeinen
2011-09-27 6:54 ` Hiremath, Vaibhav
2011-09-27 7:01 ` Archit Taneja
2011-09-27 7:09 ` Hiremath, Vaibhav
2011-09-27 7:05 ` Tomi Valkeinen
2011-09-27 6:51 ` Semwal, Sumit
2011-09-16 10:00 ` [PATCH 4/5] [media] OMAP_VOUT: Add support for DSI panels Archit Taneja
2011-09-16 10:00 ` [PATCH 5/5] [media]: OMAP_VOUT: Don't trigger updates in omap_vout_probe Archit Taneja
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E7AD29C.4070804@ti.com \
--to=archit@ti.com \
--cc=hvaibhav@ti.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=sumit.semwal@ti.com \
--cc=tomi.valkeinen@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).