int platform_device_add(struct platform_device *pdev) { int i, ret = 0; if (!pdev)/*验证指针的有效性 */ return -EINVAL; if (!pdev->dev.parent)/*都说总线有两个链表,一个是设备链表(通过 device 内嵌)一个是驱动链表(通过device_driver内嵌)这里如果pdev->dev.parent为0,说明设备链表还没...
int platform_device_add(struct platform_device *pdev) { int i, ret = 0; if (!pdev)/*验证指针的有效性 */ return -EINVAL; if (!pdev->dev.parent)/*都说总线有两个链表,一个是设备链表(通过 device 内嵌)一个是驱动链表(通过device_driver内嵌)这里如果pdev->dev.parent为0,说明设备链表还没...
定义好了 platform_device 结构体后就可以调用函数platform_add_devices向系统中添加该设备了,之后可以调用platform_driver_register()进行设备注册。 s3c6410-i2c的platform_device是在系统启动时,在mach-smdk6410.c里的smdk6410_machine_init()函数里进行注册的,这个函数申明为arch_initcall的函数调用,arch_initcall的优...
第一种匹配方式, OF 类型的匹配,也就是设备树采用的匹配方式,of_driver_match_device 函数定义在文件 include/linux/of_device.h 中。 device_driver 结构体(表示设备驱动)中有个名为of_match_table的成员变量,此成员变量保存着驱动的compatible匹配表,设备树中的每个设备节点的 compatible 属性会和 of_match_table...
platform_device_add最终还是调用老接口device_add,只是多了将resource注册进内核的步骤。 platform_driver_register也是调用driver_register,而且在driver_register中,会调用到driver的probe函数。 platform_device_register()注册过程 --- /* arch/arm/mach-s3c2410/mach-smdk2410.c */ struct...
platform_device_unregister(devs[i]); break; } } return ret; } 我们目前只关注LCD设备,所以不管for循环,关键的一句就是platform_device_register(),该函数用来进行平台设备的注册,首先来看它的定义: // drivers/base/platform.c: /** * platform_device_register - add a platform-level device ...
* the driver supports the device is not possible. In case of * -EPROBE_DEFER it will queue the device for deferred probing. * @uevent: Called when a device is added, removed, or a few other things * that generate uevents to add the environment variables. ...
return platform_device_add(pdev); } device_initialize函数在上个章节重点分析过,在此不作过多解释。我们重点来看platform_device_add函数,函数实现如下所示: int platform_device_add(struct platform_device *pdev) { u32 i; int ret; // 检查输入的平台设备指针是否为空 ...
int platform_add_devices(struct platform_device **devs, int num); 该函数的第一个参数为平台设备数组的指针,第二个参数为平台设备的数量,它内部调用了platform_device_register()函数用于注册单个的平台设备。 1.2 将globalfifo作为platform设备 现在我们将前面章节的globalfifo驱动挂接到platform总线上,要完成2个工...
设备树的产生就是为了替代driver中过多的platform_device部分的静态定义,将硬件资源抽象出来,由系统统一解析,这样就可以避免各驱动中对硬件资源大量的重复定义,这样一来,几乎可以肯定的是,设备树中的节点最终目标是转换成platform device结构,在驱动开发时就只需要添加相应的platform driver部分进行匹配即可。