linux/drivers/interconnect/mediatek/icc-emi.h
AngeloGioacchino Del Regno b45293799f interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect driver
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>
2024-06-13 14:31:43 +03:00

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 */