我尝试使用DT配置的CMA (连续内存分配器)。但是如何从模块访问分配的内存区呢?
这是DT部分:
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
dsp_reserved: dsp@83400000 {
reg = <0x83400000 0x400000>;
no-map;
};
};
c64_dsp {
compatible = "c64-dsp";
interrupt-parent = <&intc>;
interrupts = <26>;
memory-region = <&dsp_reserved>;
};如何在自己的驱动程序中获得保留的内存区"dsp_reserved“?该地域是否已被"dma_alloc_coherent“请求?有没有类似于"platform_get_irq“的功能?
谢谢你的帮助,斯文
发布于 2015-02-28 02:05:44
我找到了一个解决方案(在probe()函数中调用):
memory = of_parse_phandle(dev->of_node, "memory-region", 0);
if (!memory) {
return -ENODEV;
}
addr = of_translate_address(memory,
of_get_address(memory, 0, &memory_size, NULL));
virt_addr = phys_to_virt(addr);https://stackoverflow.com/questions/28755023
复制相似问题