第 1 章 platform 驱动管理机制
Linux2.6 内核引入了一套新的驱动管理机制:Platform_device和Platform_driver。设备用
Platform_device 表示,驱动用 Platform_driver表示,另外设备描述了使用的资源,驱动则
负责电源管理和使用资源。由于驱动和资源之间的独立,使得程序的可移植性和可扩展性
大大增强。
1.1 platform_device
1.1.1数据结构
plarform 设备用 platform_device 来表示,如程序清单 1.1 所示。
程序清单 1.1 platform_device
/* include/linux/platform_device.h */
struct platform_device {
constchar *name;①
int id; ②
structdevice dev; ③
u32 num_resources;④
structresource *resource;⑤
};
各个成员的解释如下:
①name 指向设备的名字字符串,这个名字用来和同名的 platform_driver 进行匹配。
②id 是设备编号(如果有多个同类设备的话),如果只有一个则需设为-1。
③ 设备模型用到的成员。
④ 使用到的资源的数量。
⑤ 资源数组头地址。
最后一个成员 resource 指向此设备用到的资源的数组,struct resource 的定义如程序清单 1.2
所示。
程序清单 1.2 struct resource
/* include/linux/ioport.h */
struct resource {
resource_size_t start; ①
resource_size_t end;②
constchar *name;③
unsignedlong flags;④
structresource *parent, *sibling,*child;⑤
};
#define IORESOURCE_BITS 0x000000ff /*Bus-specific bits */
#define IORESOURCE_IO 0x00000100 /* Resource type */
#define IORESOURCE_MEM 0x00000200
#define IORESOURCE_IRQ 0x00000400
#define IORESOURCE_DMA 0x00000800
评论3