aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_irq.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-03-30 01:34:13 -0400
committerDave Airlie <airlied@redhat.com>2010-04-06 20:21:03 -0400
commit386516744ba45d50f42c6999151cc210cb4f96e4 (patch)
tree88e3b6aeb83040a8bd512eb7aad087e6c0fcd556 /drivers/gpu/drm/nouveau/nouveau_irq.c
parent643acacf02679befd0f98ac3c5fecb805f1c9548 (diff)
drm/fb: fix fbdev object model + cleanup properly.
The fbdev layer in the kms code should act like a consumer of the kms services and avoid having relying on information being store in the kms core structures in order for it to work. This patch a) removes the info pointer/psuedo palette from the core drm_framebuffer structure and moves it to the fbdev helper layer, it also removes the core drm keeping a list of kernel kms fbdevs. b) migrated all the fb helper functions out of the crtc helper file into the fb helper file. c) pushed the fb probing/hotplug control into the driver d) makes the surface sizes into a structure for ease of passing This changes the intel/radeon/nouveau drivers to use the new helper. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_irq.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_irq.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c
index 2bd59a92fee5..0aa08b3be375 100644
--- a/drivers/gpu/drm/nouveau/nouveau_irq.c
+++ b/drivers/gpu/drm/nouveau/nouveau_irq.c
@@ -1203,7 +1203,7 @@ nouveau_irq_handler(DRM_IRQ_ARGS)
1203{ 1203{
1204 struct drm_device *dev = (struct drm_device *)arg; 1204 struct drm_device *dev = (struct drm_device *)arg;
1205 struct drm_nouveau_private *dev_priv = dev->dev_private; 1205 struct drm_nouveau_private *dev_priv = dev->dev_private;
1206 uint32_t status, fbdev_flags = 0; 1206 uint32_t status;
1207 unsigned long flags; 1207 unsigned long flags;
1208 1208
1209 status = nv_rd32(dev, NV03_PMC_INTR_0); 1209 status = nv_rd32(dev, NV03_PMC_INTR_0);
@@ -1212,11 +1212,6 @@ nouveau_irq_handler(DRM_IRQ_ARGS)
1212 1212
1213 spin_lock_irqsave(&dev_priv->context_switch_lock, flags); 1213 spin_lock_irqsave(&dev_priv->context_switch_lock, flags);
1214 1214
1215 if (dev_priv->fbdev_info) {
1216 fbdev_flags = dev_priv->fbdev_info->flags;
1217 dev_priv->fbdev_info->flags |= FBINFO_HWACCEL_DISABLED;
1218 }
1219
1220 if (status & NV_PMC_INTR_0_PFIFO_PENDING) { 1215 if (status & NV_PMC_INTR_0_PFIFO_PENDING) {
1221 nouveau_fifo_irq_handler(dev); 1216 nouveau_fifo_irq_handler(dev);
1222 status &= ~NV_PMC_INTR_0_PFIFO_PENDING; 1217 status &= ~NV_PMC_INTR_0_PFIFO_PENDING;
@@ -1246,9 +1241,6 @@ nouveau_irq_handler(DRM_IRQ_ARGS)
1246 if (status) 1241 if (status)
1247 NV_ERROR(dev, "Unhandled PMC INTR status bits 0x%08x\n", status); 1242 NV_ERROR(dev, "Unhandled PMC INTR status bits 0x%08x\n", status);
1248 1243
1249 if (dev_priv->fbdev_info)
1250 dev_priv->fbdev_info->flags = fbdev_flags;
1251
1252 spin_unlock_irqrestore(&dev_priv->context_switch_lock, flags); 1244 spin_unlock_irqrestore(&dev_priv->context_switch_lock, flags);
1253 1245
1254 return IRQ_HANDLED; 1246 return IRQ_HANDLED;