1d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini#ifndef _ASM_ARM_XEN_PAGE_COHERENT_H 2d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini#define _ASM_ARM_XEN_PAGE_COHERENT_H 3d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini 4d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini#include <asm/page.h> 5d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini#include <linux/dma-attrs.h> 6d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini#include <linux/dma-mapping.h> 7d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini 8d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellinistatic inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size, 9d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini dma_addr_t *dma_handle, gfp_t flags, 10d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini struct dma_attrs *attrs) 11d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini{ 12d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini return __generic_dma_ops(hwdev)->alloc(hwdev, size, dma_handle, flags, attrs); 13d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini} 14d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini 15d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellinistatic inline void xen_free_coherent_pages(struct device *hwdev, size_t size, 16d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini void *cpu_addr, dma_addr_t dma_handle, 17d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini struct dma_attrs *attrs) 18d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini{ 19d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini __generic_dma_ops(hwdev)->free(hwdev, size, cpu_addr, dma_handle, attrs); 20d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini} 21d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini 227100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellinistatic inline void xen_dma_map_page(struct device *hwdev, struct page *page, 237100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini unsigned long offset, size_t size, enum dma_data_direction dir, 247100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini struct dma_attrs *attrs) 257100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini{ 267100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini __generic_dma_ops(hwdev)->map_page(hwdev, page, offset, size, dir, attrs); 277100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini} 287100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini 29340720be32d458ee11d1117719a8e4b6b82981b2Stefano Stabellinivoid xen_dma_unmap_page(struct device *hwdev, dma_addr_t handle, 307100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini size_t size, enum dma_data_direction dir, 31340720be32d458ee11d1117719a8e4b6b82981b2Stefano Stabellini struct dma_attrs *attrs); 327100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini 33340720be32d458ee11d1117719a8e4b6b82981b2Stefano Stabellinivoid xen_dma_sync_single_for_cpu(struct device *hwdev, 34340720be32d458ee11d1117719a8e4b6b82981b2Stefano Stabellini dma_addr_t handle, size_t size, enum dma_data_direction dir); 35340720be32d458ee11d1117719a8e4b6b82981b2Stefano Stabellini 36340720be32d458ee11d1117719a8e4b6b82981b2Stefano Stabellinivoid xen_dma_sync_single_for_device(struct device *hwdev, 37340720be32d458ee11d1117719a8e4b6b82981b2Stefano Stabellini dma_addr_t handle, size_t size, enum dma_data_direction dir); 387100b077ab4ff5fb0ba7760ce54465f623a0a763Stefano Stabellini 39d6fe76c58c358498b91d21f0ca8054f6aa6e672dStefano Stabellini#endif /* _ASM_ARM_XEN_PAGE_COHERENT_H */ 40