Thread (11 messages) flat view 11 messages, 4 authors, 2012-08-20
STALE5107d

[PATCH 1/2] ARM: da850/omap-l138: Add SoC related definitions for VPIF

From: prabhakar.csengg@gmail.com (Prabhakar Lad)
Date: 2012-08-17 15:50:01

Hi Marek,

On Fri, Aug 17, 2012 at 8:39 PM, Marek Szyprowski
[off-list ref] wrote:
Hello,

On Friday, August 17, 2012 4:59 PM Sekhar Nori wrote:
quoted
On 8/16/2012 3:43 PM, Prabhakar Lad wrote:
quoted
On Tuesday 14 August 2012 05:58 PM, Sekhar Nori wrote:
[...]
quoted
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.
Frankly, this is a leftover from some earlier suggestions that CMA should solve the
aliasing of coherent mappings, which might be a problem on v6+. If it works correctly
on pre-v6, then this dependency should be removed. Feel free to submit a patch and
I will take it to my fixes branch.
I have created a patch for enabling CMA on CPU32_v5 [1], and also
tested it works.
Soon posting this patch.

[1] http://git.linuxtv.org/mhadli/v4l-dvb-davinci_devices.git/commitdiff/e940a1b9262bde96eec4b18971a6307f24262667?hp=2f30ae4ee373fe4c69ab1606373538dcc99ed283

Thanks and Regards,
--Prabhakar Lad
Best regards
--
Marek Szyprowski
Samsung Poland R&D Center



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help