1 /* shmobile-ipmmu.h 2 * 3 * Copyright (C) 2012 Hideki EIRAKU 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License. 8 */ 9 10 #ifndef __SHMOBILE_IPMMU_H__ 11 #define __SHMOBILE_IPMMU_H__ 12 13 struct shmobile_ipmmu { 14 struct device *dev; 15 void __iomem *ipmmu_base; 16 int tlb_enabled; 17 spinlock_t flush_lock; 18 const char * const *dev_names; 19 unsigned int num_dev_names; 20 }; 21 22 #ifdef CONFIG_SHMOBILE_IPMMU_TLB 23 void ipmmu_tlb_flush(struct shmobile_ipmmu *ipmmu); 24 void ipmmu_tlb_set(struct shmobile_ipmmu *ipmmu, unsigned long phys, int size, 25 int asid); 26 int ipmmu_iommu_init(struct shmobile_ipmmu *ipmmu); 27 #else ipmmu_iommu_init(struct shmobile_ipmmu * ipmmu)28static inline int ipmmu_iommu_init(struct shmobile_ipmmu *ipmmu) 29 { 30 return -EINVAL; 31 } 32 #endif 33 34 #endif /* __SHMOBILE_IPMMU_H__ */ 35