I have written a uio driver for framebuffer device. I added device specific register memory in uio.mem. I also added DMA param memory in uio.mem to perform DMA from userspace. Also video RAM was mapped in kernel space using dma_alloc_coherent() and a logical address was obtained. This logical address was also added in uio.mem with memtype as UIO_MEM_LOGICAL because i can fill video ram from userspace. Read and write to this DMA param memory from userspace is not having any effect. Also video RAM memory that i filled up is not getting written to the framebuffer device when DMA is started. Also one more info that i noted was that values assigned to logical addresses in kernel space are not reflected in userspace after mmap. The values in userspace show different values compared to that in kernel space.
This is a bit confusing for me. Why is this happening?? Have I missed any information?? Am i on the right path??