sound, SB, AC97 и другое

Drivers for sound cards
  • Я нашёл ошибки в исходниках.

    Code: Select all

    	   mov eax, VALID_IRQ
    	   mov ebx, [ctrl.int_line]
    	   mov esi, msgInvIRQ
    	   bt eax, ebx
    	   jnc .fail_msg
    	   mov eax, ATTCH_IRQ
    	   mov esi, msgAttchIRQ
    	   bt eax, ebx
    	   jnc .fail_msg
    
    Этот код уже не нужен
    AttachIntHandler стоит не в том месте

    Code: Select all

    .reg:
          лучше здесь
    	   stdcall RegService, sz_sound_srv, service_proc
    	   ret
    

    Code: Select all

    ;Asper This part is from "azx_probe" proc. [
    	   call  azx_codec_create
    	   cmp	 eax, 0
    	   jl	 .fail
    
    	   call  azx_codec_configure
    	   cmp	 eax, 0
    	   jl	 .fail
    ;] Asper
    azx_codec_create не меняет значение регистра eax. В результате проверяется значение eax после вызова AttachIntHandler. Я замаскировал проверки и звук заработал.
  • Serge wrote:Я нашёл ошибки в исходниках.
    Угу, в версии 018 я их исправил.
    Serge wrote:звук заработал.
    Замечательно! :)
  • Mario

    Спасибо за проведенные тесты. Странно, что ASUS M3N78-VM опять перестал работать. Возможно дело в том, что я поставил задержки при инициализации кодеков почти на самый минимум. У меня работает на компьютере, ноутбуке и неттопе.
    А лог с него действительно правильный.
  • Да и ещё недавно покопался в сети в поисках спецификации HDA и нашел версию 1.0a, в которой внесен ряд исправлений в том числе насчет таймингов:
    Fixed timing error in “Codec Discovery” section that SW
    should wait for at least 521 us (25 frames) after reading
    CRST# as „1‟ before accessing codec.
    А вот это я вообще обнаружил методом тыка в tv_017a :) :
    Strongly recommend the default value for EAPD to be „1‟ in
    “EAPD/BTL Enable” section.
  • Нашёл ошибку с set_channel_volume. При уровне -5000 звук громче чем при -1000. И дефолтный уровень высоковат (для моей платы точно).
  • Serge wrote:Нашёл ошибку с set_channel_volume. При уровне -5000 звук громче чем при -1000.
    Ага, я её ещё не доделал. System audio mixer кстати наглядно этот баг демонстрирует, поэтому я и не рекомендовал им пока пользоваться применительно к HDA.
    Serge wrote:И дефолтный уровень высоковат (для моей платы точно).
    Нашёл ошибку с set_channel_volume. При уровне -5000 звук громче чем при -1000. И дефолтный уровень высоковат (для моей платы точно).
    А что значит высоковат? Драйвер по дефолту ставит громкость на максимум, который предоставляют усилители на виджетах, т.е. ставится максимальный уровень, который можно выжать. Нужно доделать set_channel_volume и system audio mixer и можно будет ставить любой уровень громкости во всей системе.
  • Высоковат означает что наушники 32Ом хрипят предсмертным хрипом. На АC97 по дефолту было тоже самое, поэтому там драйвер выставляет -16.5dB.
    Spoiler:Мои эксперименты со звуком на ac97 начались с того, что я спалил левый канал в наушниках 24Ом
  • Serge
    Если бы ты включал наушники через колонку, то вероятность спалить канал была бы в разы меньше.
  • На стационарном компе запускается АС97СНД, играет, но звука не слышно. Раньше даже не запускалось. Сейчас на ноуте ещё проверю и скину логи.

    : Ну я нажал на панели на кнопочку "звук выключен", думал поможет. Нет, эффект тот же. И тут я, запустив меню слышу, "Бшп!". Шо за?! Открываю миди-плеер и офигиваю когда слышу как мой встроенный динамик играет МИДИ!!!!11 За 100 лет в проекте впервые слышу миди из Колибри!!!11
    Из хаоса в космос
  • Не прошло и (Сколько?) лет... Надо чаще жмакать по кнопкам. :mrgreen:
  • Serge
    Теперь понимаю, почему ты не выставил на звук максимум для AC97. Я с такой проблемой пока ни разу не сталкивался.
    Если что в драйвере HDA за установку уровня громкости по умолчанию, отвечают вот эти вот строки:

    Code: Select all

    ; unmute (and set max vol) the output amplifier
    proc  unmute_output stdcall, node:dword
    ;...
        mov      eax, [esi + HDA_GNODE.amp_out_caps]
        mov      ecx, eax
    
        and      eax, AC_AMPCAP_NUM_STEPS
        shr      eax, AC_AMPCAP_NUM_STEPS_SHIFT
    
        stdcall  snd_hda_codec_amp_stereo, ebx, HDA_OUTPUT, 0, 0xFF, eax
    
    ;...
    endp
    
    В eax функции snd_hda_codec_amp_stereo передается уровень громкости (измеряется в STEPS).

    Замечу ещё, что эта функция вызывается для каждого виджета, который встречается по нашей дороге (output path) от HDA-link до jack и при этом содержит собственно усилитель (amplifier). Различные виджеты могут иметь или не иметь усилители, усилители могут иметь различное максимальное значение STEPS.

    Leency
    Ok, посмотрим лог.
  • 00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
    018й драйвер, ядра 2203 и последнее (2245е). Диски /bd0/1 (ext3) и /bd0/2 (fat32).
    На обоих ядрах один и тот же результат - зависание при обращении к диску (любому из двух) во время воспроизведения mp3, практически в течении секунды (еле успел скопировать boardlog.txt на fat32, и то не с первого раза). Зависание иногда мертвое (курсор не движется, часы не мигают, на доске сообщения не появляются, звук "икает" на одном месте), иногда наполовину мертвое (не работает диск, звук "икает" на одном месте, перезагрузка приводит к окончательному зависанию, все прочее работает). При попытке посмотреть видео через fplay - несколько секунд смотрится, затем начинает подтормаживать, заикается и через пару секунд после первого заикания - зависание (от полумертвого до мертвого).
    Лог прилагаю.
    Attachments
    BOARDLOG.TXT (1.08 KiB)
    Downloaded 183 times
  • Вот лог со стационарного компа.

    Плеер как бы играет, но звука нет. PCIdev нужен? Мать P5k-E/Wi-Fi.
    Attachments
    BOARDLOG.TXT (4.02 KiB)
    Downloaded 176 times
    Из хаоса в космос
  • Вот лог с ноута Acer Aspire 4740G.

    Плеер как бы играет, но звука нет. Очень долго стартует. После закрытия плеер висит в процессах. [/quote]
    Attachments
    BOARDLOG.TXT (8.48 KiB)
    Downloaded 179 times
    PCIDEV.TXT (2.32 KiB)
    Downloaded 166 times
    Из хаоса в космос
  • Who is online

    Users browsing this forum: No registered users and 6 guests