]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Merge remote branch 'nouveau/for-airlied' into drm-next
authorDave Airlie <airlied@redhat.com>
Fri, 21 May 2010 05:44:32 +0000 (15:44 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 21 May 2010 05:44:32 +0000 (15:44 +1000)
* nouveau/for-airlied:
  drm/nouveau: fix i2c-related init table handlers
  drm/nouveau: support init table i2c device identifier 0x81
  drm/nouveau: ensure we've parsed i2c table entry for INIT_*I2C* handlers
  drm/nouveau: display error message for any failed init table opcode
  drm/nouveau: fix init table handlers to return proper error codes
  drm/nv50: support fractional feedback divider on newer chips
  drm/nv50: fix monitor detection on certain chipsets
  drm/nv50: store full dcb i2c entry from vbios
  drm/nv50: fix suspend/resume with DP outputs
  drm/nv50: output calculated crtc pll when debugging on
  drm/nouveau: dump pll limits entries when debugging is on
  drm/nouveau: bios parser fixes for eDP boards
  drm/nouveau: fix a nouveau_bo dereference after it's been destroyed
  drm/nv40: remove some completed ctxprog TODOs
  drm/nv04: Implement missing nv04 PGRAPH methods in software.
  drm/nouveau: Use 0x5f instead of 0x9f as imageblit on original NV10.

drivers/gpu/drm/Kconfig
drivers/gpu/drm/drm_edid.c
drivers/gpu/drm/radeon/Kconfig
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon_display.c
drivers/gpu/drm/radeon/radeon_object.c
drivers/gpu/drm/radeon/radeon_ttm.c

index 2583ddfcc33ef568144699c77737c6623168e680..88910e5a2c77275654e8b431d96a93b07e438685 100644 (file)
@@ -60,6 +60,7 @@ config DRM_RADEON
        select FW_LOADER
         select DRM_KMS_HELPER
         select DRM_TTM
+       select POWER_SUPPLY
        help
          Choose this option if you have an ATI Radeon graphics card.  There
          are both PCI and AGP versions.  You don't need to choose this to
index dfd4f3677f3b79d69f6e65545c23632be1bea96c..f569ae88ab384c60d09929aeebac1983d3fcf100 100644 (file)
@@ -587,7 +587,7 @@ static struct drm_display_mode drm_dmt_modes[] = {
                   1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
                   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
        /* 1600x1200@75Hz */
-       { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 2025000, 1600, 1664,
+       { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 202500, 1600, 1664,
                   1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
                   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
        /* 1600x1200@85Hz */
index 80c5b3ea28b417e70dc2aa4c7f6068c4e442b20f..1c02d23f6fcca9f9a6030bba9ea309ef98838419 100644 (file)
@@ -1,7 +1,6 @@
 config DRM_RADEON_KMS
        bool "Enable modesetting on radeon by default - NEW DRIVER"
        depends on DRM_RADEON
-       depends on POWER_SUPPLY
        help
          Choose this option if you want kernel modesetting enabled by default.
 
index 5c9ce2beaca3b949300f46817fbd74d49c017f13..66a37fb75839dc11262f291a8488796efb7e373d 100644 (file)
@@ -261,6 +261,7 @@ struct radeon_bo_list {
        unsigned                rdomain;
        unsigned                wdomain;
        u32                     tiling_flags;
+       bool                    reserved;
 };
 
 /*
index da85cad1152b0129a270870bef7249fda2678a41..1006549d157029bcb129129f417e1dd5195cc5ed 100644 (file)
@@ -983,8 +983,11 @@ void radeon_update_display_priority(struct radeon_device *rdev)
                /* set display priority to high for r3xx, rv515 chips
                 * this avoids flickering due to underflow to the
                 * display controllers during heavy acceleration.
+                * Don't force high on rs4xx igp chips as it seems to
+                * affect the sound card.  See kernel bug 15982.
                 */
-               if (ASIC_IS_R300(rdev) || (rdev->family == CHIP_RV515))
+               if ((ASIC_IS_R300(rdev) || (rdev->family == CHIP_RV515)) &&
+                   !(rdev->flags & RADEON_IS_IGP))
                        rdev->disp_priority = 2;
                else
                        rdev->disp_priority = 0;
index a8d18bcae7db08ba2c62cd2cedb45acc3afdeac5..d5b9373ce06c16b9be8ee81b9f27d70b20947a19 100644 (file)
@@ -301,6 +301,7 @@ int radeon_bo_list_reserve(struct list_head *head)
                r = radeon_bo_reserve(lobj->bo, false);
                if (unlikely(r != 0))
                        return r;
+               lobj->reserved = true;
        }
        return 0;
 }
@@ -311,7 +312,7 @@ void radeon_bo_list_unreserve(struct list_head *head)
 
        list_for_each_entry(lobj, head, list) {
                /* only unreserve object we successfully reserved */
-               if (radeon_bo_is_reserved(lobj->bo))
+               if (lobj->reserved && radeon_bo_is_reserved(lobj->bo))
                        radeon_bo_unreserve(lobj->bo);
        }
 }
@@ -322,6 +323,9 @@ int radeon_bo_list_validate(struct list_head *head)
        struct radeon_bo *bo;
        int r;
 
+       list_for_each_entry(lobj, head, list) {
+               lobj->reserved = false;
+       }
        r = radeon_bo_list_reserve(head);
        if (unlikely(r != 0)) {
                return r;
index 3aa3a65800abd1354aefafcd9e40287de651cc84..e9918d88f5b049675cfebe754d15ef83338bb91d 100644 (file)
@@ -451,7 +451,7 @@ static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_
                        /* RADEON_IS_AGP is set only if AGP is active */
                        mem->bus.offset = mem->mm_node->start << PAGE_SHIFT;
                        mem->bus.base = rdev->mc.agp_base;
-                       mem->bus.is_iomem = true;
+                       mem->bus.is_iomem = !rdev->ddev->agp->cant_use_aperture;
                }
 #endif
                break;