platform_get_resource(pdev, IORESOURCE_MEM, 0); 即可得到一个IO内存资源节点指针, 包括了地址的开始,结束地址等, 该IO内存的长度可用 resource_size() 来获取, 但这段资源只是一个描述, 想真正使用这段IO内存, 还要经过先申请, 再映射的过程。例如可使用devm_request_mem_region()申请出使用这段IO内存, ...
_gdir = devm_ioremap(&pdev->dev..., mem_gdir->start, resource_size(mem_gdir)); cur_led->va_iomuxc_mux = devm_ioremap(&pdev->dev...void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size)...devm_ioremap将获取到的寄存器地址转化为虚拟地址。
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ---分配memory资源 drvdata->virt_base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(drvdata->virt_base)) return PTR_ERR(drvdata->virt_base); res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); ---分配IRQ资源 if ...
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ---分配memory资源 drvdata->virt_base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(drvdata->virt_base)) return PTR_ERR(drvdata->virt_base); res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); ---分配IRQ资源 if ...