[PATCH v12 3/4] soc: mediatek: mutex: add support for MDP

moudy.ho moudy.ho at mediatek.com
Wed Mar 9 01:14:04 PST 2022


On Thu, 2022-03-03 at 17:33 +0800, CK Hu wrote:
> Hi, Moudy:
> 
> On Tue, 2022-03-01 at 18:02 +0800, Moudy Ho wrote:
> > For the purpose of module independence, related settings should be
> > moved
> > from MDP to the corresponding driver.
> > This patch adds more 8183 MDP settings and interface.
> > 
> > Signed-off-by: Moudy Ho <moudy.ho at mediatek.com>
> > Acked-by: AngeloGioacchino Del Regno <
> > angelogioacchino.delregno at collabora.com>
> > ---
> >  drivers/soc/mediatek/mtk-mutex.c       | 68
> > ++++++++++++++++++++++++++
> >  include/linux/soc/mediatek/mtk-mutex.h |  3 ++
> >  2 files changed, 71 insertions(+)
> > 
> > diff --git a/drivers/soc/mediatek/mtk-mutex.c
> > b/drivers/soc/mediatek/mtk-mutex.c
> > index aaf8fc1abb43..a6268ecde240 100644
> > --- a/drivers/soc/mediatek/mtk-mutex.c
> > +++ b/drivers/soc/mediatek/mtk-mutex.c
> > @@ -136,6 +136,18 @@
(snip)
> >  struct mtk_mutex {
> >  	int id;
> >  	bool claimed;
> > @@ -156,6 +168,10 @@ struct mtk_mutex_data {
> >  	const unsigned int *mutex_sof;
> >  	const unsigned int mutex_mod_reg;
> >  	const unsigned int mutex_sof_reg;
> > +	const unsigned int *mutex_mdp_offset;
> > +	const unsigned int *mutex_mdp_mod;
> > +	const unsigned int mutex_mdp_mod_mask;
> 
> Useless, so remove this.
> 
> > +	const unsigned int mutex_mdp_sof_mask;
> 
> Useless, so remove this.
> 
> >  	const bool no_clk;
> >  };
> >  
Hi CK,

Thanks for the suggestion, these two can indeed be removed and will be
fixed in the next version.

(snip)
> >  
> > @@ -366,6 +405,21 @@ struct mtk_mutex *mtk_mutex_get(struct device
> > *dev)
> >  }
> >  EXPORT_SYMBOL_GPL(mtk_mutex_get);
> >  
> > +struct mtk_mutex *mtk_mutex_mdp_get(struct device *dev,
> > +				    enum mtk_mdp_pipe_id id)
> 
> For DRM, mutex id does not physically bound to specific hardware, why
> do MDP need the pipeline id?
> 
> Regards,
> CK

In the next version I will remove this mandatory designation method and
change it to the existing API.

Thanks & Regrads,
Moudy Ho
> > +{
> > +	struct mtk_mutex_ctx *mtx = dev_get_drvdata(dev);
> > +	int i = mtx->data->mutex_mdp_offset[id];
> > +
> > +	if (!mtx->mutex[i].claimed) {
> > +		mtx->mutex[i].claimed = true;
> > +		return &mtx->mutex[i];
> > +	}
> > +
> > +	return ERR_PTR(-EBUSY);
> > +}
> > +EXPORT_SYMBOL_GPL(mtk_mutex_mdp_get);
> > +
> >  void mtk_mutex_put(struct mtk_mutex *mutex)
> >  {
> >  	struct mtk_mutex_ctx *mtx = container_of(mutex, struct
> > mtk_mutex_ctx,
> > @@ -485,6 +539,20 @@ void mtk_mutex_remove_comp(struct mtk_mutex
> > *mutex,
> >  }
> >  EXPORT_SYMBOL_GPL(mtk_mutex_remove_comp);
> >  
> > +u32 mtk_mutex_get_mdp_mod(struct mtk_mutex *mutex, enum
> > mtk_mdp_comp_id id)
> > +{
> > +	struct mtk_mutex_ctx *mtx = container_of(mutex, struct
> > mtk_mutex_ctx,
> > +						 mutex[mutex->id]);
> > +
> > +	WARN_ON(&mtx->mutex[mutex->id] != mutex);
> > +
> > +	if (mtx->data->mutex_mdp_mod)
> > +		return mtx->data->mutex_mdp_mod[id];
> > +
> > +	return 0;
> > +}
> > +EXPORT_SYMBOL_GPL(mtk_mutex_get_mdp_mod);
> > +
> >  void mtk_mutex_enable(struct mtk_mutex *mutex)
> >  {
> >  	struct mtk_mutex_ctx *mtx = container_of(mutex, struct
> > mtk_mutex_ctx,
> > diff --git a/include/linux/soc/mediatek/mtk-mutex.h
> > b/include/linux/soc/mediatek/mtk-mutex.h
> > index 6fe4ffbde290..b2608f4220ee 100644
> > --- a/include/linux/soc/mediatek/mtk-mutex.h
> > +++ b/include/linux/soc/mediatek/mtk-mutex.h
> > @@ -11,9 +11,12 @@ struct device;
> >  struct mtk_mutex;
> >  
> >  struct mtk_mutex *mtk_mutex_get(struct device *dev);
> > +struct mtk_mutex *mtk_mutex_mdp_get(struct device *dev,
> > +				    enum mtk_mdp_pipe_id id);
> >  int mtk_mutex_prepare(struct mtk_mutex *mutex);
> >  void mtk_mutex_add_comp(struct mtk_mutex *mutex,
> >  			enum mtk_ddp_comp_id id);
> > +u32 mtk_mutex_get_mdp_mod(struct mtk_mutex *mutex, enum
> > mtk_mdp_comp_id id);
> >  void mtk_mutex_enable(struct mtk_mutex *mutex);
> >  void mtk_mutex_disable(struct mtk_mutex *mutex);
> >  void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
> 
> 




More information about the linux-arm-kernel mailing list