enzo26 发表于 2013-11-26 14:37:49

uboot 液晶驱动问题

本帖最后由 enzo26 于 2013-11-28 13:37 编辑

我们购买了2416核心板,但是换了LCD,内核配置液晶如下,可正常显示
#elif defined(CONFIG_FB_S3C_VGA640480)
#define S3CFB_HFP                        16      /* front porch */
#define S3CFB_HSW                        10      /* hsync width */
#define S3CFB_HBP                        134      /* back porch */

#define S3CFB_VFP                        32      /* front porch */
#define S3CFB_VSW                        2      /* vsync width */
#define S3CFB_VBP                        11      /* back porch */

#define S3CFB_HRES                        640      /* horizon pixelx resolition */
#define S3CFB_VRES                        480      /* line cnt       y resolution */

#define S3CFB_HRES_VIRTUAL      640      /* horizon pixelx resolition */
#define S3CFB_VRES_VIRTUAL      960      /* line cnt       y resolution */

#define S3CFB_HRES_OSD                640      /* horizon pixelx resolition */
#define S3CFB_VRES_OSD                480      /* line cnt       y resolution */

#define S3CFB_VFRAME_FREQ      60      /* frame rate freq */

#define S3CFB_PIXEL_CLOCK      4//(S3CFB_VFRAME_FREQ * (S3CFB_HFP + S3CFB_HSW + S3CFB_HBP + S3CFB_HRES) * (S3CFB_VFP + S3CFB_VSW + S3CFB_VBP + S3CFB_VRES))
#define LCD_TYPE                        "VGA 640*480"

但是同样的道理修改uboot, s3c2416_fb_parameter.c
#if 0   
      //640x480
      {
                29,//VBPD
                5,//VFPD
                4,//VSPW
                71,//HBPD
                40,//HFPD
                31,//HSPW
                1,//CLKVAL
                16,//BPP
                640,//XSIZE
                480//YSIZE
      },
#endif
                  //640x480
    {
      11,//VBPD
      32,//VFPD
      2,//VSPW
      134,//HBPD
      16,//HFPD
      10,//HSPW
      4,//CLKVAL
      16,//BPP
      640,//XSIZE
      480//YSIZE
    },
修改后会花屏一会儿,知道内核重新初始化lcd后,液晶才能正常显示, uboot还应该修改什么

亚瑟王 发表于 2013-11-26 18:21:20

修改u-boot源码下的include/configs/TQ2416.h文件的大概39行的内容:#define CONFIG_LCD_TYPE                                        X480Y272把X480Y272修改为X640Y480然后再试试。

enzo26 发表于 2013-11-27 12:08:37

亚瑟王 发表于 2013-11-26 18:21
修改u-boot源码下的include/configs/TQ2416.h文件的大概39行的内容:#define CONFIG_LCD_TYPE                                        X480Y272 ...

改了,依旧不行

亚瑟王 发表于 2013-11-27 15:13:01

enzo26 发表于 2013-11-27 12:08
改了,依旧不行

确认一下你是否保存了u-boot参数到Nand中,如果保存了,不行清除掉才行。

enzo26 发表于 2013-11-28 11:33:46

Enter your selection: 5
Name(enter to view all paramters):
bootargs=noinitrd root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0
bootcmd=nand read.jffs2 c0008000 kernel;bootm c0008000
bootdelay=1
baudrate=115200
ethaddr=10:23:45:67:89:ab
bootargs_defaults=setenv bootargs ${bootargs} lcd=${lcdtype}
ethact=dm9000
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:512k@0(bios),512k(params),2048K(logo),4m(kernel),-(root)
filesize=5887C
fileaddr=C0000000
gatewayip=192.168.1.2
netmask=255.255.255.0
ipaddr=192.168.101.11
serverip=192.168.101.36
lcdtype=X640Y480
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bios
这是我的环境变量, lcdtype=X640Y480是没有问题的

内核代码中有
static void s3c2416_fb_gpio_setup_24bpp(void)
{
        unsigned int gpio;

        for (gpio = S3C2410_GPC(1); gpio <= S3C2410_GPC(4); gpio++) {
                s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
                s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
        }

        for (gpio = S3C2410_GPC(8); gpio <= S3C2410_GPC(15); gpio++) {
                s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
                s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
        }

        for (gpio = S3C2410_GPD(0); gpio <= S3C2410_GPD(15); gpio++) {
                s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2));
                s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
        }
}

static struct s3c_fb_platdata tq2416_fb_platdata = {
        .win                = &tq2416_fb_win,
#if (CONFIG_FB_S3C_NUM == 2)
        .win                = &tq2416_fb_win,
#endif
        .setup_gpio        = s3c2416_fb_gpio_setup_24bpp,
        .vidcon0        = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
        .vidcon1        = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
};
#endif /* CONFIG_FB_S3C */

因为看不到 s3c2416_fb.module的源码,我不知道uboot是否做了相应的GPIO和寄存器的配置工作
页: [1]
查看完整版本: uboot 液晶驱动问题