если речь о пингвине в лого при загрузке, то подсуньте свое изображение с заведомо известными цветами и упаковкой вместо стандартного файла лого. тогда станет более понятно куда копать
Гугль патч в html преобразовал, как его счас выковыривать :) С туксом все нормально должно быть - где-то ошибка в драйвере. По поводу инита pix_clock - ошибка похоже в ядре фрискейла, я ее тоже наблюдаю при загрузке - сначала обратил внимание в контексте драйвера сети и конкретно - включение клока ssp - тормоз при загрузке и вываливает ошибку, но потом как ни странно сеть работает, начал разбираться - отладочный printk выдал что подобная проблема и с склолком lcdif. На данный момент я в своем патче просто уменьшил эту задержку чтобы загрузку не тормозило. Смысл такой - включается клок и ожидается в цикле готовность, так вот с этими устройствами она так и не появляется :) Я пробовал увелчить задержку в 10 раз - не помогает, уменьшил в 10 раз и забыл - наверняка фрискейловцы знают об этой трабле и исправят сами - они несколько раз дергают панель при загрузке (раза три включают и выключают), явно напоролись на эти грабли и вышли из положения пока таким кривым способом. Правда есть подозрение что это может быть баг в силиконе.
столкнулся с проблемой при рисовании на экране через фреймбуфер.
функция отрисовки пикселя:
void draw_pixel(int x, int y, u_int32_t pixel)
{
*((u_int8_t *)framebuffer + fix_info.line_length * y + x * 3 + 0) = (u_int8_t)(pixel);
*((u_int8_t *)framebuffer + fix_info.line_length * y + x * 3 + 1) = (u_int8_t)(pixel >> 8);
*((u_int8_t *)framebuffer + fix_info.line_length * y + x * 3 + 2) = (u_int8_t)(pixel >> 16);
}
проблема заключается в том, что если нарисовать один пиксель цветом 0xffffff, то он будет отображаться как мигающий слабо светящийся синим цветом пиксель, в то время как остальные следующие за ним пиксели такого же цвета отображаются нормально пока не будет пропущен хоть один пиксель, после пропуска одного или нескольких пикселей, следующий пиксель отображается как первый(неправильно), а следующие за ним опять нормально.
такое происходит с любым цветом, за исключением того что первый пиксель принимает не правильный цвет(или вообще не горит) в зависимости от того какой цвет зажигал.
создается впечатление, что "первый" пиксель играет роль инициализирующего, для нормального отображения следующего за ним.
PS: как вставлять код для нормального отображения?!
по теме не скажу - не владею
про код это о чем? вот так?
тогда при написание сообщения над окошком выбираете форму "код" или вручную в начале ставите тэг {code}ваш код{/code}, где кривые скобочки надо изменить на []
Скорей всего это проблемы с LCD экраном а не с фреймбуфером - не должно быть никаких мигающих точек. Вообще эти LCD ведут себя странно - при просмотре видео видны артефакты с цветами в виде ломаных кривых синего и красного цвета, избавиться от них програмно программируя контроллер мне не удалось. Такие же кривые видны и на статических картинках даже если вообще прекратить обновление памяти.
теперь попиксельная отрисовка в фреймбуфер отображается корректно, но сейчас интересует вопрос раньше было 24 бита на пиксель, а сейчас 32. но как я понял количество значащих бит осталось 24, а старшие 8 бит ни на что не влияют, т.е. при выводе в фреймбуфер их можно не учитывать, а при передаче на lsd они просто "обрезаются"
PS: а что еще изменилось помимо файла lcd_ssd1963.c, т.к. замена его в ядре 2.6.31 к положительному результату не приводит
Немного поменялся вызов ф-ции обновления экрана в обработчике прерываний в mxsfb.c. Проще всего скопировать массив который я привел в старый драйвер, все должно работать.В новом драйвере обновление запускается в тасклете и я еще обнаружил в структуре mxs_platform_fb_entry прототип ф-ции .update_panel и воспользовался им, так сказать привел к стандартному виду. В остальном почти все тож самое. Еще смена панорамы сделана более правильно -синхронизирована с началом обновления экрана.