[PATCH 2/2] soc: mediatek: Add MT8196 VMM driver support

Krzysztof Kozlowski krzk at kernel.org
Thu May 22 08:10:56 PDT 2025


On 22/05/2025 17:03, Nancy.Lin wrote:
> From: Nancy Lin <nancy.lin at mediatek.com>
> 
> Add a driver for the MediaTek MT8196 VMM (Vcore for MultiMedia)
> controller, which acts as the main power supplier for multimedia power
> domains such as display, video encode, and video decode on MediaTek SoCs.
> 
> The VMM controller provides virtual regulators for multimedia IPs and
> coordinates with the hardware common clock framework (hwccf) and the
> Video Companioin Processor (VCP) to manage power domains. The driver
> uses a hardware voter through HWCCF to notify the VCP to turn on or
> off VMM-related bucks.
> 
> Signed-off-by: Nancy Lin <nancy.lin at mediatek.com>
> ---
>  drivers/soc/mediatek/Kconfig       |  12 +
>  drivers/soc/mediatek/Makefile      |   1 +
>  drivers/soc/mediatek/mtk-vmm-drv.c | 471 +++++++++++++++++++++++++++++
>  3 files changed, 484 insertions(+)
>  create mode 100644 drivers/soc/mediatek/mtk-vmm-drv.c
> 
> diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig
> index d7293977f06e..4db4a0876083 100644
> --- a/drivers/soc/mediatek/Kconfig
> +++ b/drivers/soc/mediatek/Kconfig
> @@ -69,6 +69,18 @@ config MTK_MMSYS
>  	  Say yes here to add support for the MediaTek Multimedia
>  	  Subsystem (MMSYS).
>  
> +config MTK_VMM
> +	tristate "MediaTek VMM driver"
> +	help
> +	  Say Y here to enable support for the MediaTek VMM (Vcore for
> +	  MultiMedia) controller, which acts as the main power supplier
> +	  for multimedia power domains such as display, video encode and
> +	  decode on MediaTek SoCs. The VMM controller provides virtual
> +	  regulators for multimedia IPs and coordinates with the hardware
> +	  common clock framework (hwccf) and the Video Companion Processor
> +	  (VCP) to manage power domains. The VMM driver uses hardware voter
> +	  through hwccf to notify VCP to turn on/off VMM-related bucks.
> +
>  config MTK_SVS
>  	tristate "MediaTek Smart Voltage Scaling(SVS)"
>  	depends on NVMEM_MTK_EFUSE && NVMEM
> diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile
> index 0665573e3c4b..2b2071614ac4 100644
> --- a/drivers/soc/mediatek/Makefile
> +++ b/drivers/soc/mediatek/Makefile
> @@ -6,6 +6,7 @@ obj-$(CONFIG_MTK_INFRACFG) += mtk-infracfg.o
>  obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o
>  obj-$(CONFIG_MTK_REGULATOR_COUPLER) += mtk-regulator-coupler.o
>  obj-$(CONFIG_MTK_MMSYS) += mtk-mmsys.o
> +obj-$(CONFIG_MTK_VMM) += mtk-vmm-drv.o
>  obj-$(CONFIG_MTK_MMSYS) += mtk-mutex.o
>  obj-$(CONFIG_MTK_SVS) += mtk-svs.o
>  obj-$(CONFIG_MTK_SOCINFO) += mtk-socinfo.o
> diff --git a/drivers/soc/mediatek/mtk-vmm-drv.c b/drivers/soc/mediatek/mtk-vmm-drv.c
> new file mode 100644
> index 000000000000..de4ceb7d59fa
> --- /dev/null
> +++ b/drivers/soc/mediatek/mtk-vmm-drv.c
> @@ -0,0 +1,471 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +/*
> + * Copyright (c) 2025 MediaTek Inc.
> + * Author: Yunfei Dong <yunfei.dong at mediatek.com>
> + */
> +
> +#include <linux/clk.h>
> +#include <linux/delay.h>
> +#include <linux/device.h>
> +#include <linux/kthread.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/module.h>
> +#include <linux/of_platform.h>
> +#include <linux/platform_device.h>
> +#include <linux/pm_domain.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/regmap.h>
> +#include <linux/regulator/driver.h>
> +#if IS_ENABLED(CONFIG_MTK_VCP_RPROC)

And that's the proof you send some sort of downstream code.

This does not exist.

> +#include <linux/remoteproc.h>
> +#include <linux/remoteproc/mtk_vcp_public.h>
> +#endif
> +
> +#define mtk_vmm_dbg(dev, fmt, args...) \
> +	dev_dbg(dev, "[vmm] %s(%d): " fmt "\n", __func__, __LINE__, ##args)

No, you do not get your own debug code.

NAK.

This is nowhere close to upstream code. Don't send us downstream
patterns please.

Best regards,
Krzysztof



More information about the Linux-mediatek mailing list