![Laughing :lol:](./images/smilies/icon_lol.gif)
sound, SB, AC97 и другое
-
Ага, понятно теперь, ну видите,
что русскому хорошо, то немцу смертьчто для татарина переключатель окошек, то для еврея - регулятор громкостиСпасибо за разъяснения!
Mario, скорее, создатель соответствующего виджета - раз уж речь о моем варианте панели (offtop: после сессии продолжу ее, сейчас оно более стойко к падениям и читает настройки из файлов)
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Asper
В драйвер добавлен вывод и проверка статуса.
В драйвер добавлен вывод и проверка статуса.
- Attachments
-
-
sb16.7z (7.68 KiB)Downloaded 233 times
-
А кто нибудь может дать толковую документацию по структуре библиотеки alsa, где было бы дерево этой библиотеки, от главной точки входа, до вызова инициализации конкретной карты.
Unduing
Для PCI карт папка alsa-driver-x.x.x\alsa-kernel\pci
Для ISA карт папка alsa-driver-x.x.x\alsa-kernel\isa
Так хорошо. Дальнейшие разбирательства предлагаю перенести в PM, чтобы не засорять тему.Unduing wrote:В драйвер добавлен вывод и проверка статуса.
В ALSA нас интересуют только сами исходные коды драйверов.Unduing wrote:А кто нибудь может дать толковую документацию по структуре библиотеки alsa, где было бы дерево этой библиотеки, от главной точки входа, до вызова инициализации конкретной карты.
Для PCI карт папка alsa-driver-x.x.x\alsa-kernel\pci
Для ISA карт папка alsa-driver-x.x.x\alsa-kernel\isa
Хотелось бы понять общую суть работы библиотеки.
Стек вызовов вплоть до инициализации драйвера, многое бы прояснил, сейчас же есть набор исходников, но не ясна последовательность запуска библиотеки.
Стек вызовов вплоть до инициализации драйвера, многое бы прояснил, сейчас же есть набор исходников, но не ясна последовательность запуска библиотеки.
Велик подтянулся, теперь он тоже в теме:
- 12.06.2011 M64 0.96S released - IntelHDA (ALC662) audio driver
Небось спёр драйвер у Asper-а![Laughing :lol:](./images/smilies/icon_lol.gif)
- 12.06.2011 M64 0.96S released - IntelHDA (ALC662) audio driver
Небось спёр драйвер у Asper-а
![Laughing :lol:](./images/smilies/icon_lol.gif)
Для того чтобы спереть надо еще код понять, а он даже готовый рабочий код не хотел принимать в свое время.
Чесно говоря я был немного в шоке, когда услышал звук со своего ноутбука Acer Aspire 4740G. :D
Одно слово Asper БРАВО!!!!!
Одно слово Asper БРАВО!!!!!
- Attachments
-
-
PCIDEV.TXT (2.29 KiB)Downloaded 210 times
-
BOARDLOG.TXT (1.75 KiB)Downloaded 208 times
-
Из хаоса в космос
Добавил на Вики в список работающих конфигураций.Leency wrote:Чесно говоря я был немного в шоке, когда услышал звук со своего ноутбука Acer Aspire 4740G.![]()
Одно слово Asper БРАВО!!!!!
Asper: Мне интересно, почему при первом вызове драйвера, на любом компьютере, происходит зависание на 1-2 секунды, и загрузка процессора подскакивает до 100% - это так должно быть, или пока не выловленный баг? Что драйвер делает в это время?
Выполняется первичная инициализация железки -очевидно же!
Вопрос только почему при этом еще и загрузка дикая, вполне уместен.
Возможно в цикл ожидания забыли вставить передачу управления следующей задаче.
Вопрос только почему при этом еще и загрузка дикая, вполне уместен.
Возможно в цикл ожидания забыли вставить передачу управления следующей задаче.
Загрузка мне как раз не сильно мешает, но показывал потенциальным клиентам, они не могут понять, почему после вызова AC97SND первый раз, до начала проигрывания музыки, проходит несколько секунд, а в последующие разы всё моментально. Вот опять же, CleverMouse инициализирует USB-устройства за миллисекунды, поэтому непонятно, почему звуку нужно так много.Mario wrote:Выполняется первичная инициализация железки -очевидно же!
Вопрос только почему при этом еще и загрузка дикая, вполне уместен.
Leency
Спасибо. Рад, что у тебя заработал звук. Поздравляю!
yogev_ezra
align 4
proc reset_controller
locals
counter dd ?
endl
test eax, eax
jz .skip
; clear STATESTS
mov eax, STATESTS_INT_MASK
mov edx, ICH6_REG_STATESTS
call azx_writeb
; reset controller
mov edx, ICH6_REG_GCTL
call azx_readl
mov ebx, ICH6_GCTL_RESET
xor ebx, -1
and eax, ebx
mov edx, ICH6_REG_GCTL
call azx_writel
mov [counter], 50 ; total 50*100 ms = 5s
.wait0:
mov edx, ICH6_REG_GCTL
call azx_readb
test eax, eax
jz @f
mov eax, 100000 ; wait 100 ms
call StallExec
dec [counter]
jnz .wait0
@@:
; delay for >= 100us for codec PLL to settle per spec
; Rev 0.9 section 5.5.1
mov eax, 100000 ; wait 100 ms
call StallExec
; Bring controller out of reset
mov edx, ICH6_REG_GCTL
call azx_readb
or eax, ICH6_GCTL_RESET
mov edx, ICH6_REG_GCTL
call azx_writeb
mov [counter], 50 ; total 50*100 ms = 5s
.wait1:
mov edx, ICH6_REG_GCTL
call azx_readb
test eax, eax
jnz @f
mov eax, 100000 ; wait 100 ms
call StallExec
dec [counter]
jnz .wait1
@@:
; Brent Chartrand said to wait >= 540us for codecs to intialize
mov eax, 100000 ; wait 100 ms
call StallExec
.skip:
; check to see if controller is ready
mov edx, ICH6_REG_GCTL
call azx_readb
test eax, eax
jz .fail
; (...)
ret
endp
Поскольку тайминги не стандартизированы, то я делал их такими же как в ALSA. Мне кажется можно их значительно уменьшить, но я не уверен, что это везде будет работать.
Вот попробуй эту версию.
Спасибо. Рад, что у тебя заработал звук. Поздравляю!
![Smile :)](./images/smilies/icon_smile.gif)
yogev_ezra
Большую часть времени занимают задержки при сбросе контроллера и инициализации кодеков.yogev_ezra wrote:Asper: Мне интересно, почему при первом вызове драйвера, на любом компьютере, происходит зависание на 1-2 секунды, и загрузка процессора подскакивает до 100% - это так должно быть, или пока не выловленный баг? Что драйвер делает в это время?
Spoiler:
; reset codec linkalign 4
proc reset_controller
locals
counter dd ?
endl
test eax, eax
jz .skip
; clear STATESTS
mov eax, STATESTS_INT_MASK
mov edx, ICH6_REG_STATESTS
call azx_writeb
; reset controller
mov edx, ICH6_REG_GCTL
call azx_readl
mov ebx, ICH6_GCTL_RESET
xor ebx, -1
and eax, ebx
mov edx, ICH6_REG_GCTL
call azx_writel
mov [counter], 50 ; total 50*100 ms = 5s
.wait0:
mov edx, ICH6_REG_GCTL
call azx_readb
test eax, eax
jz @f
mov eax, 100000 ; wait 100 ms
call StallExec
dec [counter]
jnz .wait0
@@:
; delay for >= 100us for codec PLL to settle per spec
; Rev 0.9 section 5.5.1
mov eax, 100000 ; wait 100 ms
call StallExec
; Bring controller out of reset
mov edx, ICH6_REG_GCTL
call azx_readb
or eax, ICH6_GCTL_RESET
mov edx, ICH6_REG_GCTL
call azx_writeb
mov [counter], 50 ; total 50*100 ms = 5s
.wait1:
mov edx, ICH6_REG_GCTL
call azx_readb
test eax, eax
jnz @f
mov eax, 100000 ; wait 100 ms
call StallExec
dec [counter]
jnz .wait1
@@:
; Brent Chartrand said to wait >= 540us for codecs to intialize
mov eax, 100000 ; wait 100 ms
call StallExec
.skip:
; check to see if controller is ready
mov edx, ICH6_REG_GCTL
call azx_readb
test eax, eax
jz .fail
; (...)
ret
endp
Вот попробуй эту версию.
- Attachments
-
-
sound.obj (7.31 KiB)
- tv017d
Downloaded 222 times
-
Asper
Я не писал отдельных драверов, но в драйверах файловой подсистемы (встроенных в ядро) вполне себе прокатывал вызов call change_task
Я не писал отдельных драверов, но в драйверах файловой подсистемы (встроенных в ядро) вполне себе прокатывал вызов call change_task
Spoiler:
Code: Select all
reserve_hd1:
cli
cmp [hd1_status],0
je reserve_ok1
sti
call change_task
jmp reserve_hd1
Mario
Эта функция не экспортируется.
Эта функция не экспортируется.
Who is online
Users browsing this forum: No registered users and 0 guests