Linux2.6内核LCD驱动移植

参考: http://www.cnitblog.com/zouzheng/articles/14578.html

linux2.6.14 已经包含了 lcd 的驱动程序,驱动程序位于 /linux-2.6.14/drivers/video/ 目录下,文件名是 s3c2410fb.c, 头文件是

s3c2410fb.h. 在这里可以不研究这个文件。只要对 lcd 进行以下初始化就可以了。

    打开 /linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c, 在这个文件里增加包含文件:

    #include    fb.h

       然后增加 LCD 初始化的代码,

    static struct s3c2410fb_mach_info hfrk_lcdcfg __initdata = {

        .fixed_syncs=       0,

        .regs={

            .lcdcon1=   S3C2410_LCDCON1_TFT16BPP | /

                        S3C2410_LCDCON1_TFT | /

                        S3C2410_LCDCON1_CLKVAL(6),

 

            .lcdcon2=   S3C2410_LCDCON2_VBPD(2) | /

                        S3C2410_LCDCON2_LINEVAL(319) | /

                        S3C2410_LCDCON2_VFPD(0) | /

                        S3C2410_LCDCON2_VSPW(4),

 

            .lcdcon3=   S3C2410_LCDCON3_HBPD(47) | /

                        S3C2410_LCDCON3_HOZVAL(239) | /

                        S3C2410_LCDCON3_HFPD(15),

 

            .lcdcon4=   S3C2410_LCDCON4_MVAL(1) | /

                        S3C2410_LCDCON4_HSPW(31),

 

            .lcdcon5=   S3C2410_LCDCON5_FRM565 | /

                        S3C2410_LCDCON5_INVVLINE | /

                        S3C2410_LCDCON5_HWSWP,

        },

        .lpcsel=    0x0,

        .gpccon=    0xaaaaaaaa,

        .gpccon_mask=   0xffffffff,

        .gpcup=     0xffffffff,

        .gpcup_mask=    0xffffffff,

        .gpdcon=    0xaaaaaaaa,

        .gpdcon_mask=   0x0,

        .gpdup=     0xffffffff,

        .gpdup_mask=    0xffffffff,

        .width=     240,

        .height=    320,

        .xres=      {240,240,240},

        .yres=      {320,320,320},

        .bpp=       {16,16,16},

    };

    static void __init sdmk2410_init(void)

    {

        set_s3c2410fb_info(&hfrk_lcdcfg);

    }

       在系统初始化中增加对 lcd 的初始化。

    MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch

                    * to SMDK2410 */

        /* Maintainer: Jonas Dietsche */

        ……

        .map_io     = smdk2410_map_io,

        .init_irq   = smdk2410_init_irq,

        .init_machine   = sdmk2410_init, /* 这一句是新增加的*/

        .timer      = &s3c24xx_timer,

    MACHINE_END

       重新保存这个文件,现在需要重新进入配置菜单,检查一下 LCD 的相关选项是否选上, [Device Drivers->Graphics support->] 这

个配置菜单下面是相关 LCD 的配置。回到根目录下,输入 make 编译内核,重现烧写内核到开发板,再次启动 linxu2.6.14 以后就可以在

lcd 上看到一个小的企鹅。我们的 lcd 驱动已经移植完成了。

你可能感兴趣的:(ARM,&,Linux)