需要帮助以在DTB中添加64位MMAP设备
有人可以帮助启用64位注册MMAP设备到ARM64 Linux内核DTB。 在我的平台Linux内核设备驱动程序中, *( res) - > start 使用' reg> reg 'dtb和 *resource_size( res)的第1个条目>使用' reg 'dtb的第二个条目。
dev: dev@8000000000 {
#address-cells = <2>;
#size-cells = <1>;
compatible = "nxp,dev-1.0";
reg-names = "dev0", "dev1";
reg = <0x00000080 0x00000000 0x01FFFFFF>,//Inst0 0x80_0000_0000 to 0x80_1FFF_FFFF
<0x00000080 0x50000000 0x01FFFFFF>;//Inst1 0x80_5000_0000 to 0x80_6FFF_FFFF
interrupts = <0 170 0>;
interrupt-parent = <&intc>;
};
驱动程序:
*res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
if (*res == NULL) {
dev_err(device, "resource %s not found!\n", name);
return -ENODEV;
}
printk("sizeof((*res)->start) %d \n", sizeof((*res)->start));
printk("sizeof((*res)->end) %d \n", sizeof((*res)->end));
printk("\n\nNAME %s, (*res)->start 0x%llx, resource_size(*res) 0x%llx dev_name(device) %s \n\n", name, (*res)->start, resource_size(*res), dev_name(device));
region = devm_request_mem_region(device, (*res)->start,
resource_size(*res), dev_name(device));
log:
sizeof((*res)->start) 8
sizeof((*res)->end) 8
NAME dev0, (*res)->start 0x80, resource_size(*res) 0x0 dev_name(device) 80.dev
80.dev: unable to request dev0
request_and_map() failed for dev0
sizeof((*res)->start) 8
sizeof((*res)->end) 8
NAME dev1, (*res)->start 0x1ffffff, resource_size(*res) 0x80 dev_name(device) 80.dev
80.dev: unable to request dev1
Could someone help to enable 64bit register mmap device to ARM64 linux kernel dtb.
In my platform linux kernel device driver, *(res)->start uses 1st entry of 'reg' dtb and *resource_size(res) uses 2nd entry of 'reg' dtb.
dev: dev@8000000000 {
#address-cells = <2>;
#size-cells = <1>;
compatible = "nxp,dev-1.0";
reg-names = "dev0", "dev1";
reg = <0x00000080 0x00000000 0x01FFFFFF>,//Inst0 0x80_0000_0000 to 0x80_1FFF_FFFF
<0x00000080 0x50000000 0x01FFFFFF>;//Inst1 0x80_5000_0000 to 0x80_6FFF_FFFF
interrupts = <0 170 0>;
interrupt-parent = <&intc>;
};
Driver:
*res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
if (*res == NULL) {
dev_err(device, "resource %s not found!\n", name);
return -ENODEV;
}
printk("sizeof((*res)->start) %d \n", sizeof((*res)->start));
printk("sizeof((*res)->end) %d \n", sizeof((*res)->end));
printk("\n\nNAME %s, (*res)->start 0x%llx, resource_size(*res) 0x%llx dev_name(device) %s \n\n", name, (*res)->start, resource_size(*res), dev_name(device));
region = devm_request_mem_region(device, (*res)->start,
resource_size(*res), dev_name(device));
Log:
sizeof((*res)->start) 8
sizeof((*res)->end) 8
NAME dev0, (*res)->start 0x80, resource_size(*res) 0x0 dev_name(device) 80.dev
80.dev: unable to request dev0
request_and_map() failed for dev0
sizeof((*res)->start) 8
sizeof((*res)->end) 8
NAME dev1, (*res)->start 0x1ffffff, resource_size(*res) 0x80 dev_name(device) 80.dev
80.dev: unable to request dev1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论