linux-loongson/include/linux/soc/mediatek/dvfsrc.h
AngeloGioacchino Del Regno 192514ae05
soc: mediatek: Add MediaTek DVFS Resource Collector (DVFSRC) driver
The Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) is a
Hardware module used to collect all the requests from both software and the
various remote processors embedded into the SoC and decide about a minimum
operating voltage and a minimum DRAM frequency to fulfill those requests in
an effort to provide the best achievable performance per watt.

This hardware IP is capable of transparently performing direct register R/W
on all of the DVFSRC-controlled regulators and SoC bandwidth knobs.

This driver includes support for MT8183, MT8192 and MT8195.

Co-Developed-by: Dawei Chien <dawei.chien@mediatek.com>
[Angelo: Partial refactoring and cleanups]
Reviewed-by: Georgi Djakov <djakov@kerenl.org>
Link: https://lore.kernel.org/r/20240610085735.147134-5-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
2024-10-21 16:00:51 +02:00

37 lines
903 B
C

/* SPDX-License-Identifier: GPL-2.0
*
* Copyright (c) 2021 MediaTek Inc.
* Copyright (c) 2024 Collabora Ltd.
* AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
*/
#ifndef __MEDIATEK_DVFSRC_H
#define __MEDIATEK_DVFSRC_H
enum mtk_dvfsrc_cmd {
MTK_DVFSRC_CMD_BW,
MTK_DVFSRC_CMD_HRT_BW,
MTK_DVFSRC_CMD_PEAK_BW,
MTK_DVFSRC_CMD_OPP,
MTK_DVFSRC_CMD_VCORE_LEVEL,
MTK_DVFSRC_CMD_VSCP_LEVEL,
MTK_DVFSRC_CMD_MAX,
};
#if IS_ENABLED(CONFIG_MTK_DVFSRC)
int mtk_dvfsrc_send_request(const struct device *dev, u32 cmd, u64 data);
int mtk_dvfsrc_query_info(const struct device *dev, u32 cmd, int *data);
#else
static inline int mtk_dvfsrc_send_request(const struct device *dev, u32 cmd, u64 data)
{ return -ENODEV; }
static inline int mtk_dvfsrc_query_info(const struct device *dev, u32 cmd, int *data)
{ return -ENODEV; }
#endif /* CONFIG_MTK_DVFSRC */
#endif