IORESOURCE_IO 指的是IO地址空间,这个空间从kernel编程上来看,只能通过专门的接口函数才能访问.硬件层面上,cpu需要用特殊指令才能访问或需要用特殊访问方式才能访问,不能直接用指针来寻址.在PC机上,其指的就是PCI/CPU IO address space.在嵌入式中,基本上没有io address space. 2、IORESOURCE_MEM 指的是属于外设或...
在Linux里面用了几个宏来定义资源 在嵌入式中,基本上没有IO地址空间,所以通常使用IORESOURCE_MEM。代码中是这样定义的。 我们把宏一层层展开,就得到下面这样子: 可以看到,IORESOURCE_MEM这个宏最终是帮我们填充了resource结构体。可以看到,是把所有相关的寄存器的数据给放进去了。具体是怎么填充的,大家只要像我上面那...
void __iomem *dest_ptr;char*pretty_name;BUG_ON(!dev);if(!res ||resource_type(res) != IORESOURCE_MEM) {dev_err(dev,"invalid resource\n");returnIOMEM_ERR_PTR(-EINVAL); } size =resource_size(res);if(res->name) pretty_name =devm_kasprintf(dev, GFP_KERNEL,"%s %s",dev_name(dev)...
所以s3cmci_probe函数1681行,platform_get_resource(pdev, IORESOURCE_MEM, 0)函数返回的就是s3c_sdi_resource[0]。 1690-1691行,调用 request_mem_region(host->mem->start,resource_size(host->mem), pdev->name)函数,该函数用于获取参数指定的内存空间。request_mem_region函数定义在include/linux /ioport.h...
第一个为IORESOURCE_MEM类型,指明了第一个资源内存的起始地址为S3C64XX_PA_DM9000结束地址为S3C64XX_PA_DM9000 + 3,第二个同样为IORESOURCE_MEM类型,指明了第二个资源内存的起始地址为S3C64XX_PA_DM9000 + 4结束地址为S3C64XX_PA_DM9000 + S3C64XX_SZ_DM9000 - 1,第三个为IORESOURCE_IRQ类型,指明了中断号...
request_mem_region() //向iomem_reserouce中注册资源。并检查此资源是否被别人使用。 resource = platform_get_resource(pdev, IORESOURCE_MEM, 0); //从plateform设备中得到IO资源 uport->membase = ioremap(uport->mapbase, //使用ioremap再进行映射。
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); irq = platform_get_irq(pdev, 0); if (!res || (int)irq <= 0) { err = -ENODEV; goto exit; } clk = clk_get(&pdev->dev, "csi_clk"); if (IS_ERR(clk)) {
flags为IORESOURCE_MEM时,start和end表示设备所占据的内存的起始地址与结束地址。 flags为IORESOURCE_IRQ时,start和end表示设备所使用的中断号的开始值和结束值(左闭右闭) 而在platform_driver中,可以使用platform_get_resource方法进行资源的获取。其函数原型如下 ...
flags为IORESOURCE_MEM,start、end表示该设备占据的内存起始地址、结束地址; flags为IORESOURCE_IRQ,start、end表示该设备使用的中断号开始值和结束值(左闭右闭); 多份同类型资源,可停用多个start、end、flags。 如何获取设备资源?可通过platform_get_resource(),获得该dev中某种类型(type)的第num个资源。num从0开始...
对于设备树节点中的reg 属性,它对应IORESOURCE_MEM 类型的资源; 对于设备树节点中的interrupts 属性,它对应IORESOURCE_IRQ 类型的资源。 2.3 有些节点不会生成 platform_device,怎么访问它们 内核会把 dtb 文件解析出一系列的device_node 结构体,我们可以直接访问这些device_node。