Skip to content

Commit

Permalink
drm/radeon/kms: track audio engine state, do not use not setup timer
Browse files Browse the repository at this point in the history
This is needed to enable audio support on devices using polling. In case user
decides to disable audio (module parameter) we still will try to use timer in
r600_audio_enable_polling. This would lead to BUG in kernel/timer.c.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
  • Loading branch information
Rafał Miłecki authored and Dave Airlie committed Aug 2, 2010
1 parent e7aeeba commit 7eea7e9
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/gpu/drm/radeon/r600_audio.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ static void r600_audio_engine_enable(struct radeon_device *rdev, bool enable)
{
DRM_INFO("%s audio support", enable ? "Enabling" : "Disabling");
WREG32_P(R600_AUDIO_ENABLE, enable ? 0x81000000 : 0x0, ~0x81000000);
rdev->audio_enabled = enable;
}

/*
Expand Down Expand Up @@ -200,7 +201,8 @@ void r600_audio_enable_polling(struct drm_encoder *encoder)
return;

radeon_encoder->audio_polling_active = 1;
mod_timer(&rdev->audio_timer, jiffies + 1);
if (rdev->audio_enabled)
mod_timer(&rdev->audio_timer, jiffies + 1);
}

/*
Expand Down Expand Up @@ -266,7 +268,7 @@ void r600_audio_set_clock(struct drm_encoder *encoder, int clock)
*/
void r600_audio_fini(struct radeon_device *rdev)
{
if (!radeon_audio || !r600_audio_chipset_supported(rdev))
if (!rdev->audio_enabled)
return;

del_timer(&rdev->audio_timer);
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/radeon/radeon.h
Original file line number Diff line number Diff line change
Expand Up @@ -1084,6 +1084,7 @@ struct radeon_device {
struct mutex vram_mutex;

/* audio stuff */
bool audio_enabled;
struct timer_list audio_timer;
int audio_channels;
int audio_rate;
Expand Down

0 comments on commit 7eea7e9

Please sign in to comment.