I am attempting to get an OPTREX TFT model T-55149GD030J-MLW-AJN working on an NGW100.
Spec sheets here:
http://www.optrex.com/products/partdeta ... 0J-MLW-AJN
In setup.c I have:
Code:
static struct fb_videomode avr32_tft_modes[] = {
{
.name = "T-55149GD030J-MLW-AJN @ 60",
.refresh = 60,
.xres = 240,
.yres = 400,
.pixclock = KHZ2PICOS(5555),
.left_margin = 17, .right_margin = 33,
.upper_margin = 4, .lower_margin = 2,
.hsync_len = 16, .vsync_len = 6,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
};
static struct fb_monspecs avr32fb_default_tft_monspecs = {
.manufacturer = "OPT",
.monitor = "55149GD030J",
.modedb = avr32_tft_modes,
.modedb_len = ARRAY_SIZE(avr32_tft_modes),
.hfmin = 15000,
.hfmax = 64000,
.vfmin = 60,
.vfmax = 90,
.dclkmax = 30000000,
};
#define AT32AP7000_DEFAULT_TFT_LCDCON2 \
( ATMEL_LCDC_DISTYPE_TFT \
| ATMEL_LCDC_INVCLK \
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE \
| ATMEL_LCDC_MEMOR_BIG )
static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
.default_bpp = 24,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = AT32AP7000_DEFAULT_TFT_LCDCON2,
.default_monspecs = &avr32fb_default_tft_monspecs,
.guard_time = 2,
};
The appropriate pins are set in at32ap700x.c
Code:
case 0:
pdev = &atmel_lcdfb0_device;
select_peripheral(PC(20), PERIPH_A, 0); /* HSYNC */
select_peripheral(PC(21), PERIPH_A, 0); /* PCLK */
select_peripheral(PC(22), PERIPH_A, 0); /* VSYNC */
select_peripheral(PE(1), PERIPH_B, 0); /* DVAL */
select_peripheral(PE(3), PERIPH_B, 0); /* DATA0 */
select_peripheral(PE(4), PERIPH_B, 0); /* DATA1 */
select_peripheral(PE(5), PERIPH_B, 0); /* DATA2 */
select_peripheral(PE(6), PERIPH_B, 0); /* DATA3 */
select_peripheral(PE(7), PERIPH_B, 0); /* DATA4 */
select_peripheral(PC(31), PERIPH_A, 0); /* DATA5 */
select_peripheral(PD(0), PERIPH_A, 0); /* DATA6 */
select_peripheral(PD(1), PERIPH_A, 0); /* DATA7 */
select_peripheral(PE(8), PERIPH_B, 0); /* DATA8 */
select_peripheral(PE(9), PERIPH_B, 0); /* DATA9 */
select_peripheral(PE(10), PERIPH_B, 0); /* DATA10 */
select_peripheral(PE(11), PERIPH_B, 0); /* DATA11 */
select_peripheral(PE(12), PERIPH_B, 0); /* DATA12 */
select_peripheral(PD(7), PERIPH_A, 0); /* DATA13 */
select_peripheral(PD(8), PERIPH_A, 0); /* DATA14 */
select_peripheral(PD(9), PERIPH_A, 0); /* DATA15 */
select_peripheral(PE(13), PERIPH_B, 0); /* DATA16 */
select_peripheral(PE(14), PERIPH_B, 0); /* DATA17 */
select_peripheral(PE(15), PERIPH_B, 0); /* DATA18 */
select_peripheral(PE(16), PERIPH_B, 0); /* DATA19 */
select_peripheral(PE(17), PERIPH_B, 0); /* DATA20 */
select_peripheral(PE(18), PERIPH_B, 0); /* DATA21 */
select_peripheral(PD(16), PERIPH_A, 0); /* DATA22 */
select_peripheral(PD(17), PERIPH_A, 0); /* DATA23 */
clk_set_parent(&atmel_lcdfb0_pixclk, &pll0);
clk_set_rate(&atmel_lcdfb0_pixclk, clk_get_rate(&pll0));
break;
I have added a power driver that sets all the R61509 registers via SPI based on the ltv350qv driver. But cannot get anything on the display. I have verified with an o-scope that the signals are all present and of the correct polarity and voltage level (going through level shifters as this is a 1.8v display). Does anyone have any ideas what I missed? |