Commit 1c7da0c7 authored by Yongqiang Niu's avatar Yongqiang Niu Committed by CK Hu

drm/mediatek: add mutex sof into ddp private data

mutex sof will be ddp private data
Signed-off-by: default avatarYongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: default avatarCK Hu <ck.hu@mediatek.com>
parent d730af98
...@@ -141,8 +141,19 @@ struct mtk_disp_mutex { ...@@ -141,8 +141,19 @@ struct mtk_disp_mutex {
bool claimed; bool claimed;
}; };
enum mtk_ddp_mutex_sof_id {
DDP_MUTEX_SOF_SINGLE_MODE,
DDP_MUTEX_SOF_DSI0,
DDP_MUTEX_SOF_DSI1,
DDP_MUTEX_SOF_DPI0,
DDP_MUTEX_SOF_DPI1,
DDP_MUTEX_SOF_DSI2,
DDP_MUTEX_SOF_DSI3,
};
struct mtk_ddp_data { struct mtk_ddp_data {
const unsigned int *mutex_mod; const unsigned int *mutex_mod;
const unsigned int *mutex_sof;
const unsigned int mutex_mod_reg; const unsigned int mutex_mod_reg;
}; };
...@@ -201,18 +212,31 @@ static const unsigned int mt8173_mutex_mod[DDP_COMPONENT_ID_MAX] = { ...@@ -201,18 +212,31 @@ static const unsigned int mt8173_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[DDP_COMPONENT_WDMA1] = MT8173_MUTEX_MOD_DISP_WDMA1, [DDP_COMPONENT_WDMA1] = MT8173_MUTEX_MOD_DISP_WDMA1,
}; };
static const unsigned int mt2712_mutex_sof[DDP_MUTEX_SOF_DSI3 + 1] = {
[DDP_MUTEX_SOF_SINGLE_MODE] = MUTEX_SOF_SINGLE_MODE,
[DDP_MUTEX_SOF_DSI0] = MUTEX_SOF_DSI0,
[DDP_MUTEX_SOF_DSI1] = MUTEX_SOF_DSI1,
[DDP_MUTEX_SOF_DPI0] = MUTEX_SOF_DPI0,
[DDP_MUTEX_SOF_DPI1] = MUTEX_SOF_DPI1,
[DDP_MUTEX_SOF_DSI2] = MUTEX_SOF_DSI2,
[DDP_MUTEX_SOF_DSI3] = MUTEX_SOF_DSI3,
};
static const struct mtk_ddp_data mt2701_ddp_driver_data = { static const struct mtk_ddp_data mt2701_ddp_driver_data = {
.mutex_mod = mt2701_mutex_mod, .mutex_mod = mt2701_mutex_mod,
.mutex_sof = mt2712_mutex_sof,
.mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0, .mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0,
}; };
static const struct mtk_ddp_data mt2712_ddp_driver_data = { static const struct mtk_ddp_data mt2712_ddp_driver_data = {
.mutex_mod = mt2712_mutex_mod, .mutex_mod = mt2712_mutex_mod,
.mutex_sof = mt2712_mutex_sof,
.mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0, .mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0,
}; };
static const struct mtk_ddp_data mt8173_ddp_driver_data = { static const struct mtk_ddp_data mt8173_ddp_driver_data = {
.mutex_mod = mt8173_mutex_mod, .mutex_mod = mt8173_mutex_mod,
.mutex_sof = mt2712_mutex_sof,
.mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0, .mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0,
}; };
...@@ -454,28 +478,29 @@ void mtk_disp_mutex_add_comp(struct mtk_disp_mutex *mutex, ...@@ -454,28 +478,29 @@ void mtk_disp_mutex_add_comp(struct mtk_disp_mutex *mutex,
struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp,
mutex[mutex->id]); mutex[mutex->id]);
unsigned int reg; unsigned int reg;
unsigned int sof_id;
unsigned int offset; unsigned int offset;
WARN_ON(&ddp->mutex[mutex->id] != mutex); WARN_ON(&ddp->mutex[mutex->id] != mutex);
switch (id) { switch (id) {
case DDP_COMPONENT_DSI0: case DDP_COMPONENT_DSI0:
reg = MUTEX_SOF_DSI0; sof_id = DDP_MUTEX_SOF_DSI0;
break; break;
case DDP_COMPONENT_DSI1: case DDP_COMPONENT_DSI1:
reg = MUTEX_SOF_DSI0; sof_id = DDP_MUTEX_SOF_DSI0;
break; break;
case DDP_COMPONENT_DSI2: case DDP_COMPONENT_DSI2:
reg = MUTEX_SOF_DSI2; sof_id = DDP_MUTEX_SOF_DSI2;
break; break;
case DDP_COMPONENT_DSI3: case DDP_COMPONENT_DSI3:
reg = MUTEX_SOF_DSI3; sof_id = DDP_MUTEX_SOF_DSI3;
break; break;
case DDP_COMPONENT_DPI0: case DDP_COMPONENT_DPI0:
reg = MUTEX_SOF_DPI0; sof_id = DDP_MUTEX_SOF_DPI0;
break; break;
case DDP_COMPONENT_DPI1: case DDP_COMPONENT_DPI1:
reg = MUTEX_SOF_DPI1; sof_id = DDP_MUTEX_SOF_DPI1;
break; break;
default: default:
if (ddp->data->mutex_mod[id] < 32) { if (ddp->data->mutex_mod[id] < 32) {
...@@ -493,7 +518,8 @@ void mtk_disp_mutex_add_comp(struct mtk_disp_mutex *mutex, ...@@ -493,7 +518,8 @@ void mtk_disp_mutex_add_comp(struct mtk_disp_mutex *mutex,
return; return;
} }
writel_relaxed(reg, ddp->regs + DISP_REG_MUTEX_SOF(mutex->id)); writel_relaxed(ddp->data->mutex_sof[sof_id],
ddp->regs + DISP_REG_MUTEX_SOF(mutex->id));
} }
void mtk_disp_mutex_remove_comp(struct mtk_disp_mutex *mutex, void mtk_disp_mutex_remove_comp(struct mtk_disp_mutex *mutex,
...@@ -514,7 +540,8 @@ void mtk_disp_mutex_remove_comp(struct mtk_disp_mutex *mutex, ...@@ -514,7 +540,8 @@ void mtk_disp_mutex_remove_comp(struct mtk_disp_mutex *mutex,
case DDP_COMPONENT_DPI0: case DDP_COMPONENT_DPI0:
case DDP_COMPONENT_DPI1: case DDP_COMPONENT_DPI1:
writel_relaxed(MUTEX_SOF_SINGLE_MODE, writel_relaxed(MUTEX_SOF_SINGLE_MODE,
ddp->regs + DISP_REG_MUTEX_SOF(mutex->id)); ddp->regs +
DISP_REG_MUTEX_SOF(mutex->id));
break; break;
default: default:
if (ddp->data->mutex_mod[id] < 32) { if (ddp->data->mutex_mod[id] < 32) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment