summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvd0_display.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2012-11-08 12:01:39 +1000
committerBen Skeggs <bskeggs@redhat.com>2012-11-29 09:57:46 +1000
commit74b6685089591fa275929109f7b839bf386890a0 (patch)
tree20edc1d18fbeb8c22d918083e9a39e771beb614a /drivers/gpu/drm/nouveau/nvd0_display.c
parent6c5a04249d7afeea3e0ed971e7813f84e29a1706 (diff)
downloadop-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.c11
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 = {
OpenPOWER on IntegriCloud