]> Pileus Git - ~andy/linux/blobdiff - drivers/gpu/drm/radeon/rs600.c
drm: Merge tag 'v3.3-rc7' into drm-core-next
[~andy/linux] / drivers / gpu / drm / radeon / rs600.c
index 4fc700684dcd0dfd1fae0362bf3b2307d5e2cab7..d25cf869d08dddaa2e0d9f0aec49e2b173297f54 100644 (file)
 void rs600_gpu_init(struct radeon_device *rdev);
 int rs600_mc_wait_for_idle(struct radeon_device *rdev);
 
+void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc)
+{
+       struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc];
+       int i;
+
+       if (RREG32(AVIVO_D1CRTC_CONTROL + radeon_crtc->crtc_offset) & AVIVO_CRTC_EN) {
+               for (i = 0; i < rdev->usec_timeout; i++) {
+                       if (!(RREG32(AVIVO_D1CRTC_STATUS + radeon_crtc->crtc_offset) & AVIVO_D1CRTC_V_BLANK))
+                               break;
+                       udelay(1);
+               }
+               for (i = 0; i < rdev->usec_timeout; i++) {
+                       if (RREG32(AVIVO_D1CRTC_STATUS + radeon_crtc->crtc_offset) & AVIVO_D1CRTC_V_BLANK)
+                               break;
+                       udelay(1);
+               }
+       }
+}
+
 void rs600_pre_page_flip(struct radeon_device *rdev, int crtc)
 {
        /* enable the pflip int */
@@ -175,7 +194,7 @@ void rs600_pm_misc(struct radeon_device *rdev)
        /* set pcie lanes */
        if ((rdev->flags & RADEON_IS_PCIE) &&
            !(rdev->flags & RADEON_IS_IGP) &&
-           rdev->asic->set_pcie_lanes &&
+           rdev->asic->pm.set_pcie_lanes &&
            (ps->pcie_lanes !=
             rdev->pm.power_state[rdev->pm.current_power_state_index].pcie_lanes)) {
                radeon_set_pcie_lanes(rdev,
@@ -864,7 +883,7 @@ static int rs600_startup(struct radeon_device *rdev)
        if (r)
                return r;
 
-       r = r100_ib_test(rdev);
+       r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]);
        if (r) {
                dev_err(rdev->dev, "failed testing IB (%d).\n", r);
                rdev->accel_working = false;