Автор Тема: 1440х900 через HDMI-DVI  (Прочитано 4331 раз)

Оффлайн v2

1440х900 через HDMI-DVI
« : Февраль 21, 2016, 10:29:50 pm »
Как задать разрешение 1440х900 (родное) для монитора через самопальный HDMI-DVI ?

* script.bin - fex(1440x900) - bin меняет картинку, но монитор все равно получает 1920х1080
** самопальный HDMI-DVI с малинкой работает нормально

Спасибо за советы.



Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 410
  • Лайков: 108
  • Карма: +14/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #1 : Февраль 21, 2016, 10:32:59 pm »
Переписать драйвер. Скриптом не выставишь того, чего нет в драйвере.
« Последнее редактирование: Февраль 21, 2016, 10:36:54 pm от AlDemin »

Оффлайн v2

Re: 1440х900 через HDMI-DVI
« Ответ #2 : Февраль 21, 2016, 11:18:04 pm »
А это реально -  ну там исходники, и доп инфа?

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 410
  • Лайков: 108
  • Карма: +14/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #3 : Февраль 21, 2016, 11:36:36 pm »
Думаю что реально, вот только похоже что тот кто в этом разбирается не горит желанием делать,
а кому это нужно не может разобраться в коде драйвера.

Оффлайн v2

Re: 1440х900 через HDMI-DVI
« Ответ #4 : Февраль 21, 2016, 11:47:39 pm »
Хорошо, вот я хочу разобраться - сделать, куда копать-то?
Или это только производитель девайса сможет?

Оффлайн UB3GAD

  • Moderator
  • Посвященный
  • *****
  • Сообщений: 203
  • Лайков: 131
  • Карма: +14/-0
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #5 : Февраль 22, 2016, 10:58:51 am »
Тут образец по добавлению разрешения, удачи
Orange Pi PC

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 410
  • Лайков: 108
  • Карма: +14/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #6 : Февраль 22, 2016, 11:23:24 am »
UB3GAD опередил.
Начать копать можно прям с этого форума, тут поднимались эти вопросы, и есть ссылка на прецедент:
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=444
Человек сделал на hdmi 800х480, и мало того, Loboris (Boris Lovosevic) включил этот мод в дерево своего ядра, так что это разрешение доступно на любом дистрибе с его ядром, включается по параметру в fex:

screen0_output_type = 3
screen0_output_mode = 31

В принципе, как добавить предельно ясно расписано, с одной ошибочкой, которую Борис поправил у себя в исходниках.
Но я пока не разобрался где автор топика взял две "волшебные" строки для таблиц (еще бы понять полную структуру этих таблиц):
{{HDMI800_480P , 11 , 0,  0,  3,  6,  1,  0,  9,  0, 0,  32, 120, 40, 40,  224, 45,   0,  0 }},
{HDMI800_480P,  0,27000000,  0,  800,   480,   920,  40,   40,   40,  525,   30,  9,  6,  0,   0,   0,   0,   0},

у Бориса они выглядят немного иначе:
{{35, 11,  0,  0,  1,  3,  3,  0, 13,  0,  0,  208,  228,  80,  60, 208, 45,  0,  0 }},
{HDMI800_480P,  0,27000000,  0,   800,   480,  1028,   88,   80,   60,   525,   29, 13,   3,    0,   0,   0,    0,   0},

И плюс он использует параметр в fex для hdmi-dvi переходников
hdmi_cts_compatibility = 1

Там же в исходниках можно увидеть "перебор" этих параметров.

Оффлайн sergspio

  • Новичок
  • *
  • Сообщений: 10
  • Лайков: 6
  • Карма: +1/-0
  • Orange Pi PC
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #7 : Февраль 24, 2016, 05:37:06 pm »
Попробую разъяснить эти "волшебные" строки:
по linux-3.4/drivers/video/sunxi/disp2/hdmi/aw/hdmi_core.c
disp_video_timings video_timing[]
это наследие CRT (кинескопных) мониторов

Отрисовка строки начинается с импульса горизонтальной синхронизации (hsync) с длительностью 1.25 мкс, далее следует промежуток в 1.96 мкс в течении которого выходы RGB заперты, после него передается цветовая информация — каждый пиксель за один тик и, наконец, пауза длительностью 0.71 мкс в течении которой происходит обратных ход луча на ЭЛТ мониторах.
Импульсы отрисовки кадра генерируются по такому же принципу. Тайминги для разных разрешений экрана вы можете подсмотреть, например http://tinyvga.com/vga-timing
Взято с темы на easyelectronics.ru http://we.easyelectronics.ru/plis/generator-cvetnyh-polos-na-fpga.html
находим тайминги на необходимое разрешение и вставляем в виде PCLK,   AVI_PR, INPUTX, INPUTY, HT,   HBP,  HFP, HPSW, VT,  VBP, VFP, VPSW, I, HSYNC, VSYNC
где:
PCLK = Pixel freq
INPUTX = Horizontal timing (line)-> Visible area
HT = HBP+HFP+HPSW+INPUTX
HBP = Horizontal Back porch
HFP = Horizontal Front porch
HPSW = Horizontal Sync pulse
INPUTY = Vertical timing (frame)-> Visible area
VBP = Vertical Back porch
VFP = Vertical Front porch
VPSW = Vertical Sync pulse
VT = VBP+VFP+VPSW+INPUTY
I  = тип развертки ( 1 - интерлейсинг, 0 - прогрессив)
HSYNC = 0 (Polarity of horizontal sync pulse is negative).
VSYNC = 1 (Polarity of vertical sync pulse is positive).
что такое AVI_PR - не знаю, это, как и порядок следования данных зависит от исходников ядра
теперь по:

linux-3.4/drivers/video/sunxi/disp2/hdmi/aw/hdmi_bsp_sun8iw7.c:
static struct para_tab ptbl[] =
{
// mx = x>>8
// my = y>>8
// mhbw = horisontal blanking width >> 8
// mhfp = horisontal front porch >> 8
      // vic                             dclk  int                  mx       vst       my               mhbw   vfp             mhfp                 +x      +hbw                  +hfp         hst           +y      vbw          h polarity          v polarity
+{{HDMI800_480P        , 11 , 0,  0,                1,         3,         3,                0,         13,                0,                0,  208,   36,                    40,         40,         208,     16,                0,                0        }},

здесь не все понятно, но x>>8 равносильно X/256 и оставить только целую часть, +x тогда по логике должно быть x-(mx*256), но в данном случае совпадет с HT-(mx*256)
аналогично должно быть с y и горизонтальными porch
Orangepi_PC

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 410
  • Лайков: 108
  • Карма: +14/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #8 : Февраль 24, 2016, 08:00:46 pm »
Спасибо, я это подозревал, когда то в 90-х когда Xorg-а еще не было, и был в "моде" дистриб "Mandrake" для настройки ЭЛТ монитора была графическая утилита, выбирался режим монитора и кнопочками размера и смещения изображение подгонялось под экран монитора, а утилитка генерировала стоку Modline для /etc/X11/XF86Config
Там тоже высчитывались исходя из разрешения и итоговой частоты пиксельная частота и количество пикселей и строк на гасяшие и синхроимпульсы.
и если строка в hdmi_core.c еще как то похожа на Modline, то вот что к чему в aw/hdmi_bsp_sun8iw7.c несовсем понятно, точнее совсем непонятно.

To: v2
Я так понял у вас монитор 1440х900 с dvi ?
Можно вас попросить слить у него с DVI входа EDID ?
Кстати там будет нужная Modline.
« Последнее редактирование: Февраль 24, 2016, 08:02:21 pm от AlDemin »

Оффлайн v2

Re: 1440х900 через HDMI-DVI
« Ответ #9 : Февраль 27, 2016, 12:55:42 am »
Прошу прощения,
утонул в линуксах  :o (ставлю Arch на виртуалку, ну и тд)
---
подскажите как это сделать, - постараюсь.

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 410
  • Лайков: 108
  • Карма: +14/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #10 : Февраль 27, 2016, 09:13:45 am »
Нужен Линукс на компе, на убубнту это в пакете read-edid
читается командой:
sudo get-edid > edid.bin
файлик edid.bin хотелось бы получить.
Посмотреть что читается с монитора в удобоваримом виде:
sudo get-edid | parse-edid
Апельсинка почему то не читает EDID, или i2c на hdmi не задействован или get-edid его не видит.

Оффлайн v2

Re: 1440х900 через HDMI-DVI
« Ответ #11 : Февраль 27, 2016, 01:40:49 pm »
Сделал на RPi:

tvservice -d edid.dat
edidparser edid.dat > edid.txt


ЗЫ.
наткнулся на
https://outurnate.com/bsc2
то есть  у малинки тоже были проблемы с этим делом.

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 410
  • Лайков: 108
  • Карма: +14/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #12 : Февраль 27, 2016, 03:07:24 pm »
Ага, parse-edid из твоего файла показал такую картинку:

Извините, вам запрещён просмотр содержимого спойлеров.

Интересует Modeline    "Mode 0" 106.50 1440 1520 1672 1904 900 903 909 934 -hsync +vsync
из этого получается, что строка для hdmi-core.c должна выглядеть как то так:
{HDMI900P_60,      0,106500000, 0,  1440,   900,  1904,  232,  152,   80,   934,   25,  6,   3,    0,   1,   0,    0,   0},
Со строкой лля hdmi_bsp_sun8iw7.c пока не знаю что делать, тем более экспериментировать пока не на чем.
Монитора с DVI нет, есть подопытный Acer x191w без DVI, но на плате есть место под него, распаял разъем, детали недостающие, ищу данные для EDID и настройки прошивки, чтоб DVI включить.
« Последнее редактирование: Февраль 27, 2016, 03:10:18 pm от AlDemin »

Оффлайн v2

Re: 1440х900 через HDMI-DVI
« Ответ #13 : Февраль 27, 2016, 03:58:17 pm »
Цитировать
тем более экспериментировать пока не на чем
ну, могу поработать тестером, под чутким руководством старших сотоварищей.

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 410
  • Лайков: 108
  • Карма: +14/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: 1440х900 через HDMI-DVI
« Ответ #14 : Февраль 27, 2016, 06:21:54 pm »
Слишком длинная обратная связь получается.
Это изменить один параметр - перекомпилить ядро - выложить. узнать что не работает и что то менять, а что неизвестно.
Даже у себя экспериментировать - каждый раз ядро компилить не самый быстрый процесс.
Вот залью твой edid а свой Acer пусть Nec-ом представляется...