[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-mediatek
mailing list