Skip to content

Commit

Permalink
drm/nv50: prevent switching off SOR when in use for DVI-over-DP
Browse files Browse the repository at this point in the history
Another hack because of us exposing each encoder block's function as
an encoder rather than exposing a single encoder that deals with them
all.

A proper fix will come, it's just rather invasive so this hack will
do until then.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
  • Loading branch information
Ben Skeggs committed Jan 25, 2010
1 parent 0107bae commit 1622653
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions drivers/gpu/drm/nouveau/nv50_sor.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,24 @@ nv50_sor_dpms(struct drm_encoder *encoder, int mode)
{
struct drm_device *dev = encoder->dev;
struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
struct drm_encoder *enc;
uint32_t val;
int or = nv_encoder->or;

NV_DEBUG_KMS(dev, "or %d mode %d\n", or, mode);

nv_encoder->last_dpms = mode;
list_for_each_entry(enc, &dev->mode_config.encoder_list, head) {
struct nouveau_encoder *nvenc = nouveau_encoder(enc);

if (nvenc == nv_encoder ||
nvenc->dcb->or != nv_encoder->dcb->or)
continue;

if (nvenc->last_dpms == DRM_MODE_DPMS_ON)
return;
}

/* wait for it to be done */
if (!nv_wait(NV50_PDISPLAY_SOR_DPMS_CTRL(or),
NV50_PDISPLAY_SOR_DPMS_CTRL_PENDING, 0)) {
Expand Down

0 comments on commit 1622653

Please sign in to comment.