diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2012-11-08 12:01:39 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2012-11-29 09:57:46 +1000 |
commit | 74b6685089591fa275929109f7b839bf386890a0 (patch) | |
tree | 20edc1d18fbeb8c22d918083e9a39e771beb614a /drivers/gpu/drm/nouveau/nvd0_display.c | |
parent | 6c5a04249d7afeea3e0ed971e7813f84e29a1706 (diff) | |
download | op-kernel-dev-74b6685089591fa275929109f7b839bf386890a0.zip op-kernel-dev-74b6685089591fa275929109f7b839bf386890a0.tar.gz |
drm/nvd0/disp: call into core to handle sor power state changes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvd0_display.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvd0_display.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/drivers/gpu/drm/nouveau/nvd0_display.c b/drivers/gpu/drm/nouveau/nvd0_display.c index 39ceff2..ea1ae0d 100644 --- a/drivers/gpu/drm/nouveau/nvd0_display.c +++ b/drivers/gpu/drm/nouveau/nvd0_display.c @@ -1434,10 +1434,9 @@ nvd0_sor_dpms(struct drm_encoder *encoder, int mode) { struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); struct drm_device *dev = encoder->dev; - struct nouveau_device *device = nouveau_dev(dev); + struct nvd0_disp *disp = nvd0_disp(dev); struct drm_encoder *partner; int or = nv_encoder->or; - u32 dpms_ctrl; nv_encoder->last_dpms = mode; @@ -1455,13 +1454,7 @@ nvd0_sor_dpms(struct drm_encoder *encoder, int mode) } } - dpms_ctrl = (mode == DRM_MODE_DPMS_ON); - dpms_ctrl |= 0x80000000; - - nv_wait(device, 0x61c004 + (or * 0x0800), 0x80000000, 0x00000000); - nv_mask(device, 0x61c004 + (or * 0x0800), 0x80000001, dpms_ctrl); - nv_wait(device, 0x61c004 + (or * 0x0800), 0x80000000, 0x00000000); - nv_wait(device, 0x61c030 + (or * 0x0800), 0x10000000, 0x00000000); + nv_call(disp->core, NV50_DISP_SOR_PWR + or, (mode == DRM_MODE_DPMS_ON)); if (nv_encoder->dcb->type == DCB_OUTPUT_DP) { struct dp_train_func func = { |