mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-15 09:31:32 -04:00
Add an interconnect driver for the External Memory Interface (EMI),
voting for bus bandwidth over the Dynamic Voltage and Frequency Scaling
Resource Collector (DVFSRC).
ICC provider ICC Nodes
---- ----
--------- |CPU | |--- |VPU |
----- | |----- ---- | ----
|DRAM |--|DRAM | ---- | ----
| |--|scheduler|----- |GPU | |--- |DISP|
| |--|(EMI) | ---- | ----
| |--| | ----- | ----
----- | |----- |MMSYS|--|--- |VDEC|
--------- ----- | ----
/|\ | ----
|change DRAM freq |--- |VENC|
---------- | ----
| DVFSR | |
| | | ----
---------- |--- |IMG |
| ----
| ----
|--- |CAM |
----
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20240610085735.147134-8-angelogioacchino.delregno@collabora.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>
41 lines
1.1 KiB
C
41 lines
1.1 KiB
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 __DRIVERS_INTERCONNECT_MEDIATEK_ICC_EMI_H
|
|
#define __DRIVERS_INTERCONNECT_MEDIATEK_ICC_EMI_H
|
|
|
|
/**
|
|
* struct mtk_icc_node - Mediatek EMI Interconnect Node
|
|
* @name: The interconnect node name which is shown in debugfs
|
|
* @ep: Type of this endpoint
|
|
* @id: Unique node identifier
|
|
* @sum_avg: Current sum aggregate value of all average bw requests in kBps
|
|
* @max_peak: Current max aggregate value of all peak bw requests in kBps
|
|
* @num_links: The total number of @links
|
|
* @links: Array of @id linked to this node
|
|
*/
|
|
struct mtk_icc_node {
|
|
unsigned char *name;
|
|
int ep;
|
|
u16 id;
|
|
u64 sum_avg;
|
|
u64 max_peak;
|
|
|
|
u16 num_links;
|
|
u16 links[] __counted_by(num_links);
|
|
};
|
|
|
|
struct mtk_icc_desc {
|
|
struct mtk_icc_node **nodes;
|
|
size_t num_nodes;
|
|
};
|
|
|
|
int mtk_emi_icc_probe(struct platform_device *pdev);
|
|
void mtk_emi_icc_remove(struct platform_device *pdev);
|
|
|
|
#endif /* __DRIVERS_INTERCONNECT_MEDIATEK_ICC_EMI_H */
|