А существует ли драйвер для WF43BTIBED0 под свежий BSP?
На диске с платой был драйвер для архитектуры "mach-stmp378x", в последнем BSP от Freescale архитектура поменялась на "mach-mx23". Собственно ядро на "mach-mx23" работает "из коробки" а драйвер для дисплея под архитектуру "mach-stmp378x" простым копированием не переносится на "mach-mx23"- сильно изменена структура файлов и переписаны заголовки.
там кроме того учтены и все другие особенности платы, нет драйвера сети - его можно просто скопировать из старого бсп, просто я в последнее время усиленно его мучал на предмет оптимизации, не стал старую версию интегрировать. Там есть какой-то глюк с инициализацией ssp - вроде бы некритичный но в логах загрузки выскакивает ошибка инициализации, нужно разбираться, я поэтому его не хотел раньше времени выкладывать сырым. Вчера пробовал самую последнюю версию из git - на сайте freescale с сильным опоздпнием выкладывают релизы, нужно тестировать сеть с ней - вроде бы на первый взгляд пропал глюк который был раньше, по крайней мере я покачал несколько раз 700 метровые авишники, ничего не зависло, скорость 1,5 мбайт/сек.
Собственно "страрый" драйвер я портировал на новую архитектуру но работает он крайне странно. По какой - то причине инициализация клоков происходит если указывать
mxs_platform_fb_entry fb_entry
.cycle_time_ns = [150 ... 500],
и инициализация
ret = clk_set_rate(lcd_clk, 1000000000 / pentry->cycle_time_ns); /* Hz *
Виснет драйвер в инициализации при посылке байтов в контроллер дисплея в месте, где ожидает окончания посылки данных на шину :
while (__raw_readl(REGS_LCDIF_BASE + HW_LCDIF_CTRL) & BM_LCDIF_CTRL_RUN);
Такое ощущение что контроллер дисплея в процессоре неправильно проинициализирован. Если инвертировать условие и после каждой записи в регистр дисплея поставить маленькую паузу, инициализация проходит. Но потом обновление экрана не запускается нет сигналов #CS #WR.
1. Создал новую директорию;
2. Скопировал туда исходик ядра linux-2.6.31.tar.bz2
3. Развернул архив tar -vxf linux-2.6.31.tar.bz2
4. Скорпировал в папку ядра linux-2.6.31 патчи от freescale linux-2.6.31-imx_10.05.02.bz2
5. Распаковал патчи tar -vfx linux-2.6.31-imx_10.05.02.bz2
6. Наложил патчи ./patches/patch-kernel.sh
7. Скопировал в папку ядра патч от sasamy wget http://sasamy.narod.ru/sk_mxs.patch
8. Наложил патч cat sk_mxs.patch | patch -p1
9. Взял конфиг ядра из ltib, скопировал .config
10. Запустил кофигуратор make ARCH=arm menuconfig включил поддержку SSD1963
11. Собрал ядро make ARCH=arm CROSS_COMPILE=armv5te-softfloat-linux-gnueabi-
Итог : ядро собралось, буду тестировать в пятницу, завтра выходной семья не отпускает.
Выложите - сделаем общий патч, чтобы можно было при конфигурировании выбрать тип дисплея, новый драйвер сети вроде неплохо работает на ядре из git, еще потестирую потом включу его в патч тоже с возможностью выбора старого стабильного и нового. Правда там есть пара хаков :) надо бы без хаков потестировать, возможно и без них будет хороший результат
Потестил - есть одно замечание, еще не решил, как с ним поступить.
Одно меня смущает : синие лапы у Tux, я проверил - упаковка RGB совпадает в фреймбуфере, дисплее и Qt Embedded (графика нормально выводится), а ноги у пингвина синие : а именно такое ощущение что tux закодирован в формате BGR.