FWIW, on ARMv6 and later hardware, the dma_alloc_coherent() provides writecombine memory (i.e. Normal Noncacheable), so no need for dma_alloc_writecombine(). On earlier architectures it is creating Strongly Ordered mappings (no writecombine).
Thanks.
Do you mean that dma_alloc_coherent() and dma_alloc_writecombine() are not different except some additional features of dma_alloc_coherent() in ARM?