[PATCH v16 09/22] soc: mediatek: add mtk-mutex support for mt8195 vdosys1

CK Hu ck.hu at mediatek.com
Mon Mar 21 19:27:38 PDT 2022


Hi, Nancy:

On Fri, 2022-03-18 at 22:19 +0800, Nancy.Lin wrote:
> Add mtk-mutex support for mt8195 vdosys1.
> The vdosys1 path component contains ovl_adaptor, merge5,
> and dp_intf1. Ovl_adaptor is composed of several sub-elements.
> 
> Signed-off-by: Nancy.Lin <nancy.lin at mediatek.com>
> Reviewed-by: AngeloGioacchino Del Regno <
> angelogioacchino.delregno at collabora.com>
> ---
>  drivers/soc/mediatek/mtk-mutex.c | 54
> ++++++++++++++++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/drivers/soc/mediatek/mtk-mutex.c
> b/drivers/soc/mediatek/mtk-mutex.c
> index cb791671d751..70e6043e99df 100644
> --- a/drivers/soc/mediatek/mtk-mutex.c
> +++ b/drivers/soc/mediatek/mtk-mutex.c
> @@ -129,6 +129,35 @@
>  #define MT8195_MUTEX_MOD_DISP_PWM0		BIT(27)
>  #define MT8195_MUTEX_MOD_DISP_PWM1		BIT(28)
>  
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA0	BIT(0)
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA1	BIT(1)
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA2	BIT(2)
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA3	BIT(3)
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA4	BIT(4)
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA5	BIT(5)
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA6	BIT(6)
> +#define MT8195_MUTEX_MOD_DISP1_MDP_RDMA7	BIT(7)
> +#define MT8195_MUTEX_MOD_DISP1_VPP_MERGE0	BIT(8)
> +#define MT8195_MUTEX_MOD_DISP1_VPP_MERGE1	BIT(9)
> +#define MT8195_MUTEX_MOD_DISP1_VPP_MERGE2	BIT(10)
> +#define MT8195_MUTEX_MOD_DISP1_VPP_MERGE3	BIT(11)
> +#define MT8195_MUTEX_MOD_DISP1_VPP_MERGE4	BIT(12)
> +#define MT8195_MUTEX_MOD_DISP1_VPP2_DL_RELAY	BIT(13)
> +#define MT8195_MUTEX_MOD_DISP1_VPP3_DL_RELAY	BIT(14)
> +#define MT8195_MUTEX_MOD_DISP1_VDO0_DSC_DL_ASYNC	BIT(15)
> +#define MT8195_MUTEX_MOD_DISP1_VDO0_MERGE_DL_ASYNC	BIT(16)
> +#define MT8195_MUTEX_MOD_DISP1_VDO1_OUT_DL_RELAY	BIT(17)
> +#define MT8195_MUTEX_MOD_DISP1_DISP_MIXER	BIT(18)
> +#define MT8195_MUTEX_MOD_DISP1_HDR_VDO_FE0	BIT(19)
> +#define MT8195_MUTEX_MOD_DISP1_HDR_VDO_FE1	BIT(20)
> +#define MT8195_MUTEX_MOD_DISP1_HDR_GFX_FE0	BIT(21)
> +#define MT8195_MUTEX_MOD_DISP1_HDR_GFX_FE1	BIT(22)
> +#define MT8195_MUTEX_MOD_DISP1_HDR_VDO_BE0	BIT(23)
> +#define MT8195_MUTEX_MOD_DISP1_HDR_MLOAD	BIT(24)
> +#define MT8195_MUTEX_MOD_DISP1_DPI0		BIT(25)
> +#define MT8195_MUTEX_MOD_DISP1_DPI1		BIT(26)
> +#define MT8195_MUTEX_MOD_DISP1_DP_INTF0		BIT(27)
> +
>  #define MT2712_MUTEX_MOD_DISP_PWM2		BIT(10)
>  #define MT2712_MUTEX_MOD_DISP_OVL0		BIT(11)
>  #define MT2712_MUTEX_MOD_DISP_OVL1		BIT(12)
> @@ -332,6 +361,27 @@ static const u64
> mt8195_mutex_mod[DDP_COMPONENT_ID_MAX] = {
>  	[DDP_COMPONENT_DSI0] = MT8195_MUTEX_MOD_DISP_DSI0,
>  	[DDP_COMPONENT_PWM0] = MT8195_MUTEX_MOD_DISP_PWM0,
>  	[DDP_COMPONENT_DP_INTF0] = MT8195_MUTEX_MOD_DISP_DP_INTF0,
> +	[DDP_COMPONENT_OVL_ADAPTOR] = MT8195_MUTEX_MOD_DISP1_MDP_RDMA0
> |

I would like to expose each mod instead of ovl adaptor. ovl adaptor is
an application that combine these mod to achieve ovl function, maybe
another application would combine part of these mod to achieve another
function. Let application to decide the combination.

Regards,
CK

> +				      MT8195_MUTEX_MOD_DISP1_MDP_RDMA1
> |
> +				      MT8195_MUTEX_MOD_DISP1_MDP_RDMA2
> |
> +				      MT8195_MUTEX_MOD_DISP1_MDP_RDMA3
> |
> +				      MT8195_MUTEX_MOD_DISP1_MDP_RDMA4
> |
> +				      MT8195_MUTEX_MOD_DISP1_MDP_RDMA5
> |
> +				      MT8195_MUTEX_MOD_DISP1_MDP_RDMA6
> |
> +				      MT8195_MUTEX_MOD_DISP1_MDP_RDMA7
> |
> +				      MT8195_MUTEX_MOD_DISP1_VPP_MERGE0
> |
> +				      MT8195_MUTEX_MOD_DISP1_VPP_MERGE1
> |
> +				      MT8195_MUTEX_MOD_DISP1_VPP_MERGE2
> |
> +				      MT8195_MUTEX_MOD_DISP1_VPP_MERGE3
> |
> +				      MT8195_MUTEX_MOD_DISP1_HDR_VDO_FE
> 0 |
> +				      MT8195_MUTEX_MOD_DISP1_HDR_VDO_FE
> 1 |
> +				      MT8195_MUTEX_MOD_DISP1_HDR_GFX_FE
> 0 |
> +				      MT8195_MUTEX_MOD_DISP1_HDR_GFX_FE
> 1 |
> +				      MT8195_MUTEX_MOD_DISP1_HDR_VDO_BE
> 0 |
> +				      MT8195_MUTEX_MOD_DISP1_HDR_MLOAD
> |
> +				      MT8195_MUTEX_MOD_DISP1_DISP_MIXER
> ,
> +	[DDP_COMPONENT_MERGE5] = MT8195_MUTEX_MOD_DISP1_VPP_MERGE4,
> +	[DDP_COMPONENT_DP_INTF1] = MT8195_MUTEX_MOD_DISP1_DP_INTF0,
>  };
>  
>  static const unsigned int mt2712_mutex_sof[DDP_MUTEX_SOF_MAX] = {
> @@ -517,6 +567,9 @@ void mtk_mutex_add_comp(struct mtk_mutex *mutex,
>  	case DDP_COMPONENT_DP_INTF0:
>  		sof_id = MUTEX_SOF_DP_INTF0;
>  		break;
> +	case DDP_COMPONENT_DP_INTF1:
> +		sof_id = MUTEX_SOF_DP_INTF1;
> +		break;
>  	default:
>  		if (mtx->data->mutex_mod[id] <= BIT(31)) {
>  			offset = DISP_REG_MUTEX_MOD(mtx->data-
> >mutex_mod_reg,
> @@ -557,6 +610,7 @@ void mtk_mutex_remove_comp(struct mtk_mutex
> *mutex,
>  	case DDP_COMPONENT_DPI0:
>  	case DDP_COMPONENT_DPI1:
>  	case DDP_COMPONENT_DP_INTF0:
> +	case DDP_COMPONENT_DP_INTF1:
>  		writel_relaxed(MUTEX_SOF_SINGLE_MODE,
>  			       mtx->regs +
>  			       DISP_REG_MUTEX_SOF(mtx->data-
> >mutex_sof_reg,




More information about the linux-arm-kernel mailing list