Message ID | 20240715093936.793552-1-tzimmermann@suse.de (mailing list archive) |
---|---|
Headers | show |
Series | drm/probe-helpers: Work around multi-outputs-per-CRTC problem | expand |
As discussed on irc, we rather improve the in-kernel DRM client's support for cloned outputs (for fbcon) and then remove the hacks from the ast and mgag200 drivers. Userspace compositors need to support cloned outputs to a minimum. https://dri.freedesktop.org/~cbrill/dri-log/index.php?channel=dri-devel&date=2024-07-17 Best regards Thomas Am 15.07.24 um 11:38 schrieb Thomas Zimmermann: > Old or simple hardware only supports a single CRTC with multiple > conenctoed outputs. This breaks most userspace compositors, which > only support a single output per CRTC. This currently happens with > ast and mgag200 drivers. The drivers contain a work around that > dynamically disables all but one connected output. > > Patches 1 and 2 push the workaround into probe helpers and make it > configurable in the kernel config. For each connector, the driver > needs to specify a bitmask of connectors with higher priority. If > one of them is connected, the connector at hand is always reported > as disconnected. Connectors without priority bitmask as not affected. > > Patches 3 to 5 update and simplify the ast drivers. The new workaround > now allows to have multiple physical conenctors in ast. So patch 5 > finally allows VGA and DisplayPort on the same device. > > Patches 6 and 7 update mgag200. > > Any future driver that exposes the same problem as ast and mgag200 > can simply hook into the workaround. Hopefully userspace can be fixed > at some point. > > Thomas Zimmermann (7): > drm/probe-helper: Call connector detect functions in single helper > drm/probe-helper: Optionally report single connected output per CRTC > drm/ast: Set connector priorities > drm/ast: Remove struct ast_bmc_connector > drm/ast: Support ASTDP and VGA at the same time > drm/mgag200: Set connector priorities > drm/mgag200: Remove struct mgag200_bmc_connector > > drivers/gpu/drm/Kconfig | 15 +++ > drivers/gpu/drm/ast/ast_drv.h | 17 +-- > drivers/gpu/drm/ast/ast_main.c | 2 +- > drivers/gpu/drm/ast/ast_mode.c | 49 ++------ > drivers/gpu/drm/drm_probe_helper.c | 137 +++++++++++++++++++--- > drivers/gpu/drm/mgag200/mgag200_bmc.c | 44 +------ > drivers/gpu/drm/mgag200/mgag200_drv.h | 9 +- > drivers/gpu/drm/mgag200/mgag200_g200eh.c | 4 +- > drivers/gpu/drm/mgag200/mgag200_g200eh3.c | 4 +- > drivers/gpu/drm/mgag200/mgag200_g200er.c | 4 +- > drivers/gpu/drm/mgag200/mgag200_g200ev.c | 4 +- > drivers/gpu/drm/mgag200/mgag200_g200ew3.c | 4 +- > drivers/gpu/drm/mgag200/mgag200_g200se.c | 4 +- > drivers/gpu/drm/mgag200/mgag200_g200wb.c | 4 +- > include/drm/drm_connector.h | 2 + > include/drm/drm_probe_helper.h | 2 + > 16 files changed, 177 insertions(+), 128 deletions(-) >