aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c8
-rw-r--r--include/drm/drm_crtc.h2
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;