[PATCH 2/2] arm: mvebu: Add hardware I/O Coherency support
From: arnd@arndb.de (Arnd Bergmann)
Date: 2012-10-24 12:25:07
Also in:
lkml
On Wednesday 24 October 2012, Gregory CLEMENT wrote:
On 10/24/2012 01:48 PM, Gregory CLEMENT wrote:quoted
On 10/24/2012 01:36 PM, Arnd Bergmann wrote:quoted
I think it would be cleaner to statically define the operations in a constant structure and point directly to the functions you need. If necessary, use multiple structures.My problem was that these functions are not exposed, only arm_dma_op and arm_coherent_dma_ops are exported. Or do you think about something like this:struct dma_map_ops *dma_ops = { .alloc = arm_coherent_dma_ops.arm_coherent_dma_alloc, .free = arm_coherent_dma_ops.arm_coherent_dma_free, .mmap = arm_coherent_dma_ops.arm_dma_mmap, .get_sgtable = arm_coherent_dma_ops.arm_dma_get_sgtable, .map_sg = arm_coherent_dma_ops.arm_dma_map_sg, .set_dma_mask = arm_coherent_dma_ops.arm_dma_set_mask, .map_page = armada_xp_dma_map_page, .unmap_page = armada_xp_dma_unmap_page, .unmap_sg = arm_dma_ops.unmap_sg, .sync_single_for_cpu = armada_xp_dma_sync, .sync_single_for_device = armada_xp_dma_sync, .sync_sg_for_cpu = arm_dma_ops.sync_sg_for_cpu, .sync_sg_for_device = arm_dma_ops.sync_sg_for_device, };
No, I was thinking of making the underlying functions globally visible and have extern declarations in a header file so you can access them directly. Generally speaking, when you run into a problem with common code, your first approach should be to fix the common code before you try to work around it. Arnd