[PATCH 1/2] ARM: da850/omap-l138: Add SoC related definitions for VPIF
From: Sekhar Nori <hidden>
Date: 2012-08-17 14:59:12
Hi Prabhakar, On 8/16/2012 3:43 PM, Prabhakar Lad wrote:
On Tuesday 14 August 2012 05:58 PM, Sekhar Nori wrote:
[...]
quoted
quoted
+int __init da850_register_vpif_display(struct vpif_display_config + *display_config) +{ + struct resource da850_vpif_display_resource[] = { + { + .start = IRQ_DA850_VPIFINT, + .end = IRQ_DA850_VPIFINT, + .flags = IORESOURCE_IRQ, + }, + {}, + }; + unsigned long phys_end_kernel; + int ret; + + if (vpif_disp_cont_bufsize) { + phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) + + (num_physpages << PAGE_SHIFT); + phys_end_kernel += vpif_disp_cont_buf_offset; + da850_vpif_display_resource[1].start = phys_end_kernel; + da850_vpif_display_resource[1].end = phys_end_kernel + + vpif_disp_cont_bufsize - 1; + da850_vpif_display_resource[1].flags = IORESOURCE_MEM; + + if (!request_mem_region(da850_vpif_display_resource[1].start, + resource_size(&da850_vpif_display_resource[1]), + da850_vpif_display_dev.name)) { + pr_err("region already claimed.\n"); + return -EBUSY; + } + ret = dma_declare_coherent_memory(&da850_vpif_display_dev.dev, + phys_end_kernel, phys_end_kernel, + vpif_disp_cont_bufsize, + DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); + + if (!ret) + return -ENOMEM; + } + ret = platform_device_add_resources(&da850_vpif_display_dev, + da850_vpif_display_resource, + ARRAY_SIZE(da850_vpif_display_resource));You are taking memory at the end of RAM and passing it as a IO resource to the driver. This is not correct. For contiguous memory needs can you look at the recently merged CMA framework (include/linux/dma-contiguous.h)Ok. But looks like CMA is enabled for CPU_V6/V6K/V7. If CMA is enabled for ARM926 too than we can use the global CMA itself rather then doing it for each device, then three will be no need to do the above and all the kernel parameters can be removed too.
I hadn't followed the CMA development closely so I am not sure of the reasons behind restricting it to v6+. The patch that added this doesn't really talk about why it should be restricted to v6+. I am copying Marek here to see if he can quickly clarify, but may be you can even start a new thread asking about this. Thanks, Sekhar