pmdomain: mediatek: Add support for MFlexGraphics

Various MediaTek SoCs use GPU integration silicon named "MFlexGraphics"
by MediaTek. On the MT8196 and MT6991 SoCs, interacting with this
integration silicon is required to power on the GPU.

This glue silicon is in the form of an embedded microcontroller running
special-purpose firmware, which autonomously adjusts clocks and
regulators.

Implement a driver, modelled as a pmdomain driver with a
set_performance_state operation, to support these SoCs.

The driver also exposes the actual achieved clock rate, as read back
from the MCU, as common clock framework clocks, by acting as a clock
provider as well.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
Nicolas Frattaroli 2025-10-17 17:31:12 +02:00 committed by Ulf Hansson
parent 19e668e81e
commit f08e7a4e8d
3 changed files with 1061 additions and 0 deletions

View File

@ -26,6 +26,22 @@ config MTK_SCPSYS_PM_DOMAINS
Control Processor System (SCPSYS) has several power management related
tasks in the system.
config MTK_MFG_PM_DOMAIN
bool "MediaTek MFlexGraphics power domain"
default ARCH_MEDIATEK
depends on PM
depends on OF
depends on COMMON_CLK
select PM_GENERIC_DOMAINS
imply MTK_GPUEB_MBOX
help
Say y or m here to enable the power domains driver for MediaTek
MFlexGraphics. This driver allows for power and frequency control of
GPUs on MediaTek SoCs such as the MT8196 or MT6991.
This driver is required for the Mali GPU to work at all on MT8196 and
MT6991.
config AIROHA_CPU_PM_DOMAIN
tristate "Airoha CPU power domain"
default ARCH_AIROHA

View File

@ -1,4 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_MTK_MFG_PM_DOMAIN) += mtk-mfg-pmdomain.o
obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o
obj-$(CONFIG_MTK_SCPSYS_PM_DOMAINS) += mtk-pm-domains.o
obj-$(CONFIG_AIROHA_CPU_PM_DOMAIN) += airoha-cpu-pmdomain.o

File diff suppressed because it is too large Load Diff