diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2014-12-22 18:15:55 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2015-01-22 12:14:59 +1000 |
commit | 7d95216e1ca4be5964ce3f1949c07fb87bef0565 (patch) | |
tree | 154cc16ae9ea6026ea8d19d764d1752614f980bc | |
parent | f0d15402a38654a987e5ebb844d06db4a8f98435 (diff) | |
download | linux-7d95216e1ca4be5964ce3f1949c07fb87bef0565.tar.bz2 |
drm/nouveau/kms: untangle connector property logic a little
Should be the same defaults as before, just easier to follow.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_connector.c | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c index 660d0e77ef34..938de24da7dd 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -1197,36 +1197,57 @@ nouveau_connector_create(struct drm_device *dev, int index) disp->color_vibrance_property, 150); + /* default scaling mode */ switch (nv_connector->type) { - case DCB_CONNECTOR_VGA: - if (drm->device.info.family >= NV_DEVICE_INFO_V0_TESLA) { - drm_object_attach_property(&connector->base, - dev->mode_config.scaling_mode_property, - nv_connector->scaling_mode); - } - /* fall-through */ case DCB_CONNECTOR_TV_0: case DCB_CONNECTOR_TV_1: case DCB_CONNECTOR_TV_3: + case DCB_CONNECTOR_VGA: nv_connector->scaling_mode = DRM_MODE_SCALE_NONE; break; default: nv_connector->scaling_mode = DRM_MODE_SCALE_FULLSCREEN; + break; + } - drm_object_attach_property(&connector->base, - dev->mode_config.scaling_mode_property, - nv_connector->scaling_mode); + /* scaling mode property */ + switch (nv_connector->type) { + case DCB_CONNECTOR_TV_0: + case DCB_CONNECTOR_TV_1: + case DCB_CONNECTOR_TV_3: + break; + case DCB_CONNECTOR_VGA: + if (disp->disp.oclass < NV50_DISP) + break; /* can only scale on DFPs */ + /* fall-through */ + default: + drm_object_attach_property(&connector->base, dev->mode_config. + scaling_mode_property, + nv_connector->scaling_mode); + break; + } + + /* dithering properties */ + switch (nv_connector->type) { + case DCB_CONNECTOR_TV_0: + case DCB_CONNECTOR_TV_1: + case DCB_CONNECTOR_TV_3: + case DCB_CONNECTOR_VGA: + break; + default: if (disp->dithering_mode) { - nv_connector->dithering_mode = DITHERING_MODE_AUTO; drm_object_attach_property(&connector->base, - disp->dithering_mode, - nv_connector->dithering_mode); + disp->dithering_mode, + nv_connector-> + dithering_mode); + nv_connector->dithering_mode = DITHERING_MODE_AUTO; } if (disp->dithering_depth) { - nv_connector->dithering_depth = DITHERING_DEPTH_AUTO; drm_object_attach_property(&connector->base, - disp->dithering_depth, - nv_connector->dithering_depth); + disp->dithering_depth, + nv_connector-> + dithering_depth); + nv_connector->dithering_depth = DITHERING_DEPTH_AUTO; } break; } |