[PATCH 0/7] drm/probe-helpers: Work around multi-outputs-per-CRTC problem

Thomas Zimmermann tzimmermann at suse.de
Wed Jul 17 12:54:47 UTC 2024


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(-)
>

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)



More information about the dri-devel mailing list