All of lore.kernel.org
 help / color / mirror / Atom feed
From: Doug Anderson <dianders@chromium.org>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: quic_kalyant <quic_kalyant@quicinc.com>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>,
	Sankeerth Billakanti <quic_sbillaka@quicinc.com>,
	"Abhinav Kumar \(QUIC\)" <quic_abhinavk@quicinc.com>,
	quic_vproddut <quic_vproddut@quicinc.com>,
	David Airlie <airlied@linux.ie>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	LKML <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Stephen Boyd <swboyd@chromium.org>, Sean Paul <sean@poorly.run>,
	Sean Paul <seanpaul@chromium.org>,
	"Aravind Venkateswaran \(QUIC\)" <quic_aravindh@quicinc.com>,
	"Kuogee Hsieh \(QUIC\)" <quic_khsieh@quicinc.com>,
	freedreno <freedreno@lists.freedesktop.org>
Subject: Re: [PATCH v6 1/8] drm/msm/dp: Add eDP support via aux_bus
Date: Tue, 5 Apr 2022 11:11:40 -0700	[thread overview]
Message-ID: <CAD=FV=Uibu-kZyix7K4_WVc-+C8xpzTqU4WFy7O=6sukMZrX5g@mail.gmail.com> (raw)
In-Reply-To: <3e5fa57f-d636-879a-b98f-77323d07c156@linaro.org>

Hi,

On Tue, Apr 5, 2022 at 10:36 AM Dmitry Baryshkov
<dmitry.baryshkov@linaro.org> wrote:
>
> On 05/04/2022 20:02, Doug Anderson wrote:
> > Hi,
> >
> > On Tue, Apr 5, 2022 at 5:54 AM Dmitry Baryshkov
> > <dmitry.baryshkov@linaro.org> wrote:
> >>> 3. For DP and eDP HPD means something a little different. Essentially
> >>> there are two concepts: a) is a display physically connected and b) is
> >>> the display powered up and ready. For DP, the two are really tied
> >>> together. From the kernel's point of view you never "power down" a DP
> >>> display and you can't detect that it's physically connected until it's
> >>> ready. Said another way, on you tie "is a display there" to the HPD
> >>> line and the moment a display is there it's ready for you to do AUX
> >>> transfers. For eDP, in the lowest power state of a display it _won't_
> >>> assert its "HPD" signal. However, it's still physically present. For
> >>> eDP you simply have to _assume_ it's present without any actual proof
> >>> since you can't get proof until you power it up. Thus for eDP, you
> >>> report that the display is there as soon as we're asked. We can't
> >>> _talk_ to the display yet, though. So in get_modes() we need to be
> >>> able to power the display on enough to talk over the AUX channel to
> >>> it. As part of this, we wait for the signal named "HPD" which really
> >>> means "panel finished powering on" in this context.
> >>>
> >>> NOTE: for aux transfer, we don't have the _display_ pipe and clocks
> >>> running. We only have enough stuff running to do the AUX transfer.
> >>> We're not clocking out pixels. We haven't fully powered on the
> >>> display. The AUX transfer is designed to be something that can be done
> >>> early _before_ you turn on the display.
> >>>
> >>>
> >>> OK, so basically that was a longwinded way of saying: yes, we could
> >>> avoid the AUX transfer in probe, but we can't wait all the way to
> >>> enable. We have to be able to transfer in get_modes(). If you think
> >>> that's helpful I think it'd be a pretty easy patch to write even if it
> >>> would look a tad bit awkward IMO. Let me know if you want me to post
> >>> it up.
> >>
> >> I think it would be a good idea. At least it will allow us to judge,
> >> which is the more correct way.
> >
> > I'm still happy to prototype this, but the more I think about it the
> > more it feels like a workaround for the Qualcomm driver. The eDP panel
> > driver is actually given a pointer to the AUX bus at probe time. It's
> > really weird to say that we can't do a transfer on it yet... As you
> > said, this is a little sideband bus. It should be able to be used
> > without all the full blown infra of the rest of the driver.
>
> Yes, I have that feeling too. However I also have a feeling that just
> powering up the PHY before the bus probe is ... a hack. There are no
> obvious stopgaps for the driver not to power it down later.

This is why I think we need to move to Runtime PM to manage this. Basically:

1. When an AUX transfer happens, you grab a PM runtime reference that
_that_ powers up the PHY.

2. At the end of the AUX transfer function, you do a "put_autosuspend".

Then it becomes not a hack, right?


> A cleaner design might be to split all hotplug event handling from the
> dp_display, provide a lightweight state machine for the eDP and select
> which state machine to use depending on the hardware connector type. The
> dp_display_bind/unbind would probably also be duplicated and receive
> correct code flows for calling dp_parser_get_next_bridge, etc.
> Basically that means that depending on the device data we'd use either
> dp_display_comp_ops or (new) edp_comp_ops.
>
> WDYT?

I don't think I know the structure of the MSM DP code to make a
definitive answer here. I think I'd have to see a patch. However I'd
agree in general terms that we need some different flows for the two.
;-) We definitely want to limit the differences but some of them will
be unavoidable...


-Doug

WARNING: multiple messages have this Message-ID (diff)
From: Doug Anderson <dianders@chromium.org>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Sankeerth Billakanti <quic_sbillaka@quicinc.com>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	freedreno <freedreno@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>, Rob Clark <robdclark@gmail.com>,
	Sean Paul <seanpaul@chromium.org>,
	Stephen Boyd <swboyd@chromium.org>,
	quic_kalyant <quic_kalyant@quicinc.com>,
	"Abhinav Kumar (QUIC)" <quic_abhinavk@quicinc.com>,
	"Kuogee Hsieh (QUIC)" <quic_khsieh@quicinc.com>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Sean Paul <sean@poorly.run>, David Airlie <airlied@linux.ie>,
	Daniel Vetter <daniel@ffwll.ch>,
	quic_vproddut <quic_vproddut@quicinc.com>,
	"Aravind Venkateswaran (QUIC)" <quic_aravindh@quicinc.com>
Subject: Re: [PATCH v6 1/8] drm/msm/dp: Add eDP support via aux_bus
Date: Tue, 5 Apr 2022 11:11:40 -0700	[thread overview]
Message-ID: <CAD=FV=Uibu-kZyix7K4_WVc-+C8xpzTqU4WFy7O=6sukMZrX5g@mail.gmail.com> (raw)
In-Reply-To: <3e5fa57f-d636-879a-b98f-77323d07c156@linaro.org>

Hi,

On Tue, Apr 5, 2022 at 10:36 AM Dmitry Baryshkov
<dmitry.baryshkov@linaro.org> wrote:
>
> On 05/04/2022 20:02, Doug Anderson wrote:
> > Hi,
> >
> > On Tue, Apr 5, 2022 at 5:54 AM Dmitry Baryshkov
> > <dmitry.baryshkov@linaro.org> wrote:
> >>> 3. For DP and eDP HPD means something a little different. Essentially
> >>> there are two concepts: a) is a display physically connected and b) is
> >>> the display powered up and ready. For DP, the two are really tied
> >>> together. From the kernel's point of view you never "power down" a DP
> >>> display and you can't detect that it's physically connected until it's
> >>> ready. Said another way, on you tie "is a display there" to the HPD
> >>> line and the moment a display is there it's ready for you to do AUX
> >>> transfers. For eDP, in the lowest power state of a display it _won't_
> >>> assert its "HPD" signal. However, it's still physically present. For
> >>> eDP you simply have to _assume_ it's present without any actual proof
> >>> since you can't get proof until you power it up. Thus for eDP, you
> >>> report that the display is there as soon as we're asked. We can't
> >>> _talk_ to the display yet, though. So in get_modes() we need to be
> >>> able to power the display on enough to talk over the AUX channel to
> >>> it. As part of this, we wait for the signal named "HPD" which really
> >>> means "panel finished powering on" in this context.
> >>>
> >>> NOTE: for aux transfer, we don't have the _display_ pipe and clocks
> >>> running. We only have enough stuff running to do the AUX transfer.
> >>> We're not clocking out pixels. We haven't fully powered on the
> >>> display. The AUX transfer is designed to be something that can be done
> >>> early _before_ you turn on the display.
> >>>
> >>>
> >>> OK, so basically that was a longwinded way of saying: yes, we could
> >>> avoid the AUX transfer in probe, but we can't wait all the way to
> >>> enable. We have to be able to transfer in get_modes(). If you think
> >>> that's helpful I think it'd be a pretty easy patch to write even if it
> >>> would look a tad bit awkward IMO. Let me know if you want me to post
> >>> it up.
> >>
> >> I think it would be a good idea. At least it will allow us to judge,
> >> which is the more correct way.
> >
> > I'm still happy to prototype this, but the more I think about it the
> > more it feels like a workaround for the Qualcomm driver. The eDP panel
> > driver is actually given a pointer to the AUX bus at probe time. It's
> > really weird to say that we can't do a transfer on it yet... As you
> > said, this is a little sideband bus. It should be able to be used
> > without all the full blown infra of the rest of the driver.
>
> Yes, I have that feeling too. However I also have a feeling that just
> powering up the PHY before the bus probe is ... a hack. There are no
> obvious stopgaps for the driver not to power it down later.

This is why I think we need to move to Runtime PM to manage this. Basically:

1. When an AUX transfer happens, you grab a PM runtime reference that
_that_ powers up the PHY.

2. At the end of the AUX transfer function, you do a "put_autosuspend".

Then it becomes not a hack, right?


> A cleaner design might be to split all hotplug event handling from the
> dp_display, provide a lightweight state machine for the eDP and select
> which state machine to use depending on the hardware connector type. The
> dp_display_bind/unbind would probably also be duplicated and receive
> correct code flows for calling dp_parser_get_next_bridge, etc.
> Basically that means that depending on the device data we'd use either
> dp_display_comp_ops or (new) edp_comp_ops.
>
> WDYT?

I don't think I know the structure of the MSM DP code to make a
definitive answer here. I think I'd have to see a patch. However I'd
agree in general terms that we need some different flows for the two.
;-) We definitely want to limit the differences but some of them will
be unavoidable...


-Doug

  reply	other threads:[~2022-04-05 18:12 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-30 16:02 [PATCH v6 0/8] Add support for the eDP panel over aux_bus Sankeerth Billakanti
2022-03-30 16:02 ` Sankeerth Billakanti
2022-03-30 16:02 ` [PATCH v6 1/8] drm/msm/dp: Add eDP support via aux_bus Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-30 23:19   ` Dmitry Baryshkov
2022-03-30 23:19     ` Dmitry Baryshkov
2022-03-31  0:33     ` Doug Anderson
2022-03-31  0:33       ` Doug Anderson
2022-03-31 23:22   ` Doug Anderson
2022-03-31 23:22     ` Doug Anderson
2022-04-02 10:37     ` Dmitry Baryshkov
2022-04-02 10:37       ` Dmitry Baryshkov
2022-04-02 17:06       ` Doug Anderson
2022-04-02 17:06         ` Doug Anderson
2022-04-02 20:26         ` Dmitry Baryshkov
2022-04-02 20:26           ` Dmitry Baryshkov
2022-04-04 20:53           ` Doug Anderson
2022-04-04 20:53             ` Doug Anderson
2022-04-05 12:53             ` Dmitry Baryshkov
2022-04-05 12:53               ` Dmitry Baryshkov
2022-04-05 17:02               ` Doug Anderson
2022-04-05 17:02                 ` Doug Anderson
2022-04-05 17:36                 ` Dmitry Baryshkov
2022-04-05 17:36                   ` Dmitry Baryshkov
2022-04-05 18:11                   ` Doug Anderson [this message]
2022-04-05 18:11                     ` Doug Anderson
2022-04-07 14:19                     ` Sankeerth Billakanti (QUIC)
2022-04-07 14:19                       ` Sankeerth Billakanti (QUIC)
2022-04-07 17:07                       ` Doug Anderson
2022-04-07 17:07                         ` Doug Anderson
2022-04-07 20:11                         ` Abhinav Kumar
2022-04-07 20:11                           ` Abhinav Kumar
2022-04-07 20:47                           ` Doug Anderson
2022-04-07 20:47                             ` Doug Anderson
2022-04-07 22:03                             ` Abhinav Kumar
2022-04-07 22:03                               ` Abhinav Kumar
2022-04-07 23:34                               ` Doug Anderson
2022-04-07 23:34                                 ` Doug Anderson
2022-04-07 23:46                                 ` Dmitry Baryshkov
2022-04-07 23:46                                   ` Dmitry Baryshkov
2022-04-08  0:21                                   ` Doug Anderson
2022-04-08  0:21                                     ` Doug Anderson
2022-04-08 12:19                                     ` Dmitry Baryshkov
2022-04-08 12:19                                       ` Dmitry Baryshkov
2022-04-08 13:43                                       ` Doug Anderson
2022-04-08 13:43                                         ` Doug Anderson
2022-04-08 14:58                                         ` Dmitry Baryshkov
2022-04-08 14:58                                           ` Dmitry Baryshkov
2022-04-08 17:23                                           ` Abhinav Kumar
2022-04-08 17:23                                             ` Abhinav Kumar
2022-04-07 23:35                           ` Dmitry Baryshkov
2022-04-07 23:35                             ` Dmitry Baryshkov
2022-04-08  0:20                             ` Doug Anderson
2022-04-08  0:20                               ` Doug Anderson
2022-04-08 12:13                               ` Dmitry Baryshkov
2022-04-08 12:13                                 ` Dmitry Baryshkov
2022-04-08 13:56                                 ` Doug Anderson
2022-04-08 13:56                                   ` Doug Anderson
2022-04-08 14:17                                   ` Dmitry Baryshkov
2022-04-08 14:17                                     ` Dmitry Baryshkov
2022-03-30 16:02 ` [PATCH v6 2/8] drm/msm/dp: wait for hpd high before aux transaction Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:22   ` Doug Anderson
2022-03-31 23:22     ` Doug Anderson
2022-04-04 12:43     ` Sankeerth Billakanti (QUIC)
2022-04-04 12:43       ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 3/8] drm/msm/dp: Support only IRQ_HPD and REPLUG interrupts for eDP Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:22   ` Doug Anderson
2022-03-31 23:22     ` Doug Anderson
2022-04-04 12:56     ` Sankeerth Billakanti (QUIC)
2022-04-04 12:56       ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 4/8] drm/msm/dp: avoid handling masked interrupts Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-30 22:16   ` Dmitry Baryshkov
2022-03-30 22:16     ` Dmitry Baryshkov
2022-03-31  5:53     ` Sankeerth Billakanti (QUIC)
2022-03-31  5:53       ` Sankeerth Billakanti (QUIC)
2022-03-31 10:10       ` Dmitry Baryshkov
2022-03-31 10:10         ` Dmitry Baryshkov
2022-03-31 11:04         ` Sankeerth Billakanti
2022-03-31 11:04           ` Sankeerth Billakanti
2022-03-31 11:06           ` Dmitry Baryshkov
2022-03-31 11:06             ` Dmitry Baryshkov
2022-04-04 17:56             ` Sankeerth Billakanti (QUIC)
2022-04-04 17:56               ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 5/8] drm/msm/dp: prevent multiple votes for dp resources Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:23   ` Doug Anderson
2022-03-31 23:23     ` Doug Anderson
2022-04-08 16:14     ` Dmitry Baryshkov
2022-04-08 16:14       ` Dmitry Baryshkov
2022-04-08 17:12       ` Sankeerth Billakanti
2022-04-08 17:12         ` Sankeerth Billakanti
2022-04-08 18:02         ` Dmitry Baryshkov
2022-04-08 18:02           ` Dmitry Baryshkov
2022-03-30 16:02 ` [PATCH v6 6/8] drm/msm/dp: remove unnecessary delay during boot Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:23   ` Doug Anderson
2022-03-31 23:23     ` Doug Anderson
2022-04-04 13:52     ` Sankeerth Billakanti (QUIC)
2022-04-04 13:52       ` Sankeerth Billakanti (QUIC)
2022-04-04 21:13       ` Dmitry Baryshkov
2022-04-04 21:13         ` Dmitry Baryshkov
2022-04-07 12:40         ` Sankeerth Billakanti (QUIC)
2022-04-07 12:40           ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 7/8] drm/msm/dp: Support edp/dp without hpd Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:23   ` Doug Anderson
2022-03-31 23:23     ` Doug Anderson
2022-04-04 18:32     ` Sankeerth Billakanti (QUIC)
2022-04-04 18:32       ` Sankeerth Billakanti (QUIC)
2022-04-04 21:15       ` Dmitry Baryshkov
2022-04-04 21:15         ` Dmitry Baryshkov
2022-04-07 12:41         ` Sankeerth Billakanti (QUIC)
2022-04-07 12:41           ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 8/8] drm/msm/dp: Handle eDP mode_valid differently from dp Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-30 22:08   ` Dmitry Baryshkov
2022-03-30 22:08     ` Dmitry Baryshkov
2022-03-31  6:02     ` Sankeerth Billakanti (QUIC)
2022-03-31  6:02       ` Sankeerth Billakanti (QUIC)
2022-03-31 23:24       ` Doug Anderson
2022-03-31 23:24         ` Doug Anderson
2022-04-04 18:20         ` Sankeerth Billakanti (QUIC)
2022-04-04 18:20           ` Sankeerth Billakanti (QUIC)
2022-04-04 21:29           ` Dmitry Baryshkov
2022-04-04 21:29             ` Dmitry Baryshkov
2022-04-07 14:05             ` Sankeerth Billakanti (QUIC)
2022-04-07 14:05               ` Sankeerth Billakanti (QUIC)
2022-04-08 12:08               ` Dmitry Baryshkov
2022-04-08 12:08                 ` Dmitry Baryshkov
2022-04-08 15:50                 ` Sankeerth Billakanti
2022-04-08 15:50                   ` Sankeerth Billakanti
2022-04-08 16:47                   ` Dmitry Baryshkov
2022-04-08 16:47                     ` Dmitry Baryshkov
2022-04-08 17:38                     ` Sankeerth Billakanti
2022-04-08 17:38                       ` Sankeerth Billakanti
2022-04-08 18:06                       ` Dmitry Baryshkov
2022-04-08 18:06                         ` Dmitry Baryshkov

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='CAD=FV=Uibu-kZyix7K4_WVc-+C8xpzTqU4WFy7O=6sukMZrX5g@mail.gmail.com' \
    --to=dianders@chromium.org \
    --cc=airlied@linux.ie \
    --cc=bjorn.andersson@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quic_abhinavk@quicinc.com \
    --cc=quic_aravindh@quicinc.com \
    --cc=quic_kalyant@quicinc.com \
    --cc=quic_khsieh@quicinc.com \
    --cc=quic_sbillaka@quicinc.com \
    --cc=quic_vproddut@quicinc.com \
    --cc=sean@poorly.run \
    --cc=seanpaul@chromium.org \
    --cc=swboyd@chromium.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.