dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Neil Armstrong <neil.armstrong@linaro.org>
To: Linus Walleij <linus.walleij@linaro.org>,
	Stephan Gerhold <stephan@gerhold.net>,
	Ajay Kumar <ajaykumar.rs@samsung.com>,
	Thierry Reding <treding@nvidia.com>,
	Douglas Anderson <dianders@chromium.org>
Cc: Caleb Connolly <caleb.connolly@linaro.org>,
	linux-arm-msm@vger.kernel.org,
	Joel Selvaraj <joelselvaraj.oss@gmail.com>,
	dri-devel@lists.freedesktop.org,
	~postmarketos/upstreaming@lists.sr.ht,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	phone-devel@vger.kernel.org, Sam Ravnborg <sam@ravnborg.org>,
	Sumit Semwal <sumit.semwal@linaro.org>,
	Joel Selvaraj <jo@jsfamily.in>
Subject: Re: [PATCH] drm/panel: move some dsi commands from unprepare to disable
Date: Thu, 15 Jun 2023 09:49:27 +0200	[thread overview]
Message-ID: <4f78b601-6e6e-2274-3174-87c62d7cfcd5@linaro.org> (raw)
In-Reply-To: <CACRpkdZ7a3aARMs3iBbBavF_0AkPOPs3fH8e6CrZYo7Ybr6m_A@mail.gmail.com>

On 14/06/2023 22:58, Linus Walleij wrote:
> On Tue, Jun 13, 2023 at 11:08 PM Stephan Gerhold <stephan@gerhold.net> wrote:
> 
>> I'm still quite confused about what exactly is supposed to be in
>> (un)prepare and what in enable/disable. I've seen some related
>> discussion every now and then but it's still quite inconsistent across
>> different panel drivers... Can someone clarify this?
> 
> It is somewhat clarified in commit 45527d435c5e39b6eec4aa0065a562e7cf05d503
> that added the callbacks:
> 
> Author: Ajay Kumar <ajaykumar.rs@samsung.com>
> Date:   Fri Jul 18 02:13:48 2014 +0530
> 
>      drm/panel: add .prepare() and .unprepare() functions
> 
>      Panels often require an initialization sequence that consists of three
>      steps: a) powering up the panel, b) starting transmission of video data
>      and c) enabling the panel (e.g. turn on backlight). This is usually
>      necessary to avoid visual glitches at the beginning of video data
>      transmission.
> 
>      Similarly, the shutdown sequence is typically done in three steps as
>      well: a) disable the panel (e.g. turn off backlight), b) cease video
>      data transmission and c) power down the panel.
> 
>      Currently drivers can only implement .enable() and .disable() functions,
>      which is not enough to implement the above sequences. This commit adds a
>      second pair of functions, .prepare() and .unprepare() to allow more
>      fine-grained control over when the above steps are performed.
> 
>      Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
>      [treding: rewrite changelog, add kerneldoc]
>      Signed-off-by: Thierry Reding <treding@nvidia.com>
> 
> My interpretation is that .enable/.disable is for enabling/disabling
> backlight and well, make things show up on the display, and that
> happens quickly.
> 
> prepare/unprepare is for everything else setting up/tearing down
> the data transmission pipeline.
> 
> In the clock subsystem the enable/disable could be called in fastpath
> and prepare/unprepare only from slowpath so e.g an IRQ handler
> can gate a simple gated clock. This semantic seems to have nothing
> to do with the display semantic. :/

It had to do, .prepare is called when the DSI link is at LP11 state
before it has switched to the VIDEO mode, and .unprepare is the
reverse when VIDEO mode has been disabled and before the DSI link
is totally disabled.

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c#L938

then

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c#L855

but Doug has started changing this starting with MSM DSI driver, leading to
current panel drivers not working anymore with the current DSI init mode
and requires setting pre_enable_prev_first for only some DSI hosts
who switched out of set_mode().

The DSI init model doesn't fit at all with the atomic bridge model and
some DSI controllers doesn't support the same features like the allwinner
DSI controller not support sending LP commands when in HS video mode
for example.

Neil

> 
> Yours,
> Linus Walleij


  reply	other threads:[~2023-06-15  7:49 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-12 23:36 [PATCH] drm/panel: move some dsi commands from unprepare to disable Caleb Connolly
2023-06-13 21:08 ` Stephan Gerhold
2023-06-14 20:58   ` Linus Walleij
2023-06-15  7:49     ` Neil Armstrong [this message]
2023-06-15  8:09       ` Stephan Gerhold
2023-06-15 23:36       ` Doug Anderson
2023-06-18 13:47         ` Jakob Hauser
2023-06-18 13:52           ` Jakob Hauser

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=4f78b601-6e6e-2274-3174-87c62d7cfcd5@linaro.org \
    --to=neil.armstrong@linaro.org \
    --cc=ajaykumar.rs@samsung.com \
    --cc=caleb.connolly@linaro.org \
    --cc=dianders@chromium.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jo@jsfamily.in \
    --cc=joelselvaraj.oss@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=phone-devel@vger.kernel.org \
    --cc=sam@ravnborg.org \
    --cc=stephan@gerhold.net \
    --cc=sumit.semwal@linaro.org \
    --cc=treding@nvidia.com \
    --cc=~postmarketos/upstreaming@lists.sr.ht \
    /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).