Linux4.3.2内核自带LCD驱动移植
2014-10-23 11:14
603 查看
开发板:jz2440 4.3吋
内核:Linux4.3.2
arch/arm/mach-s3c24xx/mach-smdk2440.c:
将源代码中的对应部分改为以下代码:
/* LCD driver info */
static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {
.lcdcon5
= S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type = S3C2410_LCDCON1_TFT, //LCD类型,开发板用的是TFT,注意,不能用 S3C2410_LCDCON1_TFT16BPP
//S3C2410_LCDCON1_TFT16BPP是TFT的格式
.width
= 480,
.height
= 272,
//.pixclock
= 166667, /* HCLK 60 MHz, divisor 10 */
.pixclock
= 112493,
/*
pixclock的计算:
DOTCLK = fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW) //fframe是屏幕刷新频率
pixclock = 10^12/ DOTCLK=1012/ (fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW))
经过计算,本开发板的fframe为66hz左右,所以DOTCLK = 66*(480 + 2 + 2 + 4) * (272 + 2 + 2 )
pixclock = 10^12/DOTCLK = 112493;
*/
.xres = 480,
.yres = 272,
.bpp = 16,
.left_margin
= 2,
.right_margin
= 2,
.hsync_len
= 40,
.upper_margin
= 2,
.lower_margin
= 2,
.vsync_len
= 9,
};
static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
.displays
= &smdk2440_lcd_cfg,
.num_displays
= 1,
.default_display = 0,
#if 1
/* currently setup by downloader */
.gpccon
= 0xaaaaaaaa,
.gpccon_mask
= 0xffffffff,
.gpcup
= 0xffffffff,
.gpcup_mask
= 0xffffffff,
.gpdcon
= 0xaaaaaaaa,
.gpdcon_mask
= 0xffffffff,
.gpdup
= 0xffffffff,
.gpdup_mask
= 0xffffffff,
#endif
//.lpcsel
= ((0xCE6) & ~7) | 1<<4,
};
虽然修改了上述硬件相关的资源,但是发现LCD并不能工作(内核已经配置LCD支持)
修改源码,支持启动背光灯和LCD_PWREN
在smdk2440_machine_init中添加:
writel((readl(S3C2410_GPBCON) & ~(3)) | 1, S3C2410_GPBCON);
writel((readl(S3C2410_GPBDAT) | 1), S3C2410_GPBDAT);
writel((readl(S3C2410_GPGCON) | (3<<8)), S3C2410_GPGCON);
如果编译不通过的话添加相应头文件,好像是#include <asm/io.h>
测试:
修改开发板上的
vi /etc/inittab
添加:
tty1::askfirst:-/bin/sh
重启,如果发现开发板的LCD出现Please press Enter to activate this console.即移植成功。
内核:Linux4.3.2
arch/arm/mach-s3c24xx/mach-smdk2440.c:
将源代码中的对应部分改为以下代码:
/* LCD driver info */
static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {
.lcdcon5
= S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type = S3C2410_LCDCON1_TFT, //LCD类型,开发板用的是TFT,注意,不能用 S3C2410_LCDCON1_TFT16BPP
//S3C2410_LCDCON1_TFT16BPP是TFT的格式
.width
= 480,
.height
= 272,
//.pixclock
= 166667, /* HCLK 60 MHz, divisor 10 */
.pixclock
= 112493,
/*
pixclock的计算:
DOTCLK = fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW) //fframe是屏幕刷新频率
pixclock = 10^12/ DOTCLK=1012/ (fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW))
经过计算,本开发板的fframe为66hz左右,所以DOTCLK = 66*(480 + 2 + 2 + 4) * (272 + 2 + 2 )
pixclock = 10^12/DOTCLK = 112493;
*/
.xres = 480,
.yres = 272,
.bpp = 16,
.left_margin
= 2,
.right_margin
= 2,
.hsync_len
= 40,
.upper_margin
= 2,
.lower_margin
= 2,
.vsync_len
= 9,
};
static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
.displays
= &smdk2440_lcd_cfg,
.num_displays
= 1,
.default_display = 0,
#if 1
/* currently setup by downloader */
.gpccon
= 0xaaaaaaaa,
.gpccon_mask
= 0xffffffff,
.gpcup
= 0xffffffff,
.gpcup_mask
= 0xffffffff,
.gpdcon
= 0xaaaaaaaa,
.gpdcon_mask
= 0xffffffff,
.gpdup
= 0xffffffff,
.gpdup_mask
= 0xffffffff,
#endif
//.lpcsel
= ((0xCE6) & ~7) | 1<<4,
};
虽然修改了上述硬件相关的资源,但是发现LCD并不能工作(内核已经配置LCD支持)
修改源码,支持启动背光灯和LCD_PWREN
在smdk2440_machine_init中添加:
writel((readl(S3C2410_GPBCON) & ~(3)) | 1, S3C2410_GPBCON);
writel((readl(S3C2410_GPBDAT) | 1), S3C2410_GPBDAT);
writel((readl(S3C2410_GPGCON) | (3<<8)), S3C2410_GPGCON);
如果编译不通过的话添加相应头文件,好像是#include <asm/io.h>
测试:
修改开发板上的
vi /etc/inittab
添加:
tty1::askfirst:-/bin/sh
重启,如果发现开发板的LCD出现Please press Enter to activate this console.即移植成功。
相关文章推荐
- FL2440移植LINUX-3.4.2 (七)--驱动移植LCD(移植自己写的和移植内核自带的)
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植
- S5PC100芯片的linux-lcd驱动移植(基于2.6.35.13内核)
- lcd驱动移植的分析linux3.2内核,chipsee为例,液晶屏AT070TN92
- FS2410 开发板linux-2.6.35内核 LCD 驱动移植
- 移植Linux3.4.2版本内核到mini2440(二)--添加网卡、UVC摄像头、LCD驱动
- Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植
- Linux-2.6.32.2内核在mini2440上的移植----增加LCD背光驱动
- linux-2.6.32内核LCD驱动移植-1
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植 (转)
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植
- Linux-2.6.32.2内核在mini2440上的移植(六)---LCD驱动移植
- linux-2.6.35内核移植—LCD驱动的添加
- 基于tiny210v2的linux-3.9.6内核驱动移植3:LCD移植
- Linux-2.6.32.2内核在mini2440上的移植(六)---添加LCD背光驱动
- 基于ARM9处理器的linux-2.6.32.2操作系统内核移植手记part5.2(LCD驱动源码分析及移植之platform driver)
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(六)---添加LCD背光驱动
- [转]移植linux-2.6.36内核后的ts及lcd驱动参数修改
- [ARM-LINUX]移植2.6.31.12内核到立宇泰ARMSYS2440开发板之LCD驱动+触摸屏驱动
- linux-2.6.26.5内核的&nbsp;lcd驱动移植…