@@ -690,13 +690,6 @@ static const struct iommu_ops mtk_iommu_ops = {
690
690
static int mtk_iommu_hw_init (const struct mtk_iommu_data * data )
691
691
{
692
692
u32 regval ;
693
- int ret ;
694
-
695
- ret = clk_prepare_enable (data -> bclk );
696
- if (ret ) {
697
- dev_err (data -> dev , "Failed to enable iommu bclk(%d)\n" , ret );
698
- return ret ;
699
- }
700
693
701
694
if (data -> plat_data -> m4u_plat == M4U_MT8173 ) {
702
695
regval = F_MMU_PREFETCH_RT_REPLACE_MOD |
@@ -762,7 +755,6 @@ static int mtk_iommu_hw_init(const struct mtk_iommu_data *data)
762
755
if (devm_request_irq (data -> dev , data -> irq , mtk_iommu_isr , 0 ,
763
756
dev_name (data -> dev ), (void * )data )) {
764
757
writel_relaxed (0 , data -> base + REG_MMU_PT_BASE_ADDR );
765
- clk_disable_unprepare (data -> bclk );
766
758
dev_err (data -> dev , "Failed @ IRQ-%d Request\n" , data -> irq );
767
759
return - ENODEV ;
768
760
}
@@ -979,14 +971,19 @@ static int __maybe_unused mtk_iommu_runtime_resume(struct device *dev)
979
971
void __iomem * base = data -> base ;
980
972
int ret ;
981
973
982
- /* Avoid first resume to affect the default value of registers below. */
983
- if (!m4u_dom )
984
- return 0 ;
985
974
ret = clk_prepare_enable (data -> bclk );
986
975
if (ret ) {
987
976
dev_err (data -> dev , "Failed to enable clk(%d) in resume\n" , ret );
988
977
return ret ;
989
978
}
979
+
980
+ /*
981
+ * Uppon first resume, only enable the clk and return, since the values of the
982
+ * registers are not yet set.
983
+ */
984
+ if (!m4u_dom )
985
+ return 0 ;
986
+
990
987
writel_relaxed (reg -> wr_len_ctrl , base + REG_MMU_WR_LEN_CTRL );
991
988
writel_relaxed (reg -> misc_ctrl , base + REG_MMU_MISC_CTRL );
992
989
writel_relaxed (reg -> dcm_dis , base + REG_MMU_DCM_DIS );
0 commit comments