移植linux-2.6.36内核及修改touchscreen及lcd都可以工作了,作个记号。
延续上篇的步骤:
1.在arch/arm/mach-s3c2440/mach-mini2440.c文件中加一项:
/* ts driver info */
static struct s3c2410_ts_mach_info zl2440_ts_cfg __initdata = {
.delay = 10000,
.presc = 49,
.oversampling_shift = 2,
};
|
2.在函数mini2440_machine_init(void)中加入相关代码:
static void __init mini2440_machine_init(void)
{
s3c24xx_ts_set_platdata(&zl2440_ts_cfg);
s3c24xx_fb_set_platdata(&mini2440_fb_info);
//s3c_i2c0_set_platdata(NULL);
platform_add_devices(zl2440_devices, ARRAY_SIZE(zl2440_devices));
//smdk_machine_init();
}
|
3.在数组static struct platform_device *zl2440_devices[]中加入两项:
static struct platform_device *zl2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_adc,
&s3c_device_ts,
//&s3c_device_wdt,
//&s3c_device_i2c0,
&s3c_device_iis,
};
|
其中有一个很有意思的地方
"s3c_device_adc"必须在"s3c_device_ts"的
前面。否则touchscreen初始化时会出错。
make之后。新的zImage起来,从文件/dev/input/event0可以读取touchscreen的状态及坐标。
下面继续lcd的修改:
系统起来后LCD上已经有企鹅的图片了,但图片只占有整个LCD面积的上半部分,并且图片扭曲。
将static struct s3c2410fb_mach_info mini2440_fb_info中的lpcsel修改成
((0xCE6) & ~7) | 1<<1即可。
static struct s3c2410fb_mach_info mini2440_fb_info __initdata = {
.displays = &mini2440_lcd_cfg,
.num_displays = 1,
.default_display = 0,
#if 0
.gpccon = 0xaa955699,
.gpccon_mask = 0xffc003cc,
.gpcup = 0x0000ffff,
.gpcup_mask = 0xffffffff,
.gpdcon = 0xaa95aaa1,
.gpdcon_mask = 0xffc0fff0,
.gpdup = 0x0000faff,
.gpdup_mask = 0xffffffff,
#endif
//.lpcsel = ((0xCE6) & ~7) | 1<<4,
.lpcsel = ((0xCE6) & ~7) | 1<<1,
//.lpcsel = 0xf82, //2.6.13/2.6.36(ok)
};
|
make之,新的zImage起来后。企鹅图片正常了。
阅读(1536) | 评论(3) | 转发(0) |