diff options
| author | Boris Brezillon <boris.brezillon@free-electrons.com> | 2016-04-15 12:23:33 -0400 |
|---|---|---|
| committer | Thierry Reding <treding@nvidia.com> | 2016-05-12 05:32:14 -0400 |
| commit | cda553725c92b9f908f6f69e9bc05de81384d817 (patch) | |
| tree | a35ed614be92e6b02d51d97bbb4bbc29374ab44a /drivers/gpu/drm/panel | |
| parent | cf5c9e6dc70d9d8af00ea45b4ebd67e1fc35764e (diff) | |
drm/panel: simple: Set appropriate mode type
All modes exposed by simple panels should be tagged as driver defined
modes. Moreover, if a panel supports only one mode, this mode is
obviously the preferred one.
Doing this also fix a problem occurring when a 'video=' parameter is
passed on the kernel command line. In some cases the user provided mode
will be preferred over the simple panel ones, which might result in
unpredictable behavior.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reviewed-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Tested-by: Nicolas Ferre <nicolas.ferre@atmel.com>
[treding@nvidia.com: reshuffle some code for consistency]
Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'drivers/gpu/drm/panel')
| -rw-r--r-- | drivers/gpu/drm/panel/panel-simple.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 847abee5ea36..a6d8a5dda424 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c | |||
| @@ -117,6 +117,12 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel) | |||
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | drm_display_mode_from_videomode(&vm, mode); | 119 | drm_display_mode_from_videomode(&vm, mode); |
| 120 | |||
| 121 | mode->type |= DRM_MODE_TYPE_DRIVER; | ||
| 122 | |||
| 123 | if (panel->desc->num_modes == 1) | ||
| 124 | mode->type |= DRM_MODE_TYPE_PREFERRED; | ||
| 125 | |||
| 120 | drm_mode_set_name(mode); | 126 | drm_mode_set_name(mode); |
| 121 | 127 | ||
| 122 | drm_mode_probed_add(connector, mode); | 128 | drm_mode_probed_add(connector, mode); |
| @@ -133,6 +139,11 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel) | |||
| 133 | continue; | 139 | continue; |
| 134 | } | 140 | } |
| 135 | 141 | ||
| 142 | mode->type |= DRM_MODE_TYPE_DRIVER; | ||
| 143 | |||
| 144 | if (panel->desc->num_modes == 1) | ||
| 145 | mode->type |= DRM_MODE_TYPE_PREFERRED; | ||
| 146 | |||
| 136 | drm_mode_set_name(mode); | 147 | drm_mode_set_name(mode); |
| 137 | 148 | ||
| 138 | drm_mode_probed_add(connector, mode); | 149 | drm_mode_probed_add(connector, mode); |
