Browse Source

drm/nouveau/kms: prepare to support legacy connector dpms with atomic

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs 8 years ago
parent
commit
b2b75eea57
1 changed files with 14 additions and 3 deletions
  1. 14 3
      drivers/gpu/drm/nouveau/nouveau_connector.c

+ 14 - 3
drivers/gpu/drm/nouveau/nouveau_connector.c

@@ -1074,9 +1074,17 @@ nouveau_connector_helper_funcs = {
 	.best_encoder = nouveau_connector_best_encoder,
 	.best_encoder = nouveau_connector_best_encoder,
 };
 };
 
 
+static int
+nouveau_connector_dpms(struct drm_connector *connector, int mode)
+{
+	if (connector->dev->mode_config.funcs->atomic_commit)
+		return drm_atomic_helper_connector_dpms(connector, mode);
+	return drm_helper_connector_dpms(connector, mode);
+}
+
 static const struct drm_connector_funcs
 static const struct drm_connector_funcs
 nouveau_connector_funcs = {
 nouveau_connector_funcs = {
-	.dpms = drm_helper_connector_dpms,
+	.dpms = nouveau_connector_dpms,
 	.reset = nouveau_conn_reset,
 	.reset = nouveau_conn_reset,
 	.detect = nouveau_connector_detect,
 	.detect = nouveau_connector_detect,
 	.force = nouveau_connector_force,
 	.force = nouveau_connector_force,
@@ -1091,7 +1099,7 @@ nouveau_connector_funcs = {
 
 
 static const struct drm_connector_funcs
 static const struct drm_connector_funcs
 nouveau_connector_funcs_lvds = {
 nouveau_connector_funcs_lvds = {
-	.dpms = drm_helper_connector_dpms,
+	.dpms = nouveau_connector_dpms,
 	.reset = nouveau_conn_reset,
 	.reset = nouveau_conn_reset,
 	.detect = nouveau_connector_detect_lvds,
 	.detect = nouveau_connector_detect_lvds,
 	.force = nouveau_connector_force,
 	.force = nouveau_connector_force,
@@ -1335,7 +1343,10 @@ nouveau_connector_create(struct drm_device *dev, int index)
 			return ERR_PTR(ret);
 			return ERR_PTR(ret);
 		}
 		}
 
 
-		funcs = &nouveau_connector_funcs_dp;
+		if (dev->mode_config.funcs->atomic_commit)
+			funcs = &nouveau_connector_funcs;
+		else
+			funcs = &nouveau_connector_funcs_dp;
 		break;
 		break;
 	default:
 	default:
 		funcs = &nouveau_connector_funcs;
 		funcs = &nouveau_connector_funcs;