本文转自: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起来后。
企鹅图片正常了。