linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree <devicetree@vger.kernel.org>,
	Archit Taneja <architt@codeaurora.org>,
	Andrzej Hajda <a.hajda@samsung.com>,
	David Airlie <airlied@linux.ie>,
	linux-sunxi <linux-sunxi@googlegroups.com>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Maxime Ripard <maxime.ripard@bootlin.com>,
	Chen-Yu Tsai <wens@csie.org>, Rob Herring <robh+dt@kernel.org>,
	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 RESEND v2 08/12] dt-bindings: add binding for generic eDP panel
Date: Mon, 4 Feb 2019 16:59:09 +0100	[thread overview]
Message-ID: <20190204155909.GU3271@phenom.ffwll.local> (raw)
In-Reply-To: <20190204112218.GB10412@ulmo>

On Mon, Feb 04, 2019 at 12:22:18PM +0100, Thierry Reding wrote:
> On Mon, Feb 04, 2019 at 10:40:12AM +0100, Daniel Vetter wrote:
> > On Mon, Feb 04, 2019 at 09:23:59AM +0100, Thierry Reding wrote:
> > > On Mon, Feb 04, 2019 at 12:13:55AM -0800, Vasily Khoruzhick wrote:
> > > > On Sun, Feb 3, 2019 at 11:43 PM Thierry Reding <thierry.reding@gmail.com> wrote:
> > > > >
> > > > > On Sun, Feb 03, 2019 at 10:54:57AM -0800, Vasily Khoruzhick wrote:
> > > > > > eDP panels usually have EDID EEPROM, so there's no need to define panel
> > > > > > width/height or any modes/timings in dts. But this panel still may have
> > > > > > regulator and/or backlight.
> > > > > >
> > > > > > Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> > > > > > ---
> > > > > >  .../devicetree/bindings/display/panel/panel-edp.txt        | 7 +++++++
> > > > > >  1 file changed, 7 insertions(+)
> > > > > >  create mode 100644 Documentation/devicetree/bindings/display/panel/panel-edp.txt
> > > > >
> > > > > Please don't try to make panels look more generic than they really are.
> > > > > You're going to have to provide a compatible string for your device that
> > > > > is more specific than "panel-edp". You claim that you don't need any
> > > > > extra information that is panel specific, but you don't know that now.
> > > > > We have in the past thought that we didn't need things like prepare
> > > > > delay, but then we ran into situations where we did need them.
> > > > >
> > > > > Just do what everybody else does. Provide a specific compatible string
> > > > > and match on that in the panel-simple driver. Even if you can read all
> > > > > the video timings from an EDID EEPROM, you can still provide a mode in
> > > > > the panel descriptor to serve as a fallback if for example the EEPROM
> > > > > is faulty on some device.
> > > > 
> > > > Pinebook used several 768p panels that have slightly different timings
> > > > and recent batch uses 1080p panel.
> > > > 
> > > > What panel descriptor should I use as fallback?
> > > 
> > > You don't use panel descriptors as fallback. The simple-panel driver
> > > will bind to a panel device and use the corresponding descriptor. If
> > > your device tree contains the correct information, the descriptor is
> > > correct for the panel you have.
> > > 
> > > In other words you need to ensure that you have the correct panel in
> > > device tree for the board that you're using. This is exactly the same
> > > thing as for other devices.
> > > 
> > > One way to to this is to have separate device trees for each variant
> > > of the board that you want to support. Another variant may be to have
> > > a common device tree and then have some early firmware update the DTB
> > > with the correct panel information.
> > 
> > This would defeat the point of edp, which is to standardize the mess of
> > panels (at least somewhat) and avoid having to change the DT/ACPI
> > tables/firmware for every board you ship. Also, we do have DP quirking
> > infrastructure already (using the OUI), I think if there's something that
> > doesn't work then we should quirk it there.
> 
> The problem is that while the attempt may have been to standardize, it
> failed. It doesn't take into account any of the details such as timing
> between things like powering up the display and enabling the backlight
> or similar. I don't know how you'd want to "quirk" those kinds of
> requirements because they are highly panel specific.

Hm right, we get these from some firmware tables (and mix them with the
spec one, since some of the firmware values are nonsense). I don't even
know whether we can read the timings over dp aux somehow (you can power up
the panel with some pessimistic values to figure those out, and you only
need dp aux to work, which is much simpler than the entire panel).

> > What does make sense though imo is if we try not to stuff the edp panel
> > into panel-simple, because it's anything like a simple dumb panel. There's
> > also some integration awkwardness since with this panel you need to do dp
> > aux/i2c transactions to get at the information (edid alone isn't good
> > enough for edp), and I'm not sure how exactly that's supposed to be
> > instantiated. Maybe a special function to instantiate an edp panel, which
> > takes both a DT node and the dp_aux controller would be much better,
> > instead of trying to auto-match against a DT compatible string and load a
> > panel driver which is almost all fake.
> > 
> > Or we teach dp_aux to register itself and somehow teach panel-edp how it
> > can get hold of the dp_aux channel it needs.
> 
> We already do that. drm_dp_aux registers as an I2C adapter that can be
> used to read EDID EEPROMs using I2C-over-AUX transactions. We already
> use that on some platforms.
> 
> Also note that simple-panel already supports getting video timings from
> EDID. If a DDC link is present in DT, the driver will load the modes
> from EDID and use them.

Could we extend this to dp aux somehow? For edp you need the dp aux (which
then gives you the ddc link automatically).

> > But fake mode in panel-simple sounds like the wrong approach. At least
> > from our experience with i915 (and I think other drivers supporting edp),
> > the standardization of panels for basic stuff at least worked.
> > Self-refresh seems an entirely different story unfortunately ... but again
> > quirking that for DP stuff should be done using the OUI I think.
> 
> I can imagine that on x86 platforms OEMs can also easily hide some of
> the necessary quirks in ACPI. None of that exists on ARM or other
> architectures that solely rely on device tree to describe the device.
> Since there's no way of specifying power sequences in DT (there have
> been attempts in the past to make that work, but they failed miserably)
> all we can do is match on a compatible string and encode the necessary
> logic in the driver. Luckily we haven't run into anything too fancy up
> to now and we've been able to make things work mostly with just a couple
> of fairly generic parameters.
> 
> Also note that initially people thought this wasn't going to be
> necessary and we only added the various "delay" parameters later on
> because it did turn out that not all panels are created equal.

Yeah this sucks, but oh well.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

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

  reply	other threads:[~2019-02-04 15:59 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-03 18:54 [PATCH RESEND v2 00/12] Analogix ANX6345 RGB-(e)DP bridge support Vasily Khoruzhick
2019-02-03 18:54 ` [PATCH RESEND v2 01/12] drm/bridge: move ANA78xx driver to analogix subdirectory Vasily Khoruzhick
2019-02-03 18:54 ` [PATCH RESEND v2 02/12] drm/bridge: split some definitions of ANX78xx to dedicated headers Vasily Khoruzhick
2019-02-03 18:54 ` [PATCH RESEND v2 03/12] drm/bridge: extract some Analogix I2C DP common code Vasily Khoruzhick
2019-02-03 18:54 ` [PATCH RESEND v2 04/12] dt-bindings: Add ANX6345 DP/eDP transmitter binding Vasily Khoruzhick
2019-02-03 18:54 ` [PATCH RESEND v2 05/12] drm/bridge: Add Analogix anx6345 support Vasily Khoruzhick
2019-02-05 13:19   ` Torsten Duwe
2019-02-03 18:54 ` [PATCH RESEND v2 06/12] drm/sun4i: rgb: Add 1% tolerance to dclk frequency check when bridge is connected Vasily Khoruzhick
2019-02-04 14:20   ` Maxime Ripard
2019-02-04 16:26     ` Vasily Khoruzhick
2019-02-04 16:28       ` Icenowy Zheng
2019-02-04 18:50         ` [linux-sunxi] " Vasily Khoruzhick
2019-02-05 15:41           ` Maxime Ripard
2019-02-05 17:49             ` Vasily Khoruzhick
2019-02-06  9:16               ` Maxime Ripard
2019-02-06 11:42                 ` Thierry Reding
2019-02-03 18:54 ` [PATCH RESEND v2 07/12] drm/panel: simple: don't fail if we don't have panel desc Vasily Khoruzhick
2019-02-03 18:54 ` [PATCH RESEND v2 08/12] dt-bindings: add binding for generic eDP panel Vasily Khoruzhick
2019-02-04  7:43   ` Thierry Reding
2019-02-04  8:13     ` Vasily Khoruzhick
2019-02-04  8:23       ` Thierry Reding
2019-02-04  9:40         ` Daniel Vetter
2019-02-04 11:22           ` Thierry Reding
2019-02-04 15:59             ` Daniel Vetter [this message]
2019-02-04 16:22               ` Thierry Reding
2019-02-05  8:57                 ` Daniel Vetter
2019-02-05 10:24                   ` Thierry Reding
2019-02-05 16:36                     ` Daniel Vetter
2019-02-14 19:51                       ` Vasily Khoruzhick
2019-02-14 20:05                     ` Vasily Khoruzhick
2019-02-14 20:38                       ` Rob Herring
2019-02-14 20:54                         ` Vasily Khoruzhick
2019-02-04 16:11         ` Vasily Khoruzhick
2019-02-04 16:27           ` Thierry Reding
2019-02-04 16:39           ` Rob Herring
2019-02-04 17:02             ` [linux-sunxi] " Vasily Khoruzhick
2019-02-04 16:27         ` Rob Herring
2019-02-04 16:56           ` Thierry Reding
2019-02-04 17:07             ` Vasily Khoruzhick
2019-02-04 20:23             ` Rob Herring
2019-02-04 20:26               ` Vasily Khoruzhick
2019-02-04 20:34                 ` Rob Herring
2019-02-03 18:54 ` [PATCH RESEND v2 09/12] drm/panel: simple: add " Vasily Khoruzhick
2019-02-03 18:54 ` [PATCH RESEND v2 10/12] arm64: allwinner: a64: add pinmux for RGB666 LCD Vasily Khoruzhick
2019-02-03 18:55 ` [PATCH RESEND v2 11/12] arm64: allwinner: a64: enable LCD-related hardware for Pinebook Vasily Khoruzhick
2019-02-03 18:55 ` [PATCH RESEND v2 12/12] arm64: allwinner: a64: enable LCD-related hardware for TERES-I Vasily Khoruzhick
  -- strict thread matches above, loose matches on Subject: below --
2018-10-18  7:33 [PATCH 0/9] Analogix ANX6345 RGB-(e)DP bridge support Icenowy Zheng
2018-10-18  7:33 ` [PATCH 1/9] drm/bridge: move ANA78xx driver to analogix subdirectory Icenowy Zheng
2018-10-18  8:47   ` Laurent Pinchart
2018-10-18  7:33 ` [PATCH 2/9] drm/bridge: split some definitions of ANX78xx to dedicated headers Icenowy Zheng
2018-10-18  7:33 ` [PATCH 3/9] drm/bridge: extract some Analogix I2C DP common code Icenowy Zheng
2018-10-18  7:33 ` [PATCH 4/9] dt-bindings: Add ANX6345 DP/eDP transmitter binding Icenowy Zheng
2018-10-18  8:53   ` Laurent Pinchart
2018-10-18 10:00     ` Icenowy Zheng
2018-10-18 11:23       ` Laurent Pinchart
2018-10-18 12:40         ` Icenowy Zheng
2018-10-25 18:30           ` Rob Herring
2018-10-26  0:08             ` Icenowy Zheng
2018-10-18  7:33 ` [PATCH 5/9] drm/bridge: Add Analogix anx6345 support Icenowy Zheng
2018-10-18  7:33 ` [PATCH 6/9] arm64: allwinner: a64: add pinmux for RGB666 LCD Icenowy Zheng
2018-10-18  7:33 ` [PATCH 7/9] arm64: allwinner: a64: enable ANX6345 bridge on Pinebook Icenowy Zheng
2018-10-18 15:17   ` Vasily Khoruzhick
2018-10-19  5:50     ` Icenowy Zheng
2018-10-18  7:33 ` [PATCH 8/9] arm64: allwinner: a64: enable ANX6345 bridge on TERES-I Icenowy Zheng
2018-10-18  7:33 ` [PATCH 9/9] [DO NOT MERGE] drm/sun4i: rgb: Add 5% tolerance to dot clock frequency check Icenowy Zheng
2018-10-18  8:55   ` Laurent Pinchart
2018-10-18  9:18     ` Daniel Vetter
2018-10-18  9:42       ` Maxime Ripard
2018-10-18 11:31         ` Laurent Pinchart
2018-10-18 12:18           ` Maxime Ripard
2018-10-18 12:50             ` Icenowy Zheng
2018-10-18 13:07               ` Maxime Ripard
2018-10-18 13:57             ` Laurent Pinchart
2019-02-03  1:32           ` Vasily Khoruzhick
2018-10-29  2:20 ` [PATCH 0/9] Analogix ANX6345 RGB-(e)DP bridge support Vasily Khoruzhick
2019-02-04 12:22 ` Torsten Duwe
2019-02-04 20:21   ` 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=20190204155909.GU3271@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=a.hajda@samsung.com \
    --cc=airlied@linux.ie \
    --cc=architt@codeaurora.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=icenowy@aosc.io \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=mark.rutland@arm.com \
    --cc=maxime.ripard@bootlin.com \
    --cc=robh+dt@kernel.org \
    --cc=seanpaul@chromium.org \
    --cc=thierry.reding@gmail.com \
    --cc=wens@csie.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).