How to get 32MB DDR3 SDRAM for DMA buffer

Hello guys,

I need to write a kernel module which allocates 32MB of contiguous RAM so then it can be used to do some DMA transfers, I tried using the mem parameters when booting Linux, I could map the buffer for that 32MB with cache enable for it, but when I tried to do dma_sync_single_for_device/cpu over that region I got a kernel error when trying flush and clean the cache for that buffer.

Any advice how get a 32MB of contiguous RAM? Which I can allocate with cache enabled and then use DMA function over that mem space. If I use the alloc_pages I can get up to 4MB of the required RAM and the dma_sync_single_for_device/cpu work fine over the allocated buffer, but I can only allocate 4MB.


Sorry I dont have an answer to your question, but maybe this can help!
Take a look @ linux kernel -> /Documentation/devicetree/bindings/reserved-memory.txt
… try to declare the reserved memory in your dts!!