日期:2014-05-16  浏览次数:20815 次

系统中哪里定义平台设备(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等,类似。