дак в итоге, чего надо то? отключить или получить стабильность?
я в HDMI совершенно не разбираюсь, но если потребуется чего-то отключить, то
- попробовал выключить EDID через menuconfig ядра
- убрал инит в файле борды (или в dts)
- посмотрел в потроха драйвера на предмет поднятия i2c/edid, и в каких случаях драйвер туда лазает за модами..
- у драйвера могут быть параметры для запуска
да, перед началом вопросов хорошо бы указывать платформу платы и версию ядра..
в системе реально 6 шин i2c? или нумерация не с 0?
если после "EDID block 0 checksum error, try 3/3" заустить
Вообще конечно лучше получить стабильность, тк поковырявшись немного в ядре нет такого параметра как отключить проверку EDID.
Ему нужны список режимов который поддерживает монитор.
Если недоступна инфа EDID то он выставляет по умолчанию один режим который прописан в fex.
Конечно через IOCTL драйвера disp я могу менять разрешения, но Х сервер не видит что разрешение поменялось. А fbset показывает всегда одно разрешение.
При попытке переключить режим через fbset предварительно записав в файл /etc/fb.modes нужные режимы он пишет:
[ 1701.715559] EDID mode used without valid EDID info
[ 1701.715580] disp clks: lcd 108000000 pre_scale 1 hdmi 108000000 pll 270000000 2x 1
По дампу вроде похож на монитор.
Честно говоря голова уже болит от ядра с его extern вызовами и иерархией от дикой обезьяны или у меня просто пока мой мозг не переварил все это...
Про х сервер с его апи я вообще в шоке, такое ощущение что разрабатывали инопланетяне))
Позже посмотрю перерою повторно этот hdmi. После того как остыну.
Здорово! давай попробуем порешать, хоть я в этикетах hdmi мало что смыслю..
о питание не спрашиваю, стабильное 5в, тока хватает..
попробуй в этов файле buildroot-2015.08-a20-sk/output/build/linux-custom/drivers/video/sunxi/hdmi/hdmi_edid.c
увеличить число попыток
т.е. TRIES до 5 или 10.. врядли это поможет но вдруг..
еще полезно, после включения и ошибки считывания освободить адрес 0x50 и почитать утилитой, что собственно оттуда считывается
если считывается правильно, то бага в драйвере edid
если считываются 0xff, то шина i2c в этом канале не проинтилась и eeprom не видна
если считываются полудостоверные байты но с ошибками, то проблема физики канала (помехи на кабеле, уровни сигнала)
да, это один из стандартных адресов для EDID
вполне так на Самсунг похоже, у них кажись любят расширенные блоки добавлять..
слей eeprom в бинарный файл и подсунь ближайшей утилите по дешифровке (в линуксе или венде), утилита всё расскажет по монитору..
ы-ы-ы.. это ты с одним ядром возишься, а преставь картину с 10 разными архитектурами и у каждой по паре тройке разных ядер..
я тут dm8148 в очередной раз поднимал - чуть свой мозг не сжег
дак альтернативы то нет, свободной и в исходниках.. QNX похоже сдулась, WinMobile платная и закрытая, что остается из графических оболочек? Иксы онли, не?
а разрабатывали не инопланетяне, а сотни тысяч свободных программистов.. и спасибо, что хоть такое есть..
"а будете выпендриваться, посадим собирать адроид из исходников от корпорации добра"
Питание в норме 5в 5ампер. при нагрузке показывает 4.9 вольт.
Блин, я думал мне одному херовато от сырцов)))
Отключить ЕЕПРОМину? Кардинальное решение, но если бы не одно НО. Тогда мне придется разработать выжигательный выжигатель для каждого монитора при подключении.
в качестве костыля можно пропатчить функцию и возвращать вместо считанного что-то своё, но это костыль и на одно разрешение..
можно через параметры для драйвера передавать и чтоб чихал на edid, но это тоже костыль..
ну это я так, традиционная проверка - вдруг с N попыток заработает.. не помогло..
я, когда создавал edid дамп для самодельного монитора, сразу проверял в подобных дешифраторах/редакторах - чтобы софт пересчитал правильную CRC..
вспомнить не могу, где я видел в исходниках парсер fex формата и также как построена цепочка вызовов и регистрация устройств и что интересно - посмотри в начальном логе когда регистрируются i2c шины , их устройства и когда регается hdmi со своим запросом на i2c-5.. возможно тут коллизия и попытка чтения с отсутствующей шины..
еще тут зацепка - найди в исходниках где ловится это событие - смена уровня на контакте hdmi разъема, и повесь туда отладочный printk