27.09.2013 13:19, Rafał Miłecki kirjoitti:
2013/9/22 Anssi Hannula anssi.hannula@iki.fi:
pos = 20;
for (i = 1; i <= 14; i++) {
What about using HDMI_AUDIO_CODING_TYPE_PCM and HDMI_AUDIO_CODING_TYPE_WMA_PRO?
Well, this is what I meant when I said I didn't clean that function up yet :)
The magic numbers are there in this version because patch_hdmi.c doesn't have those defines. So either the defines need to go to a common header for hda_eld.c and patch_hdmi.c, or the function needs to go to hda_eld.c (and needed ati/amd defines moved accordingly).
if (i == 13) /* not handled by ATI/AMD */
continue;
Replace 13 with HDMI_AUDIO_CODING_TYPE_DST and add HDMI_AUDIO_CODING_TYPE_DSD (it's not used/reserved too).
Ah, nice catch, I missed that reservation :)
snd_hda_codec_write(codec, nid, 0, ATI_VERB_SET_AUDIO_DESCRIPTOR, i << 3);
ati_sad = snd_hda_codec_read(codec, nid, 0, ATI_VERB_GET_AUDIO_DESCRIPTOR, 0);
Now I understand why I couldn't RE that. I didn't know I have to write something to the ATI_VERB_SET_AUDIO_DESCRIPTOR.
Yep.
if (i == 1 && ati_sad & 0xff000000 && (ati_sad & 0xff00) != (ati_sad & 0xff000000) >> 16) {
Don't you get a warning about lacking brackets around ati_sad & 0xff000000 ?
Not sure, but will change of course.
Please replace magic "1" with HDMI_AUDIO_CODING_TYPE_PCM.