Hi all.

 

I have question about mapping memory page in l4linux.

I think ¡°dma_map_page¡± function seem malfunction in below code.

 

struct page *new_page;

u32 linux_phys_addr;

 

new_page = alloc_page(GFP_HIGHUSER | __GFP_ZERO | __GFP_NORETRY | __GFP_NOWARN | __GFP_COLD);

linux_phys_addr = dma_map_page(NULL, new_page, 0, PAGE_SIZE, DMA_BIDIRECTIONAL); ////// PAGE_SIZE is 4KB

 

_______________________________________________________________

new_page   |    linux_phys_addr   | correct linux_phys_addr |

----------------|----------------------------|------------------------------|

0xe54b20           0x325d9000           0x48b54b20

0xe54b40           0x325da000           0x48b54b40

0xe54b60           0x325db000           0x48b54b60

 

as H/W ram-base is 0x40000000, 0x30000000 base address can¡¯t be mapped.

 

Does anybody know a way to work dma_map_page?

 

Best.