aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
diff options
context:
space:
mode:
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>2017-07-07 11:17:13 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-08-15 14:46:22 -0400
commit81454cad0a5137694f67a6c550da9c01492c3246 (patch)
tree03cf85fe2f59b9ba95fd8a2b18160fa522b43f54 /drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
parent02dc13e450cb9f70a588bebbfcb17826d5d7bc05 (diff)
drm/amd/amdgpu: Added a quirk for Stoney platform
Added DW_I2S_QUIRK_16BIT_IDX_OVERRIDE quirk for Stoney. Supported format and bus width for I2S controller read from I2S Component Parameter registers. These are ready only registers. For Stoney, I2S Component Parameter registers are programmed to support 32 bit format and 4 bytes bus width only. By setting this quirk,It will override 32 bit format with 16 bit format and 2 bytes as bus width for Stoney. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
index 06879d1dcabd..2d3fb005355d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
@@ -319,14 +319,29 @@ static int acp_hw_init(void *handle)
319 return -ENOMEM; 319 return -ENOMEM;
320 } 320 }
321 321
322 i2s_pdata[0].quirks = DW_I2S_QUIRK_COMP_REG_OFFSET; 322 switch (adev->asic_type) {
323 case CHIP_STONEY:
324 i2s_pdata[0].quirks = DW_I2S_QUIRK_COMP_REG_OFFSET |
325 DW_I2S_QUIRK_16BIT_IDX_OVERRIDE;
326 break;
327 default:
328 i2s_pdata[0].quirks = DW_I2S_QUIRK_COMP_REG_OFFSET;
329 }
323 i2s_pdata[0].cap = DWC_I2S_PLAY; 330 i2s_pdata[0].cap = DWC_I2S_PLAY;
324 i2s_pdata[0].snd_rates = SNDRV_PCM_RATE_8000_96000; 331 i2s_pdata[0].snd_rates = SNDRV_PCM_RATE_8000_96000;
325 i2s_pdata[0].i2s_reg_comp1 = ACP_I2S_COMP1_PLAY_REG_OFFSET; 332 i2s_pdata[0].i2s_reg_comp1 = ACP_I2S_COMP1_PLAY_REG_OFFSET;
326 i2s_pdata[0].i2s_reg_comp2 = ACP_I2S_COMP2_PLAY_REG_OFFSET; 333 i2s_pdata[0].i2s_reg_comp2 = ACP_I2S_COMP2_PLAY_REG_OFFSET;
334 switch (adev->asic_type) {
335 case CHIP_STONEY:
336 i2s_pdata[1].quirks = DW_I2S_QUIRK_COMP_REG_OFFSET |
337 DW_I2S_QUIRK_COMP_PARAM1 |
338 DW_I2S_QUIRK_16BIT_IDX_OVERRIDE;
339 break;
340 default:
341 i2s_pdata[1].quirks = DW_I2S_QUIRK_COMP_REG_OFFSET |
342 DW_I2S_QUIRK_COMP_PARAM1;
343 }
327 344
328 i2s_pdata[1].quirks = DW_I2S_QUIRK_COMP_REG_OFFSET |
329 DW_I2S_QUIRK_COMP_PARAM1;
330 i2s_pdata[1].cap = DWC_I2S_RECORD; 345 i2s_pdata[1].cap = DWC_I2S_RECORD;
331 i2s_pdata[1].snd_rates = SNDRV_PCM_RATE_8000_96000; 346 i2s_pdata[1].snd_rates = SNDRV_PCM_RATE_8000_96000;
332 i2s_pdata[1].i2s_reg_comp1 = ACP_I2S_COMP1_CAP_REG_OFFSET; 347 i2s_pdata[1].i2s_reg_comp1 = ACP_I2S_COMP1_CAP_REG_OFFSET;