[PATCH RFC 00/19] drm: Add support for bus-format negotiation
Boris Brezillon
boris.brezillon at collabora.com
Thu Aug 8 15:11:31 UTC 2019
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
More information about the dri-devel
mailing list