100
100
#define MTK_M4U_TO_LARB (id ) (((id) >> 5) & 0xf)
101
101
#define MTK_M4U_TO_PORT (id ) ((id) & 0x1f)
102
102
103
+ #define HAS_4GB_MODE BIT(0)
104
+ /* HW will use the EMI clock if there isn't the "bclk". */
105
+ #define HAS_BCLK BIT(1)
106
+ #define HAS_VLD_PA_RNG BIT(2)
107
+ #define RESET_AXI BIT(3)
108
+
109
+ #define MTK_IOMMU_HAS_FLAG (pdata , _x ) \
110
+ ((((pdata)->flags) & (_x)) == (_x))
111
+
103
112
struct mtk_iommu_domain {
104
113
struct io_pgtable_cfg cfg ;
105
114
struct io_pgtable_ops * iop ;
@@ -563,7 +572,8 @@ static int mtk_iommu_hw_init(const struct mtk_iommu_data *data)
563
572
upper_32_bits (data -> protect_base );
564
573
writel_relaxed (regval , data -> base + REG_MMU_IVRP_PADDR );
565
574
566
- if (data -> enable_4GB && data -> plat_data -> has_vld_pa_rng ) {
575
+ if (data -> enable_4GB &&
576
+ MTK_IOMMU_HAS_FLAG (data -> plat_data , HAS_VLD_PA_RNG )) {
567
577
/*
568
578
* If 4GB mode is enabled, the validate PA range is from
569
579
* 0x1_0000_0000 to 0x1_ffff_ffff. here record bit[32:30].
@@ -573,7 +583,7 @@ static int mtk_iommu_hw_init(const struct mtk_iommu_data *data)
573
583
}
574
584
writel_relaxed (0 , data -> base + REG_MMU_DCM_DIS );
575
585
576
- if (data -> plat_data -> reset_axi ) {
586
+ if (MTK_IOMMU_HAS_FLAG ( data -> plat_data , RESET_AXI ) ) {
577
587
/* The register is called STANDARD_AXI_MODE in this case */
578
588
writel_relaxed (0 , data -> base + REG_MMU_MISC_CTRL );
579
589
}
@@ -618,7 +628,7 @@ static int mtk_iommu_probe(struct platform_device *pdev)
618
628
619
629
/* Whether the current dram is over 4GB */
620
630
data -> enable_4GB = !!(max_pfn > (BIT_ULL (32 ) >> PAGE_SHIFT ));
621
- if (!data -> plat_data -> has_4gb_mode )
631
+ if (!MTK_IOMMU_HAS_FLAG ( data -> plat_data , HAS_4GB_MODE ) )
622
632
data -> enable_4GB = false;
623
633
624
634
res = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
@@ -631,7 +641,7 @@ static int mtk_iommu_probe(struct platform_device *pdev)
631
641
if (data -> irq < 0 )
632
642
return data -> irq ;
633
643
634
- if (data -> plat_data -> has_bclk ) {
644
+ if (MTK_IOMMU_HAS_FLAG ( data -> plat_data , HAS_BCLK ) ) {
635
645
data -> bclk = devm_clk_get (dev , "bclk" );
636
646
if (IS_ERR (data -> bclk ))
637
647
return PTR_ERR (data -> bclk );
@@ -763,23 +773,19 @@ static const struct dev_pm_ops mtk_iommu_pm_ops = {
763
773
764
774
static const struct mtk_iommu_plat_data mt2712_data = {
765
775
.m4u_plat = M4U_MT2712 ,
766
- .has_4gb_mode = true,
767
- .has_bclk = true,
768
- .has_vld_pa_rng = true,
776
+ .flags = HAS_4GB_MODE | HAS_BCLK | HAS_VLD_PA_RNG ,
769
777
.larbid_remap = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 },
770
778
};
771
779
772
780
static const struct mtk_iommu_plat_data mt8173_data = {
773
781
.m4u_plat = M4U_MT8173 ,
774
- .has_4gb_mode = true,
775
- .has_bclk = true,
776
- .reset_axi = true,
782
+ .flags = HAS_4GB_MODE | HAS_BCLK | RESET_AXI ,
777
783
.larbid_remap = {0 , 1 , 2 , 3 , 4 , 5 }, /* Linear mapping. */
778
784
};
779
785
780
786
static const struct mtk_iommu_plat_data mt8183_data = {
781
787
.m4u_plat = M4U_MT8183 ,
782
- .reset_axi = true ,
788
+ .flags = RESET_AXI ,
783
789
.larbid_remap = {0 , 4 , 5 , 6 , 7 , 2 , 3 , 1 },
784
790
};
785
791
0 commit comments