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 13struct shmobile_ipmmu { 14 struct device *dev; 15 void __iomem *ipmmu_base; 16 int tlb_enabled; 17 struct mutex flush_lock; 18 const char * const *dev_names; 19 unsigned int num_dev_names; 20}; 21 22#ifdef CONFIG_SHMOBILE_IPMMU_TLB 23void ipmmu_tlb_flush(struct shmobile_ipmmu *ipmmu); 24void ipmmu_tlb_set(struct shmobile_ipmmu *ipmmu, unsigned long phys, int size, 25 int asid); 26int ipmmu_iommu_init(struct shmobile_ipmmu *ipmmu); 27#else 28static inline int ipmmu_iommu_init(struct shmobile_ipmmu *ipmmu) 29{ 30 return -EINVAL; 31} 32#endif 33 34#endif /* __SHMOBILE_IPMMU_H__ */ 35