ff36中platform_device级别的设备数据结构都是在platform.c中定义的,首先用宏MACHINE_START定义系统资源,接着用platform_add_devices将平台资源注册到设备驱动模型中,平台资源由以下定义
static struct platform_device xxwdt010_device = { .name = "xxwdt010", .id = 0, .num_resources = ARRAY_SIZE(xxwdt010_resources), .resource = xxwdt010_resources, };
其中包括平台设备的name和resource。
注册到设备模型之后等到驱动程序调用platform_driver_register 向系统注册这个驱动程序,设备驱动模型就会按照驱动的名字去找相关的平台设备,如果平台设备被找到,就会调用platform_driver的probe方法初始化这个平台设备,为其分配platform_device中所定义的resource资源,分配资源时有两种方法一种是采用静态映射__io(VA_BASE),
也可以采用ioremap动态映射。