This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

66AK2G12: How to reserve memory for DMA

Part Number: 66AK2G12

Hello,

I want to reserve 64M memory for display DMA data transfer. We modified the keystone-k2g-evm.dts like this:

/ {
    compatible =  "ti,k2g-evm", "ti,k2g", "ti,keystone";
    model = "UCS SR 302";

    memory@800000000 {
        device_type = "memory";
        reg = <0x00000008 0x00000000 0x00000000 0x40000000>;
    };

    reserved-memory {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges;

        dsp_common_mpm_memory: dsp-common-mpm-memory@81d000000 {
            compatible = "ti,keystone-dsp-mem-pool";
            reg = <0x00000008 0x1d000000 0x00000000 0x2800000>;
            no-map;
            status = "okay";
        };

        dsp_common_memory: dsp-common-memory@81f800000 {
            compatible = "shared-dma-pool";
            reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
            reusable;
            status = "okay";
        };

        display_reserved: framebuffer@820000000 {
            reg = <0x00000008 0x20000000 0x00000000 0x04000000>;

            status = "okay";

        };
    };

I set the reserved display DMA memory starting from 0x82000,0000 for 0x4000000 size (64M)

I am wondering if my "display_reserved" in dts correct? is this address suitable for DMA?

Also, how does the Linux OS know it can not use memory from addresses higher than 0x82000 0000?

I heard one solution is to use the memmap kernel argument like "memmap=64M$0x820000000 " ,

I am wondering which file I should update? or is it necessary to use "memmap" kernel argument at all?

Tom

  • Hi Tom,

    Have you looked at the documentation in the kernel:

    Documentation/devicetree/bindings/reserved-memory/framebuffer.yaml

    Documentation/devicetree/bindings/reserved-memory/reserved_memory.yaml

    and see if modifying the dts file accordingly helps.

    Also, you could try the below and see if it helps

    display_reserved: framebuffer@820000000 {
                reg = <0x820000000 0x04000000>;

    };

    Best Regards,

    Suren