summaryrefslogtreecommitdiff
path: root/linux-core
diff options
context:
space:
mode:
authorDave Airlie <airlied@panoply-rh.(none)>2008-03-11 11:49:27 +1000
committerDave Airlie <airlied@panoply-rh.(none)>2008-03-11 13:23:33 +1000
commit52748d17923b7e501b707b950227864c0b64d8a1 (patch)
tree6c726bc83b2c5b00bd844416cc30f3627bcfcee6 /linux-core
parenta7e6ca62ad0d9c3c45fd9e1d81b59c2db2d714cf (diff)
drm: hopefully fix cursors on 965
Diffstat (limited to 'linux-core')
-rw-r--r--linux-core/intel_display.c18
-rw-r--r--linux-core/intel_drv.h2
2 files changed, 12 insertions, 8 deletions
diff --git a/linux-core/intel_display.c b/linux-core/intel_display.c
index 4b48a0b2..fa2b9bea 100644
--- a/linux-core/intel_display.c
+++ b/linux-core/intel_display.c
@@ -1007,7 +1007,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
uint32_t control = (pipe == 0) ? CURSOR_A_CONTROL : CURSOR_B_CONTROL;
uint32_t base = (pipe == 0) ? CURSOR_A_BASE : CURSOR_B_BASE;
uint32_t temp;
- size_t adder;
+ size_t addr;
DRM_DEBUG("\n");
@@ -1039,17 +1039,21 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
return -ENOMEM;
}
- adder = dev_priv->stolen_base + bo->offset;
- intel_crtc->cursor_adder = adder;
+ if (dev_priv->cursor_needs_physical)
+ addr = dev_priv->stolen_base + bo->offset;
+ else
+ addr = bo->offset;
+
+ intel_crtc->cursor_addr = addr;
temp = 0;
/* set the pipe for the cursor */
temp |= (pipe << 28);
temp |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE;
- DRM_DEBUG("cusror base %x\n", adder);
+ DRM_DEBUG("cusror base %x\n", addr);
I915_WRITE(control, temp);
- I915_WRITE(base, adder);
+ I915_WRITE(base, addr);
return 0;
}
@@ -1075,7 +1079,7 @@ static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
temp |= ((x & CURSOR_POS_MASK) << CURSOR_X_SHIFT);
temp |= ((y & CURSOR_POS_MASK) << CURSOR_Y_SHIFT);
- adder = intel_crtc->cursor_adder;
+ adder = intel_crtc->cursor_addr;
I915_WRITE((pipe == 0) ? CURSOR_A_POSITION : CURSOR_B_POSITION, temp);
I915_WRITE((pipe == 0) ? CURSOR_A_BASE : CURSOR_B_BASE, adder);
@@ -1241,7 +1245,7 @@ void intel_crtc_init(struct drm_device *dev, int pipe)
intel_crtc->lut_b[i] = i;
}
- intel_crtc->cursor_adder = 0;
+ intel_crtc->cursor_addr = 0;
crtc->driver_private = intel_crtc;
}
diff --git a/linux-core/intel_drv.h b/linux-core/intel_drv.h
index 72ba01da..a36fd3f1 100644
--- a/linux-core/intel_drv.h
+++ b/linux-core/intel_drv.h
@@ -56,7 +56,7 @@ struct intel_output {
struct intel_crtc {
int pipe;
int plane;
- uint32_t cursor_adder;
+ uint32_t cursor_addr;
u8 lut_r[256], lut_g[256], lut_b[256];
};