diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_drv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_irq.c | 8 | ||||
-rw-r--r-- | drivers/video/aty/radeon_accel.c | 3 | ||||
-rw-r--r-- | drivers/video/aty/radeon_base.c | 6 | ||||
-rw-r--r-- | drivers/video/aty/radeonfb.h | 2 |
7 files changed, 19 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index ba89b42f790a..553dd4bc3075 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -847,9 +847,10 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) | |||
847 | * and the registers being closely associated. | 847 | * and the registers being closely associated. |
848 | * | 848 | * |
849 | * According to chipset errata, on the 965GM, MSI interrupts may | 849 | * According to chipset errata, on the 965GM, MSI interrupts may |
850 | * be lost or delayed | 850 | * be lost or delayed, but we use them anyways to avoid |
851 | * stuck interrupts on some machines. | ||
851 | */ | 852 | */ |
852 | if (!IS_I945G(dev) && !IS_I945GM(dev) && !IS_I965GM(dev)) | 853 | if (!IS_I945G(dev) && !IS_I945GM(dev)) |
853 | pci_enable_msi(dev->pdev); | 854 | pci_enable_msi(dev->pdev); |
854 | 855 | ||
855 | intel_opregion_init(dev); | 856 | intel_opregion_init(dev); |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 3fde82be014f..ad672d854828 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -1104,6 +1104,8 @@ i915_gem_evict_everything(struct drm_device *dev) | |||
1104 | if (ret != 0) | 1104 | if (ret != 0) |
1105 | break; | 1105 | break; |
1106 | } | 1106 | } |
1107 | if (ret == -ENOMEM) | ||
1108 | return 0; | ||
1107 | return ret; | 1109 | return ret; |
1108 | } | 1110 | } |
1109 | 1111 | ||
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h index 7a183789be97..3bbb871b25d5 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.h +++ b/drivers/gpu/drm/radeon/radeon_drv.h | |||
@@ -299,7 +299,6 @@ typedef struct drm_radeon_private { | |||
299 | atomic_t swi_emitted; | 299 | atomic_t swi_emitted; |
300 | int vblank_crtc; | 300 | int vblank_crtc; |
301 | uint32_t irq_enable_reg; | 301 | uint32_t irq_enable_reg; |
302 | int irq_enabled; | ||
303 | uint32_t r500_disp_irq_reg; | 302 | uint32_t r500_disp_irq_reg; |
304 | 303 | ||
305 | struct radeon_surface surfaces[RADEON_MAX_SURFACES]; | 304 | struct radeon_surface surfaces[RADEON_MAX_SURFACES]; |
diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c index 97c0599fdb1e..99be11418ac2 100644 --- a/drivers/gpu/drm/radeon/radeon_irq.c +++ b/drivers/gpu/drm/radeon/radeon_irq.c | |||
@@ -44,7 +44,8 @@ void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state) | |||
44 | else | 44 | else |
45 | dev_priv->irq_enable_reg &= ~mask; | 45 | dev_priv->irq_enable_reg &= ~mask; |
46 | 46 | ||
47 | RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); | 47 | if (!dev->irq_enabled) |
48 | RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); | ||
48 | } | 49 | } |
49 | 50 | ||
50 | static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state) | 51 | static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state) |
@@ -56,7 +57,8 @@ static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state) | |||
56 | else | 57 | else |
57 | dev_priv->r500_disp_irq_reg &= ~mask; | 58 | dev_priv->r500_disp_irq_reg &= ~mask; |
58 | 59 | ||
59 | RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg); | 60 | if (!dev->irq_enabled) |
61 | RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg); | ||
60 | } | 62 | } |
61 | 63 | ||
62 | int radeon_enable_vblank(struct drm_device *dev, int crtc) | 64 | int radeon_enable_vblank(struct drm_device *dev, int crtc) |
@@ -355,8 +357,6 @@ void radeon_driver_irq_uninstall(struct drm_device * dev) | |||
355 | if (!dev_priv) | 357 | if (!dev_priv) |
356 | return; | 358 | return; |
357 | 359 | ||
358 | dev_priv->irq_enabled = 0; | ||
359 | |||
360 | if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) | 360 | if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) |
361 | RADEON_WRITE(R500_DxMODE_INT_MASK, 0); | 361 | RADEON_WRITE(R500_DxMODE_INT_MASK, 0); |
362 | /* Disable *all* interrupts */ | 362 | /* Disable *all* interrupts */ |
diff --git a/drivers/video/aty/radeon_accel.c b/drivers/video/aty/radeon_accel.c index a547e5d4c8bf..8da5e5ab8547 100644 --- a/drivers/video/aty/radeon_accel.c +++ b/drivers/video/aty/radeon_accel.c | |||
@@ -256,7 +256,8 @@ void radeonfb_imageblit(struct fb_info *info, const struct fb_image *image) | |||
256 | return; | 256 | return; |
257 | 257 | ||
258 | /* We only do 1 bpp color expansion for now */ | 258 | /* We only do 1 bpp color expansion for now */ |
259 | if (info->flags & FBINFO_HWACCEL_DISABLED || image->depth != 1) | 259 | if (!accel_cexp || |
260 | (info->flags & FBINFO_HWACCEL_DISABLED) || image->depth != 1) | ||
260 | goto fallback; | 261 | goto fallback; |
261 | 262 | ||
262 | /* Fallback if running out of the screen. We may do clipping | 263 | /* Fallback if running out of the screen. We may do clipping |
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c index b3ffe8205d2b..d5b27f9d374d 100644 --- a/drivers/video/aty/radeon_base.c +++ b/drivers/video/aty/radeon_base.c | |||
@@ -282,6 +282,8 @@ static int backlight = 1; | |||
282 | static int backlight = 0; | 282 | static int backlight = 0; |
283 | #endif | 283 | #endif |
284 | 284 | ||
285 | int accel_cexp = 0; | ||
286 | |||
285 | /* | 287 | /* |
286 | * prototypes | 288 | * prototypes |
287 | */ | 289 | */ |
@@ -2520,6 +2522,8 @@ static int __init radeonfb_setup (char *options) | |||
2520 | } else if (!strncmp(this_opt, "ignore_devlist", 14)) { | 2522 | } else if (!strncmp(this_opt, "ignore_devlist", 14)) { |
2521 | ignore_devlist = 1; | 2523 | ignore_devlist = 1; |
2522 | #endif | 2524 | #endif |
2525 | } else if (!strncmp(this_opt, "accel_cexp", 12)) { | ||
2526 | accel_cexp = 1; | ||
2523 | } else | 2527 | } else |
2524 | mode_option = this_opt; | 2528 | mode_option = this_opt; |
2525 | } | 2529 | } |
@@ -2567,6 +2571,8 @@ module_param(monitor_layout, charp, 0); | |||
2567 | MODULE_PARM_DESC(monitor_layout, "Specify monitor mapping (like XFree86)"); | 2571 | MODULE_PARM_DESC(monitor_layout, "Specify monitor mapping (like XFree86)"); |
2568 | module_param(force_measure_pll, bool, 0); | 2572 | module_param(force_measure_pll, bool, 0); |
2569 | MODULE_PARM_DESC(force_measure_pll, "Force measurement of PLL (debug)"); | 2573 | MODULE_PARM_DESC(force_measure_pll, "Force measurement of PLL (debug)"); |
2574 | module_param(accel_cexp, bool, 0); | ||
2575 | MODULE_PARM_DESC(accel_cexp, "Use acceleration engine for color expansion"); | ||
2570 | #ifdef CONFIG_MTRR | 2576 | #ifdef CONFIG_MTRR |
2571 | module_param(nomtrr, bool, 0); | 2577 | module_param(nomtrr, bool, 0); |
2572 | MODULE_PARM_DESC(nomtrr, "bool: disable use of MTRR registers"); | 2578 | MODULE_PARM_DESC(nomtrr, "bool: disable use of MTRR registers"); |
diff --git a/drivers/video/aty/radeonfb.h b/drivers/video/aty/radeonfb.h index ea0b5b47acaf..974ca6d86540 100644 --- a/drivers/video/aty/radeonfb.h +++ b/drivers/video/aty/radeonfb.h | |||
@@ -638,4 +638,6 @@ static inline void radeonfb_bl_init(struct radeonfb_info *rinfo) {} | |||
638 | static inline void radeonfb_bl_exit(struct radeonfb_info *rinfo) {} | 638 | static inline void radeonfb_bl_exit(struct radeonfb_info *rinfo) {} |
639 | #endif | 639 | #endif |
640 | 640 | ||
641 | extern int accel_cexp; | ||
642 | |||
641 | #endif /* __RADEONFB_H__ */ | 643 | #endif /* __RADEONFB_H__ */ |