АДИКМ 0 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба Дисплей LQ043T3DX02 (Sony PSP) подключен к SAM9263. Нашел инициализацию (Линукс) для AVR32, в котором контроллер LCD вроде тот же самый - static struct fb_videomode __initdata lcd_modes[] = { { .name = "LCD", .refresh = 25, .xres = 480, .yres = 272, .pixclock = KHZ2PICOS(9072), .left_margin = 2, .right_margin = 2, .upper_margin = 2, .lower_margin = 2, .hsync_len = 41, .vsync_len = 10, .sync = 0, .vmode = FB_VMODE_NONINTERLACED, } }; static struct fb_monspecs __initdata xmedia_default_monspecs = { .manufacturer = "BWA", .monitor = "SHARP LQ043", .modedb = lcd_modes, .modedb_len = ARRAY_SIZE(lcd_modes), .hfmin = 19948, .hfmax = 31478, .vfmin = 25, .vfmax = 67, .dclkmax = 28330000, }; static struct atmel_lcdfb_info __initdata xmedia_lcdc_data = { .default_bpp = 24, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE | ATMEL_LCDC_MEMOR_BIG), .default_monspecs = &xmedia_default_monspecs, .guard_time = 2, }; Разумеется он не работает (бегут горизонтальные полосы). В связи с этим хочется понять назначение pixclock и как оно расчитывается? Зачем нужны margin (left, right, upper, lower), что такое FB_VMODE_NONINTERLACED ? Ну и насчет dclkmax, hfmax, hfmin, vfmax, vfmin. Буду весьма благодарен тому, кто просветит по данным вопросам. PS. Сама панель рабочая, с другим видеоконтроллером работает нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexandro 0 19 октября, 2009 Опубликовано 19 октября, 2009 (изменено) · Жалоба У Atmel есть дока по подключению http://www.atmel.com/dyn/resources/prod_do...nts/doc6300.pdf Изменено 19 октября, 2009 пользователем Alexandro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба Margin - это, как я понимаю, все-таки front- и back porch. Вот это - ".refresh = 25" - какое-то фуфло, ибо по логике вещей должно быть 60. С интерлейсом вроде бы все должно быть понятно. Осциллографом посмотреть не пробовали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
at90 0 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба Немного OFF. А никто не знает название матрицы от SONY PSP Slim? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АДИКМ 0 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба Margin - это, как я понимаю, все-таки front- и back porch. Вот это - ".refresh = 25" - какое-то фуфло, ибо по логике вещей должно быть 60. С интерлейсом вроде бы все должно быть понятно. Осциллографом посмотреть не пробовали? Пробовал и 60 Герц, особо не меняется. Именно сейчас осциллографа нет под рукой. Завтра буду им рассматривать. Пока пытаюсь понять в чем может быть проблема. Немного OFF. А никто не знает название матрицы от SONY PSP Slim? LS0DZC0031 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
at90 0 19 октября, 2009 Опубликовано 19 октября, 2009 · Жалоба Спасибо за инфу. У вас нету даташита на эту матрицу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
at90 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба вот случайно нашел на одном из форумов буржуйских... может чем то поможет I solved the problem. It works with this settings in the icnova_base.c Code: static struct fb_videomode grasshopper_tft_modes[] = { { .name = "LQ043 @ 60", .refresh = 60, /* refresh rate */ /* horizontal resolution */ .xres = 480, .yres = 272, /* vertical resolution */ .pixclock = KHZ2PICOS(9000), /* pixel clock in kHz */ .left_margin = 2, /* h. front porch */ .right_margin = 2, /* h. back porch */ .upper_margin = 12, /* v. front porch */ .lower_margin = 2, /* v. back porch */ .hsync_len = 41, /* hsync length */ .vsync_len = 10, /* vsync lengt */ .sync = 0, .vmode = FB_VMODE_NONINTERLACED, }, }; static struct fb_monspecs __initdata grasshopper_default_monspecs = { .manufacturer = "ATM", /* ATM = Atmel */ .monitor = "GENERIC", /* Generic type */ .modedb = grasshopper_tft_modes, .modedb_len = ARRAY_SIZE(grasshopper_tft_modes), .hfmin = 15000, /* doesn‘t affect the lcdc! */ .hfmax = 30000, /* doesn‘t affect the lcdc! */ .vfmin = 60, /* doesn‘t affect the lcdc! */ .vfmax = 700, /* doesn‘t affect the lcdc! */ .dclkmax = 90000000, /* doesn‘t affect the lcdc! */ }; struct atmel_lcdfb_info __initdata grasshopper_lcdc_data = { .default_bpp = 24, /* Colur depth */ .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE | ATMEL_LCDC_MEMOR_BIG), .default_monspecs = &grasshopper_default_monspecs, .guard_time = 2, }; http://forum.embedded-projects.net/viewtopic.php?id=543 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АДИКМ 0 20 октября, 2009 Опубликовано 20 октября, 2009 (изменено) · Жалоба ... Спасибо, это я тоже видел. Сегодня посижу с осциллографом. Насчет даташита на слимовый ЖКИ - у меня его нет, честно говоря не искал. Думаю, что должен быть в инете. Изменено 20 октября, 2009 пользователем IgorKossak Бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
at90 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба LS0DZC0031 вроде с виду такая как и LQ043. А меня инетересует матрица которая очень тонкая и без металической рамки..... http://www.focalprice.com/GS136X/LCD_Repla..._2000_Slim.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АДИКМ 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба LS0DZC0031 вроде с виду такая как и LQ043. А меня инетересует матрица которая очень тонкая и без металической рамки..... http://www.focalprice.com/GS136X/LCD_Repla..._2000_Slim.html Это экран от psp2, может вы ищете от psp3 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
at90 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Да его ищу... Вы пробовали его запускать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АДИКМ 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Да его ищу... Вы пробовали его запускать? Нет, я пробую экран от самой первой PSP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Судя по всему, речь идет о драйвере фреймбуфера. Я бы посоветовал пристально посмотреть на функции типа xxx_probe xxx_init где проводится начальная загрузка регистров контроллера LCD перед его запуском. 0x800 LCD Control Register 1 LCDCON1 0x804 LCD Control Register 2 LCDCON2 0x808 LCD Timing Register 1 LCDTIM1 0x80C LCD Timing Register 2 LCDTIM2 эти регистры отвечают за PixelClock, синхру, длительности и полярности сигналов. Проверить их значения на соответствие времянки LCD. Если все будет соответствовать, то появится стабильное изображение, возможно оно будет смещено - подстройка в тех же регистрах. цифры из struct fb_videomode __initdata lcd_modes - (как я понял) используются при запросе программами типа fbset xvidtune у драйвера fb - "а ты кто такой и что умеешь?". ЗЫ Все вышеизложенное написано на основе опыта подстройки драйвера FB на w90p950 и TFT LQ064 Sharp. Ну и бегло глянул pdf на sam9263 Дисплей LQ043T3DX02 (Sony PSP) подключен к SAM9263. Нашел инициализацию (Линукс) для AVR32, в котором контроллер LCD вроде тот же самый - static struct fb_videomode __initdata lcd_modes[] = { { .name = "LCD", .refresh = 25, .xres = 480, .yres = 272, Разумеется он не работает (бегут горизонтальные полосы). В связи с этим хочется понять назначение pixclock и как оно расчитывается? Зачем нужны margin (left, right, upper, lower), что такое FB_VMODE_NONINTERLACED ? Ну и насчет dclkmax, hfmax, hfmin, vfmax, vfmin. Буду весьма благодарен тому, кто просветит по данным вопросам. PS. Сама панель рабочая, с другим видеоконтроллером работает нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeshaKk 0 28 октября, 2009 Опубликовано 28 октября, 2009 · Жалоба Вот мой реально работающий код инициализации LCD: diff -ruN linux-2.6.30.5M-clean/arch/arm/mach-at91/board-sam9263ek.c linux-2.6.30.5M/arch/arm/mach-at91/board-sam9263ek.c --- linux-2.6.30.5M-clean/arch/arm/mach-at91/board-sam9263ek.c +++ linux-2.6.30.5M/arch/arm/mach-at91/board-sam9263ek.c @@ -258,44 +259,46 @@ #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) static struct fb_videomode at91_tft_vga_modes[] = { { - .name = "TX09D50VM1CCA @ 60", + .name = "LQ043T1DG01 @ 60", .refresh = 60, - .xres = 240, .yres = 320, - .pixclock = KHZ2PICOS(4965), + .xres = 480, .yres = 272, + .pixclock = KHZ2PICOS(9009), //(480+41+2+2)*(272+10+2+2)*60 = 9009000 - .left_margin = 1, .right_margin = 33, - .upper_margin = 1, .lower_margin = 0, - .hsync_len = 5, .vsync_len = 1, + .left_margin = 2, .right_margin = 2, + .upper_margin = 12, .lower_margin = 2, + .hsync_len = 41, .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + /*.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,*/ .vmode = FB_VMODE_NONINTERLACED, }, }; static struct fb_monspecs at91fb_default_monspecs = { - .manufacturer = "HIT", - .monitor = "TX09D70VM1CCA", + .manufacturer = "SHA", + .monitor = "LQ043T1DG01", .modedb = at91_tft_vga_modes, .modedb_len = ARRAY_SIZE(at91_tft_vga_modes), - .hfmin = 15000, - .hfmax = 64000, + .hfmin = 64000, + .hfmax = 80000, .vfmin = 50, - .vfmax = 150, + .vfmax = 200, }; - + #define AT91SAM9263_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \ | ATMEL_LCDC_DISTYPE_TFT \ | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться