All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
To: Vasily Khoruzhick <anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	David Airlie <airlied-cv59FeDIM0c@public.gmane.org>,
	Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Thierry Reding
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Andrzej Hajda <a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
	Laurent Pinchart
	<Laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	Icenowy Zheng <icenowy-h8G6r0blFSE@public.gmane.org>,
	Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	dri-devel
	<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	arm-linux
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	linux-sunxi <linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
Subject: Re: [PATCH v3 06/11] drm/sun4i: rgb: Add DT property to disable strict clock rate check
Date: Wed, 20 Feb 2019 11:33:47 +0100	[thread overview]
Message-ID: <20190220103347.74wqu2btdti2myi7@flea> (raw)
In-Reply-To: <CA+E=qVfV8ds-zb0oG1-g8c-ReCSnZjfUjvAHbZf1zBf8H-xUcw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 4867 bytes --]

On Tue, Feb 19, 2019 at 07:44:56AM -0800, Vasily Khoruzhick wrote:
> On Tue, Feb 19, 2019 at 12:56 AM Maxime Ripard
> <maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org> wrote:
> >
> > On Mon, Feb 18, 2019 at 11:33:05AM -0800, Vasily Khoruzhick wrote:
> > > On Mon, Feb 18, 2019 at 10:26 AM Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote:
> > > >
> > > > On Thu, Feb 14, 2019 at 09:09:52PM -0800, Vasily Khoruzhick wrote:
> > > > > Clock rate check that was added in commit bb43d40d7c83 ("drm/sun4i: rgb:
> > > > > Validate the clock rate") prevents some panel and bridges from working with
> > > > > sun4i driver.
> > > >
> > > > Sounds lile a regression that should be reverted. The fix is not a
> > > > backwards compatible change either.
> > >
> > > anx6345 driver isn't mainlined yet and I'm not sure if this change
> > > breaks any mainlined boards. So likely there's not enough
> > > justification to revert it.
> > >
> > > > > Unfortunately, dotclock frequency for some modes are not achievable on
> > > > > sunxi hardware, and there's a slight deviation in rate returned by
> > > > > clk_round_rate(), so they fail this check.
> > > > >
> > > > > Experiments show that panels and bridges work fine with this slight
> > > > > deviation, e.g. Pinebook that uses ANX6345 bridge with 768p eDP panel
> > > > > requests 73 MHz, gets 72.296MHz instead (0.96% difference) and works just
> > > > > fine.
> > > > >
> > > > > This patch adds DT property to disable strict clock rate check
> > > > >
> > > > > Signed-off-by: Vasily Khoruzhick <anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> > > > > ---
> > > > >  .../devicetree/bindings/display/sunxi/sun4i-drm.txt          | 2 ++
> > > > >  drivers/gpu/drm/sun4i/sun4i_rgb.c                            | 5 +++++
> > > > >  drivers/gpu/drm/sun4i/sun4i_tcon.c                           | 3 +++
> > > > >  drivers/gpu/drm/sun4i/sun4i_tcon.h                           | 1 +
> > > > >  4 files changed, 11 insertions(+)
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
> > > > > index f426bdb42f18..18c8b053a28d 100644
> > > > > --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
> > > > > +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
> > > > > @@ -63,6 +63,8 @@ Required properties:
> > > > >      Documentation/devicetree/bindings/media/video-interfaces.txt. The
> > > > >      first port should be the input endpoint. The second should be the
> > > > >      output, usually to an HDMI connector.
> > > > > +  - no-strict-clock-check: don't reject timings if exact dot clock can't be
> > > > > +    reached.
> > > >
> > > > This should be the default IMO. Most panels are a single timing, so if
> > > > we reject it the fallback no display?
> > >
> > > As far as I remember the change was introduced to reject some modes
> > > for which dotclock can't be reached when driver is used with VGA
> > > bridge. So if we make it default it'll break boards with VGA bridge
> > > and old DT.
> > >
> > > > I thought we had some mechanism already to allow some range of
> > > > frequencies. I think the chromeos guys needed something IIRC.
> > >
> > > You can specify frequency range for panels, but there's nothing for
> > > bridges. In my case EDID doesn't specify clock tolerance.
> >
> > I gave it some more though, and came up with the following patch. The
> > basic idea is to leave the boundary check for the bridges that will
> > have EDID and we need to filter out the modes that have no chance of
> > being supported. The tolerancy used is the one defined in VESA specs,
> > but I added a module parameter if you wanted to tune that.
> >
> > And finally, since most of our panels are single timings without any
> > tolerancy, we just try our best in this case and that's it, while
> > leaving the door open to support display_timings and being able to do
> > more once we have an idea of what the tolerancies are.
> >
> > If that works for you, I'll submit it.
> 
> Maxime, thanks for your patch but  it doesn't work for me. Pinebook
> needs 1% tolerance. Having it as a module parameter means that no
> distro will be able to boot on Pinebook out of the box.

I don't really know what to tell you, the VESA spec defines everywhere
that tolerance, and if we're not able to provide that, then we're not
compliant and I don't want us to not be compliant just because one
panel needed to be a bit more flexible, and especially since what
could work on one panel might fail on another one.

If you want alternate solutions, then please answer to:
http://lists.infradead.org/pipermail/linux-arm-kernel/2019-February/630441.html

or provide the EDID blob.

Maxime

-- 
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime.ripard@bootlin.com>
To: Vasily Khoruzhick <anarsoul@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Rob Herring <robh@kernel.org>,
	Archit Taneja <architt@codeaurora.org>,
	devicetree <devicetree@vger.kernel.org>,
	David Airlie <airlied@linux.ie>,
	linux-sunxi <linux-sunxi@googlegroups.com>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Andrzej Hajda <a.hajda@samsung.com>, Chen-Yu Tsai <wens@csie.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Sean Paul <seanpaul@chromium.org>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	arm-linux <linux-arm-kernel@lists.infradead.org>,
	Icenowy Zheng <icenowy@aosc.io>
Subject: Re: [PATCH v3 06/11] drm/sun4i: rgb: Add DT property to disable strict clock rate check
Date: Wed, 20 Feb 2019 11:33:47 +0100	[thread overview]
Message-ID: <20190220103347.74wqu2btdti2myi7@flea> (raw)
In-Reply-To: <CA+E=qVfV8ds-zb0oG1-g8c-ReCSnZjfUjvAHbZf1zBf8H-xUcw@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 4878 bytes --]

On Tue, Feb 19, 2019 at 07:44:56AM -0800, Vasily Khoruzhick wrote:
> On Tue, Feb 19, 2019 at 12:56 AM Maxime Ripard
> <maxime.ripard@bootlin.com> wrote:
> >
> > On Mon, Feb 18, 2019 at 11:33:05AM -0800, Vasily Khoruzhick wrote:
> > > On Mon, Feb 18, 2019 at 10:26 AM Rob Herring <robh@kernel.org> wrote:
> > > >
> > > > On Thu, Feb 14, 2019 at 09:09:52PM -0800, Vasily Khoruzhick wrote:
> > > > > Clock rate check that was added in commit bb43d40d7c83 ("drm/sun4i: rgb:
> > > > > Validate the clock rate") prevents some panel and bridges from working with
> > > > > sun4i driver.
> > > >
> > > > Sounds lile a regression that should be reverted. The fix is not a
> > > > backwards compatible change either.
> > >
> > > anx6345 driver isn't mainlined yet and I'm not sure if this change
> > > breaks any mainlined boards. So likely there's not enough
> > > justification to revert it.
> > >
> > > > > Unfortunately, dotclock frequency for some modes are not achievable on
> > > > > sunxi hardware, and there's a slight deviation in rate returned by
> > > > > clk_round_rate(), so they fail this check.
> > > > >
> > > > > Experiments show that panels and bridges work fine with this slight
> > > > > deviation, e.g. Pinebook that uses ANX6345 bridge with 768p eDP panel
> > > > > requests 73 MHz, gets 72.296MHz instead (0.96% difference) and works just
> > > > > fine.
> > > > >
> > > > > This patch adds DT property to disable strict clock rate check
> > > > >
> > > > > Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> > > > > ---
> > > > >  .../devicetree/bindings/display/sunxi/sun4i-drm.txt          | 2 ++
> > > > >  drivers/gpu/drm/sun4i/sun4i_rgb.c                            | 5 +++++
> > > > >  drivers/gpu/drm/sun4i/sun4i_tcon.c                           | 3 +++
> > > > >  drivers/gpu/drm/sun4i/sun4i_tcon.h                           | 1 +
> > > > >  4 files changed, 11 insertions(+)
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
> > > > > index f426bdb42f18..18c8b053a28d 100644
> > > > > --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
> > > > > +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
> > > > > @@ -63,6 +63,8 @@ Required properties:
> > > > >      Documentation/devicetree/bindings/media/video-interfaces.txt. The
> > > > >      first port should be the input endpoint. The second should be the
> > > > >      output, usually to an HDMI connector.
> > > > > +  - no-strict-clock-check: don't reject timings if exact dot clock can't be
> > > > > +    reached.
> > > >
> > > > This should be the default IMO. Most panels are a single timing, so if
> > > > we reject it the fallback no display?
> > >
> > > As far as I remember the change was introduced to reject some modes
> > > for which dotclock can't be reached when driver is used with VGA
> > > bridge. So if we make it default it'll break boards with VGA bridge
> > > and old DT.
> > >
> > > > I thought we had some mechanism already to allow some range of
> > > > frequencies. I think the chromeos guys needed something IIRC.
> > >
> > > You can specify frequency range for panels, but there's nothing for
> > > bridges. In my case EDID doesn't specify clock tolerance.
> >
> > I gave it some more though, and came up with the following patch. The
> > basic idea is to leave the boundary check for the bridges that will
> > have EDID and we need to filter out the modes that have no chance of
> > being supported. The tolerancy used is the one defined in VESA specs,
> > but I added a module parameter if you wanted to tune that.
> >
> > And finally, since most of our panels are single timings without any
> > tolerancy, we just try our best in this case and that's it, while
> > leaving the door open to support display_timings and being able to do
> > more once we have an idea of what the tolerancies are.
> >
> > If that works for you, I'll submit it.
> 
> Maxime, thanks for your patch but  it doesn't work for me. Pinebook
> needs 1% tolerance. Having it as a module parameter means that no
> distro will be able to boot on Pinebook out of the box.

I don't really know what to tell you, the VESA spec defines everywhere
that tolerance, and if we're not able to provide that, then we're not
compliant and I don't want us to not be compliant just because one
panel needed to be a bit more flexible, and especially since what
could work on one panel might fail on another one.

If you want alternate solutions, then please answer to:
http://lists.infradead.org/pipermail/linux-arm-kernel/2019-February/630441.html

or provide the EDID blob.

Maxime

-- 
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2019-02-20 10:33 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-15  5:09 [PATCH v3 00/11] Analogix ANX6345 RGB-(e)DP bridge support Vasily Khoruzhick
2019-02-15  5:09 ` Vasily Khoruzhick
     [not found] ` <20190215050957.20755-1-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-02-15  5:09   ` [PATCH v3 01/11] drm/bridge: move ANA78xx driver to analogix subdirectory Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
2019-02-15  5:09   ` [PATCH v3 02/11] drm/bridge: split some definitions of ANX78xx to dedicated headers Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
2019-02-15  5:09   ` [PATCH v3 03/11] drm/bridge: extract some Analogix I2C DP common code Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
2019-02-15  5:09   ` [PATCH v3 04/11] dt-bindings: Add ANX6345 DP/eDP transmitter binding Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
     [not found]     ` <20190215050957.20755-5-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-02-18 18:13       ` Rob Herring
2019-02-18 18:13         ` Rob Herring
2019-02-15  5:09   ` [PATCH v3 05/11] drm/bridge: Add Analogix anx6345 support Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
     [not found]     ` <20190215050957.20755-6-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-02-15  8:23       ` Priit Laes
2019-02-15  8:23         ` [linux-sunxi] " Priit Laes
     [not found]         ` <20190215082331.7wq6arctd4hdjcnh-q/aMd4JkU83YtjvyW6yDsg@public.gmane.org>
2019-02-15 19:21           ` Vasily Khoruzhick
2019-02-15 19:21             ` [linux-sunxi] " Vasily Khoruzhick
2019-02-15  9:13     ` Andrzej Hajda
2019-02-15  9:13       ` Andrzej Hajda
     [not found]       ` <7d71654e-7169-2682-5655-0a9a9ea91c6d-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2019-02-15 19:36         ` Vasily Khoruzhick
2019-02-15 19:36           ` Vasily Khoruzhick
2019-02-26  7:12           ` Andrzej Hajda
2019-02-26  7:12             ` Andrzej Hajda
2019-02-15  5:09   ` [PATCH v3 06/11] drm/sun4i: rgb: Add DT property to disable strict clock rate check Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
     [not found]     ` <20190215050957.20755-7-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-02-18 18:26       ` Rob Herring
2019-02-18 18:26         ` Rob Herring
2019-02-18 19:33         ` Vasily Khoruzhick
2019-02-18 19:33           ` Vasily Khoruzhick
     [not found]           ` <CA+E=qVfDfDvVmKQDeh2e0SA=tm6VpBMpu9MPKUqxFPObxYFXDg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-02-19  8:56             ` Maxime Ripard
2019-02-19  8:56               ` Maxime Ripard
2019-02-19 15:44               ` Vasily Khoruzhick
2019-02-19 15:44                 ` Vasily Khoruzhick
     [not found]                 ` <CA+E=qVfV8ds-zb0oG1-g8c-ReCSnZjfUjvAHbZf1zBf8H-xUcw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-02-20 10:33                   ` Maxime Ripard [this message]
2019-02-20 10:33                     ` Maxime Ripard
2019-02-21  6:39                     ` Vasily Khoruzhick
2019-02-21  6:39                       ` Vasily Khoruzhick
2019-02-21  6:41               ` Vasily Khoruzhick
2019-02-21  6:41                 ` Vasily Khoruzhick
2019-02-15  5:09   ` [PATCH v3 07/11] arm64: allwinner: a64: add pinmux for RGB666 LCD Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
2019-02-15  5:09   ` [PATCH v3 08/11] drm/panel: simple: Add BOE HB140WX1-501 panel support Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
2019-02-16 20:43     ` Sam Ravnborg
2019-02-16 20:43       ` Sam Ravnborg
     [not found]       ` <20190216204327.GB22791-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org>
2019-02-16 20:48         ` Vasily Khoruzhick
2019-02-16 20:48           ` Vasily Khoruzhick
2019-02-16 21:12           ` Sam Ravnborg
2019-02-16 21:12             ` Sam Ravnborg
2019-02-15  5:09   ` [PATCH v3 09/11] dt-bindings: Add Guangdong Neweast Optoelectronics CO. LTD vendor prefix Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
     [not found]     ` <20190215050957.20755-10-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-02-18 18:27       ` Rob Herring
2019-02-18 18:27         ` Rob Herring
2019-02-15  5:09   ` [PATCH v3 10/11] drm/panel: simple: Add NewEast Optoelectronics CO., LTD WJFH116008A panel support Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick
     [not found]     ` <20190215050957.20755-11-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-02-18 18:33       ` Rob Herring
2019-02-18 18:33         ` Rob Herring
2019-02-18 19:06         ` Vasily Khoruzhick
2019-02-18 19:06           ` Vasily Khoruzhick
     [not found]           ` <CA+E=qVcdDQJvssZgu23gM_gKvz2G5GAWcmjFBokE_V=WGJ4h6A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-02-19 14:54             ` Rob Herring
2019-02-19 14:54               ` Rob Herring
     [not found]               ` <CAL_Jsq+pyAd_kMMz+yKjqY=asAi1X1XguM58VjfVhPwD-xi-2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-02-19 21:35                 ` Vasily Khoruzhick
2019-02-19 21:35                   ` Vasily Khoruzhick
     [not found]                   ` <CA+E=qVcmLnr9sL7UjG2PSC0Ji5PhW=xOLQHGvRUG3yMMZW1hnw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-02-22 18:37                     ` Rob Herring
2019-02-22 18:37                       ` Rob Herring
2019-03-07  6:12                       ` Vasily Khoruzhick
2019-03-07  6:12                         ` Vasily Khoruzhick
2019-02-15  5:09   ` [PATCH v3 11/11] arm64: allwinner: a64: enable LCD-related hardware for Pinebook Vasily Khoruzhick
2019-02-15  5:09     ` Vasily Khoruzhick

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=20190220103347.74wqu2btdti2myi7@flea \
    --to=maxime.ripard-ldxbnhwyfcjbdgjk7y7tuq@public.gmane.org \
    --cc=Laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
    --cc=a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
    --cc=airlied-cv59FeDIM0c@public.gmane.org \
    --cc=anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=daniel-/w4YWyX8dFk@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=icenowy-h8G6r0blFSE@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.