xref: /linux/drivers/interconnect/mediatek/icc-emi.h (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1*b4529379SAngeloGioacchino Del Regno /* SPDX-License-Identifier: GPL-2.0 */
2*b4529379SAngeloGioacchino Del Regno /*
3*b4529379SAngeloGioacchino Del Regno  * Copyright (c) 2021 MediaTek Inc.
4*b4529379SAngeloGioacchino Del Regno  * Copyright (c) 2024 Collabora Ltd.
5*b4529379SAngeloGioacchino Del Regno  *                    AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
6*b4529379SAngeloGioacchino Del Regno  */
7*b4529379SAngeloGioacchino Del Regno 
8*b4529379SAngeloGioacchino Del Regno #ifndef __DRIVERS_INTERCONNECT_MEDIATEK_ICC_EMI_H
9*b4529379SAngeloGioacchino Del Regno #define __DRIVERS_INTERCONNECT_MEDIATEK_ICC_EMI_H
10*b4529379SAngeloGioacchino Del Regno 
11*b4529379SAngeloGioacchino Del Regno /**
12*b4529379SAngeloGioacchino Del Regno  * struct mtk_icc_node - Mediatek EMI Interconnect Node
13*b4529379SAngeloGioacchino Del Regno  * @name:      The interconnect node name which is shown in debugfs
14*b4529379SAngeloGioacchino Del Regno  * @ep:        Type of this endpoint
15*b4529379SAngeloGioacchino Del Regno  * @id:        Unique node identifier
16*b4529379SAngeloGioacchino Del Regno  * @sum_avg:   Current sum aggregate value of all average bw requests in kBps
17*b4529379SAngeloGioacchino Del Regno  * @max_peak:  Current max aggregate value of all peak bw requests in kBps
18*b4529379SAngeloGioacchino Del Regno  * @num_links: The total number of @links
19*b4529379SAngeloGioacchino Del Regno  * @links:     Array of @id linked to this node
20*b4529379SAngeloGioacchino Del Regno  */
21*b4529379SAngeloGioacchino Del Regno struct mtk_icc_node {
22*b4529379SAngeloGioacchino Del Regno 	unsigned char *name;
23*b4529379SAngeloGioacchino Del Regno 	int ep;
24*b4529379SAngeloGioacchino Del Regno 	u16 id;
25*b4529379SAngeloGioacchino Del Regno 	u64 sum_avg;
26*b4529379SAngeloGioacchino Del Regno 	u64 max_peak;
27*b4529379SAngeloGioacchino Del Regno 
28*b4529379SAngeloGioacchino Del Regno 	u16 num_links;
29*b4529379SAngeloGioacchino Del Regno 	u16 links[] __counted_by(num_links);
30*b4529379SAngeloGioacchino Del Regno };
31*b4529379SAngeloGioacchino Del Regno 
32*b4529379SAngeloGioacchino Del Regno struct mtk_icc_desc {
33*b4529379SAngeloGioacchino Del Regno 	struct mtk_icc_node **nodes;
34*b4529379SAngeloGioacchino Del Regno 	size_t num_nodes;
35*b4529379SAngeloGioacchino Del Regno };
36*b4529379SAngeloGioacchino Del Regno 
37*b4529379SAngeloGioacchino Del Regno int mtk_emi_icc_probe(struct platform_device *pdev);
38*b4529379SAngeloGioacchino Del Regno void mtk_emi_icc_remove(struct platform_device *pdev);
39*b4529379SAngeloGioacchino Del Regno 
40*b4529379SAngeloGioacchino Del Regno #endif /* __DRIVERS_INTERCONNECT_MEDIATEK_ICC_EMI_H */
41