All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC 00/19] drm: Add support for bus-format negotiation
@ 2019-08-08 15:11 Boris Brezillon
  2019-08-08 15:11 ` [PATCH RFC 01/19] drm: Stop including drm_bridge.h from drm_crtc.h Boris Brezillon
                   ` (19 more replies)
  0 siblings, 20 replies; 58+ messages in thread
From: Boris Brezillon @ 2019-08-08 15:11 UTC (permalink / raw)
  To: dri-devel
  Cc: Jernej Skrabec, Laurent Pinchart, Neil Armstrong, Jonas Karlman,
	Seung-Woo Kim, Kyungmin Park, Thierry Reding, Chris Healy,
	Boris Brezillon, kernel, Sam Ravnborg

Hello,

This patch series aims at adding support for runtime bus-format
negotiation between all elements of the
'encoder -> bridges -> connector/display' section of the pipeline.

In order to support that, we need drm bridges to fully take part in the
atomic state validation process, which requires addition of a
drm_bridge_state + a new drm_bridge_funcs.atomic_check() hook (patches
10 - 12).
Once those basic building blocks are in place, we can add new helpers
to facilitate bus-format negotiation between element of the encoder
chain (patches 13 - 14).

Patches 1 to 9 are preparatory patches for patches 10 - 14. Patch 1 is
needed to allow inclusion of drm_atomic.h from drm_bridge.h, which we
need to make drm_bridge/drm_bridge_state inherit from
drm_private_obj/drm_private_obj_state.
Patches 2 to 9 are about transitioning the bridge chain to a
double-linked list, which is needed to allow bridge elements to
negotiate with the next and prev element in the pipeline.
Most of those patches can be applied independently of the rest of the
series, especially patches 2 - 7 which I think fix some misuses of the
drm_bridge API.

To finish, patches 15 - 17 demonstrate how bus-format negotiation can
be done, and patches 18 - 19 were needed for the use case I used to test
whole solution.

As you've noticed, this is an RFC, so any kind of feedback is welcome
(apart from checkpatch reports :P).

Thanks,

Boris

Boris Brezillon (19):
  drm: Stop including drm_bridge.h from drm_crtc.h
  drm: Support custom encoder/bridge enable/disable sequences officially
  drm/vc4: Get rid of the dsi->bridge field
  drm/exynos: Get rid of exynos_dsi->out_bridge
  drm/exynos: Don't reset bridge->next
  drm/bridge: Create drm_bridge_chain_xx() wrappers
  drm/msm: Use drm_attach_bridge() to attach a bridge to an encoder
  drm/bridge: Introduce drm_bridge_chain_get_{first,last,next}_bridge()
  drm/bridge: Make the bridge chain a double-linked list
  drm/bridge: Add a drm_bridge_state object
  drm/bridge: Patch atomic hooks to take a drm_bridge_state
  drm/bridge: Add an ->atomic_check() hook
  drm/bridge: Add the drm_bridge_chain_get_prev_bridge() helper
  drm/bridge: Add the necessary bits to support bus format negotiation
  drm/imx: pd: Use bus format/flags provided by the bridge when
    available
  drm/bridge: lvds-encoder: Add a way to support custom ->atomic_check()
    implem
  drm/bridge: lvds-encoder: Implement bus format negotiation for
    sn75lvds83
  drm/panel: simple: Add support for Toshiba LTA089AC29000 panel
  ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition

 .../display/panel/toshiba,lt089ac29000.txt    |   5 +-
 arch/arm/boot/dts/imx51-zii-rdu1.dts          |  24 +-
 drivers/gpu/drm/arc/arcpgu_hdmi.c             |   1 +
 drivers/gpu/drm/bridge/analogix-anx78xx.c     |   1 +
 .../drm/bridge/analogix/analogix_dp_core.c    |  13 +-
 drivers/gpu/drm/bridge/dumb-vga-dac.c         |   1 +
 drivers/gpu/drm/bridge/lvds-encoder.c         |  75 ++
 .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c  |   1 +
 drivers/gpu/drm/bridge/nxp-ptn3460.c          |   1 +
 drivers/gpu/drm/bridge/panel.c                |   1 +
 drivers/gpu/drm/bridge/parade-ps8622.c        |   1 +
 drivers/gpu/drm/bridge/sii902x.c              |   1 +
 drivers/gpu/drm/bridge/sii9234.c              |   1 +
 drivers/gpu/drm/bridge/sil-sii8620.c          |   1 +
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c     |   1 +
 drivers/gpu/drm/bridge/tc358764.c             |   1 +
 drivers/gpu/drm/bridge/tc358767.c             |   1 +
 drivers/gpu/drm/bridge/ti-sn65dsi86.c         |   1 +
 drivers/gpu/drm/bridge/ti-tfp410.c            |   1 +
 drivers/gpu/drm/drm_atomic.c                  |  40 +
 drivers/gpu/drm/drm_atomic_helper.c           |  46 +-
 drivers/gpu/drm/drm_bridge.c                  | 794 ++++++++++++++----
 drivers/gpu/drm/drm_crtc_helper.c             |  46 +-
 drivers/gpu/drm/drm_encoder.c                 |  16 +-
 drivers/gpu/drm/drm_probe_helper.c            |   3 +-
 drivers/gpu/drm/drm_simple_kms_helper.c       |   1 +
 drivers/gpu/drm/exynos/exynos_dp.c            |   2 +-
 drivers/gpu/drm/exynos/exynos_drm_dsi.c       |  18 +-
 drivers/gpu/drm/exynos/exynos_drm_mic.c       |   1 +
 drivers/gpu/drm/exynos/exynos_hdmi.c          |   1 +
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c     |   1 +
 drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c  |   1 +
 drivers/gpu/drm/i2c/tda998x_drv.c             |   1 +
 drivers/gpu/drm/imx/imx-ldb.c                 |   1 +
 drivers/gpu/drm/imx/parallel-display.c        |  29 +-
 drivers/gpu/drm/ingenic/ingenic-drm.c         |   1 +
 drivers/gpu/drm/mediatek/mtk_dpi.c            |   1 +
 drivers/gpu/drm/mediatek/mtk_dsi.c            |   1 +
 drivers/gpu/drm/mediatek/mtk_hdmi.c           |   7 +-
 drivers/gpu/drm/msm/dsi/dsi.h                 |   1 +
 drivers/gpu/drm/msm/edp/edp.c                 |   4 +-
 drivers/gpu/drm/msm/edp/edp.h                 |   1 +
 drivers/gpu/drm/msm/edp/edp_bridge.c          |   2 +-
 drivers/gpu/drm/msm/hdmi/hdmi.c               |   4 +-
 drivers/gpu/drm/msm/hdmi/hdmi.h               |   2 +
 drivers/gpu/drm/omapdrm/dss/output.c          |   1 +
 drivers/gpu/drm/omapdrm/omap_drv.c            |   8 +-
 drivers/gpu/drm/omapdrm/omap_encoder.c        |   4 +-
 drivers/gpu/drm/panel/panel-simple.c          |  36 +
 drivers/gpu/drm/rcar-du/rcar_du_crtc.c        |  10 +-
 drivers/gpu/drm/rcar-du/rcar_du_encoder.c     |   1 +
 drivers/gpu/drm/rockchip/rockchip_lvds.c      |   1 +
 drivers/gpu/drm/rockchip/rockchip_rgb.c       |   1 +
 drivers/gpu/drm/sti/sti_dvo.c                 |   1 +
 drivers/gpu/drm/sti/sti_hda.c                 |   1 +
 drivers/gpu/drm/sti/sti_hdmi.c                |   1 +
 drivers/gpu/drm/sun4i/sun4i_lvds.c            |   1 +
 drivers/gpu/drm/sun4i/sun4i_rgb.c             |   1 +
 drivers/gpu/drm/sun4i/sun4i_tcon.c            |   1 +
 drivers/gpu/drm/tilcdc/tilcdc_external.c      |   1 +
 drivers/gpu/drm/vc4/vc4_dsi.c                 |  38 +-
 include/drm/drm_atomic.h                      |   3 +
 include/drm/drm_bridge.h                      | 252 +++++-
 include/drm/drm_crtc.h                        |   1 -
 include/drm/drm_encoder.h                     |  19 +-
 65 files changed, 1242 insertions(+), 297 deletions(-)

-- 
2.21.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, other threads:[~2019-12-02 15:52 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-08 15:11 [PATCH RFC 00/19] drm: Add support for bus-format negotiation Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 01/19] drm: Stop including drm_bridge.h from drm_crtc.h Boris Brezillon
2019-08-08 18:05   ` Sam Ravnborg
2019-08-20 18:53   ` Laurent Pinchart
2019-08-21 15:44     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 02/19] drm: Support custom encoder/bridge enable/disable sequences officially Boris Brezillon
2019-08-20 19:05   ` Laurent Pinchart
2019-08-21  8:21     ` Daniel Vetter
2019-08-21 13:57       ` Laurent Pinchart
2019-08-21 15:39       ` Boris Brezillon
2019-08-21 15:30     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 03/19] drm/vc4: Get rid of the dsi->bridge field Boris Brezillon
2019-08-08 20:31   ` Eric Anholt
2019-08-08 15:11 ` [PATCH RFC 04/19] drm/exynos: Get rid of exynos_dsi->out_bridge Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 05/19] drm/exynos: Don't reset bridge->next Boris Brezillon
2019-08-08 21:04   ` Boris Brezillon
2019-08-21 14:01   ` Laurent Pinchart
2019-08-08 15:11 ` [PATCH RFC 06/19] drm/bridge: Create drm_bridge_chain_xx() wrappers Boris Brezillon
2019-08-21 14:45   ` Laurent Pinchart
2019-08-21 15:53     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 07/19] drm/msm: Use drm_attach_bridge() to attach a bridge to an encoder Boris Brezillon
2019-08-19 17:19   ` Sam Ravnborg
2019-08-21 14:46     ` Laurent Pinchart
2019-08-08 15:11 ` [PATCH RFC 08/19] drm/bridge: Introduce drm_bridge_chain_get_{first, last, next}_bridge() Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 09/19] drm/bridge: Make the bridge chain a double-linked list Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 10/19] drm/bridge: Add a drm_bridge_state object Boris Brezillon
2019-08-21 20:14   ` Laurent Pinchart
2019-08-22  9:00     ` Boris Brezillon
2019-12-02 15:52       ` Laurent Pinchart
2019-08-08 15:11 ` [PATCH RFC 11/19] drm/bridge: Patch atomic hooks to take a drm_bridge_state Boris Brezillon
2019-08-22  0:02   ` Laurent Pinchart
2019-08-22  8:25     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 12/19] drm/bridge: Add an ->atomic_check() hook Boris Brezillon
2019-08-22  0:12   ` Laurent Pinchart
2019-08-22  7:58     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 13/19] drm/bridge: Add the drm_bridge_chain_get_prev_bridge() helper Boris Brezillon
2019-08-22  0:17   ` Laurent Pinchart
2019-08-22  8:04     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 14/19] drm/bridge: Add the necessary bits to support bus format negotiation Boris Brezillon
2019-08-14  7:51   ` Neil Armstrong
2019-08-21 18:31     ` Boris Brezillon
2019-08-22  0:55   ` Laurent Pinchart
2019-08-22  7:48     ` Boris Brezillon
2019-08-22  9:29       ` Neil Armstrong
2019-08-22 10:09         ` Boris Brezillon
2019-08-22 10:22           ` Neil Armstrong
2019-08-22 10:34             ` Boris Brezillon
2019-08-22 11:30               ` Neil Armstrong
2019-08-08 15:11 ` [PATCH RFC 15/19] drm/imx: pd: Use bus format/flags provided by the bridge when available Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 16/19] drm/bridge: lvds-encoder: Add a way to support custom ->atomic_check() implem Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 17/19] drm/bridge: lvds-encoder: Implement bus format negotiation for sn75lvds83 Boris Brezillon
2019-08-22  0:32   ` Laurent Pinchart
2019-08-22  8:12     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 18/19] drm/panel: simple: Add support for Toshiba LTA089AC29000 panel Boris Brezillon
2019-08-22  0:36   ` Laurent Pinchart
2019-08-22  8:15     ` Boris Brezillon
2019-08-08 15:11 ` [PATCH RFC 19/19] ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition Boris Brezillon
2019-08-09  6:58 ` [PATCH RFC 00/19] drm: Add support for bus-format negotiation Neil Armstrong

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.