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.

+22 -7
+1 -3
drivers/gpu/drm/radeon/r100.c
··· 789 789 WREG32(RADEON_AIC_CNTL, msi_rearm | RS400_MSI_REARM); 790 790 break; 791 791 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); 795 793 break; 796 794 } 797 795 }
+17
drivers/gpu/drm/radeon/radeon_atombios.c
··· 2931 2931 bios_6_scratch &= ~ATOM_S6_ACC_REQ_DFP5; 2932 2932 } 2933 2933 } 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 + } 2934 2948 2935 2949 if (rdev->family >= CHIP_R600) { 2936 2950 WREG32(R600_BIOS_0_SCRATCH, bios_0_scratch); ··· 2964 2950 struct radeon_device *rdev = dev->dev_private; 2965 2951 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 2966 2952 uint32_t bios_3_scratch; 2953 + 2954 + if (ASIC_IS_DCE4(rdev)) 2955 + return; 2967 2956 2968 2957 if (rdev->family >= CHIP_R600) 2969 2958 bios_3_scratch = RREG32(R600_BIOS_3_SCRATCH);
+3 -1
drivers/gpu/drm/radeon/radeon_fence.c
··· 364 364 int not_processed = 0; 365 365 366 366 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); 368 369 return 0; 370 + } 369 371 370 372 if (!list_empty(&rdev->fence_drv[ring].emitted)) { 371 373 struct list_head *ptr;
+1 -3
drivers/gpu/drm/radeon/rs600.c
··· 684 684 WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM); 685 685 break; 686 686 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); 690 688 break; 691 689 } 692 690 }