drm/mediatek: add mutex sof into ddp private data
mutex sof will be ddp private data Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com> Signed-off-by: CK Hu <ck.hu@mediatek.com>
This commit is contained in:
parent
d730af989e
commit
1c7da0c762
@ -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] = {
|
|||||||
[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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user