aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSlava Grigorev <slava.grigorev@amd.com>2014-12-03 17:07:01 -0500
committerAlex Deucher <alexander.deucher@amd.com>2015-01-22 10:42:09 -0500
commit7991d6650117064ae1d2b215b5cbb4112711ed5e (patch)
treea394daccbf124332fbe48eed9f5d2dbe34a67a9b
parent8bf598207efb35ea17075b11bf116043c18aca40 (diff)
radeon/audio: consolidate audio_fini() functions
Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Slava Grigorev <slava.grigorev@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/radeon/cik.c2
-rw-r--r--drivers/gpu/drm/radeon/dce6_afmt.c13
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c4
-rw-r--r--drivers/gpu/drm/radeon/ni.c5
-rw-r--r--drivers/gpu/drm/radeon/r600.c4
-rw-r--r--drivers/gpu/drm/radeon/r600_hdmi.c13
-rw-r--r--drivers/gpu/drm/radeon/radeon_audio.c13
-rw-r--r--drivers/gpu/drm/radeon/radeon_audio.h1
-rw-r--r--drivers/gpu/drm/radeon/rs600.c4
-rw-r--r--drivers/gpu/drm/radeon/rs690.c4
-rw-r--r--drivers/gpu/drm/radeon/rv770.c2
-rw-r--r--drivers/gpu/drm/radeon/si.c2
12 files changed, 26 insertions, 41 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index efbcd23e9c51..de77c27d8106 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -8576,7 +8576,7 @@ int cik_suspend(struct radeon_device *rdev)
8576{ 8576{
8577 radeon_kfd_suspend(rdev); 8577 radeon_kfd_suspend(rdev);
8578 radeon_pm_suspend(rdev); 8578 radeon_pm_suspend(rdev);
8579 dce6_audio_fini(rdev); 8579 radeon_audio_fini(rdev);
8580 radeon_vm_manager_fini(rdev); 8580 radeon_vm_manager_fini(rdev);
8581 cik_cp_enable(rdev, false); 8581 cik_cp_enable(rdev, false);
8582 cik_sdma_enable(rdev, false); 8582 cik_sdma_enable(rdev, false);
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c
index 7fd7f1573173..c4ff60f005d2 100644
--- a/drivers/gpu/drm/radeon/dce6_afmt.c
+++ b/drivers/gpu/drm/radeon/dce6_afmt.c
@@ -248,16 +248,3 @@ void dce6_audio_enable(struct radeon_device *rdev,
248 WREG32_ENDPOINT(pin->offset, AZ_F0_CODEC_PIN_CONTROL_HOT_PLUG_CONTROL, 248 WREG32_ENDPOINT(pin->offset, AZ_F0_CODEC_PIN_CONTROL_HOT_PLUG_CONTROL,
249 enable_mask ? AUDIO_ENABLED : 0); 249 enable_mask ? AUDIO_ENABLED : 0);
250} 250}
251
252void dce6_audio_fini(struct radeon_device *rdev)
253{
254 int i;
255
256 if (!rdev->audio.enabled)
257 return;
258
259 for (i = 0; i < rdev->audio.num_pins; i++)
260 radeon_audio_enable(rdev, &rdev->audio.pin[i], false);
261
262 rdev->audio.enabled = false;
263}
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 406ea8ee0852..78600f534c80 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -5333,7 +5333,7 @@ int evergreen_resume(struct radeon_device *rdev)
5333int evergreen_suspend(struct radeon_device *rdev) 5333int evergreen_suspend(struct radeon_device *rdev)
5334{ 5334{
5335 radeon_pm_suspend(rdev); 5335 radeon_pm_suspend(rdev);
5336 r600_audio_fini(rdev); 5336 radeon_audio_fini(rdev);
5337 uvd_v1_0_fini(rdev); 5337 uvd_v1_0_fini(rdev);
5338 radeon_uvd_suspend(rdev); 5338 radeon_uvd_suspend(rdev);
5339 r700_cp_stop(rdev); 5339 r700_cp_stop(rdev);
@@ -5483,7 +5483,7 @@ int evergreen_init(struct radeon_device *rdev)
5483void evergreen_fini(struct radeon_device *rdev) 5483void evergreen_fini(struct radeon_device *rdev)
5484{ 5484{
5485 radeon_pm_fini(rdev); 5485 radeon_pm_fini(rdev);
5486 r600_audio_fini(rdev); 5486 radeon_audio_fini(rdev);
5487 r700_cp_fini(rdev); 5487 r700_cp_fini(rdev);
5488 r600_dma_fini(rdev); 5488 r600_dma_fini(rdev);
5489 r600_irq_fini(rdev); 5489 r600_irq_fini(rdev);
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index d2f10408c560..24242a7f0ac3 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -2135,10 +2135,7 @@ int cayman_resume(struct radeon_device *rdev)
2135int cayman_suspend(struct radeon_device *rdev) 2135int cayman_suspend(struct radeon_device *rdev)
2136{ 2136{
2137 radeon_pm_suspend(rdev); 2137 radeon_pm_suspend(rdev);
2138 if (ASIC_IS_DCE6(rdev)) 2138 radeon_audio_fini(rdev);
2139 dce6_audio_fini(rdev);
2140 else
2141 r600_audio_fini(rdev);
2142 radeon_vm_manager_fini(rdev); 2139 radeon_vm_manager_fini(rdev);
2143 cayman_cp_enable(rdev, false); 2140 cayman_cp_enable(rdev, false);
2144 cayman_dma_stop(rdev); 2141 cayman_dma_stop(rdev);
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index de7878aef65c..07a71a2488c9 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -3106,7 +3106,7 @@ int r600_resume(struct radeon_device *rdev)
3106int r600_suspend(struct radeon_device *rdev) 3106int r600_suspend(struct radeon_device *rdev)
3107{ 3107{
3108 radeon_pm_suspend(rdev); 3108 radeon_pm_suspend(rdev);
3109 r600_audio_fini(rdev); 3109 radeon_audio_fini(rdev);
3110 r600_cp_stop(rdev); 3110 r600_cp_stop(rdev);
3111 if (rdev->has_uvd) { 3111 if (rdev->has_uvd) {
3112 uvd_v1_0_fini(rdev); 3112 uvd_v1_0_fini(rdev);
@@ -3225,7 +3225,7 @@ int r600_init(struct radeon_device *rdev)
3225void r600_fini(struct radeon_device *rdev) 3225void r600_fini(struct radeon_device *rdev)
3226{ 3226{
3227 radeon_pm_fini(rdev); 3227 radeon_pm_fini(rdev);
3228 r600_audio_fini(rdev); 3228 radeon_audio_fini(rdev);
3229 r600_cp_fini(rdev); 3229 r600_cp_fini(rdev);
3230 r600_irq_fini(rdev); 3230 r600_irq_fini(rdev);
3231 if (rdev->has_uvd) { 3231 if (rdev->has_uvd) {
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
index f92eb77cdd60..1c49f4d2945a 100644
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
@@ -183,19 +183,6 @@ void r600_audio_enable(struct radeon_device *rdev,
183 WREG32(AZ_HOT_PLUG_CONTROL, tmp); 183 WREG32(AZ_HOT_PLUG_CONTROL, tmp);
184} 184}
185 185
186/*
187 * release the audio timer
188 * TODO: How to do this correctly on SMP systems?
189 */
190void r600_audio_fini(struct radeon_device *rdev)
191{
192 if (!rdev->audio.enabled)
193 return;
194
195 radeon_audio_enable(rdev, &rdev->audio.pin[0], 0);
196 rdev->audio.enabled = false;
197}
198
199struct r600_audio_pin *r600_audio_get_pin(struct radeon_device *rdev) 186struct r600_audio_pin *r600_audio_get_pin(struct radeon_device *rdev)
200{ 187{
201 /* only one pin on 6xx-NI */ 188 /* only one pin on 6xx-NI */
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
index eed5c740cefa..e6c73f8206b2 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.c
+++ b/drivers/gpu/drm/radeon/radeon_audio.c
@@ -380,3 +380,16 @@ void radeon_audio_enable(struct radeon_device *rdev,
380 if (rdev->audio.funcs->enable) 380 if (rdev->audio.funcs->enable)
381 rdev->audio.funcs->enable(rdev, pin, enable_mask); 381 rdev->audio.funcs->enable(rdev, pin, enable_mask);
382} 382}
383
384void radeon_audio_fini(struct radeon_device *rdev)
385{
386 int i;
387
388 if (!rdev->audio.enabled)
389 return;
390
391 for (i = 0; i < rdev->audio.num_pins; i++)
392 radeon_audio_enable(rdev, &rdev->audio.pin[i], false);
393
394 rdev->audio.enabled = false;
395}
diff --git a/drivers/gpu/drm/radeon/radeon_audio.h b/drivers/gpu/drm/radeon/radeon_audio.h
index 2bd845de8d4d..5844993a1edb 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.h
+++ b/drivers/gpu/drm/radeon/radeon_audio.h
@@ -68,5 +68,6 @@ struct r600_audio_pin *radeon_audio_get_pin(struct drm_encoder *encoder);
68void radeon_audio_select_pin(struct drm_encoder *encoder); 68void radeon_audio_select_pin(struct drm_encoder *encoder);
69void radeon_audio_enable(struct radeon_device *rdev, 69void radeon_audio_enable(struct radeon_device *rdev,
70 struct r600_audio_pin *pin, u8 enable_mask); 70 struct r600_audio_pin *pin, u8 enable_mask);
71void radeon_audio_fini(struct radeon_device *rdev);
71 72
72#endif 73#endif
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
index c26f96093a10..68f154a451c0 100644
--- a/drivers/gpu/drm/radeon/rs600.c
+++ b/drivers/gpu/drm/radeon/rs600.c
@@ -1054,7 +1054,7 @@ int rs600_resume(struct radeon_device *rdev)
1054int rs600_suspend(struct radeon_device *rdev) 1054int rs600_suspend(struct radeon_device *rdev)
1055{ 1055{
1056 radeon_pm_suspend(rdev); 1056 radeon_pm_suspend(rdev);
1057 r600_audio_fini(rdev); 1057 radeon_audio_fini(rdev);
1058 r100_cp_disable(rdev); 1058 r100_cp_disable(rdev);
1059 radeon_wb_disable(rdev); 1059 radeon_wb_disable(rdev);
1060 rs600_irq_disable(rdev); 1060 rs600_irq_disable(rdev);
@@ -1065,7 +1065,7 @@ int rs600_suspend(struct radeon_device *rdev)
1065void rs600_fini(struct radeon_device *rdev) 1065void rs600_fini(struct radeon_device *rdev)
1066{ 1066{
1067 radeon_pm_fini(rdev); 1067 radeon_pm_fini(rdev);
1068 r600_audio_fini(rdev); 1068 radeon_audio_fini(rdev);
1069 r100_cp_fini(rdev); 1069 r100_cp_fini(rdev);
1070 radeon_wb_fini(rdev); 1070 radeon_wb_fini(rdev);
1071 radeon_ib_pool_fini(rdev); 1071 radeon_ib_pool_fini(rdev);
diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c
index 0fc559221933..516ca27cfa12 100644
--- a/drivers/gpu/drm/radeon/rs690.c
+++ b/drivers/gpu/drm/radeon/rs690.c
@@ -771,7 +771,7 @@ int rs690_resume(struct radeon_device *rdev)
771int rs690_suspend(struct radeon_device *rdev) 771int rs690_suspend(struct radeon_device *rdev)
772{ 772{
773 radeon_pm_suspend(rdev); 773 radeon_pm_suspend(rdev);
774 r600_audio_fini(rdev); 774 radeon_audio_fini(rdev);
775 r100_cp_disable(rdev); 775 r100_cp_disable(rdev);
776 radeon_wb_disable(rdev); 776 radeon_wb_disable(rdev);
777 rs600_irq_disable(rdev); 777 rs600_irq_disable(rdev);
@@ -782,7 +782,7 @@ int rs690_suspend(struct radeon_device *rdev)
782void rs690_fini(struct radeon_device *rdev) 782void rs690_fini(struct radeon_device *rdev)
783{ 783{
784 radeon_pm_fini(rdev); 784 radeon_pm_fini(rdev);
785 r600_audio_fini(rdev); 785 radeon_audio_fini(rdev);
786 r100_cp_fini(rdev); 786 r100_cp_fini(rdev);
787 radeon_wb_fini(rdev); 787 radeon_wb_fini(rdev);
788 radeon_ib_pool_fini(rdev); 788 radeon_ib_pool_fini(rdev);
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 9bdeb4edb722..01ee96acb398 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -1830,7 +1830,7 @@ int rv770_resume(struct radeon_device *rdev)
1830int rv770_suspend(struct radeon_device *rdev) 1830int rv770_suspend(struct radeon_device *rdev)
1831{ 1831{
1832 radeon_pm_suspend(rdev); 1832 radeon_pm_suspend(rdev);
1833 r600_audio_fini(rdev); 1833 radeon_audio_fini(rdev);
1834 uvd_v1_0_fini(rdev); 1834 uvd_v1_0_fini(rdev);
1835 radeon_uvd_suspend(rdev); 1835 radeon_uvd_suspend(rdev);
1836 r700_cp_stop(rdev); 1836 r700_cp_stop(rdev);
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 86cdc6798240..73107fe9e46f 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -6909,7 +6909,7 @@ int si_resume(struct radeon_device *rdev)
6909int si_suspend(struct radeon_device *rdev) 6909int si_suspend(struct radeon_device *rdev)
6910{ 6910{
6911 radeon_pm_suspend(rdev); 6911 radeon_pm_suspend(rdev);
6912 dce6_audio_fini(rdev); 6912 radeon_audio_fini(rdev);
6913 radeon_vm_manager_fini(rdev); 6913 radeon_vm_manager_fini(rdev);
6914 si_cp_enable(rdev, false); 6914 si_cp_enable(rdev, false);
6915 cayman_dma_stop(rdev); 6915 cayman_dma_stop(rdev);