在mxc_lcdif.c中:
static struct fb_videomode lcdif_modedb[] = {
{
/* 640x480 @ 60 Hz , pixel clk @ 25MHz */
"HVGA", 60, 640, 480, 40000, 50, 110, 34, 11, 3, 2,//modified by jimmy
FB_SYNC_CLK_LAT_FALL,
FB_VMODE_NONINTERLACED,
0,},
/*{
// 800x480 @ 60 Hz , pixel clk @ 32MHz
"SEIKO-WVGA", 60, 800, 480, 29850, 89, 164, 23, 10, 10, 10,
FB_SYNC_CLK_LAT_FALL,
FB_VMODE_NONINTERLACED,
0,},*/ // jimmy
};
在board-mx6q_sabresd.c中:
static struct ipuv3_fb_platform_data sabresd_fb_data[] = {
{ /*fb0*/
.disp_dev = "lcd",
.interface_pix_fmt = IPU_PIX_FMT_RGB565, //IPU_PIX_FMT_RGB666, //by jimmy
.mode_str = "HVGA", //jimmy
.default_bpp = 16,
.int_clk = false,
}, /*{
.disp_dev = "hdmi",
.interface_pix_fmt = IPU_PIX_FMT_RGB24,
.mode_str = "1920x1080M@60",
.default_bpp = 32,
.int_clk = false,
}, {
.disp_dev = "lcd0",
.interface_pix_fmt = IPU_PIX_FMT_RGB666,
.mode_str = "VGA", //jimmy
.default_bpp = 16,
.int_clk = false,
},*///masked by jimmy
};
static struct fsl_mxc_lcd_platform_data lcdif_data = {
.ipu_id = 0,
.disp_id = 0,
.default_ifmt = IPU_PIX_FMT_RGB666,//modified by jimmy
};
void lcd_pin_init(void) //by jimmy
{
//writel(((readl(IOMUXC_LCD_PWR_EN) & ~0x7) | 0x5), IOMUXC_LCD_PWR_EN);
gpio_request(SABRESD_LCD_PWR_EN, "lcd");
gpio_direction_output(SABRESD_LCD_PWR_EN, 1);
msleep(1);
gpio_set_value(SABRESD_LCD_PWR_EN, 1);
//writel(((readl(IOMUXC_BKL_EN) & ~0x7) | 0x0), IOMUXC_BKL_EN);
gpio_request(SABRESD_BKL_EN, "lcd");
gpio_direction_output(SABRESD_BKL_EN, 1);
msleep(1);
gpio_set_value(SABRESD_BKL_EN, 1);
gpio_request(SABRESD_DISP_CLK, "lcd");
gpio_direction_output(SABRESD_DISP_CLK, 1);
gpio_request(SABRESD_DISP_ENAB, "lcd");
gpio_direction_output(SABRESD_DISP_ENAB, 1);
gpio_request(SABRESD_DISP_HSYNC, "lcd");
gpio_direction_output(SABRESD_DISP_HSYNC, 1);
gpio_request(SABRESD_DISP_SYNC, "lcd");
gpio_direction_output(SABRESD_DISP_SYNC, 1);
gpio_request(SABRESD_DISP_DATA00, "lcd");
gpio_direction_output(SABRESD_DISP_DATA00, 1);
gpio_request(SABRESD_DISP_DATA01, "lcd");
gpio_direction_output(SABRESD_DISP_DATA01, 1);
gpio_request(SABRESD_DISP_DATA02, "lcd");
gpio_direction_output(SABRESD_DISP_DATA02, 1);
gpio_request(SABRESD_DISP_DATA03, "lcd");
gpio_direction_output(SABRESD_DISP_DATA03, 1);
gpio_request(SABRESD_DISP_DATA04, "lcd");
gpio_direction_output(SABRESD_DISP_DATA04, 1);
gpio_request(SABRESD_DISP_DATA05, "lcd");
gpio_direction_output(SABRESD_DISP_DATA05, 1);
gpio_request(SABRESD_DISP_DATA06, "lcd");
gpio_direction_output(SABRESD_DISP_DATA06, 1);
gpio_request(SABRESD_DISP_DATA07, "lcd");
gpio_direction_output(SABRESD_DISP_DATA07, 1);
gpio_request(SABRESD_DISP_DATA08, "lcd");
gpio_direction_output(SABRESD_DISP_DATA08, 1);
gpio_request(SABRESD_DISP_DATA09, "lcd");
gpio_direction_output(SABRESD_DISP_DATA09, 1);
gpio_request(SABRESD_DISP_DATA10, "lcd");
gpio_direction_output(SABRESD_DISP_DATA10, 1);
gpio_request(SABRESD_DISP_DATA11, "lcd");
gpio_direction_output(SABRESD_DISP_DATA11, 1);
gpio_request(SABRESD_DISP_DATA12, "lcd");
gpio_direction_output(SABRESD_DISP_DATA12, 1);
gpio_request(SABRESD_DISP_DATA13, "lcd");
gpio_direction_output(SABRESD_DISP_DATA13, 1);
gpio_request(SABRESD_DISP_DATA14, "lcd");
gpio_direction_output(SABRESD_DISP_DATA14, 1);
gpio_request(SABRESD_DISP_DATA15, "lcd");
gpio_direction_output(SABRESD_DISP_DATA15, 1);
gpio_request(SABRESD_DISP_DATA16, "lcd");
gpio_direction_output(SABRESD_DISP_DATA16, 1);
gpio_request(SABRESD_DISP_DATA17, "lcd");
gpio_direction_output(SABRESD_DISP_DATA17, 1);
writel(((readl(IOMUXC_DI0_DISP_CLK) & ~0x7) | 0x0), IOMUXC_DI0_DISP_CLK);
writel(((readl(IOMUXC_DI0_PIN15) & ~0x7) | 0x0), IOMUXC_DI0_PIN15);
writel(((readl(IOMUXC_DI0_PIN02) & ~0x7) | 0x0), IOMUXC_DI0_PIN02);
writel(((readl(IOMUXC_DI0_PIN03) & ~0x7) | 0x0), IOMUXC_DI0_PIN03);
writel(((readl(IOMUXC_DISP0_DATA00) & ~0x7) | 0x0), IOMUXC_DISP0_DATA00);
writel(((readl(IOMUXC_DISP0_DATA01) & ~0x7) | 0x0), IOMUXC_DISP0_DATA01);
writel(((readl(IOMUXC_DISP0_DATA02) & ~0x7) | 0x0), IOMUXC_DISP0_DATA02);
writel(((readl(IOMUXC_DISP0_DATA03) & ~0x7) | 0x0), IOMUXC_DISP0_DATA03);
writel(((readl(IOMUXC_DISP0_DATA04) & ~0x7) | 0x0), IOMUXC_DISP0_DATA04);
writel(((readl(IOMUXC_DISP0_DATA05) & ~0x7) | 0x0), IOMUXC_DISP0_DATA05);
writel(((readl(IOMUXC_DISP0_DATA06) & ~0x7) | 0x0), IOMUXC_DISP0_DATA06);
writel(((readl(IOMUXC_DISP0_DATA07) & ~0x7) | 0x0), IOMUXC_DISP0_DATA07);
writel(((readl(IOMUXC_DISP0_DATA08) & ~0x7) | 0x0), IOMUXC_DISP0_DATA08);
writel(((readl(IOMUXC_DISP0_DATA09) & ~0x7) | 0x0), IOMUXC_DISP0_DATA09);
writel(((readl(IOMUXC_DISP0_DATA10) & ~0x7) | 0x0), IOMUXC_DISP0_DATA10);
writel(((readl(IOMUXC_DISP0_DATA11) & ~0x7) | 0x0), IOMUXC_DISP0_DATA11);
writel(((readl(IOMUXC_DISP0_DATA12) & ~0x7) | 0x0), IOMUXC_DISP0_DATA12);
writel(((readl(IOMUXC_DISP0_DATA13) & ~0x7) | 0x0), IOMUXC_DISP0_DATA13);
writel(((readl(IOMUXC_DISP0_DATA14) & ~0x7) | 0x0), IOMUXC_DISP0_DATA14);
writel(((readl(IOMUXC_DISP0_DATA15) & ~0x7) | 0x0), IOMUXC_DISP0_DATA15);
writel(((readl(IOMUXC_DISP0_DATA16) & ~0x7) | 0x0), IOMUXC_DISP0_DATA16);
writel(((readl(IOMUXC_DISP0_DATA17) & ~0x7) | 0x0), IOMUXC_DISP0_DATA17);
}
在函数mx6_sabresd_board_init加入lcd_pin_init();
u-boot环境参数设置是:
MX6Q SABRESD U-Boot > setenv loadaddr 0x10800000
MX6Q SABRESD U-Boot > setenv bootargs_base 'setenv bootargs console=ttymxc0,115200'
MX6Q SABRESD U-Boot > setenv bootargs_mmc 'setenv bootargs ${bootargs} root=/dev/
mmcblk0p1 rootwait rw video=mxcfb0:dev=lcd,HVGA,640x480M-16@60,if=RGB666,bpp=16’
MX6Q SABRESD U-Boot > setenv bootcmd_mmc 'run bootargs_base bootargs_mmc;mmc dev
2;mmc read ${loadaddr} 0x800 0x2000;bootm'
MX6Q SABRESD U-Boot > setenv bootcmd 'run bootcmd_mmc'
MX6Q SABRESD U-Boot > saveenv
|