Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
Как отключить EDID
xaba
Добавлено 23.02.2017 18:34
0
Сообщение: 1
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Как отключить EDID запрос и парсинг?

[ 0.572329] I2C: i2c-5: HDMI I2C adapter
[ 0.600008] ParseEDID
[ 0.616279] i2c i2c-5: EDID block 0 checksum error, try 1/3
[ 0.626273] i2c i2c-5: EDID block 0 checksum error, try 2/3
[ 0.636323] i2c i2c-5: EDID block 0 checksum error, try 3/3

Довольно часто наблюдаю такую картину. В итоге не могу переключить видео режимы(
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 23.02.2017 20:44 Редактировалось 24.02.2017 14:03 Сообщение: 2
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Пересмотрел в ядре по внимательней. Без скальпеля не получится((

Хм.. Такое происходит только при старте или после перезагрузки. После того как система загрузилась, перетыкаю кабель и вуаля...

[30140.925595] ParseEDID
[30140.948428] EDID version: 1.3
[30140.948448] PCLK=148500000 X 1920 2008 2052 2200 Y 1080 1084 1089 1125 fr 60 PP
....

Те работает, видит и никаких ошибок.

Все видео модули влинкованы в ядро.
Попробовал в ручную их загружать, подумал может где то что то мешает или просто время нужно больше после старта.

В итоге такая же ситуация, только после перетыкания кабеля он видит все возможные режимы.
Куда рыть не знаю....
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 24.02.2017 20:02 Сообщение: 3
Jury093
4.58

Пункты: 54111
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Как отключить EDID запрос и парсинг?

Цитата
В итоге такая же ситуация, только после перетыкания кабеля он видит все возможные режимы.

дак в итоге, чего надо то? отключить или получить стабильность?

я в HDMI совершенно не разбираюсь, но если потребуется чего-то отключить, то
- попробовал выключить EDID через menuconfig ядра
- убрал инит в файле борды (или в dts)
- посмотрел в потроха драйвера на предмет поднятия i2c/edid, и в каких случаях драйвер туда лазает за модами..
- у драйвера могут быть параметры для запуска

да, перед началом вопросов хорошо бы указывать платформу платы и версию ядра..

в системе реально 6 шин i2c? или нумерация не с 0?
если после "EDID block 0 checksum error, try 3/3" заустить
Код
i2cdetect -y 5

на шине что-нить детектится?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 26.02.2017 03:05 Редактировалось 26.02.2017 06:39 Сообщение: 4
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Привет.
Плата А20lite. Ядро 3.4.103

Вообще конечно лучше получить стабильность, тк поковырявшись немного в ядре нет такого параметра как отключить проверку 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

и не переключает режим.

Да шин 6 нумерация с 0.

# i2cdetect -y 5
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- 3a -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

0х50 это и есть адрес откуда он считывает?

# i2cdump 5 0x50
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 ff ff ff ff ff ff 00 4c 2d c0 07 00 00 00 00 ........L-??....
10: 2e 14 01 03 80 46 27 78 0a ee 91 a3 54 4c 99 26 .????F'x????TL?&
20: 0f 50 54 bd ef 80 71 4f 81 00 81 40 81 80 95 00 ?PT???qO?.?@???.
30: 95 0f b3 00 a9 40 02 3a 80 18 71 38 2d 40 58 2c ???.?@?:??q8-@X,
40: 45 00 a0 5a 00 00 00 1e 66 21 50 b0 51 00 1b 30 E.?Z...?f!P?Q.?0
50: 40 70 36 00 a0 5a 00 00 00 1e 00 00 00 fd 00 18 @p6.?Z...?...?.?
60: 4b 1a 51 17 00 0a 20 20 20 20 20 20 00 00 00 fc K?Q?.? ...?
70: 00 53 41 4d 53 55 4e 47 0a 20 20 20 20 20 01 7c .SAMSUNG? ?|
80: 02 03 23 f1 4b 90 1f 04 13 05 14 03 12 20 21 22 ??#?K???????? !"
90: 23 09 07 07 83 01 00 00 e2 00 0f 67 03 0c 00 20 #?????..?.?g??.
a0: 00 b8 2d 01 1d 00 72 51 d0 1e 20 6e 28 55 00 a0 .?-??.rQ?? n(U.?
b0: 5a 00 00 00 1e 01 1d 00 bc 52 d0 1e 20 b8 28 55 Z...???.?R?? ?(U
c0: 40 a0 5a 00 00 00 1e 01 1d 80 18 71 1c 16 20 58 @?Z...?????q?? X
d0: 2c 25 00 a0 5a 00 00 00 9e 01 1d 80 d0 72 1c 16 ,%.?Z...?????r??
e0: 20 10 2c 25 80 a0 5a 00 00 00 9e 00 00 00 00 00 ?,%??Z...?.....
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd ...............?

По дампу вроде похож на монитор.
Честно говоря голова уже болит от ядра с его extern вызовами и иерархией от дикой обезьяны или у меня просто пока мой мозг не переварил все это...
Про х сервер с его апи я вообще в шоке, такое ощущение что разрабатывали инопланетяне))

Позже посмотрю перерою повторно этот hdmi. После того как остыну.
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 26.02.2017 07:58 Сообщение: 5
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6960
Регистрация: 26.03.2009
в ядре они.... скальпелем....
ЕЕПРОМину отключить и дело с концом. понятно что лень монитор разбирать =)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.02.2017 12:45 Редактировалось 26.02.2017 12:54 Сообщение: 6
Jury093
4.58

Пункты: 54111
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Привет.
Плата А20lite. Ядро 3.4.103

Здорово! давай попробуем порешать, хоть я в этикетах hdmi мало что смыслю..
о питание не спрашиваю, стабильное 5в, тока хватает..
попробуй в этов файле
buildroot-2015.08-a20-sk/output/build/linux-custom/drivers/video/sunxi/hdmi/hdmi_edid.c
увеличить число попыток
Код
#define DDC_ADDR 0x50
#define EDID_LENGTH 0x80
#define TRIES 3

т.е. TRIES до 5 или 10.. врядли это поможет но вдруг..

еще полезно, после включения и ошибки считывания освободить адрес 0x50 и почитать утилитой, что собственно оттуда считывается
Код
i2cdump -y -r 0x0-0x7f 5 0x50

если считывается правильно, то бага в драйвере edid
если считываются 0xff, то шина i2c в этом канале не проинтилась и eeprom не видна
если считываются полудостоверные байты но с ошибками, то проблема физики канала (помехи на кабеле, уровни сигнала)

Цитата
0х50 это и есть адрес откуда он считывает?

да, это один из стандартных адресов для EDID

Цитата
По дампу вроде похож на монитор

вполне так на Самсунг похоже, у них кажись любят расширенные блоки добавлять..
слей eeprom в бинарный файл и подсунь ближайшей утилите по дешифровке (в линуксе или венде), утилита всё расскажет по монитору..

Цитата
Честно говоря голова уже болит от ядра с его extern вызовами и иерархией от дикой обезьяны или у меня просто пока мой мозг не переварил все это...

ы-ы-ы.. это ты с одним ядром возишься, а преставь картину с 10 разными архитектурами и у каждой по паре тройке разных ядер..
я тут dm8148 в очередной раз поднимал - чуть свой мозг не сжег

Цитата
Про х сервер с его апи я вообще в шоке, такое ощущение что разрабатывали инопланетяне))

дак альтернативы то нет, свободной и в исходниках.. QNX похоже сдулась, WinMobile платная и закрытая, что остается из графических оболочек? Иксы онли, не?
а разрабатывали не инопланетяне, а сотни тысяч свободных программистов.. и спасибо, что хоть такое есть..
"а будете выпендриваться, посадим собирать адроид из исходников от корпорации добра"

ЗЫ а я все вспоминал, где о похожей проблеме читал:
http://www.starterkit.ru/html/index.php?name=forum&op=view&id=26215&num=1#26215

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.02.2017 12:52 Сообщение: 7
Jury093
4.58

Пункты: 54111
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
в ядре они.... скальпелем....
ЕЕПРОМину отключить и дело с концом. понятно что лень монитор разбирать =)

а ну ка, еепромовед, покажи пальцем, где в моем телеке еепром стоит:
http://www.starterkit.ru/html/index.php?name=forum&op=view&id=26215&num=3#26238

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 26.02.2017 17:00 Редактировалось 26.02.2017 18:25 Сообщение: 8
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Питание в норме 5в 5ампер. при нагрузке показывает 4.9 вольт.
Блин, я думал мне одному херовато от сырцов)))

Отключить ЕЕПРОМину? Кардинальное решение, но если бы не одно НО. Тогда мне придется разработать выжигательный выжигатель для каждого монитора при подключении.

Я ставил 300 попыток, но без результативно.

Спасибо за подсказку с декодером. Вот что пишет

-----------------------------разделитель-----------------------------------------
# cat hdmi.dump | edid-decode
Extracted contents:
header: 00 ff ff ff ff ff ff 00
serial number: 4c 2d c0 07 00 00 00 00 2e 14
version: 01 03
basic params: 80 46 27 78 0a
chroma info: ee 91 a3 54 4c 99 26 0f 50 54
established: bd ef 80
standard: 71 4f 81 00 81 40 81 80 95 00 95 0f b3 00 a9 40
descriptor 1: 02 3a 80 18 71 38 2d 40 58 2c 45 00 a0 5a 00 00 00 1e
descriptor 2: 66 21 50 b0 51 00 1b 30 40 70 36 00 a0 5a 00 00 00 1e
descriptor 3: 00 00 00 fd 00 18 4b 1a 51 17 00 0a 20 20 20 20 20 20
descriptor 4: 00 00 00 fc 00 53 41 4d 53 55 4e 47 0a 20 20 20 20 20
extensions: 01
checksum: 7c

Manufacturer: SAM Model 7c0 Serial Number 0
Made week 46 of 2010
EDID version: 1.3
Digital display
Maximum image size: 70 cm x 39 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4, YCrCb 4:2:2
First detailed timing is preferred timing
Established timings supported:
720x400@70Hz
640x480@60Hz
640x480@67Hz
640x480@72Hz
640x480@75Hz
800x600@60Hz
800x600@72Hz
800x600@75Hz
832x624@75Hz
1024x768@60Hz
1024x768@70Hz
1024x768@75Hz
1280x1024@75Hz
1152x870@75Hz
Standard timings supported:
1152x864@75Hz
1280x800@60Hz
1280x960@60Hz
1280x1024@60Hz
1440x900@60Hz
1440x900@75Hz
1680x1050@60Hz
1600x1200@60Hz
Detailed mode: Clock 148.500 MHz, 160 mm x 90 mm
1920 2008 2052 2200 hborder 0
1080 1084 1089 1125 vborder 0
+hsync +vsync
Detailed mode: Clock 85.500 MHz, 160 mm x 90 mm
1360 1424 1536 1792 hborder 0
768 771 777 795 vborder 0
+hsync +vsync
Monitor ranges (GTF): 24-75Hz V, 26-81kHz H, max dotclock 230MHz
Monitor name: SAMSUNG
Has 1 extension blocks
Checksum: 0x7c (valid)
-----------------------------разделитель-----------------------------------------

После перетыкивания разъема делаю еще дамп, сверяю diff-ом... Разницы нет.

Отключил проверку Хэш Суммы в итоге:

[ 0.620006] ParseEDID
[ 0.636282] i2c i2c-5: EDID block 0 checksum error, try 1/3
[ 0.636303] EDID block0 header error
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 26.02.2017 19:32 Редактировалось 26.02.2017 19:36 Сообщение: 9
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
И правда все верно он говорит о том что сумма не совпадает(

Тк данные с шины не верные.

Сделал в ядре мини дамп буфера после получения данных.

Заголовок : 80 ff ff ff ff ff ff 80

а должно быть 0 ff ff ff ff ff ff 0

Во вторых данные не все из 512 только 120 байт остальное нули(

И как мне проверить в этот момент шину?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.02.2017 21:42 Сообщение: 10
Jury093
4.58

Пункты: 54111
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Отключить ЕЕПРОМину? Кардинальное решение, но если бы не одно НО. Тогда мне придется разработать выжигательный выжигатель для каждого монитора при подключении.

в качестве костыля можно пропатчить функцию и возвращать вместо считанного что-то своё, но это костыль и на одно разрешение..
можно через параметры для драйвера передавать и чтоб чихал на edid, но это тоже костыль..

Цитата
Я ставил 300 попыток, но без результативно.

ну это я так, традиционная проверка - вдруг с N попыток заработает.. не помогло..

Цитата
Спасибо за подсказку с декодером. Вот что пишет

я, когда создавал edid дамп для самодельного монитора, сразу проверял в подобных дешифраторах/редакторах - чтобы софт пересчитал правильную CRC..

Цитата
И как мне проверить в этот момент шину?

вспомнить не могу, где я видел в исходниках парсер fex формата и также как построена цепочка вызовов и регистрация устройств и что интересно - посмотри в начальном логе когда регистрируются i2c шины , их устройства и когда регается hdmi со своим запросом на i2c-5.. возможно тут коллизия и попытка чтения с отсутствующей шины..

Цитата
В итоге такая же ситуация, только после перетыкания кабеля он видит все возможные режимы.

еще тут зацепка - найди в исходниках где ловится это событие - смена уровня на контакте hdmi разъема, и повесь туда отладочный printk

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux