Message ID | 20220407075726.17771-16-yong.wu@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | MT8195 IOMMU SUPPORT | expand |
On 07/04/2022 09:57, Yong Wu wrote: > Add IOMMU_TYPE definition. In the mt8195, we have another IOMMU_TYPE: > infra iommu, also there will be another APU_IOMMU, thus, use 2bits for the > IOMMU_TYPE. > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > --- > drivers/iommu/mtk_iommu.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c > index 84d661e0b371..642949aad47e 100644 > --- a/drivers/iommu/mtk_iommu.c > +++ b/drivers/iommu/mtk_iommu.c > @@ -126,9 +126,17 @@ > #define SHARE_PGTABLE BIT(10) /* 2 HW share pgtable */ > #define DCM_DISABLE BIT(11) > #define NOT_STD_AXI_MODE BIT(12) > +/* 2 bits: iommu type */ > +#define MTK_IOMMU_TYPE_MM (0x0 << 13) > +#define MTK_IOMMU_TYPE_INFRA (0x1 << 13) > +#define MTK_IOMMU_TYPE_MASK (0x3 << 13) > > -#define MTK_IOMMU_HAS_FLAG(pdata, _x) \ > - ((((pdata)->flags) & (_x)) == (_x)) > +#define MTK_IOMMU_HAS_FLAG(pdata, _x) (!!(((pdata)->flags) & (_x))) That could be: MTK_IOMMU_HAS_FLAG(pdata, _x) \ MTK_IOMMU_HAS_FLAG_MASK(pdata, _x, _x) > + > +#define MTK_IOMMU_HAS_FLAG_MASK(pdata, _x, mask) \ > + ((((pdata)->flags) & (mask)) == (_x)) > +#define MTK_IOMMU_IS_TYPE(pdata, _x) MTK_IOMMU_HAS_FLAG_MASK(pdata, _x,\ > + MTK_IOMMU_TYPE_MASK) > > struct mtk_iommu_domain { > struct io_pgtable_cfg cfg;
diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c index 84d661e0b371..642949aad47e 100644 --- a/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c @@ -126,9 +126,17 @@ #define SHARE_PGTABLE BIT(10) /* 2 HW share pgtable */ #define DCM_DISABLE BIT(11) #define NOT_STD_AXI_MODE BIT(12) +/* 2 bits: iommu type */ +#define MTK_IOMMU_TYPE_MM (0x0 << 13) +#define MTK_IOMMU_TYPE_INFRA (0x1 << 13) +#define MTK_IOMMU_TYPE_MASK (0x3 << 13) -#define MTK_IOMMU_HAS_FLAG(pdata, _x) \ - ((((pdata)->flags) & (_x)) == (_x)) +#define MTK_IOMMU_HAS_FLAG(pdata, _x) (!!(((pdata)->flags) & (_x))) + +#define MTK_IOMMU_HAS_FLAG_MASK(pdata, _x, mask) \ + ((((pdata)->flags) & (mask)) == (_x)) +#define MTK_IOMMU_IS_TYPE(pdata, _x) MTK_IOMMU_HAS_FLAG_MASK(pdata, _x,\ + MTK_IOMMU_TYPE_MASK) struct mtk_iommu_domain { struct io_pgtable_cfg cfg;