1

DT で構成された CMA (Contiguous Memory Allocator) を使用しようとしました。しかし、モジュールから割り当てられたメモリ領域にアクセスするにはどうすればよいですか?

これは 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」に似た機能はありますか?

助けてくれてありがとう、スヴェン

4

1 に答える 1

1

私は解決策を見つけました(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);
于 2015-02-27T18:05:43.853 に答える