1.platform_device结构体
struct platform_device {
const char * name;/* 设备名 */
u32 id;
struct device dev;
u32 num_resources;/* 设备所使用各类资源数量 */
struct resource * resource;/* 资源 */
};
设备的分配:
struct platform_device *platform_device_alloc(const char *name, int id); //name:设备名,id:设备
id,一般为-1
设备的注册:
int platform_device_add(struct platform_device *pdev);
对platform_device的定义通常在BSP的板文件中实现,在板文件中,将platform_device归纳
为一个数组:
static struct platform_device *smdk2410_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
};
最终通过 platform_add_devices()函数统一注册:
static void __init smdk2410_init(void)
{
s3c_i2c0_set_platdata(NULL);
platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));
smdk_machine_init();
}
platform_add_devices()函数可以将平台设备添加到系统中,这个函数的 原型为:
int platform_add_devices(struct platform_device **devs, int num);