diff options
Diffstat (limited to 'include/linux/omap-iommu.h')
| -rw-r--r-- | include/linux/omap-iommu.h | 52 | 
1 files changed, 52 insertions, 0 deletions
diff --git a/include/linux/omap-iommu.h b/include/linux/omap-iommu.h new file mode 100644 index 00000000000..cac78de09c0 --- /dev/null +++ b/include/linux/omap-iommu.h @@ -0,0 +1,52 @@ +/* + * omap iommu: simple virtual address space management + * + * Copyright (C) 2008-2009 Nokia Corporation + * + * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef _INTEL_IOMMU_H_ +#define _INTEL_IOMMU_H_ + +struct iovm_struct { +	struct omap_iommu	*iommu;	/* iommu object which this belongs to */ +	u32			da_start; /* area definition */ +	u32			da_end; +	u32			flags; /* IOVMF_: see below */ +	struct list_head	list; /* linked in ascending order */ +	const struct sg_table	*sgt; /* keep 'page' <-> 'da' mapping */ +	void			*va; /* mpu side mapped address */ +}; + +#define MMU_RAM_ENDIAN_SHIFT	9 +#define MMU_RAM_ENDIAN_LITTLE	(0 << MMU_RAM_ENDIAN_SHIFT) +#define MMU_RAM_ELSZ_8		(0 << MMU_RAM_ELSZ_SHIFT) +#define IOVMF_ENDIAN_LITTLE	MMU_RAM_ENDIAN_LITTLE +#define MMU_RAM_ELSZ_SHIFT	7 +#define IOVMF_ELSZ_8		MMU_RAM_ELSZ_8 + +struct iommu_domain; + +extern struct iovm_struct *omap_find_iovm_area(struct device *dev, u32 da); +extern u32 +omap_iommu_vmap(struct iommu_domain *domain, struct device *dev, u32 da, +			const struct sg_table *sgt, u32 flags); +extern struct sg_table *omap_iommu_vunmap(struct iommu_domain *domain, +				struct device *dev, u32 da); +extern u32 +omap_iommu_vmalloc(struct iommu_domain *domain, struct device *dev, +				u32 da, size_t bytes, u32 flags); +extern void +omap_iommu_vfree(struct iommu_domain *domain, struct device *dev, +				const u32 da); +extern void *omap_da_to_va(struct device *dev, u32 da); + +extern void omap_iommu_save_ctx(struct device *dev); +extern void omap_iommu_restore_ctx(struct device *dev); + +#endif  |