ALSA: hdspm - fix sync check on AES32
Fredrik Lingvall <fredrik.lingvall@gmail.com> has discovered wrong frequency and sync detection on AES32. According to him, the provided patch fixes these issues. Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
f6ea805f52
commit
7c4a95b5ec
1 changed files with 26 additions and 3 deletions
|
@ -1082,7 +1082,7 @@ static int hdspm_external_sample_rate(struct hdspm *hdspm)
|
||||||
case AES32:
|
case AES32:
|
||||||
status2 = hdspm_read(hdspm, HDSPM_statusRegister2);
|
status2 = hdspm_read(hdspm, HDSPM_statusRegister2);
|
||||||
status = hdspm_read(hdspm, HDSPM_statusRegister);
|
status = hdspm_read(hdspm, HDSPM_statusRegister);
|
||||||
timecode = hdspm_read(hdspm, HDSPM_timecodeRegister);
|
timecode = hdspm_read(hdspm, HDSPM_timecodeRegister);
|
||||||
|
|
||||||
syncref = hdspm_autosync_ref(hdspm);
|
syncref = hdspm_autosync_ref(hdspm);
|
||||||
|
|
||||||
|
@ -2115,6 +2115,29 @@ static int snd_hdspm_get_autosync_sample_rate(struct snd_kcontrol *kcontrol,
|
||||||
hdspm_get_s1_sample_rate(hdspm,
|
hdspm_get_s1_sample_rate(hdspm,
|
||||||
ucontrol->id.index-1);
|
ucontrol->id.index-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case AES32:
|
||||||
|
|
||||||
|
switch (kcontrol->private_value) {
|
||||||
|
case 0: /* WC */
|
||||||
|
ucontrol->value.enumerated.item[0] =
|
||||||
|
hdspm_get_wc_sample_rate(hdspm);
|
||||||
|
break;
|
||||||
|
case 9: /* TCO */
|
||||||
|
ucontrol->value.enumerated.item[0] =
|
||||||
|
hdspm_get_tco_sample_rate(hdspm);
|
||||||
|
break;
|
||||||
|
case 10: /* SYNC_IN */
|
||||||
|
ucontrol->value.enumerated.item[0] =
|
||||||
|
hdspm_get_sync_in_sample_rate(hdspm);
|
||||||
|
break;
|
||||||
|
default: /* AES1 to AES8 */
|
||||||
|
ucontrol->value.enumerated.item[0] =
|
||||||
|
hdspm_get_s1_sample_rate(hdspm,
|
||||||
|
kcontrol->private_value-1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3803,9 +3826,9 @@ static int snd_hdspm_get_sync_check(struct snd_kcontrol *kcontrol,
|
||||||
val = hdspm_tco_sync_check(hdspm); break;
|
val = hdspm_tco_sync_check(hdspm); break;
|
||||||
case 10 /* SYNC IN */:
|
case 10 /* SYNC IN */:
|
||||||
val = hdspm_sync_in_sync_check(hdspm); break;
|
val = hdspm_sync_in_sync_check(hdspm); break;
|
||||||
default:
|
default: /* AES1 to AES8 */
|
||||||
val = hdspm_aes_sync_check(hdspm,
|
val = hdspm_aes_sync_check(hdspm,
|
||||||
ucontrol->id.index-1);
|
kcontrol->private_value-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue