diff options
-rw-r--r-- | drivers/gpu/drm/drm_crtc_helper.c | 8 | ||||
-rw-r--r-- | include/drm/drm_crtc.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index c722c3b5404d..4280e37f34c5 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c | |||
@@ -76,7 +76,8 @@ static void drm_mode_validate_flag(struct drm_connector *connector, | |||
76 | { | 76 | { |
77 | struct drm_display_mode *mode; | 77 | struct drm_display_mode *mode; |
78 | 78 | ||
79 | if (flags == (DRM_MODE_FLAG_DBLSCAN | DRM_MODE_FLAG_INTERLACE)) | 79 | if (flags == (DRM_MODE_FLAG_DBLSCAN | DRM_MODE_FLAG_INTERLACE | |
80 | DRM_MODE_FLAG_3D_MASK)) | ||
80 | return; | 81 | return; |
81 | 82 | ||
82 | list_for_each_entry(mode, &connector->modes, head) { | 83 | list_for_each_entry(mode, &connector->modes, head) { |
@@ -86,6 +87,9 @@ static void drm_mode_validate_flag(struct drm_connector *connector, | |||
86 | if ((mode->flags & DRM_MODE_FLAG_DBLSCAN) && | 87 | if ((mode->flags & DRM_MODE_FLAG_DBLSCAN) && |
87 | !(flags & DRM_MODE_FLAG_DBLSCAN)) | 88 | !(flags & DRM_MODE_FLAG_DBLSCAN)) |
88 | mode->status = MODE_NO_DBLESCAN; | 89 | mode->status = MODE_NO_DBLESCAN; |
90 | if ((mode->flags & DRM_MODE_FLAG_3D_MASK) && | ||
91 | !(flags & DRM_MODE_FLAG_3D_MASK)) | ||
92 | mode->status = MODE_NO_STEREO; | ||
89 | } | 93 | } |
90 | 94 | ||
91 | return; | 95 | return; |
@@ -175,6 +179,8 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector, | |||
175 | mode_flags |= DRM_MODE_FLAG_INTERLACE; | 179 | mode_flags |= DRM_MODE_FLAG_INTERLACE; |
176 | if (connector->doublescan_allowed) | 180 | if (connector->doublescan_allowed) |
177 | mode_flags |= DRM_MODE_FLAG_DBLSCAN; | 181 | mode_flags |= DRM_MODE_FLAG_DBLSCAN; |
182 | if (connector->stereo_allowed) | ||
183 | mode_flags |= DRM_MODE_FLAG_3D_MASK; | ||
178 | drm_mode_validate_flag(connector, mode_flags); | 184 | drm_mode_validate_flag(connector, mode_flags); |
179 | 185 | ||
180 | list_for_each_entry(mode, &connector->modes, head) { | 186 | list_for_each_entry(mode, &connector->modes, head) { |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 6b7f9c766b4e..1b69407f3f0f 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -108,6 +108,7 @@ enum drm_mode_status { | |||
108 | MODE_ONE_HEIGHT, /* only one height is supported */ | 108 | MODE_ONE_HEIGHT, /* only one height is supported */ |
109 | MODE_ONE_SIZE, /* only one resolution is supported */ | 109 | MODE_ONE_SIZE, /* only one resolution is supported */ |
110 | MODE_NO_REDUCED, /* monitor doesn't accept reduced blanking */ | 110 | MODE_NO_REDUCED, /* monitor doesn't accept reduced blanking */ |
111 | MODE_NO_STEREO, /* stereo modes not supported */ | ||
111 | MODE_UNVERIFIED = -3, /* mode needs to reverified */ | 112 | MODE_UNVERIFIED = -3, /* mode needs to reverified */ |
112 | MODE_BAD = -2, /* unspecified reason */ | 113 | MODE_BAD = -2, /* unspecified reason */ |
113 | MODE_ERROR = -1 /* error condition */ | 114 | MODE_ERROR = -1 /* error condition */ |
@@ -611,6 +612,7 @@ struct drm_connector { | |||
611 | int connector_type_id; | 612 | int connector_type_id; |
612 | bool interlace_allowed; | 613 | bool interlace_allowed; |
613 | bool doublescan_allowed; | 614 | bool doublescan_allowed; |
615 | bool stereo_allowed; | ||
614 | struct list_head modes; /* list of modes on this connector */ | 616 | struct list_head modes; /* list of modes on this connector */ |
615 | 617 | ||
616 | enum drm_connector_status status; | 618 | enum drm_connector_status status; |