Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 27 Apr 2010 15:22:50 +0000 (08:22 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 27 Apr 2010 15:22:50 +0000 (08:22 -0700)
* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
  drm/radeon: Fix sparc regression in r300_scratch()
  drm: make sure vblank interrupts are disabled at DPMS time
  drm/radeon/kms/evergreen: No EnableYUV table
  drm/radeon: 9800 SE has only one quadpipe
  drm/radeon/kms: don't print error for legal crtcs.
  drm/radeon/kms/evergreen: fix LUT setup

1  2 
drivers/gpu/drm/drm_irq.c
drivers/gpu/drm/radeon/r300.c
drivers/gpu/drm/radeon/r420.c
drivers/gpu/drm/radeon/radeon_kms.c

@@@ -36,7 -36,6 +36,7 @@@
  #include "drmP.h"
  
  #include <linux/interrupt.h>  /* For task queue support */
 +#include <linux/slab.h>
  
  #include <linux/vgaarb.h>
  /**
@@@ -476,6 -475,7 +476,7 @@@ void drm_vblank_off(struct drm_device *
        unsigned long irqflags;
  
        spin_lock_irqsave(&dev->vbl_lock, irqflags);
+       dev->driver->disable_vblank(dev, crtc);
        DRM_WAKEUP(&dev->vbl_queue[crtc]);
        dev->vblank_enabled[crtc] = 0;
        dev->last_vblank[crtc] = dev->driver->get_vblank_counter(dev, crtc);
@@@ -26,7 -26,6 +26,7 @@@
   *          Jerome Glisse
   */
  #include <linux/seq_file.h>
 +#include <linux/slab.h>
  #include "drmP.h"
  #include "drm.h"
  #include "radeon_reg.h"
@@@ -324,13 -323,12 +324,12 @@@ void r300_gpu_init(struct radeon_devic
        uint32_t gb_tile_config, tmp;
  
        r100_hdp_reset(rdev);
-       /* FIXME: rv380 one pipes ? */
        if ((rdev->family == CHIP_R300 && rdev->pdev->device != 0x4144) ||
-           (rdev->family == CHIP_R350)) {
+           (rdev->family == CHIP_R350 && rdev->pdev->device != 0x4148)) {
                /* r300,r350 */
                rdev->num_gb_pipes = 2;
        } else {
-               /* rv350,rv370,rv380,r300 AD */
+               /* rv350,rv370,rv380,r300 AD, r350 AH */
                rdev->num_gb_pipes = 1;
        }
        rdev->num_z_pipes = 1;
@@@ -26,7 -26,6 +26,7 @@@
   *          Jerome Glisse
   */
  #include <linux/seq_file.h>
 +#include <linux/slab.h>
  #include "drmP.h"
  #include "radeon_reg.h"
  #include "radeon.h"
@@@ -59,6 -58,12 +59,12 @@@ void r420_pipes_init(struct radeon_devi
        /* get max number of pipes */
        gb_pipe_select = RREG32(0x402C);
        num_pipes = ((gb_pipe_select >> 12) & 3) + 1;
+       /* SE chips have 1 pipe */
+       if ((rdev->pdev->device == 0x5e4c) ||
+           (rdev->pdev->device == 0x5e4f))
+               num_pipes = 1;
        rdev->num_gb_pipes = num_pipes;
        tmp = 0;
        switch (num_pipes) {
@@@ -31,7 -31,6 +31,7 @@@
  #include "radeon_drm.h"
  
  #include <linux/vga_switcheroo.h>
 +#include <linux/slab.h>
  
  int radeon_driver_unload_kms(struct drm_device *dev)
  {
@@@ -165,7 -164,7 +165,7 @@@ u32 radeon_get_vblank_counter_kms(struc
  {
        struct radeon_device *rdev = dev->dev_private;
  
-       if (crtc < 0 || crtc > 1) {
+       if (crtc < 0 || crtc >= rdev->num_crtc) {
                DRM_ERROR("Invalid crtc %d\n", crtc);
                return -EINVAL;
        }
@@@ -177,7 -176,7 +177,7 @@@ int radeon_enable_vblank_kms(struct drm
  {
        struct radeon_device *rdev = dev->dev_private;
  
-       if (crtc < 0 || crtc > 1) {
+       if (crtc < 0 || crtc >= rdev->num_crtc) {
                DRM_ERROR("Invalid crtc %d\n", crtc);
                return -EINVAL;
        }
@@@ -191,7 -190,7 +191,7 @@@ void radeon_disable_vblank_kms(struct d
  {
        struct radeon_device *rdev = dev->dev_private;
  
-       if (crtc < 0 || crtc > 1) {
+       if (crtc < 0 || crtc >= rdev->num_crtc) {
                DRM_ERROR("Invalid crtc %d\n", crtc);
                return;
        }