打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IMX6Q-Linux-LCD模块
 在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 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何在内核中增加程序,并让系统开机就能执行该程序 - Slackware /Solaris...
【转】__raw_readl和__raw_writel
LCD驱动三
首页 » 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 在A33上抛掉安卓层,在根文件系统层操作调试过程(也就是做了安卓用户层的工作)
嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二) - 内核、驱动开发篇 -
实验 A/D驱动程序编写与测试
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服