6ac3f01201
This series introduces interconnect debugfs files that support voting for any interconnect path the framework supports. It is useful for debug, test and verification. * icc-debugfs debugfs: Add write support to debugfs_create_str() interconnect: Reintroduce icc_get() interconnect: Add debugfs test client Link: https://lore.kernel.org/r/20230807142914.12480-1-quic_mdtipton@quicinc.com Signed-off-by: Georgi Djakov <djakov@kernel.org>
48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Interconnect framework internal structs
|
|
*
|
|
* Copyright (c) 2019, Linaro Ltd.
|
|
* Author: Georgi Djakov <georgi.djakov@linaro.org>
|
|
*/
|
|
|
|
#ifndef __DRIVERS_INTERCONNECT_INTERNAL_H
|
|
#define __DRIVERS_INTERCONNECT_INTERNAL_H
|
|
|
|
/**
|
|
* struct icc_req - constraints that are attached to each node
|
|
* @req_node: entry in list of requests for the particular @node
|
|
* @node: the interconnect node to which this constraint applies
|
|
* @dev: reference to the device that sets the constraints
|
|
* @enabled: indicates whether the path with this request is enabled
|
|
* @tag: path tag (optional)
|
|
* @avg_bw: an integer describing the average bandwidth in kBps
|
|
* @peak_bw: an integer describing the peak bandwidth in kBps
|
|
*/
|
|
struct icc_req {
|
|
struct hlist_node req_node;
|
|
struct icc_node *node;
|
|
struct device *dev;
|
|
bool enabled;
|
|
u32 tag;
|
|
u32 avg_bw;
|
|
u32 peak_bw;
|
|
};
|
|
|
|
/**
|
|
* struct icc_path - interconnect path structure
|
|
* @name: a string name of the path (useful for ftrace)
|
|
* @num_nodes: number of hops (nodes)
|
|
* @reqs: array of the requests applicable to this path of nodes
|
|
*/
|
|
struct icc_path {
|
|
const char *name;
|
|
size_t num_nodes;
|
|
struct icc_req reqs[] __counted_by(num_nodes);
|
|
};
|
|
|
|
struct icc_path *icc_get(struct device *dev, const char *src, const char *dst);
|
|
int icc_debugfs_client_init(struct dentry *icc_dir);
|
|
|
|
#endif
|