一、在虚拟平台platform总线上注册设备
1、platform_device结构体
(1)位置
源码目录下的include/linux/platform_device.h中。
(2)代码
struct platform_device {
const char * name;//设备的名称,在/sys/devices中会显示
int id; //设备的id,用于插入总线并且具有相同name的设备编号,
//如果只有一个设备,则为-1
struct device dev; //结构体中内嵌的device结构体
u32 num_resources; //设备使用资源的数量
struct resource * resource; //设备使用的资源数组
const struct platform_device_id *id_entry;
/* MFD cell pointer */
struct mfd_cell *mfd_cell;
/* arch specific additions */
struct pdev_archdata archdata;
};
在大多数驱动中,需要写的只有设备名name 和设备编号id,常用的还有资源数组resource。
二、添加设备到平台总线
(1)打开源码目录下 arch/arm/mach-exynos/mach-itop4412.c文件,在里面添加如下内容:
下面以skyfall为例子。
#ifdef CONFIG_SKYFALL_CTL
struct platform_device s3c_dev