При загрузке ядра Linux 2.6.36, как из комплекта поставки, так и самосборных наблюдаю следующее:
Как я понимаю, reset_pin не заведен и есть workaround в функции atmel_ac97c_reset в ac97c.h. Проверил и нашел, что нужные патчи к ядру уже применены. Такое поведение наблюдается с момента первого включения платы, после получения.
С чем может быть связана эта проблема?
странно.. у меня заиграла при первом включение.. ac97c.h вообще нулевой длины.
смешно, но спрошу - чип аудиокодека (ALC203) и кварц 24.576 МГц на плате присутствуют?
в теории, при пересылке мог кварц испортиться, но это сильно в теории..
увы, я ванильное ядро пока не удосужился прикрутить, пользуюсь тем, что пришло с платой. запилил его изрядно, впрочем попробовал - звук пошел..
по хорошему - надо смотреть осциллом - есть ли обмен между АРМом и кодеком. если есть, то смотреть настройки
To Jury093: Опечатался, файл ac97c.c. Кварц и кодек ALC203 присутствуют конечно. :) Ядро, которое идет с платой это ванильное 2.6.36 и патчи с linux4sam.org. Ну и накопал некоторые специфичные настройки для этой платки...
To sasamy: Спасибо, завтра попробую загрузиться. Заодно и посмотрю обмен осциллографом. А иногда не заводится с такой же ошибкой, как и у меня?
о наличие железяк я спросил на всякий случай - всякое бывает :)
могу завтра (по возможности) выложить бинарное ядро, вроде платы у нас одинаковые, грузанете по сетке:
- звук пойдет - у вас проблемы с настройками
- звук не пойдет - хм.. ну вы поняли, железо..
1) Никакой самодеятельности, ставите на плату все исключительно в бинарниках (в том числе и бутстрап с у-бутом) с tftp папки виртуальной машины и запускаете в нормальном режиме (в сейф режиме драйвер AC97 отключен)
2) Звук дорлжен работать, собственноручно каждую плату проверяю
3) Если не работает, стучите в личку, будем разбираться.
Уже определился.
Попробовал загрузиться и с SD-карты, с новым bootstrap. Результат - кодек инициализируется по настроению - через один-два раза.
Оказалось - всё гениальное просто, всё работает. Проблема в том, что нога reset ALC203 не заведена на GPIO пин контроллера и, естественно, аппаратный сброс ему устроить не получается. Если зажать сброс, включить питание и потом сброс отпустить, то кодек всегда инициализируется с любыми ядрами и загрузчиками.
Надо поставить на сброс RC-цепочку, которая будет формировать импульс сброса при включении питания всем частям схемы, и желательно бы завести сброс кодека на GPIO-пин. То же касается и не инициализации его после сброса - дребезг кнопки.