struct resource *res; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 函数进入for里面,i=0,num_resources=7,拿出resource[0]资源。resource_type®提取出该份资源 的资源类型并与函数传递下来的资源类型进行比较,匹配。 Num=0(这里先判断是否等于0再自减1)符合要求,从而返回该资源。 获取剩下资源...
struct resource *r = &dev->resource[i]; if (type == resource_type(r) && num-- == 0) return r; } return NULL; } int platform_get_irq(struct platform_device *dev, unsigned int num) { struct resource *r = platform_get_resource(dev, IORESOURCE_IRQ, num); return r ? r->start ...
阅读platformdriver的代码时,发现在probe函数直接调用platform_get_resource从pdev中获取io内存,但却没有判断传给probe的pdev是否属于这个驱动 ! 后来发现原来在arch目录下的对应目录里面有个devs.c文件(这个文件可能因不同的架构而不一样),这个文件里面声明了一个platform设备的资源数组foo_devices,原型如下: static s...
📢设备树中的节点被转换为platform_device后,设备树中的reg属性、interrupts属性也会被转换为“resource”。这时,你可以使用这个函数取出这些资源。 platform_get_resource函数源码如下: 新内核实现 目录:v4.19/drivers/base/platform.c /** * platform_get_resource - get a resource for a device * @dev: platfo...
platform_get_resource函数源码如下:struct resource *platform_get_resource(struct platform_device *dev,unsigned int type, unsigned int num){ int i;for (i = 0; i < dev->num_resources; i++) { struct resource *r = &dev->resource[i];if (type == resource_type(r) && num-- == 0)ret...
getResource 从哪里找配置文 platform_get_resource_byname 这两天看了很多关于platform_driver和platform_device的文章,从刚开始的完全迷惑到现在的略知一二,当然之后还需要完全理解到自己实践,还有很长的路要走。所以学习步骤是:先查资料,看懂理论,然后看源代码,再自己实践,先改代码,再自己完全写。
这次分析主要的疑惑是platform_get_resource函数中num这个输入变量的作用,还是一个就是if语句中”&&”的执行顺序。这个可能算是C语言记住了,但是我也是在这次才真正注意了一下。在位于drivers/net/dm9000.c中的dm9000_probe函数内添加了提示性打印语句。/* sol_add */ printk("\n!!!\n"); db->addr_...
简介:RK3399平台开发系列讲解(内核入门篇)1.51、platform_get_resource 函数实现细节 设备树中的节点被转换为platform_device后,设备树中的reg属性、interrupts属性也会被转换为“resource”。这时,你可以使用这个函数取出这些资源。 platform_get_resource函数源码如下: ...
简介:阅读platformdriver的代码时,发现在probe函数直接调用platform_get_resource从pdev中获取io内存,但却没有判断传给probe的pdev是否属于这个驱动 !后来发现原来在arch目录下的对应目录里面有个devs.c文件(这个文件可能因不同的架构而不一样),这个文件里面声明了一个platform设备的资源数组foo_devices,原型如下:static...
platform_driver结构体有device_driver成员,该成员的各自字段如上所示,device_driver也有probe、remove、shutdown等函数,在平台驱动注册的时候被初始化。 前面说过,当系统中存在有平台设备和平台驱动通过总线的match函数匹配后则会调用platform_driver的probe函数,参数为platform_device,有时候也通过id_table来判断是否匹配。