From: p.zabel@pengutronix.de (Philipp Zabel)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/12] gpu: imx: fix support for interlaced modes
Date: Thu, 27 Aug 2015 11:40:30 +0200 [thread overview]
Message-ID: <1440668430.3233.68.camel@pengutronix.de> (raw)
In-Reply-To: <20150827085411.GE21084@n2100.arm.linux.org.uk>
Am Donnerstag, den 27.08.2015, 09:54 +0100 schrieb Russell King - ARM
Linux:
> On Thu, Aug 27, 2015 at 10:39:12AM +0200, Philipp Zabel wrote:
> > Hi Russell,
> >
> > Am Samstag, den 08.08.2015, 17:03 +0100 schrieb Russell King:
> > > The support for interlaced video modes seems to be broken; we don't use
> > > anything other than the vtotal/htotal from the timing information to
> > > define the various sync counters.
> >
> > I finally made time to test this series:
> >
> > Tested-by: Philipp Zabel <p.zabel@pengutronix.de>
> > on i.MX6 GK802 via HDMI connected to a TV (1080p60, 1080i60).
> >
> > Unfortunately these timings are completely different from what Freescale
> > came up with for the TV Encoder on i.MX5, but the code we have currently
> > in mainline doesn't work for that either. I suppose I'll follow up with
> > a patch that adds yet another sync counter setup for the i.MX5/TVE case.
> >
> > I'd like to take the two ipu-v3 patches, making a few small changes on
> > this one:
>
> Please don't split the series up. The reason it's a series is because
> there's interdependencies between the patches.
In that case, can I take the whole series? Or would you like to respin
and have my Acked-by: Philipp Zabel <p.zabel@pengutronix.de> with the
changes below:
> > > Freescale patches for interlaced video support contain an alternative
> > > sync counter setup, which we include here. This setup produces the
> > > hsync and vsync via the normal counter 2 and 3, but moves the display
> > > enable signal from counter 5 to counter 6. Therefore, we need to
> > > change the display controller setup as well.
> > >
> > > The corresponding Freescale patches for this change are:
> > > iMX6-HDMI-support-interlaced-display-mode.patch
> > > IPU-fine-tuning-the-interlace-display-timing-for-CEA.patch
> > >
> > > This produces a working interlace format output from the IPU.
> >
> > ... on i.MX6 via HDMI.
>
> It should also be correct for any other source which wants interlaced
> output.
... on i.MX6, then. Right now I don't know what is the effect of the
undocumented settings on the i.MX5's IPUv3M.
> > > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> > > ---
> > > drivers/gpu/ipu-v3/ipu-dc.c | 18 ++++++++---
> > > drivers/gpu/ipu-v3/ipu-di.c | 79 +++++++++++++++++++++------------------------
> > > 2 files changed, 51 insertions(+), 46 deletions(-)
> > >
> > > diff --git a/drivers/gpu/ipu-v3/ipu-dc.c b/drivers/gpu/ipu-v3/ipu-dc.c
> > > index 9ef2e1f54ca4..aa560855c1dc 100644
> > > --- a/drivers/gpu/ipu-v3/ipu-dc.c
> > > +++ b/drivers/gpu/ipu-v3/ipu-dc.c
> > > @@ -183,12 +183,22 @@ int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di *di, bool interlaced,
> > > }
> > >
> > > if (interlaced) {
> > > - dc_link_event(dc, DC_EVT_NL, 0, 3);
> > > - dc_link_event(dc, DC_EVT_EOL, 0, 2);
> > > - dc_link_event(dc, DC_EVT_NEW_DATA, 0, 1);
> > > + int word, addr;
> > > +
> > > + if (dc->di) {
> > > + addr = 1;
> > > + word = 1;
> >
> > These two are really one and the same. The address written to the link
> > register for the given event has to point to the address of the
> > microcode instruction written to the template memory that should be
> > executed on this event.
> >
> > I'd like to drop the word variable and use addr for both.
>
> Ok. As I said in the commit message, this code comes from Freescale's
> patches which I pointed to above.
[...]
> > > @@ -211,66 +215,59 @@ static void ipu_di_sync_config_interlaced(struct ipu_di *di,
> > > sig->mode.hback_porch + sig->mode.hfront_porch;
> > > u32 v_total = sig->mode.vactive + sig->mode.vsync_len +
> > > sig->mode.vback_porch + sig->mode.vfront_porch;
> > > - u32 reg;
> > > struct di_sync_config cfg[] = {
> > > {
> > > - .run_count = h_total / 2 - 1,
> > > - .run_src = DI_SYNC_CLK,
> > > + /* 1: internal VSYNC for each frame */
> > > + .run_count = v_total * 2 - 1,
> > > + .run_src = 3, /* == counter 7 */
> >
> > Do you know why this works? The Reference Manual v2 lists that value as
> > "NA" in the DI counter #1 Run Resolution field.
>
> Yes, I noticed that Freescale were using values for the source fields
> which were marked as NA in the manual. As it works, I can only assume
> that the engineer who came up with this setup has more knowledge than
> is public.
I'd like small a comment here that yes, we know this is marked as
NA/Reserved in the manuals.
[...]
> I went through the counter setup to understand how it works, and it
> seems correct provided you accept that the various source values do
> work as the code claims, which includes creating the vsync at the
> appropriate half-scanline position without needing this hack.
>
> It's not easy to work back from the counter setup to get a mental
> picture of what's going on, but it is possible to do so.
Yes, being able to actually reference counters with higher numbers makes
things a lot easier to follow.
regards
Philipp
next prev parent reply other threads:[~2015-08-27 9:40 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-08 16:02 [PATCH 00/12] dw-hdmi development Russell King - ARM Linux
2015-08-08 16:03 ` [PATCH 01/12] drm: bridge/dw_hdmi: remove pixel repetition setting for all VICs Russell King
2015-08-08 16:03 ` [PATCH 02/12] drm: bridge/dw_hdmi: don't support any pixel doubled modes Russell King
2015-08-08 16:03 ` [PATCH 03/12] gpu: imx: simplify sync polarity setting Russell King
2015-10-06 17:57 ` Fabio Estevam
2015-08-08 16:03 ` [PATCH 04/12] gpu: imx: fix support for interlaced modes Russell King
2015-08-27 8:39 ` Philipp Zabel
2015-08-27 8:54 ` Russell King - ARM Linux
2015-08-27 9:40 ` Philipp Zabel [this message]
2015-10-06 17:59 ` Fabio Estevam
2015-08-08 16:03 ` [PATCH 05/12] drm: bridge/dw_hdmi: add support for interlaced video modes Russell King
2015-10-06 18:00 ` Fabio Estevam
2015-08-08 16:03 ` [PATCH 06/12] drm: bridge/dw_hdmi: clean up HDMI vs DVI mode handling Russell King
2015-10-07 3:40 ` Yakir Yang
2015-08-08 16:03 ` [PATCH 07/12] drm: bridge/dw_hdmi: enable audio only if sink supports audio Russell King
2015-10-07 3:42 ` Yakir Yang
2015-08-08 16:04 ` [PATCH 08/12] drm: bridge/dw_hdmi: avoid enabling interface in mode_set Russell King
2015-10-07 3:50 ` Yakir Yang
2015-10-07 9:18 ` Russell King - ARM Linux
2015-10-07 9:35 ` Yakir Yang
2015-08-08 16:04 ` [PATCH 09/12] drm: bridge/dw_hdmi: rename dw_hdmi_phy_enable_power() Russell King
2015-08-08 16:04 ` [PATCH 10/12] drm: bridge/dw_hdmi: fix phy enable/disable handling Russell King
[not found] ` <56149A11.4070102@rock-chips.com>
2015-10-07 9:48 ` Russell King - ARM Linux
[not found] ` <5614F68B.6050808@rock-chips.com>
2015-10-07 19:17 ` Russell King - ARM Linux
2015-10-08 8:35 ` Yakir Yang
2015-08-08 16:04 ` [PATCH 11/12] drm: bridge/dw_hdmi: add connector mode forcing Russell King
2015-10-06 18:01 ` Fabio Estevam
2015-08-08 16:04 ` [PATCH 12/12] drm: bridge/dw_hdmi: improve HDMI enable/disable handling Russell King
2015-10-06 18:03 ` Fabio Estevam
2015-08-08 16:09 ` [PATCH 0/9] dw-hdmi audio support Russell King - ARM Linux
2015-08-08 16:10 ` [PATCH 1/9] drm: bridge/dw_hdmi-ahb-audio: add audio driver Russell King
2015-08-10 10:05 ` Takashi Iwai
2015-08-10 10:39 ` Russell King - ARM Linux
2015-08-10 12:23 ` Takashi Iwai
2015-08-10 16:49 ` Russell King - ARM Linux
2015-08-10 18:16 ` Mark Brown
2015-08-14 13:54 ` [PATCH v2 1/9] drm: bridge/dw_hdmi-ahb-audio: add audio driver David Airlie <airlied@linux.ie>, Sascha Hauer <s.hauer@pengutronix.de>, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Jaroslav Kysela <perex@perex.cz>, linux-rockchip@lists.infradead.org, Mark Brown <broonie@kernel.org>, Philipp Zabel <p.zabel@pengutronix.de>, Yakir Yang <ykk@rock-chips.com>, Andy Yan <andy.yan@rock-chips.com>, Jon Nettleton <jon.nettleton@gmail.com>, linux-arm-kernel@lists.infradead.org Russell King
2015-08-14 14:04 ` [PATCH v2 1/9] drm: bridge/dw_hdmi-ahb-audio: add audio driver Russell King
2015-08-14 14:34 ` [alsa-devel] " Takashi Iwai
2015-10-06 18:07 ` [PATCH " Fabio Estevam
2015-10-06 18:18 ` Russell King - ARM Linux
2015-10-06 18:45 ` Fabio Estevam
2015-10-06 18:54 ` Russell King - ARM Linux
2015-10-06 20:25 ` Fabio Estevam
2015-10-09 16:00 ` Russell King - ARM Linux
2015-10-09 16:02 ` Fabio Estevam
2015-10-09 16:11 ` Russell King - ARM Linux
2015-08-08 16:10 ` [PATCH 2/9] drm: bridge/dw_hdmi-ahb-audio: parse ELD from HDMI driver Russell King
2015-08-08 16:10 ` [PATCH 3/9] drm: bridge/dw_hdmi-ahb-audio: basic support for multi-channel PCM audio Russell King
2015-08-08 16:10 ` [PATCH 4/9] drm: bridge/dw_hdmi-ahb-audio: allow larger buffer sizes Russell King
2015-08-08 16:10 ` [PATCH 5/9] drm: bridge/dw_hdmi: avoid being recursive in N calculation Russell King
2015-09-04 17:50 ` Doug Anderson
2015-08-08 16:10 ` [PATCH 6/9] drm: bridge/dw_hdmi: adjust pixel clock values " Russell King
2015-09-04 18:21 ` Doug Anderson
2015-09-04 19:48 ` Doug Anderson
2015-09-04 21:24 ` Russell King - ARM Linux
2015-09-04 23:50 ` Doug Anderson
2015-09-05 0:27 ` Russell King - ARM Linux
2015-09-05 2:03 ` Doug Anderson
2015-09-05 8:31 ` Russell King - ARM Linux
2015-09-05 13:46 ` Doug Anderson
2015-09-05 14:01 ` Russell King - ARM Linux
2015-09-05 19:44 ` Doug Anderson
2015-09-05 8:34 ` Russell King - ARM Linux
2015-09-05 13:50 ` Doug Anderson
2015-08-08 16:10 ` [PATCH 7/9] drm: bridge/dw_hdmi: remove ratio support from ACR code Russell King
2015-09-04 18:24 ` Doug Anderson
2015-08-08 16:10 ` [PATCH 8/9] drm: bridge/dw_hdmi: replace CTS calculation for the ACR Russell King
2015-09-04 20:00 ` Doug Anderson
2015-08-08 16:10 ` [PATCH 9/9] drm: bridge/dw_hdmi-i2s-audio: add audio driver Russell King
2015-08-10 15:48 ` Russell King - ARM Linux
2015-08-10 16:26 ` Yakir Yang
2015-08-27 8:42 ` [PATCH 0/9] dw-hdmi audio support Philipp Zabel
2016-01-05 15:40 ` [alsa-devel] " Jean-Michel Hautbois
2016-01-05 15:54 ` Fabio Estevam
2016-01-05 16:04 ` Russell King - ARM Linux
2016-01-07 8:21 ` Jean-Michel Hautbois
2015-08-10 12:21 ` [PATCH 00/12] dw-hdmi development Thierry Reding
2015-08-18 10:37 ` Russell King - ARM Linux
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=1440668430.3233.68.camel@pengutronix.de \
--to=p.zabel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
/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).