diff options
| author | Stephen Boyd <sboyd@codeaurora.org> | 2015-10-02 21:15:13 +0300 | 
|---|---|---|
| committer | Stephen Boyd <sboyd@codeaurora.org> | 2015-10-02 21:22:23 +0300 | 
| commit | 9f30a04d768f64280dc0c40b730746e82f298d88 (patch) | |
| tree | e112853eb73627ed7b9a2ef8e4feab6685a0200e /drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | |
| parent | 9e294bf88a583825a413df408b9fe9e658fb93ac (diff) | |
| parent | 7aba4f5201d1b7b3ddb0b03883d9edf69851ddad (diff) | |
| download | linux-9f30a04d768f64280dc0c40b730746e82f298d88.tar.xz | |
Merge branch 'for-4.3-rc/ti-clk-fixes' of https://github.com/t-kristo/linux-pm into clk-fixes
Pull fixes from Tero Kristo:
"A few TI clock driver fixes to pull against 4.3-rc"
* 'for-4.3-rc/ti-clk-fixes' of https://github.com/t-kristo/linux-pm: (3 commits)
  clk: ti: dflt: fix enable_reg validity check
  clk: ti: fix dual-registration of uart4_ick
  clk: ti: clk-7xx: Remove hardwired ABE clock configuration
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/dce_v8_0.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 30 | 
1 files changed, 20 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c index aaca8d663f2c..c86911c2ea2a 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c @@ -770,11 +770,11 @@ static u32 dce_v8_0_line_buffer_adjust(struct amdgpu_device *adev,  			buffer_alloc = 2;  		} else if (mode->crtc_hdisplay < 4096) {  			tmp = 0; -			buffer_alloc = (adev->flags & AMDGPU_IS_APU) ? 2 : 4; +			buffer_alloc = (adev->flags & AMD_IS_APU) ? 2 : 4;  		} else {  			DRM_DEBUG_KMS("Mode too big for LB!\n");  			tmp = 0; -			buffer_alloc = (adev->flags & AMDGPU_IS_APU) ? 2 : 4; +			buffer_alloc = (adev->flags & AMD_IS_APU) ? 2 : 4;  		}  	} else {  		tmp = 1; @@ -2566,6 +2566,7 @@ static void dce_v8_0_crtc_dpms(struct drm_crtc *crtc, int mode)  	struct drm_device *dev = crtc->dev;  	struct amdgpu_device *adev = dev->dev_private;  	struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); +	unsigned type;  	switch (mode) {  	case DRM_MODE_DPMS_ON: @@ -2574,6 +2575,9 @@ static void dce_v8_0_crtc_dpms(struct drm_crtc *crtc, int mode)  		dce_v8_0_vga_enable(crtc, true);  		amdgpu_atombios_crtc_blank(crtc, ATOM_DISABLE);  		dce_v8_0_vga_enable(crtc, false); +		/* Make sure VBLANK interrupt is still enabled */ +		type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id); +		amdgpu_irq_update(adev, &adev->crtc_irq, type);  		drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id);  		dce_v8_0_crtc_load_lut(crtc);  		break; @@ -3237,19 +3241,25 @@ static int dce_v8_0_crtc_irq(struct amdgpu_device *adev,  	switch (entry->src_data) {  	case 0: /* vblank */ -		if (disp_int & interrupt_status_offsets[crtc].vblank) { +		if (disp_int & interrupt_status_offsets[crtc].vblank)  			WREG32(mmLB_VBLANK_STATUS + crtc_offsets[crtc], LB_VBLANK_STATUS__VBLANK_ACK_MASK); -			if (amdgpu_irq_enabled(adev, source, irq_type)) { -				drm_handle_vblank(adev->ddev, crtc); -			} -			DRM_DEBUG("IH: D%d vblank\n", crtc + 1); +		else +			DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); + +		if (amdgpu_irq_enabled(adev, source, irq_type)) { +			drm_handle_vblank(adev->ddev, crtc);  		} +		DRM_DEBUG("IH: D%d vblank\n", crtc + 1); +  		break;  	case 1: /* vline */ -		if (disp_int & interrupt_status_offsets[crtc].vline) { +		if (disp_int & interrupt_status_offsets[crtc].vline)  			WREG32(mmLB_VLINE_STATUS + crtc_offsets[crtc], LB_VLINE_STATUS__VLINE_ACK_MASK); -			DRM_DEBUG("IH: D%d vline\n", crtc + 1); -		} +		else +			DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); + +		DRM_DEBUG("IH: D%d vline\n", crtc + 1); +  		break;  	default:  		DRM_DEBUG("Unhandled interrupt: %d %d\n", entry->src_id, entry->src_data);  | 
