[alsa-devel] [PATCH 1/1] ALSA: hdspm - Fix wordclock status on AES32

Takashi Iwai tiwai at suse.de
Wed Jan 9 16:22:20 CET 2013


At Wed,  9 Jan 2013 14:40:18 +0100,
Adrian Knoth wrote:
> 
> From: Andre Schramm <andre.schramm at iosono-sound.com>
> 
> Use correct bitmask for AES32 cards to determine wordclock lock state,
> add missing bitmask for sync check and make output of the corresponding
> control and /proc coherent.
> 
> Signed-off-by: Andre Schramm <andre.schramm at iosono-sound.com>
> Signed-off-by: Adrian Knoth <adi at drcomp.erfurt.thur.de>
> 
> diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c
> index 6e02e06..36e247f 100644
> --- a/sound/pci/rme9652/hdspm.c
> +++ b/sound/pci/rme9652/hdspm.c
> @@ -441,6 +441,7 @@ MODULE_SUPPORTED_DEVICE("{{RME HDSPM-MADI}}");
>  */
>  /* status */
>  #define HDSPM_AES32_wcLock	0x0200000
> +#define HDSPM_AES32_wcSync	0x0100000
>  #define HDSPM_AES32_wcFreq_bit  22
>  /* (status >> HDSPM_AES32_wcFreq_bit) & 0xF gives WC frequency (cf function
>    HDSPM_bit2freq */
> @@ -3467,10 +3468,12 @@ static int hdspm_wc_sync_check(struct hdspm *hdspm)
>  	switch (hdspm->io_type) {
>  	case AES32:
>  		status = hdspm_read(hdspm, HDSPM_statusRegister);
> -		if (status & HDSPM_wcSync)
> -			return 2;
> -		else if (status & HDSPM_wcLock)
> -			return 1;
> +		if (status & HDSPM_AES32_wcLock) {
> +			if (status & HDSPM_AES32_wcSync)
> +				return 2;
> +			else
> +				return 1;
> +		}
>  		return 0;
>  		break;
>  
> @@ -4658,6 +4661,7 @@ snd_hdspm_proc_read_aes32(struct snd_info_entry * entry,
>  	unsigned int status;
>  	unsigned int status2;
>  	unsigned int timecode;
> +	unsigned int wcLock, wcSync;
>  	int pref_syncref;
>  	char *autosync_ref;
>  	int x;
> @@ -4751,8 +4755,11 @@ snd_hdspm_proc_read_aes32(struct snd_info_entry * entry,
>  
>  	snd_iprintf(buffer, "--- Status:\n");
>  
> +	wcLock = status & HDSPM_AES32_wcLock;
> +	wcSync = wcLock && (status & HDSPM_AES32_wcSync);
> +
>  	snd_iprintf(buffer, "Word: %s  Frequency: %d\n",
> -		    (status & HDSPM_AES32_wcLock) ? "Sync   " : "No Lock",
> +		    (wcLock) ? (wcSync ? "Sync   " : "Lock") : "No Lock",

I guess you wanted to align the string size by extra spaces after
"Sync", but forgot after "Lock"?


Takashi


More information about the Alsa-devel mailing list