ALSA: x86: Remove indirect call of snd_pcm_period_elapsed()
authorTakashi Iwai <tiwai@suse.de>
Tue, 31 Jan 2017 15:04:10 +0000 (16:04 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 3 Feb 2017 16:33:13 +0000 (17:33 +0100)
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>
sound/x86/intel_hdmi_audio.c
sound/x86/intel_hdmi_audio.h

index fbfbf5e2b5ad40f21a45687c23ed1da2a280dff6..8b25687601ac0edaa9cf760b6b8df2fbe4ad04b4 100644 (file)
@@ -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;
index d301c302137538024222c78ecb32c8a53a3ff57e..bcbb4b262fffa054b25f11eb87d5ab528f41407d 100644 (file)
@@ -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;