Marek,
It looks that You have simplified arm_iommu_map_sg() function too much. The main advantage of the iommu is to map scattered memory pages into contiguous dma address space. DMA-mapping is allowed to merge consecutive entries in the scatter list if hardware supports that. http://article.gmane.org/gmane.linux.kernel/1128416
I would update arm_iommu_map_sg() back to coalesce the sg list.
I'm not sure if mmc drivers are aware of coalescing the SG entries together. If not the code must be updated to use dma_sg_len() and the dma entries number returned from dma_map_sg() call.
MMC drivers seem to be aware of coalescing the SG entries together as they are using dma_sg_len().
Let me test and update the patch.
-- nvpublic