Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: atmel_abdac: clk_round_rate() can return a zero upon error

Treat both negative and zero return values from clk_round_rate()
as errors. This is needed since subsequent patches will convert
clk_round_rate()'s return value to be an unsigned type, rather
than a signed type, since some clock sources can generate rates higher
than (2^31)-1 Hz.

Eventually, when calling clk_round_rate(), only a return value of
zero will be considered a error; all other values will be
considered valid rates. The comparison against values less than
0 is kept to preserve the correct behavior in the meantime.

Signed-off-by: Paul Walmsley <pwalmsley@nvidia.com>
Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Paul Walmsley and committed by
Takashi Iwai
337bb336 f62438ac

+1 -1
+1 -1
sound/atmel/abdac.c
··· 354 354 /* we start at 192 kHz and work our way down to 5112 Hz */ 355 355 while (new_rate >= RATE_MIN && index < (MAX_NUM_RATES + 1)) { 356 356 new_rate = clk_round_rate(dac->sample_clk, 256 * new_rate); 357 - if (new_rate < 0) 357 + if (new_rate <= 0) 358 358 break; 359 359 /* make sure we are below the ABDAC clock */ 360 360 if (new_rate <= clk_get_rate(dac->pclk)) {