提交 a92553ab 编写于 作者: R Rafał Miłecki 提交者: Dave Airlie

drm/radeon/kms: move audio params to separated struct

Signed-off-by: NRafał Miłecki <zajec5@gmail.com>
Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
Tested-by: NChristian König <deathsimple@vodafone.de>
Reviewed-by: NChristian König <deathsimple@vodafone.de>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 2baf8377
...@@ -120,18 +120,18 @@ void r600_audio_update_hdmi(struct work_struct *work) ...@@ -120,18 +120,18 @@ void r600_audio_update_hdmi(struct work_struct *work)
struct drm_encoder *encoder; struct drm_encoder *encoder;
int changes = 0; int changes = 0;
changes |= channels != rdev->audio_channels; changes |= channels != rdev->audio.channels;
changes |= rate != rdev->audio_rate; changes |= rate != rdev->audio.rate;
changes |= bps != rdev->audio_bits_per_sample; changes |= bps != rdev->audio.bits_per_sample;
changes |= status_bits != rdev->audio_status_bits; changes |= status_bits != rdev->audio.status_bits;
changes |= category_code != rdev->audio_category_code; changes |= category_code != rdev->audio.category_code;
if (changes) { if (changes) {
rdev->audio_channels = channels; rdev->audio.channels = channels;
rdev->audio_rate = rate; rdev->audio.rate = rate;
rdev->audio_bits_per_sample = bps; rdev->audio.bits_per_sample = bps;
rdev->audio_status_bits = status_bits; rdev->audio.status_bits = status_bits;
rdev->audio_category_code = category_code; rdev->audio.category_code = category_code;
} }
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
...@@ -157,7 +157,7 @@ static void r600_audio_engine_enable(struct radeon_device *rdev, bool enable) ...@@ -157,7 +157,7 @@ static void r600_audio_engine_enable(struct radeon_device *rdev, bool enable)
WREG32_P(R600_AUDIO_ENABLE, WREG32_P(R600_AUDIO_ENABLE,
enable ? 0x81000000 : 0x0, ~0x81000000); enable ? 0x81000000 : 0x0, ~0x81000000);
} }
rdev->audio_enabled = enable; rdev->audio.enabled = enable;
} }
/* /*
...@@ -170,11 +170,11 @@ int r600_audio_init(struct radeon_device *rdev) ...@@ -170,11 +170,11 @@ int r600_audio_init(struct radeon_device *rdev)
r600_audio_engine_enable(rdev, true); r600_audio_engine_enable(rdev, true);
rdev->audio_channels = -1; rdev->audio.channels = -1;
rdev->audio_rate = -1; rdev->audio.rate = -1;
rdev->audio_bits_per_sample = -1; rdev->audio.bits_per_sample = -1;
rdev->audio_status_bits = 0; rdev->audio.status_bits = 0;
rdev->audio_category_code = 0; rdev->audio.category_code = 0;
return 0; return 0;
} }
...@@ -243,7 +243,7 @@ void r600_audio_set_clock(struct drm_encoder *encoder, int clock) ...@@ -243,7 +243,7 @@ void r600_audio_set_clock(struct drm_encoder *encoder, int clock)
*/ */
void r600_audio_fini(struct radeon_device *rdev) void r600_audio_fini(struct radeon_device *rdev)
{ {
if (!rdev->audio_enabled) if (!rdev->audio.enabled)
return; return;
r600_audio_engine_enable(rdev, false); r600_audio_engine_enable(rdev, false);
......
...@@ -1114,6 +1114,15 @@ int radeon_pm_get_type_index(struct radeon_device *rdev, ...@@ -1114,6 +1114,15 @@ int radeon_pm_get_type_index(struct radeon_device *rdev,
enum radeon_pm_state_type ps_type, enum radeon_pm_state_type ps_type,
int instance); int instance);
struct r600_audio {
bool enabled;
int channels;
int rate;
int bits_per_sample;
u8 status_bits;
u8 category_code;
};
/* /*
* Benchmarking * Benchmarking
*/ */
...@@ -1559,15 +1568,7 @@ struct radeon_device { ...@@ -1559,15 +1568,7 @@ struct radeon_device {
int num_crtc; /* number of crtcs */ int num_crtc; /* number of crtcs */
struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */ struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */
struct mutex vram_mutex; struct mutex vram_mutex;
struct r600_audio audio; /* audio stuff */
/* audio stuff */
bool audio_enabled;
int audio_channels;
int audio_rate;
int audio_bits_per_sample;
uint8_t audio_status_bits;
uint8_t audio_category_code;
struct notifier_block acpi_nb; struct notifier_block acpi_nb;
/* only one userspace can use Hyperz features or CMASK at a time */ /* only one userspace can use Hyperz features or CMASK at a time */
struct drm_file *hyperz_filp; struct drm_file *hyperz_filp;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册