platform框架

本文详细介绍了Linux平台设备驱动模型,包括platform_device结构体的设备注册与分配,platform_driver中的操作函数,以及如何通过platform_add_devices()统一注册设备。还涉及到bus_type中的platform_bus_type匹配过程和资源管理。此外,还讨论了plat_data在设备硬件描述中的作用。
摘要由CSDN通过智能技术生成

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值