drm/client: Don't add new command-line mode
Don't add a mode for the kernel's command-line parameters from within the DRM client code. Doing so can result in an unusable display. If there's no compatible command-line mode, the client will use one of the connector's preferred modes. All mode creation and validation has to be performed by the connector. When clients run, the connector's fill_modes callback has already processed the kernel parameters and validated each mode before adding it. The connector's mode list does not contain invalid modes. v2: * grammar in commit message (Javier) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Maxime Ripard <maxime@cerno.tech> Link: https://patchwork.freedesktop.org/patch/msgid/20220511183125.14294-4-tzimmermann@suse.de
This commit is contained in:
parent
b959eb4f5b
commit
0facdaa249
|
@ -158,8 +158,7 @@ drm_connector_has_preferred_mode(struct drm_connector *connector, int width, int
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static struct drm_display_mode *
|
||||
drm_connector_pick_cmdline_mode(struct drm_connector *connector)
|
||||
static struct drm_display_mode *drm_connector_pick_cmdline_mode(struct drm_connector *connector)
|
||||
{
|
||||
struct drm_cmdline_mode *cmdline_mode;
|
||||
struct drm_display_mode *mode;
|
||||
|
@ -180,11 +179,10 @@ drm_connector_pick_cmdline_mode(struct drm_connector *connector)
|
|||
if (cmdline_mode->specified == false)
|
||||
return NULL;
|
||||
|
||||
/* attempt to find a matching mode in the list of modes
|
||||
* we have gotten so far, if not add a CVT mode that conforms
|
||||
/*
|
||||
* Attempt to find a matching mode in the list of modes we
|
||||
* have gotten so far.
|
||||
*/
|
||||
if (cmdline_mode->rb || cmdline_mode->margins)
|
||||
goto create_mode;
|
||||
|
||||
prefer_non_interlace = !cmdline_mode->interlace;
|
||||
again:
|
||||
|
@ -218,12 +216,7 @@ again:
|
|||
goto again;
|
||||
}
|
||||
|
||||
create_mode:
|
||||
mode = drm_mode_create_from_cmdline_mode(connector->dev, cmdline_mode);
|
||||
if (mode)
|
||||
list_add(&mode->head, &connector->modes);
|
||||
|
||||
return mode;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static bool drm_connector_enabled(struct drm_connector *connector, bool strict)
|
||||
|
|
Loading…
Reference in New Issue