Увы, ничего не подошло. Уже даже прописал все параметры в ldb.c (или ещё где нужно?), но ничего не получается. Красноватый оттенок весьма мешает. Удалось как-то запустить с нормальными цветами, добавив в строку ldb=spl0, но разрешение было гораздо больше и никак не менялось, может, это где в исходниках править?
Проблема решена изменением значения pixclock структуры fb_videomode в файле ldb.c. Расчётное правильное значение (pixclock = 10^12 / DotCLK) было увеличено в 2 раза. Однако для меня осталось загадкой, какую именно частоту DotCLK задавать в данном случае.
как-то у вас странно получилось решение с удвоением.. в строке для ядра ничего "лишнего" не затесалось, какие-нить "sep "spl"?
чем-то смахивает на split mode
я прописываю
для 1280х800 14065
для 800х480 37037
При 18522 какие-то полосы на изображении, например. в синем цвете (см. картинки, которые я ранее выкладывал). При 30000 всё нормализуется, но почему так я не понимаю... Есть ли мысли?
да, тут у вас все правильно и ниже цифра 18522 для 53.98МГц верная - все должно работать идеально..
пара вариантов поиска:
- найти где происходит "неверный" расчет при использование .pixclock
- посмотреть в файлы платы (arch/arm/board-imx6/*board**light*.c) нет ли захардкоженного "левого" параметра..
я отталкиваюсь от того, что у меня на платформах imx6q и imx6s и трех разных экранах таких глюков нет. у вас, вероятно, чуть другое ядро - для imx6d.. может быть для него что-то случайно исправили или изменили..
если это не аппаратный дефект, то все, имхо, лечится..
смотрим, что получает ядро при загрузке: cat /proc/cmdline
смотрим, сколько экранов в системе: ls -l /dev/fb*
потом заглянем в боард-файл..
ps чуть смущают цифры 4 и 3 для upper/lower porch и 75Гц (я бы прописал 60) - надо будет попробовать/проверить влияние
Ничего криминального не нашёл. Цвета вроде бы встали на место при изменении частоты верт. развертки (60Гц вместо 75Гц), соответственно уменьшилая и частота DotCLK (43.19МГц вместо 54.99МГц). Что привело к тому, что pixclock стал уже 23152, а не 18552. А с увеличением его, как я уже писал, всё нормализуется. Итак, параметры такие:
crw-rw---- 1 root video 29, 0 Jan 1 00:00 /dev/fb0
crw-rw---- 1 root video 29, 1 Jan 1 00:00 /dev/fb1
Все параметры взяты из даташита, вряд ли там ошибка. 75Гц - типовая частота для этих параметров, странно, что эта частота не поддерживается, может, где-то можно прописать поддерживаемые частоты?
Когда я установил 60Гц и всё пересчитал, меня стали волновать отображаемые цвета. Вроде бы ничего так, но когда идёт переход в картинке с одного на другой цвет (градиент), то он не плавный, а резкий, как-будто часть цветов всё ещё отображаются неверно. Были подозрения, что это влияет Qt, перепробовал разные режимы QImage::Format_RGB***, ничего не помогает. Добавил в Qt глубину -depths 18, однако для меня не ясно, почему когда мы пишем if=RGB666, то fbset показывает rgba 5/11, 6/5, 5/0, 0/0, хотя по идее должно быть rgba 6/12, 6/6, 6/0, 0/0:
mode "1024x600-60"
# D: 43.193 MHz, H: 36.480 kHz, V: 60.001 Hz
geometry 1024 600 1024 600 16
timings 23152 80 48 4 3 32 1
accel false
rgba 5/11,6/5,5/0,0/0
endmode
fbset -rgba 6,6,6 ничего не меняет.
И ещё один момент, если в строку загрузки video добавить bpp=32 (т.е. изменить глубину цвета с 16 на 32 - аналогично fbset -depth 32). то снова появляются полосы в цветах, как и при частоте 75Hz было. При этом fbset показывает rgba другое, но лучше от этого не становится:
mode "1024x600-60"
# D: 43.193 MHz, H: 36.480 kHz, V: 60.001 Hz
geometry 1024 600 1024 600 32
timings 23152 80 48 4 3 32 1
accel false
rgba 8/16,8/8,8/0,8/24
endmode
ИМХО и вас проблема с аппаратным LVDS интерфейсом ...
Из собственного опыта, главное земли побольше (лучше между каждой парой), так же важно выровнять длины линии в диф. парах и длины самих пар между собой.
Еще можно попробовать с дополнительной терминацией на диф.парах, по идее терминаторы на самой панели должны стоять (в конце гибкого шлейфа согалующие резисторы), если их нет - тогда их точно нужно самим ставить.
Если они есть, эксперимент не помешает - начать с сотни Ом и в верх с шагом в 50Ом.