diff mbox series

[v2,5/5] soc / drm: mediatek: Move mtk mutex driver to soc folder

Message ID 20210106231729.17173-6-chunkuang.hu@kernel.org (mailing list archive)
State New, archived
Headers show
Series Share mtk mutex driver for both DRM and MDP | expand

Commit Message

Chun-Kuang Hu Jan. 6, 2021, 11:17 p.m. UTC
From: CK Hu <ck.hu@mediatek.com>

mtk mutex is used by DRM and MDP driver, and its function is SoC-specific,
so move it to soc folder.

Signed-off-by: CK Hu <ck.hu@mediatek.com>
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
---
 drivers/gpu/drm/mediatek/Makefile                 |  3 +--
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c           |  2 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c            |  1 -
 drivers/gpu/drm/mediatek/mtk_drm_drv.h            |  1 -
 drivers/soc/mediatek/Makefile                     |  1 +
 .../mtk_mutex.c => soc/mediatek/mtk-mutex.c}      | 15 +++++++++++++--
 .../linux/soc/mediatek/mtk-mutex.h                |  0
 7 files changed, 16 insertions(+), 7 deletions(-)
 rename drivers/{gpu/drm/mediatek/mtk_mutex.c => soc/mediatek/mtk-mutex.c} (96%)
 rename drivers/gpu/drm/mediatek/mtk_mutex.h => include/linux/soc/mediatek/mtk-mutex.h (100%)

Comments

Matthias Brugger Jan. 20, 2021, 6:32 p.m. UTC | #1
On Thu, Jan 07, 2021 at 07:17:29AM +0800, Chun-Kuang Hu wrote:
> From: CK Hu <ck.hu@mediatek.com>
> 
> mtk mutex is used by DRM and MDP driver, and its function is SoC-specific,
> so move it to soc folder.
> 
> Signed-off-by: CK Hu <ck.hu@mediatek.com>
> Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>

Acked-by: Matthias Brugger <matthias.bgg@gmail.com>

Please take the patch through your tree. Thanks!

> ---
>  drivers/gpu/drm/mediatek/Makefile                 |  3 +--
>  drivers/gpu/drm/mediatek/mtk_drm_crtc.c           |  2 +-
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c            |  1 -
>  drivers/gpu/drm/mediatek/mtk_drm_drv.h            |  1 -
>  drivers/soc/mediatek/Makefile                     |  1 +
>  .../mtk_mutex.c => soc/mediatek/mtk-mutex.c}      | 15 +++++++++++++--
>  .../linux/soc/mediatek/mtk-mutex.h                |  0
>  7 files changed, 16 insertions(+), 7 deletions(-)
>  rename drivers/{gpu/drm/mediatek/mtk_mutex.c => soc/mediatek/mtk-mutex.c} (96%)
>  rename drivers/gpu/drm/mediatek/mtk_mutex.h => include/linux/soc/mediatek/mtk-mutex.h (100%)
> 
> diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
> index 09979c4c340a..01d06332f767 100644
> --- a/drivers/gpu/drm/mediatek/Makefile
> +++ b/drivers/gpu/drm/mediatek/Makefile
> @@ -9,8 +9,7 @@ mediatek-drm-y := mtk_disp_color.o \
>  		  mtk_drm_gem.o \
>  		  mtk_drm_plane.o \
>  		  mtk_dsi.o \
> -		  mtk_dpi.o \
> -		  mtk_mutex.o
> +		  mtk_dpi.o
>  
>  obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
>  
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> index 1e3a9450680b..e9b6788d52cd 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> @@ -7,6 +7,7 @@
>  #include <linux/pm_runtime.h>
>  #include <linux/soc/mediatek/mtk-cmdq.h>
>  #include <linux/soc/mediatek/mtk-mmsys.h>
> +#include <linux/soc/mediatek/mtk-mutex.h>
>  
>  #include <asm/barrier.h>
>  #include <soc/mediatek/smi.h>
> @@ -22,7 +23,6 @@
>  #include "mtk_drm_ddp_comp.h"
>  #include "mtk_drm_gem.h"
>  #include "mtk_drm_plane.h"
> -#include "mtk_mutex.h"
>  
>  /*
>   * struct mtk_drm_crtc - MediaTek specific crtc structure.
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index b99a06e6834e..5d39dd54255d 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -588,7 +588,6 @@ static struct platform_driver mtk_drm_platform_driver = {
>  };
>  
>  static struct platform_driver * const mtk_drm_drivers[] = {
> -	&mtk_mutex_driver,
>  	&mtk_disp_color_driver,
>  	&mtk_disp_ovl_driver,
>  	&mtk_disp_rdma_driver,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> index ae366868d01a..e8238fa4aa2a 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> @@ -46,7 +46,6 @@ struct mtk_drm_private {
>  	struct drm_atomic_state *suspend_state;
>  };
>  
> -extern struct platform_driver mtk_mutex_driver;
>  extern struct platform_driver mtk_disp_color_driver;
>  extern struct platform_driver mtk_disp_ovl_driver;
>  extern struct platform_driver mtk_disp_rdma_driver;
> diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile
> index b6908db534c2..90270f8114ed 100644
> --- a/drivers/soc/mediatek/Makefile
> +++ b/drivers/soc/mediatek/Makefile
> @@ -6,3 +6,4 @@ obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o
>  obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o
>  obj-$(CONFIG_MTK_SCPSYS_PM_DOMAINS) += mtk-pm-domains.o
>  obj-$(CONFIG_MTK_MMSYS) += mtk-mmsys.o
> +obj-$(CONFIG_MTK_MMSYS) += mtk-mutex.o
> diff --git a/drivers/gpu/drm/mediatek/mtk_mutex.c b/drivers/soc/mediatek/mtk-mutex.c
> similarity index 96%
> rename from drivers/gpu/drm/mediatek/mtk_mutex.c
> rename to drivers/soc/mediatek/mtk-mutex.c
> index 66344759e622..f531b119da7a 100644
> --- a/drivers/gpu/drm/mediatek/mtk_mutex.c
> +++ b/drivers/soc/mediatek/mtk-mutex.c
> @@ -10,8 +10,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/regmap.h>
>  #include <linux/soc/mediatek/mtk-mmsys.h>
> -
> -#include "mtk_mutex.h"
> +#include <linux/soc/mediatek/mtk-mutex.h>
>  
>  #define MT2701_MUTEX0_MOD0			0x2c
>  #define MT2701_MUTEX0_SOF0			0x30
> @@ -241,6 +240,7 @@ struct mtk_mutex *mtk_mutex_get(struct device *dev)
>  
>  	return ERR_PTR(-EBUSY);
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_get);
>  
>  void mtk_mutex_put(struct mtk_mutex *mutex)
>  {
> @@ -251,6 +251,7 @@ void mtk_mutex_put(struct mtk_mutex *mutex)
>  
>  	mutex->claimed = false;
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_put);
>  
>  int mtk_mutex_prepare(struct mtk_mutex *mutex)
>  {
> @@ -258,6 +259,7 @@ int mtk_mutex_prepare(struct mtk_mutex *mutex)
>  						 mutex[mutex->id]);
>  	return clk_prepare_enable(mtx->clk);
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_prepare);
>  
>  void mtk_mutex_unprepare(struct mtk_mutex *mutex)
>  {
> @@ -265,6 +267,7 @@ void mtk_mutex_unprepare(struct mtk_mutex *mutex)
>  						 mutex[mutex->id]);
>  	clk_disable_unprepare(mtx->clk);
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_unprepare);
>  
>  void mtk_mutex_add_comp(struct mtk_mutex *mutex,
>  			enum mtk_ddp_comp_id id)
> @@ -316,6 +319,7 @@ void mtk_mutex_add_comp(struct mtk_mutex *mutex,
>  		       mtx->regs +
>  		       DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, mutex->id));
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_add_comp);
>  
>  void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
>  			   enum mtk_ddp_comp_id id)
> @@ -355,6 +359,7 @@ void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
>  		break;
>  	}
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_remove_comp);
>  
>  void mtk_mutex_enable(struct mtk_mutex *mutex)
>  {
> @@ -365,6 +370,7 @@ void mtk_mutex_enable(struct mtk_mutex *mutex)
>  
>  	writel(1, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_enable);
>  
>  void mtk_mutex_disable(struct mtk_mutex *mutex)
>  {
> @@ -375,6 +381,7 @@ void mtk_mutex_disable(struct mtk_mutex *mutex)
>  
>  	writel(0, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_disable);
>  
>  void mtk_mutex_acquire(struct mtk_mutex *mutex)
>  {
> @@ -388,6 +395,7 @@ void mtk_mutex_acquire(struct mtk_mutex *mutex)
>  				      tmp, tmp & INT_MUTEX, 1, 10000))
>  		pr_err("could not acquire mutex %d\n", mutex->id);
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_acquire);
>  
>  void mtk_mutex_release(struct mtk_mutex *mutex)
>  {
> @@ -396,6 +404,7 @@ void mtk_mutex_release(struct mtk_mutex *mutex)
>  
>  	writel(0, mtx->regs + DISP_REG_MUTEX(mutex->id));
>  }
> +EXPORT_SYMBOL_GPL(mtk_mutex_release);
>  
>  static int mtk_mutex_probe(struct platform_device *pdev)
>  {
> @@ -461,3 +470,5 @@ struct platform_driver mtk_mutex_driver = {
>  		.of_match_table = mutex_driver_dt_match,
>  	},
>  };
> +
> +builtin_platform_driver(mtk_mutex_driver);
> diff --git a/drivers/gpu/drm/mediatek/mtk_mutex.h b/include/linux/soc/mediatek/mtk-mutex.h
> similarity index 100%
> rename from drivers/gpu/drm/mediatek/mtk_mutex.h
> rename to include/linux/soc/mediatek/mtk-mutex.h
> -- 
> 2.17.1
> 
> 
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
Chun-Kuang Hu Jan. 20, 2021, 11:43 p.m. UTC | #2
Hi, Matthias:

Matthias Brugger <matthias.bgg@kernel.org> 於 2021年1月21日 週四 上午2:33寫道:
>
> On Thu, Jan 07, 2021 at 07:17:29AM +0800, Chun-Kuang Hu wrote:
> > From: CK Hu <ck.hu@mediatek.com>
> >
> > mtk mutex is used by DRM and MDP driver, and its function is SoC-specific,
> > so move it to soc folder.
> >
> > Signed-off-by: CK Hu <ck.hu@mediatek.com>
> > Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
>
> Acked-by: Matthias Brugger <matthias.bgg@gmail.com>
>
> Please take the patch through your tree. Thanks!

Applied, thanks.

Regards,
Chun-Kuang.

>
> > ---
> >  drivers/gpu/drm/mediatek/Makefile                 |  3 +--
> >  drivers/gpu/drm/mediatek/mtk_drm_crtc.c           |  2 +-
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c            |  1 -
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.h            |  1 -
> >  drivers/soc/mediatek/Makefile                     |  1 +
> >  .../mtk_mutex.c => soc/mediatek/mtk-mutex.c}      | 15 +++++++++++++--
> >  .../linux/soc/mediatek/mtk-mutex.h                |  0
> >  7 files changed, 16 insertions(+), 7 deletions(-)
> >  rename drivers/{gpu/drm/mediatek/mtk_mutex.c => soc/mediatek/mtk-mutex.c} (96%)
> >  rename drivers/gpu/drm/mediatek/mtk_mutex.h => include/linux/soc/mediatek/mtk-mutex.h (100%)
> >
> > diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
> > index 09979c4c340a..01d06332f767 100644
> > --- a/drivers/gpu/drm/mediatek/Makefile
> > +++ b/drivers/gpu/drm/mediatek/Makefile
> > @@ -9,8 +9,7 @@ mediatek-drm-y := mtk_disp_color.o \
> >                 mtk_drm_gem.o \
> >                 mtk_drm_plane.o \
> >                 mtk_dsi.o \
> > -               mtk_dpi.o \
> > -               mtk_mutex.o
> > +               mtk_dpi.o
> >
> >  obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
> >
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> > index 1e3a9450680b..e9b6788d52cd 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> > @@ -7,6 +7,7 @@
> >  #include <linux/pm_runtime.h>
> >  #include <linux/soc/mediatek/mtk-cmdq.h>
> >  #include <linux/soc/mediatek/mtk-mmsys.h>
> > +#include <linux/soc/mediatek/mtk-mutex.h>
> >
> >  #include <asm/barrier.h>
> >  #include <soc/mediatek/smi.h>
> > @@ -22,7 +23,6 @@
> >  #include "mtk_drm_ddp_comp.h"
> >  #include "mtk_drm_gem.h"
> >  #include "mtk_drm_plane.h"
> > -#include "mtk_mutex.h"
> >
> >  /*
> >   * struct mtk_drm_crtc - MediaTek specific crtc structure.
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index b99a06e6834e..5d39dd54255d 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -588,7 +588,6 @@ static struct platform_driver mtk_drm_platform_driver = {
> >  };
> >
> >  static struct platform_driver * const mtk_drm_drivers[] = {
> > -     &mtk_mutex_driver,
> >       &mtk_disp_color_driver,
> >       &mtk_disp_ovl_driver,
> >       &mtk_disp_rdma_driver,
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> > index ae366868d01a..e8238fa4aa2a 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> > @@ -46,7 +46,6 @@ struct mtk_drm_private {
> >       struct drm_atomic_state *suspend_state;
> >  };
> >
> > -extern struct platform_driver mtk_mutex_driver;
> >  extern struct platform_driver mtk_disp_color_driver;
> >  extern struct platform_driver mtk_disp_ovl_driver;
> >  extern struct platform_driver mtk_disp_rdma_driver;
> > diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile
> > index b6908db534c2..90270f8114ed 100644
> > --- a/drivers/soc/mediatek/Makefile
> > +++ b/drivers/soc/mediatek/Makefile
> > @@ -6,3 +6,4 @@ obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o
> >  obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o
> >  obj-$(CONFIG_MTK_SCPSYS_PM_DOMAINS) += mtk-pm-domains.o
> >  obj-$(CONFIG_MTK_MMSYS) += mtk-mmsys.o
> > +obj-$(CONFIG_MTK_MMSYS) += mtk-mutex.o
> > diff --git a/drivers/gpu/drm/mediatek/mtk_mutex.c b/drivers/soc/mediatek/mtk-mutex.c
> > similarity index 96%
> > rename from drivers/gpu/drm/mediatek/mtk_mutex.c
> > rename to drivers/soc/mediatek/mtk-mutex.c
> > index 66344759e622..f531b119da7a 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_mutex.c
> > +++ b/drivers/soc/mediatek/mtk-mutex.c
> > @@ -10,8 +10,7 @@
> >  #include <linux/platform_device.h>
> >  #include <linux/regmap.h>
> >  #include <linux/soc/mediatek/mtk-mmsys.h>
> > -
> > -#include "mtk_mutex.h"
> > +#include <linux/soc/mediatek/mtk-mutex.h>
> >
> >  #define MT2701_MUTEX0_MOD0                   0x2c
> >  #define MT2701_MUTEX0_SOF0                   0x30
> > @@ -241,6 +240,7 @@ struct mtk_mutex *mtk_mutex_get(struct device *dev)
> >
> >       return ERR_PTR(-EBUSY);
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_get);
> >
> >  void mtk_mutex_put(struct mtk_mutex *mutex)
> >  {
> > @@ -251,6 +251,7 @@ void mtk_mutex_put(struct mtk_mutex *mutex)
> >
> >       mutex->claimed = false;
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_put);
> >
> >  int mtk_mutex_prepare(struct mtk_mutex *mutex)
> >  {
> > @@ -258,6 +259,7 @@ int mtk_mutex_prepare(struct mtk_mutex *mutex)
> >                                                mutex[mutex->id]);
> >       return clk_prepare_enable(mtx->clk);
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_prepare);
> >
> >  void mtk_mutex_unprepare(struct mtk_mutex *mutex)
> >  {
> > @@ -265,6 +267,7 @@ void mtk_mutex_unprepare(struct mtk_mutex *mutex)
> >                                                mutex[mutex->id]);
> >       clk_disable_unprepare(mtx->clk);
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_unprepare);
> >
> >  void mtk_mutex_add_comp(struct mtk_mutex *mutex,
> >                       enum mtk_ddp_comp_id id)
> > @@ -316,6 +319,7 @@ void mtk_mutex_add_comp(struct mtk_mutex *mutex,
> >                      mtx->regs +
> >                      DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, mutex->id));
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_add_comp);
> >
> >  void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
> >                          enum mtk_ddp_comp_id id)
> > @@ -355,6 +359,7 @@ void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
> >               break;
> >       }
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_remove_comp);
> >
> >  void mtk_mutex_enable(struct mtk_mutex *mutex)
> >  {
> > @@ -365,6 +370,7 @@ void mtk_mutex_enable(struct mtk_mutex *mutex)
> >
> >       writel(1, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_enable);
> >
> >  void mtk_mutex_disable(struct mtk_mutex *mutex)
> >  {
> > @@ -375,6 +381,7 @@ void mtk_mutex_disable(struct mtk_mutex *mutex)
> >
> >       writel(0, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_disable);
> >
> >  void mtk_mutex_acquire(struct mtk_mutex *mutex)
> >  {
> > @@ -388,6 +395,7 @@ void mtk_mutex_acquire(struct mtk_mutex *mutex)
> >                                     tmp, tmp & INT_MUTEX, 1, 10000))
> >               pr_err("could not acquire mutex %d\n", mutex->id);
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_acquire);
> >
> >  void mtk_mutex_release(struct mtk_mutex *mutex)
> >  {
> > @@ -396,6 +404,7 @@ void mtk_mutex_release(struct mtk_mutex *mutex)
> >
> >       writel(0, mtx->regs + DISP_REG_MUTEX(mutex->id));
> >  }
> > +EXPORT_SYMBOL_GPL(mtk_mutex_release);
> >
> >  static int mtk_mutex_probe(struct platform_device *pdev)
> >  {
> > @@ -461,3 +470,5 @@ struct platform_driver mtk_mutex_driver = {
> >               .of_match_table = mutex_driver_dt_match,
> >       },
> >  };
> > +
> > +builtin_platform_driver(mtk_mutex_driver);
> > diff --git a/drivers/gpu/drm/mediatek/mtk_mutex.h b/include/linux/soc/mediatek/mtk-mutex.h
> > similarity index 100%
> > rename from drivers/gpu/drm/mediatek/mtk_mutex.h
> > rename to include/linux/soc/mediatek/mtk-mutex.h
> > --
> > 2.17.1
> >
> >
> > _______________________________________________
> > Linux-mediatek mailing list
> > Linux-mediatek@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-mediatek
diff mbox series

Patch

diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
index 09979c4c340a..01d06332f767 100644
--- a/drivers/gpu/drm/mediatek/Makefile
+++ b/drivers/gpu/drm/mediatek/Makefile
@@ -9,8 +9,7 @@  mediatek-drm-y := mtk_disp_color.o \
 		  mtk_drm_gem.o \
 		  mtk_drm_plane.o \
 		  mtk_dsi.o \
-		  mtk_dpi.o \
-		  mtk_mutex.o
+		  mtk_dpi.o
 
 obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
 
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
index 1e3a9450680b..e9b6788d52cd 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
@@ -7,6 +7,7 @@ 
 #include <linux/pm_runtime.h>
 #include <linux/soc/mediatek/mtk-cmdq.h>
 #include <linux/soc/mediatek/mtk-mmsys.h>
+#include <linux/soc/mediatek/mtk-mutex.h>
 
 #include <asm/barrier.h>
 #include <soc/mediatek/smi.h>
@@ -22,7 +23,6 @@ 
 #include "mtk_drm_ddp_comp.h"
 #include "mtk_drm_gem.h"
 #include "mtk_drm_plane.h"
-#include "mtk_mutex.h"
 
 /*
  * struct mtk_drm_crtc - MediaTek specific crtc structure.
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index b99a06e6834e..5d39dd54255d 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -588,7 +588,6 @@  static struct platform_driver mtk_drm_platform_driver = {
 };
 
 static struct platform_driver * const mtk_drm_drivers[] = {
-	&mtk_mutex_driver,
 	&mtk_disp_color_driver,
 	&mtk_disp_ovl_driver,
 	&mtk_disp_rdma_driver,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
index ae366868d01a..e8238fa4aa2a 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
@@ -46,7 +46,6 @@  struct mtk_drm_private {
 	struct drm_atomic_state *suspend_state;
 };
 
-extern struct platform_driver mtk_mutex_driver;
 extern struct platform_driver mtk_disp_color_driver;
 extern struct platform_driver mtk_disp_ovl_driver;
 extern struct platform_driver mtk_disp_rdma_driver;
diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile
index b6908db534c2..90270f8114ed 100644
--- a/drivers/soc/mediatek/Makefile
+++ b/drivers/soc/mediatek/Makefile
@@ -6,3 +6,4 @@  obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o
 obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o
 obj-$(CONFIG_MTK_SCPSYS_PM_DOMAINS) += mtk-pm-domains.o
 obj-$(CONFIG_MTK_MMSYS) += mtk-mmsys.o
+obj-$(CONFIG_MTK_MMSYS) += mtk-mutex.o
diff --git a/drivers/gpu/drm/mediatek/mtk_mutex.c b/drivers/soc/mediatek/mtk-mutex.c
similarity index 96%
rename from drivers/gpu/drm/mediatek/mtk_mutex.c
rename to drivers/soc/mediatek/mtk-mutex.c
index 66344759e622..f531b119da7a 100644
--- a/drivers/gpu/drm/mediatek/mtk_mutex.c
+++ b/drivers/soc/mediatek/mtk-mutex.c
@@ -10,8 +10,7 @@ 
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 #include <linux/soc/mediatek/mtk-mmsys.h>
-
-#include "mtk_mutex.h"
+#include <linux/soc/mediatek/mtk-mutex.h>
 
 #define MT2701_MUTEX0_MOD0			0x2c
 #define MT2701_MUTEX0_SOF0			0x30
@@ -241,6 +240,7 @@  struct mtk_mutex *mtk_mutex_get(struct device *dev)
 
 	return ERR_PTR(-EBUSY);
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_get);
 
 void mtk_mutex_put(struct mtk_mutex *mutex)
 {
@@ -251,6 +251,7 @@  void mtk_mutex_put(struct mtk_mutex *mutex)
 
 	mutex->claimed = false;
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_put);
 
 int mtk_mutex_prepare(struct mtk_mutex *mutex)
 {
@@ -258,6 +259,7 @@  int mtk_mutex_prepare(struct mtk_mutex *mutex)
 						 mutex[mutex->id]);
 	return clk_prepare_enable(mtx->clk);
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_prepare);
 
 void mtk_mutex_unprepare(struct mtk_mutex *mutex)
 {
@@ -265,6 +267,7 @@  void mtk_mutex_unprepare(struct mtk_mutex *mutex)
 						 mutex[mutex->id]);
 	clk_disable_unprepare(mtx->clk);
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_unprepare);
 
 void mtk_mutex_add_comp(struct mtk_mutex *mutex,
 			enum mtk_ddp_comp_id id)
@@ -316,6 +319,7 @@  void mtk_mutex_add_comp(struct mtk_mutex *mutex,
 		       mtx->regs +
 		       DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, mutex->id));
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_add_comp);
 
 void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
 			   enum mtk_ddp_comp_id id)
@@ -355,6 +359,7 @@  void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
 		break;
 	}
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_remove_comp);
 
 void mtk_mutex_enable(struct mtk_mutex *mutex)
 {
@@ -365,6 +370,7 @@  void mtk_mutex_enable(struct mtk_mutex *mutex)
 
 	writel(1, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_enable);
 
 void mtk_mutex_disable(struct mtk_mutex *mutex)
 {
@@ -375,6 +381,7 @@  void mtk_mutex_disable(struct mtk_mutex *mutex)
 
 	writel(0, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_disable);
 
 void mtk_mutex_acquire(struct mtk_mutex *mutex)
 {
@@ -388,6 +395,7 @@  void mtk_mutex_acquire(struct mtk_mutex *mutex)
 				      tmp, tmp & INT_MUTEX, 1, 10000))
 		pr_err("could not acquire mutex %d\n", mutex->id);
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_acquire);
 
 void mtk_mutex_release(struct mtk_mutex *mutex)
 {
@@ -396,6 +404,7 @@  void mtk_mutex_release(struct mtk_mutex *mutex)
 
 	writel(0, mtx->regs + DISP_REG_MUTEX(mutex->id));
 }
+EXPORT_SYMBOL_GPL(mtk_mutex_release);
 
 static int mtk_mutex_probe(struct platform_device *pdev)
 {
@@ -461,3 +470,5 @@  struct platform_driver mtk_mutex_driver = {
 		.of_match_table = mutex_driver_dt_match,
 	},
 };
+
+builtin_platform_driver(mtk_mutex_driver);
diff --git a/drivers/gpu/drm/mediatek/mtk_mutex.h b/include/linux/soc/mediatek/mtk-mutex.h
similarity index 100%
rename from drivers/gpu/drm/mediatek/mtk_mutex.h
rename to include/linux/soc/mediatek/mtk-mutex.h