在Linux-2.6.21选中s3c touch panel驱动,在启动系统时发现无法注册 touch panel的驱动,后来发现原来是 touch panel的驱动与 adc 的驱动发生冲突了.
在 driver/input/touchscreen/s3c-ts.c 中,
static struct platform_driver s3c_ts_driver = { .probe = s3c_ts_probe, .remove = s3c_ts_remove, .suspend = s3c_ts_suspend, .resume = s3c_ts_resume, .driver = { .owner = THIS_MODULE, .name = "s3c2410-adc", <<--- }, };
|
再到 arch/arm/plat-s3c24xx/devs.c
struct platform_device s3c_device_adc = { .name = "s3c-adc", .id = -1, .num_resources = ARRAY_SIZE(s3c_adc_resource), .resource = s3c_adc_resource, };
|
发现devs.c中是没有 s3c2410-adc 这个名字的资源的,所以到了 probe这个函数里就无法正常注册设备.
所以只需将 s3c-ts.c 这个文件中的 s3c2410-adc 改为 s3c-adc 这个名字就可以了.不过这样会产生另外一个问题,就是会导致 ADC 的驱动不能用,所以现在adc与touch panel的驱动只能2选1,以后找到解决的方法再写出来.
阅读(1777) | 评论(1) | 转发(0) |