[alsa-devel] [PATCH][fix] ALSA: bebob: fix wrong decoding of clock information for Terratec PHASE 88 Rack FW

Clemens Ladisch clemens at ladisch.de
Sun Oct 26 18:18:03 CET 2014


Takashi Sakamoto wrote:
> Terratec PHASE 88 rack fw has two registers for source of clock, one is
> for internal/external, and another is for wordclock/spdif for external.
>
> When clock source is internal, information in another register has no meaning.
> Thus it must be ignored, but current implementation decodes it. This causes
> over-indexing reference to labels.
>
> Reported-by: András Murányi <muranyia at gmail.com>
> Tested-by: András Murányi <muranyia at gmail.com>
> Signed-off-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>

Acked-by: Clemens Ladisch <clemens at ladisch.de>

> ---
>  sound/firewire/bebob/bebob_terratec.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/sound/firewire/bebob/bebob_terratec.c b/sound/firewire/bebob/bebob_terratec.c
> index 0e4c0bf..9940611 100644
> --- a/sound/firewire/bebob/bebob_terratec.c
> +++ b/sound/firewire/bebob/bebob_terratec.c
> @@ -24,7 +24,12 @@ phase88_rack_clk_src_get(struct snd_bebob *bebob, unsigned int *id)
>  	if (err < 0)
>  		goto end;
>
> -	*id = (enable_ext & 0x01) | ((enable_word & 0x01) << 1);
> +	if (enable_ext == 0)
> +		*id = 0;
> +	else if (enable_word == 0)
> +		*id = 1;
> +	else
> +		*id = 2;
>  end:
>  	return err;
>  }


More information about the Alsa-devel mailing list