系统中哪里定义平台设备(platform)的名称?
//Watchdog平台驱动结构体,平台驱动结构体定义在platform_device.h中
static struct platform_driver s3c2410wdt_driver = {
.probe = s3c2410wdt_probe,
.remove = __devexit_p(s3c2410wdt_remove),
.shutdown = s3c2410wdt_shutdown,
.suspend = s3c2410wdt_suspend,
.resume = s3c2410wdt_resume,
//注意这里的名称一定要和系统中定义平台设备的地方一致,这样才能把平台设备与该平台设备的驱动关联起来 .driver = {
.owner = THIS_MODULE,
.name = "s3c2410-wdt",
},
};
==================
红色的这句话,我不理解,是不是driver中的name和drivce中的name要一样??
可是我在驱动源码里只看到了这一个地方定义了name值等于“s3c2410-wdt”。
[解决办法]
平台设备的一般开发步骤
(1)、填充设备资源结构体,主要是资源开始、资源结束、资源标识三项;
(2)、填充平台设备构体;
(3)、填充设备驱动结构体,相应的方法需要自己实现;
(4)、填充平台设备集,任然是平台设备结构体(platform_device),此存在于与机器相关的源代码文件中,一般的结构目录为Linux2.6.32/arch/arm/mach-xxxx/xx-xxxx中。
在第二个步骤填充的平台设备名称
[解决办法]
以三星2440标准开发板为例,在内核目录:
// /arch/arm/mach-s3c2440/mach-smdk2440.c
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
};
S3C6410等,类似。