aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sound/x86
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2017-01-31 16:04:10 +0100
committerTakashi Iwai <tiwai@suse.de>2017-02-03 17:33:13 +0100
commitdf76df12f178642cac616b86a762d2ee749fe402 (patch)
tree726eec2ff1bbe4f2172009cb42662e28978f9b70 /sound/x86
parentALSA: x86: Fix for CONFIG_PM=n (diff)
downloadwireguard-linux-df76df12f178642cac616b86a762d2ee749fe402.tar.xz
wireguard-linux-df76df12f178642cac616b86a762d2ee749fe402.zip
ALSA: x86: Remove indirect call of snd_pcm_period_elapsed()
Again another indirect call... Let's straighten it up. Also define the had_stream field with a proper type instead of a void pointer. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/x86')
-rw-r--r--sound/x86/intel_hdmi_audio.c15
-rw-r--r--sound/x86/intel_hdmi_audio.h3
2 files changed, 7 insertions, 11 deletions
diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c
index fbfbf5e2b5ad..8b25687601ac 100644
--- a/sound/x86/intel_hdmi_audio.c
+++ b/sound/x86/intel_hdmi_audio.c
@@ -1028,14 +1028,12 @@ exit_put_handle:
return retval;
}
-/**
+/*
* had_period_elapsed - updates the hardware pointer status
- * @had_substream:substream for which the stream function is called
- *
+ * @had_substream: substream for which the stream function is called
*/
-static void had_period_elapsed(void *had_substream)
+static void had_period_elapsed(struct snd_pcm_substream *substream)
{
- struct snd_pcm_substream *substream = had_substream;
struct had_stream_pvt *stream;
if (!substream || !substream->runtime)
@@ -1058,7 +1056,6 @@ static int snd_intelhad_init_stream(struct snd_pcm_substream *substream)
{
struct snd_intelhad *intelhaddata = snd_pcm_substream_chip(substream);
- intelhaddata->stream_info.period_elapsed = had_period_elapsed;
intelhaddata->stream_info.had_substream = substream;
intelhaddata->stream_info.buffer_ptr = 0;
intelhaddata->stream_info.buffer_rendered = 0;
@@ -1648,11 +1645,11 @@ static int had_process_buffer_done(struct snd_intelhad *intelhaddata)
/* In case of actual data,
* report buffer_done to above ALSA layer
*/
- buf_size = intelhaddata->buf_info[buf_id].buf_size;
+ buf_size = intelhaddata->buf_info[buf_id].buf_size;
if (stream_type >= HAD_RUNNING_STREAM) {
intelhaddata->stream_info.buffer_rendered +=
(intr_count * buf_size);
- stream->period_elapsed(stream->had_substream);
+ had_period_elapsed(stream->had_substream);
}
return 0;
@@ -1694,7 +1691,7 @@ static int had_process_buffer_underrun(struct snd_intelhad *intelhaddata)
if (stream_type == HAD_RUNNING_STREAM) {
/* Report UNDERRUN error to above layers */
intelhaddata->flag_underrun = 1;
- stream->period_elapsed(stream->had_substream);
+ had_period_elapsed(stream->had_substream);
}
return 0;
diff --git a/sound/x86/intel_hdmi_audio.h b/sound/x86/intel_hdmi_audio.h
index d301c3021375..bcbb4b262fff 100644
--- a/sound/x86/intel_hdmi_audio.h
+++ b/sound/x86/intel_hdmi_audio.h
@@ -75,8 +75,7 @@ struct platform_device;
struct pcm_stream_info {
int str_id;
- void *had_substream;
- void (*period_elapsed)(void *had_substream);
+ struct snd_pcm_substream *had_substream;
u32 buffer_ptr;
u64 buffer_rendered;
u32 ring_buf_size;