Page 48 of 66
Re: sound, SB, AC97 и другое
Posted: Sun Jan 23, 2011 8:52 pm
by yogev_ezra
Foldl wrote:yogev_ezra wrote:Маленькое замечание: наверное это всё-таки Realtek ALC269 (так в логе указано)
Дает именно эту строчку, перепроверил. Что там на самом деле не знаю, нужно еще разбираться.
Может это глюк в Linux, можно его Device ID? Типа 10ec:0259 или какой?
Тут его в списке нет:
http://www.hardwaresecrets.com/article/ ... able/520/2
Тут тоже (это с сайта Realtek), хотя оба списка на 100% не совпадают:

-
High_Definition_Audio_Codec_Selection_Guide_07182008.gif (122.52 KiB)
Viewed 5046 times
Re: sound, SB, AC97 и другое
Posted: Sun Jan 23, 2011 9:23 pm
by Foldl
yogev_ezra wrote:Может это глюк в Linux, можно его Device ID? Типа 10ec:0259 или какой?
Code: Select all
00:1b.0 0403: 8086:27d8 (rev 02)
Subsystem: 1043:841c
Flags: bus master, fast devsel, latency 0, IRQ 42
Memory at f7cf8000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [100] Virtual Channel <?>
Capabilities: [130] Root Complex Link <?>
Kernel driver in use: HDA Intel
00: 86 80 d8 27 06 04 10 00 02 00 03 04 08 00 00 00
10: 04 80 cf f7 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 1c 84
30: 00 00 00 00 50 00 00 00 00 00 00 00 04 01 00 00
Code: Select all
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
Subsystem: ASUSTeK Computer Inc. Device 841c
Flags: bus master, fast devsel, latency 0, IRQ 42
Memory at f7cf8000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [100] Virtual Channel <?>
Capabilities: [130] Root Complex Link <?>
Kernel driver in use: HDA Intel
00: 86 80 d8 27 06 04 10 00 02 00 03 04 08 00 00 00
10: 04 80 cf f7 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 1c 84
30: 00 00 00 00 50 00 00 00 00 00 00 00 04 01 00 00
Или не то?
Re: sound, SB, AC97 и другое
Posted: Sun Jan 23, 2011 10:30 pm
by yogev_ezra
Foldl: 1043:841c это типа "
Realtek HDA codec ALC269 который засунут в железо от ASUS" (не смог точнее сформулировать

). Полный код: 10EC

841C:1043
Тогда думаю,
Asper может как-то по-другому его назвать в драйвере HDA, чтобы отличить его от Realtek HDA codec ALC269 не засунутого в ASUS
Asper: Двоеточие мигает - уже хорошо, значит, не завис

Будем искать, как клавиатуру или мышку присобачить.
Re: sound, SB, AC97 и другое
Posted: Mon Jan 24, 2011 4:22 pm
by hidnplayr
Asper, I wrote the information about infinity sound system on the wiki, here:
http://wiki.kolibrios.org/wiki/Writing_ ... _KolibriOS
Re: sound, SB, AC97 и другое
Posted: Tue Jan 25, 2011 7:43 pm
by Asper
Атауальпа
Похоже щелчки не так просто устранить как казалось. Вызываю
azx_get_position в обработчике прерываний
hda_irq. На
M4A78-VM всегда выдаёт значение
LPIB=0, т.е прерывание сработало как положено по окончанию буфера, на
RDC же между
LPIB=0 с различной периодичностью проскакивают
LPIB=0x4CC и др. значения, что свидетельствует о слишком раннем срабатывании прерывания до окончания буфера (напоминаю, что размер буфера=0x4000).
При этом загрузка процессора на
M4A78-VM 0%, а на
RDC колеблется от 2% до 30%. Видимо на пиковой нагрузке и срабатывает "раннее прерывание" дающее щелчок. Тут ещё видимо проблема в низкой работе с устройствами хранения информации и соответственно в работе
DMA.
Пробовал различные способы, но пока ничего толкового не выходит.

Буду работать дальше.
yogev_ezra
yogev_ezra wrote:Foldl: 1043:841c это типа "Realtek HDA codec ALC269 который засунут в железо от ASUS" (не смог точнее сформулировать ). Полный код: 10EC

841C:1043
Тогда думаю, Asper может как-то по-другому его назвать в драйвере HDA, чтобы отличить его от Realtek HDA codec ALC269 не засунутого в ASUS
А зачем?
DeviceID=0269 значит
ALC269, а учет
Subsystem и конкретных моделей в драйвере на мой взгляд ни к чему, т.к. в отличие от
ALSA я пока не использую патчей и все конфигурации пока работают с единым драйвером.
hidnplayr
Thanks! I think I need to written some new sections to this article.

Re: sound, SB, AC97 и другое
Posted: Tue Jan 25, 2011 8:24 pm
by Serge
Больше похоже на запаздывание обработчика. Отсюда и щелчки.
Re: sound, SB, AC97 и другое
Posted: Tue Jan 25, 2011 8:33 pm
by Asper
Serge
Это как? Я полагаю, что пришло прерывание сработал обработчик. Или сам обработчик слишком долго выполняется? В таком случае единственое, что может там долго срабатывать это callback функция, или нет?
Re: sound, SB, AC97 и другое
Posted: Tue Jan 25, 2011 10:25 pm
by tsdima
Asper wrote:0x4CC и др. значения, что свидетельствует о слишком раннем срабатывании прерывания до окончания буфера (напоминаю, что размер буфера=0x4000)
Когда я делал драйвер для fm801, была похожая ситуация. Исправилась, после того, как я убрал заполнение второго буфера в процедуре старта проигрывания. Писал
тут.
Re: sound, SB, AC97 и другое
Posted: Tue Jan 25, 2011 11:11 pm
by Asper
tsdima
Я помню то твоё сообщение. Только я вообще не заполняю буфер в
play.
Code: Select all
align 4
play:
call azx_stream_start
xor eax, eax
ret
Code: Select all
; start a stream
proc azx_stream_start
push eax edx
; enable SIE
mov edx, ICH6_REG_INTCTL
call azx_readl
or eax, 0xC0000000 ;Asper+
or eax, 1 shl 4 ; Asper: output stream 1
mov edx, ICH6_REG_INTCTL
call azx_writel
; set DMA start and interrupt mask
mov edx, ICH6_REG_SD_CTL + SDO0_SD_OFFSET
call azx_readb
or al, SD_CTL_DMA_START or SD_INT_MASK
mov edx, ICH6_REG_SD_CTL + SDO0_SD_OFFSET
call azx_writeb
pop edx eax
ret
endp
Буфер заполняется только в обработчике прерываний.
Re: sound, SB, AC97 и другое
Posted: Wed Jan 26, 2011 3:36 am
by Asper
HD Audio
This is a simple example of HD Audio integrated into the motherboard. It has Back and Front panels with audio jacks, several codecs (maximum 15 codecs allowed). The first codec contains Audio (AFG), Modem(MFG) and HDMI function groups.
Colored squares with letters inside are widgets of the codec's AFG.
B - Beep Generator widget
P - Power Control widget
V - Vendor defined audio widget
O - Audio Output widget
I - Audio Input widget
M - Audio Mixer widget
S - Audio Selector widget
Pin - Pin Complex widget
Pink lines mean audio input streams. Green lines mean audio output streams.
Output of sound.
HDA Controller's DMA engine(s) get streams of samples from output buffers in the memory and send it through the HDA Link to the codecs' Audio Output widgets which converts samples from digital to analog, than these streams are passed through the output path to the output Pin Complexes, which are connected directly to the output jacks and finally sound outputed by Output Devices.
Input of sound.
Audio analog signal come from Input Devices to the jacks which are connected directly to the Pin Complexes and than these stream is passed through the input path to the Audio Input widgets. Audio Input widgets converts analog signal to digital samples and send input streams to the HDA Controller's DMA engine(s) through HDA Link. Finally HDA Controller's DMA engine(s) put input streams of samples to the input buffers in the Memory.
Re: sound, SB, AC97 и другое
Posted: Wed Jan 26, 2011 11:38 am
by yogev_ezra
Asper wrote:Похоже щелчки не так просто устранить как казалось. Вызываю
azx_get_position в обработчике прерываний
hda_irq. На
M4A78-VM всегда выдаёт значение
LPIB=0, т.е прерывание сработало как положено по окончанию буфера, на
RDC же между
LPIB=0 с различной периодичностью проскакивают
LPIB=0x4CC и др. значения, что свидетельствует о слишком раннем срабатывании прерывания до окончания буфера (напоминаю, что размер буфера=0x4000).
При этом загрузка процессора на
M4A78-VM 0%, а на
RDC колеблется от 2% до 30%. Видимо на пиковой нагрузке и срабатывает "раннее прерывание" дающее щелчок. Тут ещё видимо проблема в низкой работе с устройствами хранения информации и соответственно в работе
DMA.
Пробовал различные способы, но пока ничего толкового не выходит.

Буду работать дальше.
Asper - если Вы чувствуете, что проблема в железе, то я могу попробовать выяснить это у производителя (в Linux ALSA же как-то работает). Но оставлю это на крайний случай, так как они очень неохотно отвечают на вопросы. Кстати, пользователи Linux тоже жаловались на большую загрузку процессора при проигрывании музыки - порядка 25%.
Re: sound, SB, AC97 и другое
Posted: Wed Jan 26, 2011 1:56 pm
by Serge
Asper
Прерывание может быть маскировано. В ядре много таких участков кода. Но надо проверить чередование буферов ДМА. Для АС97 я закладывался на запаздывание обратчика, поэтому список BDL составлен так, что контроллер сам выберет уже готовый буфер. Щелчи возникали при нарушении чередования, если звук микшировался в уже проигрывающийся буфер. Собственно это всегда было единственной причиной щелчков. На новых компьютерах их можно и не заметить. ДМА считывает 128 или 256 байт и сразу выдаёт прерывание если это последние байты в буфере. На быстрой системе обработчик успеет заполнить начало следуещего буфера до того как его считает ДМА.
Re: sound, SB, AC97 и другое
Posted: Mon Jan 31, 2011 6:12 am
by yogev_ezra
Bug HD Audio драйвера (или Quake

) - на компьютере с установленным и работающим драйвером версии 0.17fd при запуске Quake пишет в логе, что звуковая карта не обнаружена, и звуки во время игры не издаёт. С игрой Doom всё в порядке и звук есть. В DosBox тоже звук есть. Логи прилагаю.
Code: Select all
SDL_SetError: No available audio device
1162k surface cache
Sound Initialization
PackFile: /bd0/2/QUAKE/pak0.pak : gfx/conback.lmp
Couldn't open SDL audio: No available audio device
S_Startup: SNDDMA_Init failed.
Re: sound, SB, AC97 и другое
Posted: Mon Jan 31, 2011 11:11 am
by Roverman
Подопытный Asus EeePC 701, для чистоты эксперимента снес xandros (были проблемы, не виделись некоторые файлы из-под
колибри) - поставил xp на fat32, все работает , звук чистый без щелчков с intel_hda_017.
Re: sound, SB, AC97 и другое
Posted: Mon Jan 31, 2011 5:51 pm
by Serge
yogev_ezra
Это версия для Менуэт. Quake под Колибри никто не делал.