From 102a0743326a03cd1a1202ceda21e175b7d3575c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Tue, 20 Feb 2024 01:20:52 +0000
Subject: [PATCH] add new system file
---
kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c b/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c
index 379049e..07912bc 100644
--- a/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c
+++ b/kernel/drivers/video/rockchip/mpp/hack/mpp_hack_px30.c
@@ -19,6 +19,7 @@
#include "../mpp_common.h"
#include "../mpp_iommu.h"
#include "mpp_hack_px30.h"
+#include <soc/rockchip/rockchip_iommu.h>
#define RK_MMU_DTE_ADDR 0x00 /* Directory table address */
#define RK_MMU_STATUS 0x04
@@ -177,7 +178,17 @@
iommu->grf_val = mpp->grf_info->val & MPP_GRF_VAL_MASK;
if (mpp->hw_ops->clk_on)
mpp->hw_ops->clk_on(mpp);
- iommu->dte_addr = mpp_iommu_get_dte_addr(iommu);
+ /*
+ * ensure that iommu is enable, so that read valid dte value
+ */
+ if (rockchip_iommu_is_enabled(mpp->dev))
+ iommu->dte_addr = mpp_iommu_get_dte_addr(iommu);
+ else {
+ rockchip_iommu_enable(mpp->dev);
+ iommu->dte_addr = mpp_iommu_get_dte_addr(iommu);
+ rockchip_iommu_disable(mpp->dev);
+ }
+ dev_err(mpp->dev, "%s dte_addr %08x\n", __func__, iommu->dte_addr);
if (mpp->hw_ops->clk_off)
mpp->hw_ops->clk_off(mpp);
INIT_LIST_HEAD(&iommu->link);
--
Gitblit v1.6.2