From: Alex Deucher <alexdeucher@gmail.com>
To: dri-devel@lists.freedesktop.org
Cc: Alex Deucher <alexander.deucher@amd.com>, slava.grigorev@amd.com
Subject: [PATCH 08/24] radeon/audio: consolidate audio_enable() functions
Date: Tue, 13 Jan 2015 12:46:37 -0500 [thread overview]
Message-ID: <1421171213-23977-9-git-send-email-alexander.deucher@amd.com> (raw)
In-Reply-To: <1421171213-23977-1-git-send-email-alexander.deucher@amd.com>
From: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/radeon/dce3_1_afmt.c | 4 ++--
drivers/gpu/drm/radeon/dce6_afmt.c | 2 +-
drivers/gpu/drm/radeon/evergreen_hdmi.c | 18 ++++--------------
drivers/gpu/drm/radeon/r600_hdmi.c | 9 ++++-----
drivers/gpu/drm/radeon/radeon_audio.c | 17 +++++++++++++----
drivers/gpu/drm/radeon/radeon_audio.h | 4 ++++
6 files changed, 28 insertions(+), 26 deletions(-)
diff --git a/drivers/gpu/drm/radeon/dce3_1_afmt.c b/drivers/gpu/drm/radeon/dce3_1_afmt.c
index f4cddb2..f7b2659 100644
--- a/drivers/gpu/drm/radeon/dce3_1_afmt.c
+++ b/drivers/gpu/drm/radeon/dce3_1_afmt.c
@@ -137,7 +137,7 @@ void dce3_1_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *m
/* disable audio prior to setting up hw */
dig->afmt->pin = radeon_audio_get_pin(encoder);
- r600_audio_enable(rdev, dig->afmt->pin, 0);
+ radeon_audio_enable(rdev, dig->afmt->pin, 0);
r600_audio_set_dto(encoder, mode->clock);
@@ -212,5 +212,5 @@ void dce3_1_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *m
r600_hdmi_audio_workaround(encoder);
/* enable audio after to setting up hw */
- r600_audio_enable(rdev, dig->afmt->pin, 0xf);
+ radeon_audio_enable(rdev, dig->afmt->pin, 0xf);
}
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c
index 96f298c..7fd7f15 100644
--- a/drivers/gpu/drm/radeon/dce6_afmt.c
+++ b/drivers/gpu/drm/radeon/dce6_afmt.c
@@ -257,7 +257,7 @@ void dce6_audio_fini(struct radeon_device *rdev)
return;
for (i = 0; i < rdev->audio.num_pins; i++)
- dce6_audio_enable(rdev, &rdev->audio.pin[i], false);
+ radeon_audio_enable(rdev, &rdev->audio.pin[i], false);
rdev->audio.enabled = false;
}
diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c b/drivers/gpu/drm/radeon/evergreen_hdmi.c
index 6bd113b..2f29918 100644
--- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
+++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
@@ -34,7 +34,7 @@
#include "atom.h"
/* enable the audio stream */
-static void dce4_audio_enable(struct radeon_device *rdev,
+void dce4_audio_enable(struct radeon_device *rdev,
struct r600_audio_pin *pin,
u8 enable_mask)
{
@@ -300,11 +300,7 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
/* disable audio prior to setting up hw */
dig->afmt->pin = radeon_audio_get_pin(encoder);
- if (ASIC_IS_DCE6(rdev)) {
- dce6_audio_enable(rdev, dig->afmt->pin, 0);
- } else {
- dce4_audio_enable(rdev, dig->afmt->pin, 0);
- }
+ radeon_audio_enable(rdev, dig->afmt->pin, 0);
evergreen_audio_set_dto(encoder, mode->clock);
@@ -435,10 +431,7 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
WREG32(AFMT_RAMP_CONTROL3 + offset, 0x00000001);
/* enable audio after to setting up hw */
- if (ASIC_IS_DCE6(rdev))
- dce6_audio_enable(rdev, dig->afmt->pin, 1);
- else
- dce4_audio_enable(rdev, dig->afmt->pin, 0xf);
+ radeon_audio_enable(rdev, dig->afmt->pin, 0xf);
}
void evergreen_hdmi_enable(struct drm_encoder *encoder, bool enable)
@@ -458,10 +451,7 @@ void evergreen_hdmi_enable(struct drm_encoder *encoder, bool enable)
return;
if (!enable && dig->afmt->pin) {
- if (ASIC_IS_DCE6(rdev))
- dce6_audio_enable(rdev, dig->afmt->pin, 0);
- else
- dce4_audio_enable(rdev, dig->afmt->pin, 0);
+ radeon_audio_enable(rdev, dig->afmt->pin, 0);
dig->afmt->pin = NULL;
}
diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c
index 53159a2..f92eb77 100644
--- a/drivers/gpu/drm/radeon/r600_hdmi.c
+++ b/drivers/gpu/drm/radeon/r600_hdmi.c
@@ -192,8 +192,7 @@ void r600_audio_fini(struct radeon_device *rdev)
if (!rdev->audio.enabled)
return;
- r600_audio_enable(rdev, &rdev->audio.pin[0], 0);
-
+ radeon_audio_enable(rdev, &rdev->audio.pin[0], 0);
rdev->audio.enabled = false;
}
@@ -489,7 +488,7 @@ void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mod
/* disable audio prior to setting up hw */
dig->afmt->pin = radeon_audio_get_pin(encoder);
- r600_audio_enable(rdev, dig->afmt->pin, 0xf);
+ radeon_audio_enable(rdev, dig->afmt->pin, 0);
r600_audio_set_dto(encoder, mode->clock);
@@ -575,7 +574,7 @@ void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mod
WREG32(HDMI0_RAMP_CONTROL3 + offset, 0x00000001);
/* enable audio after to setting up hw */
- r600_audio_enable(rdev, dig->afmt->pin, 0xf);
+ radeon_audio_enable(rdev, dig->afmt->pin, 0xf);
}
/**
@@ -661,7 +660,7 @@ void r600_hdmi_enable(struct drm_encoder *encoder, bool enable)
return;
if (!enable && dig->afmt->pin) {
- r600_audio_enable(rdev, dig->afmt->pin, 0);
+ radeon_audio_enable(rdev, dig->afmt->pin, 0);
dig->afmt->pin = NULL;
}
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
index 5aedf5b..eed5c74 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.c
+++ b/drivers/gpu/drm/radeon/radeon_audio.c
@@ -30,6 +30,8 @@
void r600_audio_enable(struct radeon_device *rdev, struct r600_audio_pin *pin,
u8 enable_mask);
+void dce4_audio_enable(struct radeon_device *rdev, struct r600_audio_pin *pin,
+ u8 enable_mask);
void dce6_audio_enable(struct radeon_device *rdev, struct r600_audio_pin *pin,
u8 enable_mask);
u32 dce6_endpoint_rreg(struct radeon_device *rdev, u32 offset, u32 reg);
@@ -86,16 +88,19 @@ static void radeon_audio_wreg(struct radeon_device *rdev, u32 offset,
static struct radeon_audio_basic_funcs dce32_funcs = {
.endpoint_rreg = radeon_audio_rreg,
.endpoint_wreg = radeon_audio_wreg,
+ .enable = r600_audio_enable,
};
static struct radeon_audio_basic_funcs dce4_funcs = {
.endpoint_rreg = radeon_audio_rreg,
.endpoint_wreg = radeon_audio_wreg,
+ .enable = dce4_audio_enable,
};
static struct radeon_audio_basic_funcs dce6_funcs = {
.endpoint_rreg = dce6_endpoint_rreg,
.endpoint_wreg = dce6_endpoint_wreg,
+ .enable = dce6_audio_enable,
};
static struct radeon_audio_funcs dce32_hdmi_funcs = {
@@ -201,10 +206,7 @@ int radeon_audio_init(struct radeon_device *rdev)
/* disable audio. it will be set up later */
for (i = 0; i < rdev->audio.num_pins; i++)
- if (ASIC_IS_DCE6(rdev))
- dce6_audio_enable(rdev, &rdev->audio.pin[i], false);
- else
- r600_audio_enable(rdev, &rdev->audio.pin[i], false);
+ radeon_audio_enable(rdev, &rdev->audio.pin[i], false);
return 0;
}
@@ -371,3 +373,10 @@ void radeon_audio_select_pin(struct drm_encoder *encoder)
if (radeon_encoder->audio && radeon_encoder->audio->select_pin)
radeon_encoder->audio->select_pin(encoder);
}
+
+void radeon_audio_enable(struct radeon_device *rdev,
+ struct r600_audio_pin *pin, u8 enable_mask)
+{
+ if (rdev->audio.funcs->enable)
+ rdev->audio.funcs->enable(rdev, pin, enable_mask);
+}
diff --git a/drivers/gpu/drm/radeon/radeon_audio.h b/drivers/gpu/drm/radeon/radeon_audio.h
index 36d329a..2bd845d 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.h
+++ b/drivers/gpu/drm/radeon/radeon_audio.h
@@ -37,6 +37,8 @@ struct radeon_audio_basic_funcs
u32 (*endpoint_rreg)(struct radeon_device *rdev, u32 offset, u32 reg);
void (*endpoint_wreg)(struct radeon_device *rdev,
u32 offset, u32 reg, u32 v);
+ void (*enable)(struct radeon_device *rdev,
+ struct r600_audio_pin *pin, u8 enable_mask);
};
struct radeon_audio_funcs
@@ -64,5 +66,7 @@ void radeon_audio_write_latency_fields(struct drm_encoder *encoder,
struct drm_display_mode *mode);
struct r600_audio_pin *radeon_audio_get_pin(struct drm_encoder *encoder);
void radeon_audio_select_pin(struct drm_encoder *encoder);
+void radeon_audio_enable(struct radeon_device *rdev,
+ struct r600_audio_pin *pin, u8 enable_mask);
#endif
--
1.8.3.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-01-13 17:47 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-13 17:46 [PATCH 00/24] radeon audio rework Alex Deucher
2015-01-13 17:46 ` [PATCH 01/24] radeon/audio: consolidate audio_init() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 02/24] radeon/audio: defined initial audio interface that gets initialized via detect() call Alex Deucher
2015-01-13 17:46 ` [PATCH 03/24] radeon/audio: consolidate write_sad_regs() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 04/24] radeon/audio: consolidate write_speaker_allocation() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 05/24] radeon/audio: consolidate write_latency_fields() functions Alex Deucher
2015-01-14 14:51 ` Christian König
2015-01-13 17:46 ` [PATCH 06/24] radeon/audio: consolidate audio_get_pin() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 07/24] radeon/audio: consolidate select_pin() functions Alex Deucher
2015-01-13 17:46 ` Alex Deucher [this message]
2015-01-13 17:46 ` [PATCH 09/24] radeon/audio: consolidate audio_fini() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 10/24] radeon/audio: consolidate audio_set_dto() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 11/24] radeon/audio: consolidate update_avi_infoframe() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 12/24] radeon/audio: consolidate update_acr() functions Alex Deucher
2015-01-14 14:55 ` Christian König
2015-01-13 17:46 ` [PATCH 13/24] radeon/audio: moved VBI packet programming to separate functions Alex Deucher
2015-01-13 17:46 ` [PATCH 14/24] radeon: moved HDMI color depth programming to a separate function Alex Deucher
2015-01-13 17:46 ` [PATCH 15/24] radeon/audio: removed unnecessary CRC control programing Alex Deucher
2015-01-13 17:46 ` [PATCH 16/24] radeon/audio: set_avi_packet() function cleanup Alex Deucher
2015-01-13 17:46 ` [PATCH 17/24] radeon/audio: moved audio packet programming to a separate function Alex Deucher
2015-01-13 17:46 ` [PATCH 18/24] radeon/audio: moved mute " Alex Deucher
2015-01-13 17:46 ` [PATCH 19/24] radeon/audio: removed unnecessary debug settings Alex Deucher
2015-01-13 17:46 ` [PATCH 20/24] radeon/audio: consolidate audio_mode_set() functions Alex Deucher
2015-01-13 17:46 ` [PATCH 21/24] radeon/audio: applied audio_dpms() and audio_mode_set() calls Alex Deucher
2015-01-13 17:46 ` [PATCH 22/24] radeon/audio: moved audio caps programming to audio_hotplug() function Alex Deucher
2015-01-13 17:46 ` [PATCH 23/24] radeon/audio: enable DP audio Alex Deucher
2015-01-13 17:46 ` [PATCH 24/24] drm/radeon: whitespace clean up in radeon_audio.c Alex Deucher
2015-01-14 15:01 ` [PATCH 00/24] radeon audio rework Christian König
2015-01-14 21:47 ` Alex Deucher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1421171213-23977-9-git-send-email-alexander.deucher@amd.com \
--to=alexdeucher@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=slava.grigorev@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox