mbox series

[v1,0/7] drm/bridge_connector: perform HPD enablement automatically

Message ID 20220429185157.3673633-1-dmitry.baryshkov@linaro.org (mailing list archive)
Headers show
Series drm/bridge_connector: perform HPD enablement automatically | expand

Message

Dmitry Baryshkov April 29, 2022, 6:51 p.m. UTC
From all the drivers using drm_bridge_connector only iMX/dcss and OMAP
DRM driver do a proper work of calling
drm_bridge_connector_en/disable_hpd() in right places. Rather than
teaching each and every driver how to properly handle
drm_bridge_connector's HPD, make that automatic.

Add two additional drm_connector helper funcs: enable_hpd() and
disable_hpd(). Make drm_kms_helper_poll_* functions call them (as this
is the time where the drm_bridge_connector's functions are called by the
drivers too).

Dmitry Baryshkov (7):
  drm/poll-helper: merge drm_kms_helper_poll_disable() and _fini()
  drm/probe-helper: enable and disable HPD on connectors
  drm/bridge_connector: rely on drm_kms_helper_poll_* for HPD enablement
  drm/imx/dcss: stop using drm_bridge_connector_en/disable_hpd()
  drm/msm/hdmi: stop using drm_bridge_connector_en/disable_hpd()
  drm/omap: stop using drm_bridge_connector_en/disable_hpd()
  drm/bridge_connector: drop drm_bridge_connector_en/disable_hpd()

 drivers/gpu/drm/drm_bridge_connector.c   | 23 +++----------
 drivers/gpu/drm/drm_probe_helper.c       | 40 ++++++++++++++++++-----
 drivers/gpu/drm/imx/dcss/dcss-dev.c      |  4 ---
 drivers/gpu/drm/imx/dcss/dcss-kms.c      |  4 ---
 drivers/gpu/drm/msm/hdmi/hdmi.c          |  2 --
 drivers/gpu/drm/omapdrm/omap_drv.c       | 41 ------------------------
 include/drm/drm_bridge_connector.h       |  2 --
 include/drm/drm_modeset_helper_vtables.h | 22 +++++++++++++
 8 files changed, 58 insertions(+), 80 deletions(-)

Comments

Dmitry Baryshkov May 12, 2022, 11:41 a.m. UTC | #1
On 29/04/2022 21:51, Dmitry Baryshkov wrote:
>  From all the drivers using drm_bridge_connector only iMX/dcss and OMAP
> DRM driver do a proper work of calling
> drm_bridge_connector_en/disable_hpd() in right places. Rather than
> teaching each and every driver how to properly handle
> drm_bridge_connector's HPD, make that automatic.
> 
> Add two additional drm_connector helper funcs: enable_hpd() and
> disable_hpd(). Make drm_kms_helper_poll_* functions call them (as this
> is the time where the drm_bridge_connector's functions are called by the
> drivers too).

Gracious ping regarding this series. It went for two weeks w/o review.

Few additional points 'pro':
- It makes it possible to handle hpd enablement in cases where the 
driver uses a mixture of drm_bridge_connector and old connectors (msm)
- It makes it possible for other connectors to also implement dynamic 
hpd enablement/disablement in a standard way

> 
> Dmitry Baryshkov (7):
>    drm/poll-helper: merge drm_kms_helper_poll_disable() and _fini()
>    drm/probe-helper: enable and disable HPD on connectors
>    drm/bridge_connector: rely on drm_kms_helper_poll_* for HPD enablement
>    drm/imx/dcss: stop using drm_bridge_connector_en/disable_hpd()
>    drm/msm/hdmi: stop using drm_bridge_connector_en/disable_hpd()
>    drm/omap: stop using drm_bridge_connector_en/disable_hpd()
>    drm/bridge_connector: drop drm_bridge_connector_en/disable_hpd()
> 
>   drivers/gpu/drm/drm_bridge_connector.c   | 23 +++----------
>   drivers/gpu/drm/drm_probe_helper.c       | 40 ++++++++++++++++++-----
>   drivers/gpu/drm/imx/dcss/dcss-dev.c      |  4 ---
>   drivers/gpu/drm/imx/dcss/dcss-kms.c      |  4 ---
>   drivers/gpu/drm/msm/hdmi/hdmi.c          |  2 --
>   drivers/gpu/drm/omapdrm/omap_drv.c       | 41 ------------------------
>   include/drm/drm_bridge_connector.h       |  2 --
>   include/drm/drm_modeset_helper_vtables.h | 22 +++++++++++++
>   8 files changed, 58 insertions(+), 80 deletions(-)
>
Tomi Valkeinen Sept. 12, 2022, 8:51 a.m. UTC | #2
Hi,

On 29/04/2022 21:51, Dmitry Baryshkov wrote:
>  From all the drivers using drm_bridge_connector only iMX/dcss and OMAP
> DRM driver do a proper work of calling
> drm_bridge_connector_en/disable_hpd() in right places. Rather than
> teaching each and every driver how to properly handle
> drm_bridge_connector's HPD, make that automatic.
> 
> Add two additional drm_connector helper funcs: enable_hpd() and
> disable_hpd(). Make drm_kms_helper_poll_* functions call them (as this
> is the time where the drm_bridge_connector's functions are called by the
> drivers too).

09077bc3116581f4d1cb961ec359ad56586e370b ("drm/bridge_connector: enable 
HPD by default if supported") was merged in March, but I think that one 
is  bit broken 
(https://lore.kernel.org/all/a28a4858-c66a-6737-a9fc-502f591ba2d5@ideasonboard.com/). 
To get omapdrm work without WARNs we could just revert that commit, but 
I think this series makes things cleaner.

There's one small problem with this series: in drm_bridge_connector.c 
the drm_bridge_hpd_disable() function is called from 
_drm_bridge_connector_disable_hpd() and from 
drm_bridge_connector_destroy(). This causes two hpd_disable calls when 
removing the driver modules. I think the call from 
drm_bridge_connector_destroy() could be removed, as 
_drm_bridge_connector_disable_hpd() should always get called when 
removing the drivers.

Dmitry, are you still interested in this series? Can you rebase on top 
of current upstream, and revert 09077bc3116581f4d1cb961ec359ad56586e370b 
first?

  Tomi
Dmitry Baryshkov Sept. 12, 2022, 9:46 a.m. UTC | #3
On Mon, 12 Sept 2022 at 11:51, Tomi Valkeinen
<tomi.valkeinen@ideasonboard.com> wrote:
>
> Hi,
>
> On 29/04/2022 21:51, Dmitry Baryshkov wrote:
> >  From all the drivers using drm_bridge_connector only iMX/dcss and OMAP
> > DRM driver do a proper work of calling
> > drm_bridge_connector_en/disable_hpd() in right places. Rather than
> > teaching each and every driver how to properly handle
> > drm_bridge_connector's HPD, make that automatic.
> >
> > Add two additional drm_connector helper funcs: enable_hpd() and
> > disable_hpd(). Make drm_kms_helper_poll_* functions call them (as this
> > is the time where the drm_bridge_connector's functions are called by the
> > drivers too).
>
> 09077bc3116581f4d1cb961ec359ad56586e370b ("drm/bridge_connector: enable
> HPD by default if supported") was merged in March, but I think that one
> is  bit broken
> (https://lore.kernel.org/all/a28a4858-c66a-6737-a9fc-502f591ba2d5@ideasonboard.com/).
> To get omapdrm work without WARNs we could just revert that commit, but
> I think this series makes things cleaner.
>
> There's one small problem with this series: in drm_bridge_connector.c
> the drm_bridge_hpd_disable() function is called from
> _drm_bridge_connector_disable_hpd() and from
> drm_bridge_connector_destroy(). This causes two hpd_disable calls when
> removing the driver modules. I think the call from
> drm_bridge_connector_destroy() could be removed, as
> _drm_bridge_connector_disable_hpd() should always get called when
> removing the drivers.
>
> Dmitry, are you still interested in this series? Can you rebase on top
> of current upstream, and revert 09077bc3116581f4d1cb961ec359ad56586e370b
> first?

Hi, I've been a bit reluctant to continue this work after the
mentioned commit got merged. However of course I can update & resend
this patch series.