本文转自:http://blogold.chinaunix.net/u4/120285/showart_2396199.html
移植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起来后。
企鹅图片正常了。