/* shmobile-ipmmu.h * * Copyright (C) 2012 Hideki EIRAKU * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. */ #ifndef __SHMOBILE_IPMMU_H__ #define __SHMOBILE_IPMMU_H__ struct shmobile_ipmmu { struct device *dev; void __iomem *ipmmu_base; int tlb_enabled; struct mutex flush_lock; const char * const *dev_names; unsigned int num_dev_names; }; #ifdef CONFIG_SHMOBILE_IPMMU_TLB void ipmmu_tlb_flush(struct shmobile_ipmmu *ipmmu); void ipmmu_tlb_set(struct shmobile_ipmmu *ipmmu, unsigned long phys, int size, int asid); int ipmmu_iommu_init(struct shmobile_ipmmu *ipmmu); #else static inline int ipmmu_iommu_init(struct shmobile_ipmmu *ipmmu) { return -EINVAL; } #endif #endif /* __SHMOBILE_IPMMU_H__ */