History

Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

3 radeon fixes, I have some exynos fixes to push later but I'll queue them separately once I've looked them over a bit. * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: drm/radeon/kms: fix MSI re-arm on rv370+ drm/radeon/kms/atom: bios scratch reg handling updates drm/radeon/kms: drop lock in return path of radeon_fence_count_emitted.

Linus Torvalds committed 14 years ago

Commit 58e44ba2 parents a18d3af b7f5b7d4 files · +22 −7Browse files

Unified · Split

4 files
  1. drivers/gpu/drm/radeon/r100.c +1 −3
  2. drivers/gpu/drm/radeon/radeon_atombios.c +17 −0
  3. drivers/gpu/drm/radeon/radeon_fence.c +3 −1
  4. drivers/gpu/drm/radeon/rs600.c +1 −3
drivers/gpu/drm/radeon/r100.c+1−3
@@ -789,9 +789,7 @@ int r100_irq_process(struct radeon_device *rdev) · 788 unmodified lines
789789 WREG32(RADEON_AIC_CNTL, msi_rearm | RS400_MSI_REARM);
790790 break;
791791 default:
792− msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
793− WREG32(RADEON_MSI_REARM_EN, msi_rearm);
794− WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
792+ WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN);
795793 break;
796794 }
797795 }
drivers/gpu/drm/radeon/radeon_atombios.c+17−0
@@ -2931,6 +2931,20 @@ radeon_atombios_connected_scratch_regs(struct drm_connector *connector, · 2930 unmodified lines
29312931 bios_6_scratch &= ~ATOM_S6_ACC_REQ_DFP5;
29322932 }
29332933 }
2934+ if ((radeon_encoder->devices & ATOM_DEVICE_DFP6_SUPPORT) &&
2935+ (radeon_connector->devices & ATOM_DEVICE_DFP6_SUPPORT)) {
2936+ if (connected) {
2937+ DRM_DEBUG_KMS("DFP6 connected\n");
2938+ bios_0_scratch |= ATOM_S0_DFP6;
2939+ bios_3_scratch |= ATOM_S3_DFP6_ACTIVE;
2940+ bios_6_scratch |= ATOM_S6_ACC_REQ_DFP6;
2941+ } else {
2942+ DRM_DEBUG_KMS("DFP6 disconnected\n");
2943+ bios_0_scratch &= ~ATOM_S0_DFP6;
2944+ bios_3_scratch &= ~ATOM_S3_DFP6_ACTIVE;
2945+ bios_6_scratch &= ~ATOM_S6_ACC_REQ_DFP6;
2946+ }
2947+ }
29342948
29352949 if (rdev->family >= CHIP_R600) {
29362950 WREG32(R600_BIOS_0_SCRATCH, bios_0_scratch);
@@ -2951,6 +2965,9 @@ radeon_atombios_encoder_crtc_scratch_regs(struct drm_encoder *encoder, int crtc) · 14 unmodified lines
29512965 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
29522966 uint32_t bios_3_scratch;
29532967
2968+ if (ASIC_IS_DCE4(rdev))
2969+ return;
2970+
29542971 if (rdev->family >= CHIP_R600)
29552972 bios_3_scratch = RREG32(R600_BIOS_3_SCRATCH);
29562973 else
drivers/gpu/drm/radeon/radeon_fence.c+3−1
@@ -364,8 +364,10 @@ int radeon_fence_count_emitted(struct radeon_device *rdev, int ring) · 363 unmodified lines
364364 int not_processed = 0;
365365
366366 read_lock_irqsave(&rdev->fence_lock, irq_flags);
367− if (!rdev->fence_drv[ring].initialized)
367+ if (!rdev->fence_drv[ring].initialized) {
368+ read_unlock_irqrestore(&rdev->fence_lock, irq_flags);
368369 return 0;
370+ }
369371
370372 if (!list_empty(&rdev->fence_drv[ring].emitted)) {
371373 struct list_head *ptr;
drivers/gpu/drm/radeon/rs600.c+1−3
@@ -684,9 +684,7 @@ int rs600_irq_process(struct radeon_device *rdev) · 683 unmodified lines
684684 WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM);
685685 break;
686686 default:
687− msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
688− WREG32(RADEON_MSI_REARM_EN, msi_rearm);
689− WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
687+ WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN);
690688 break;
691689 }
692690 }