#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/io-pgtable.h>
#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/of_iommu.h>
#include <asm/cacheflush.h>
#include "msm_iommu_hw-8xxx.h"
#define MRC(reg, processor, op1, crn, crm, op2) \
" mrc " #processor "," #op1 ", %0," #crn "," #crm "," #op2 "\n" \
#define MSM_IOMMU_PGSIZES (SZ_4K | SZ_64K | SZ_1M | SZ_16M)
DEFINE_SPINLOCK(msm_iommu_lock);
static LIST_HEAD(qcom_iommu_devices);
static struct iommu_ops msm_iommu_ops;
struct list_head list_attached;
struct iommu_domain domain;
struct io_pgtable_cfg cfg;
struct io_pgtable_ops *iop;
static struct msm_priv *to_msm_priv(struct iommu_domain *dom)