|
@@ -36,21 +36,21 @@
|
|
|
#define DISP_REG_MUTEX_MOD(n) (0x2c + 0x20 * (n))
|
|
|
#define DISP_REG_MUTEX_SOF(n) (0x30 + 0x20 * (n))
|
|
|
|
|
|
-#define MUTEX_MOD_DISP_OVL0 BIT(11)
|
|
|
-#define MUTEX_MOD_DISP_OVL1 BIT(12)
|
|
|
-#define MUTEX_MOD_DISP_RDMA0 BIT(13)
|
|
|
-#define MUTEX_MOD_DISP_RDMA1 BIT(14)
|
|
|
-#define MUTEX_MOD_DISP_RDMA2 BIT(15)
|
|
|
-#define MUTEX_MOD_DISP_WDMA0 BIT(16)
|
|
|
-#define MUTEX_MOD_DISP_WDMA1 BIT(17)
|
|
|
-#define MUTEX_MOD_DISP_COLOR0 BIT(18)
|
|
|
-#define MUTEX_MOD_DISP_COLOR1 BIT(19)
|
|
|
-#define MUTEX_MOD_DISP_AAL BIT(20)
|
|
|
-#define MUTEX_MOD_DISP_GAMMA BIT(21)
|
|
|
-#define MUTEX_MOD_DISP_UFOE BIT(22)
|
|
|
-#define MUTEX_MOD_DISP_PWM0 BIT(23)
|
|
|
-#define MUTEX_MOD_DISP_PWM1 BIT(24)
|
|
|
-#define MUTEX_MOD_DISP_OD BIT(25)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_OVL0 BIT(11)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_OVL1 BIT(12)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_RDMA0 BIT(13)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_RDMA1 BIT(14)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_RDMA2 BIT(15)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_WDMA0 BIT(16)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_WDMA1 BIT(17)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_COLOR0 BIT(18)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_COLOR1 BIT(19)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_AAL BIT(20)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_GAMMA BIT(21)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_UFOE BIT(22)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_PWM0 BIT(23)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_PWM1 BIT(24)
|
|
|
+#define MT8173_MUTEX_MOD_DISP_OD BIT(25)
|
|
|
|
|
|
#define MUTEX_SOF_SINGLE_MODE 0
|
|
|
#define MUTEX_SOF_DSI0 1
|
|
@@ -77,24 +77,25 @@ struct mtk_ddp {
|
|
|
struct clk *clk;
|
|
|
void __iomem *regs;
|
|
|
struct mtk_disp_mutex mutex[10];
|
|
|
+ const unsigned int *mutex_mod;
|
|
|
};
|
|
|
|
|
|
-static const unsigned int mutex_mod[DDP_COMPONENT_ID_MAX] = {
|
|
|
- [DDP_COMPONENT_AAL] = MUTEX_MOD_DISP_AAL,
|
|
|
- [DDP_COMPONENT_COLOR0] = MUTEX_MOD_DISP_COLOR0,
|
|
|
- [DDP_COMPONENT_COLOR1] = MUTEX_MOD_DISP_COLOR1,
|
|
|
- [DDP_COMPONENT_GAMMA] = MUTEX_MOD_DISP_GAMMA,
|
|
|
- [DDP_COMPONENT_OD] = MUTEX_MOD_DISP_OD,
|
|
|
- [DDP_COMPONENT_OVL0] = MUTEX_MOD_DISP_OVL0,
|
|
|
- [DDP_COMPONENT_OVL1] = MUTEX_MOD_DISP_OVL1,
|
|
|
- [DDP_COMPONENT_PWM0] = MUTEX_MOD_DISP_PWM0,
|
|
|
- [DDP_COMPONENT_PWM1] = MUTEX_MOD_DISP_PWM1,
|
|
|
- [DDP_COMPONENT_RDMA0] = MUTEX_MOD_DISP_RDMA0,
|
|
|
- [DDP_COMPONENT_RDMA1] = MUTEX_MOD_DISP_RDMA1,
|
|
|
- [DDP_COMPONENT_RDMA2] = MUTEX_MOD_DISP_RDMA2,
|
|
|
- [DDP_COMPONENT_UFOE] = MUTEX_MOD_DISP_UFOE,
|
|
|
- [DDP_COMPONENT_WDMA0] = MUTEX_MOD_DISP_WDMA0,
|
|
|
- [DDP_COMPONENT_WDMA1] = MUTEX_MOD_DISP_WDMA1,
|
|
|
+static const unsigned int mt8173_mutex_mod[DDP_COMPONENT_ID_MAX] = {
|
|
|
+ [DDP_COMPONENT_AAL] = MT8173_MUTEX_MOD_DISP_AAL,
|
|
|
+ [DDP_COMPONENT_COLOR0] = MT8173_MUTEX_MOD_DISP_COLOR0,
|
|
|
+ [DDP_COMPONENT_COLOR1] = MT8173_MUTEX_MOD_DISP_COLOR1,
|
|
|
+ [DDP_COMPONENT_GAMMA] = MT8173_MUTEX_MOD_DISP_GAMMA,
|
|
|
+ [DDP_COMPONENT_OD] = MT8173_MUTEX_MOD_DISP_OD,
|
|
|
+ [DDP_COMPONENT_OVL0] = MT8173_MUTEX_MOD_DISP_OVL0,
|
|
|
+ [DDP_COMPONENT_OVL1] = MT8173_MUTEX_MOD_DISP_OVL1,
|
|
|
+ [DDP_COMPONENT_PWM0] = MT8173_MUTEX_MOD_DISP_PWM0,
|
|
|
+ [DDP_COMPONENT_PWM1] = MT8173_MUTEX_MOD_DISP_PWM1,
|
|
|
+ [DDP_COMPONENT_RDMA0] = MT8173_MUTEX_MOD_DISP_RDMA0,
|
|
|
+ [DDP_COMPONENT_RDMA1] = MT8173_MUTEX_MOD_DISP_RDMA1,
|
|
|
+ [DDP_COMPONENT_RDMA2] = MT8173_MUTEX_MOD_DISP_RDMA2,
|
|
|
+ [DDP_COMPONENT_UFOE] = MT8173_MUTEX_MOD_DISP_UFOE,
|
|
|
+ [DDP_COMPONENT_WDMA0] = MT8173_MUTEX_MOD_DISP_WDMA0,
|
|
|
+ [DDP_COMPONENT_WDMA1] = MT8173_MUTEX_MOD_DISP_WDMA1,
|
|
|
};
|
|
|
|
|
|
static unsigned int mtk_ddp_mout_en(enum mtk_ddp_comp_id cur,
|
|
@@ -247,7 +248,7 @@ void mtk_disp_mutex_add_comp(struct mtk_disp_mutex *mutex,
|
|
|
break;
|
|
|
default:
|
|
|
reg = readl_relaxed(ddp->regs + DISP_REG_MUTEX_MOD(mutex->id));
|
|
|
- reg |= mutex_mod[id];
|
|
|
+ reg |= ddp->mutex_mod[id];
|
|
|
writel_relaxed(reg, ddp->regs + DISP_REG_MUTEX_MOD(mutex->id));
|
|
|
return;
|
|
|
}
|
|
@@ -273,7 +274,7 @@ void mtk_disp_mutex_remove_comp(struct mtk_disp_mutex *mutex,
|
|
|
break;
|
|
|
default:
|
|
|
reg = readl_relaxed(ddp->regs + DISP_REG_MUTEX_MOD(mutex->id));
|
|
|
- reg &= ~mutex_mod[id];
|
|
|
+ reg &= ~(ddp->mutex_mod[id]);
|
|
|
writel_relaxed(reg, ddp->regs + DISP_REG_MUTEX_MOD(mutex->id));
|
|
|
break;
|
|
|
}
|
|
@@ -326,6 +327,8 @@ static int mtk_ddp_probe(struct platform_device *pdev)
|
|
|
return PTR_ERR(ddp->regs);
|
|
|
}
|
|
|
|
|
|
+ ddp->mutex_mod = of_device_get_match_data(dev);
|
|
|
+
|
|
|
platform_set_drvdata(pdev, ddp);
|
|
|
|
|
|
return 0;
|
|
@@ -337,7 +340,7 @@ static int mtk_ddp_remove(struct platform_device *pdev)
|
|
|
}
|
|
|
|
|
|
static const struct of_device_id ddp_driver_dt_match[] = {
|
|
|
- { .compatible = "mediatek,mt8173-disp-mutex" },
|
|
|
+ { .compatible = "mediatek,mt8173-disp-mutex", .data = mt8173_mutex_mod},
|
|
|
{},
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(of, ddp_driver_dt_match);
|