ALSA: sh: aica: Convert timers to use timer_setup()
PATCH 1/1 ALSA: sh: aica: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. This requires adding a pointer to hold the timer's target substream, as there won't be a way to pass this in the future.
---
This requires commit 686fef928bba ("timer: Prepare to change timer callback argument type") in v4.14-rc3, but should be otherwise stand-alone.
--- sound/sh/aica.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-)
sound/sh/aica.c +9 -11
@@ -299,14 +299,14 @@ static void run_spu_dma(struct work_struct *work) } } -static void aica_period_elapsed (unsigned long timer_var) +static void aica_period_elapsed (struct timer_list *t) { +struct snd_card_aica *dreamcastcard =from_timer (dreamcastcard, + t, timer); +struct snd_pcm_substream *substream = dreamcastcard->timer_substream;/*timer function - so cannot sleep */ int play_period;struct snd_pcm_runtime *runtime; -struct snd_pcm_substream *substream; -struct snd_card_aica *dreamcastcard; - substream = (struct snd_pcm_substream *) timer_var; runtime = substream->runtime; dreamcastcard = substream->pcm->private_data;/* Have we played out an additional period? */
@@ -336,12 +336,12 @@ static void spu_begin_dma(struct snd_pcm_substream *substream)/*get the queue to do the work */ schedule_work (&(dreamcastcard->spu_dma_work));/* Timer may already be running */ -if (unlikely (dreamcastcard->timer.data)) { +if (unlikely (dreamcastcard->timer_substream)) {mod_timer (&dreamcastcard->timer, jiffies +4 );return ; } -setup_timer (&dreamcastcard->timer, aica_period_elapsed, - (unsigned long ) substream); +timer_setup (&dreamcastcard->timer, aica_period_elapsed,0 ); + dreamcastcard->timer_substream = substream;mod_timer (&dreamcastcard->timer, jiffies +4 ); }
@@ -379,7 +379,7 @@ static int snd_aicapcm_pcm_close(struct snd_pcm_substream {struct snd_card_aica *dreamcastcard = substream->pcm->private_data;flush_work (&(dreamcastcard->spu_dma_work)); -if (dreamcastcard->timer.data) +if (dreamcastcard->timer_substream)del_timer (&dreamcastcard->timer);kfree (dreamcastcard->channel);spu_disable ();
@@ -600,7 +600,7 @@ static int snd_aica_probe(struct platform_device *devptr) {int err;struct snd_card_aica *dreamcastcard; - dreamcastcard =kmalloc (sizeof (struct snd_card_aica ),GFP_KERNEL ); + dreamcastcard =kzalloc (sizeof (struct snd_card_aica ),GFP_KERNEL );if (unlikely (!dreamcastcard))return -ENOMEM ; err = snd_card_new(&devptr->dev, index, SND_AICA_DRIVER,
@@ -619,8 +619,6 @@ static int snd_aica_probe(struct platform_device *devptr) err =snd_aicapcmchip (dreamcastcard,0 );if (unlikely (err <0 )) goto freedreamcast; - dreamcastcard->timer.data =0 ; - dreamcastcard->channel =NULL ;/* Add basic controls */ err =add_aicamixer_controls (dreamcastcard);if (unlikely (err <0 ))
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Quoted 14 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly. This requires adding a pointer to hold the timer's target substream, as there won't be a way to pass this in the future.Cc Jaroslav Kysela <[email protected]>Cc Takashi Iwai <[email protected]>Cc Bhumika Goyal <[email protected]>Cc Mark Brown <[email protected]>Cc Thomas Gleixner <[email protected]>Signed-off-by Kees Cook <[email protected]>
Quoted 4 lines
---
This requires commit686fef928bba("timer: Prepare to change timer callback argument type") in v4.14-rc3, but should be otherwise stand-alone.
The conversions look straightforward, so I'm going to apply it (and other two you posted). But now I wonder why only three were chosen. Will you keep working on the rest usages in sound/*, or would you expect us doing the rest?
thanks,
Takashi
Quoted 21 lines · Takashi Iwai
Quoted 14 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly. This requires adding a pointer to hold the timer's target substream, as there won't be a way to pass this in the future.Cc Jaroslav Kysela <[email protected]>Cc Takashi Iwai <[email protected]>Cc Bhumika Goyal <[email protected]>Cc Mark Brown <[email protected]>Cc Thomas Gleixner <[email protected]>Signed-off-by Kees Cook <[email protected]>Quoted 4 lines
---
This requires commit686fef928bba("timer: Prepare to change timer callback argument type") in v4.14-rc3, but should be otherwise stand-alone.
Quoted 4 lines
The conversions look straightforward, so I'm going to apply it (and other two you posted). But now I wonder why only three were chosen. Will you keep working on the rest usages in
sound/*, or would you expect us doing the rest?
Hi, thanks for applying them!
I'm working my way through the "non-trivial" changes first. I have a coccinelle script that will do a mass-conversion of the common cases. It's possible that those changes cover the other usages in sound/* or that I haven't made my way through the others yet (it's a very long list). I wouldn't object to other people helping with the conversions, of course. :)
-Kees
Signature · 2 lines
Kees Cook Pixel Security
Quoted 28 lines · Kees Cook
Quoted 21 lines · Takashi Iwai
Quoted 14 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly. This requires adding a pointer to hold the timer's target substream, as there won't be a way to pass this in the future.Cc Jaroslav Kysela <[email protected]>Cc Takashi Iwai <[email protected]>Cc Bhumika Goyal <[email protected]>Cc Mark Brown <[email protected]>Cc Thomas Gleixner <[email protected]>Signed-off-by Kees Cook <[email protected]>Quoted 4 lines
---
This requires commit686fef928bba("timer: Prepare to change timer callback argument type") in v4.14-rc3, but should be otherwise stand-alone.Quoted 4 lines
The conversions look straightforward, so I'm going to apply it (and other two you posted). But now I wonder why only three were chosen. Will you keep working on the rest usages in
sound/*, or would you expect us doing the rest?
Quoted 8 lines
Hi, thanks for applying them!
I'm working my way through the "non-trivial" changes first. I have a coccinelle script that will do a mass-conversion of the common cases. It's possible that those changes cover the other usages in
sound/*or that I haven't made my way through the others yet (it's a very long list). I wouldn't object to other people helping with the conversions, of course. :)
OK, scripting is a better way, then I'd save my time and wait until you get more systematic coverage, then :)
thanks,
Takashi