[alsa-devel] [PATCH v2 2/3] ALSA: seq: Avoid open-code for getting timer resolution

Ben Hutchings ben.hutchings at codethink.co.uk
Thu May 31 19:18:53 CEST 2018


On Thu, 2018-05-17 at 10:49 +0200, Takashi Iwai wrote:
> Instead of open-coding for getting the timer resolution, use the
> standard snd_timer_resolution() helper.
> 
> The original code falls back to the callback function when the
> resolution is zero, but it must be always so when the callback
> function is defined.  So this should be no functional change.

Maybe it *should* be so, but I can see three drivers where it isn't:

sound/isa/ad1816a/ad1816a_lib.c
sound/isa/wss/wss_lib.c
sound/sparc/cs4231.c

For ad1816a_lib.c, the c_resolution implementation always returns the
same value that's in resolution, so this really doesn't make a
functional change.

However, for the other two, the c_resolution implementation can return
several different values.

Ben.

> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ---
>  sound/core/seq/seq_timer.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/sound/core/seq/seq_timer.c b/sound/core/seq/seq_timer.c
> index 23167578231f..f587d0e27476 100644
> --- a/sound/core/seq/seq_timer.c
> +++ b/sound/core/seq/seq_timer.c
> @@ -371,9 +371,7 @@ static int initialize_timer(struct snd_seq_timer *tmr)
>  
>  	tmr->ticks = 1;
>  	if (!(t->hw.flags & SNDRV_TIMER_HW_SLAVE)) {
> -		unsigned long r = t->hw.resolution;
> -		if (! r && t->hw.c_resolution)
> -			r = t->hw.c_resolution(t);
> +		unsigned long r = snd_timer_resolution(tmr->timeri);
>  		if (r) {
>  			tmr->ticks = (unsigned int)(1000000000uL / (r * freq));
>  			if (! tmr->ticks)
-- 
Ben Hutchings, Software Developer                         Codethink Ltd
https://www.codethink.co.uk/                 Dale House, 35 Dale Street
                                     Manchester, M1 2HF, United Kingdom


More information about the Alsa-devel mailing list