1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Interconnect framework internal structs 4 * 5 * Copyright (c) 2019, Linaro Ltd. 6 * Author: Georgi Djakov <georgi.djakov@linaro.org> 7 */ 8 9 #ifndef __DRIVERS_INTERCONNECT_INTERNAL_H 10 #define __DRIVERS_INTERCONNECT_INTERNAL_H 11 12 /** 13 * struct icc_req - constraints that are attached to each node 14 * @req_node: entry in list of requests for the particular @node 15 * @node: the interconnect node to which this constraint applies 16 * @dev: reference to the device that sets the constraints 17 * @enabled: indicates whether the path with this request is enabled 18 * @tag: path tag (optional) 19 * @avg_bw: an integer describing the average bandwidth in kBps 20 * @peak_bw: an integer describing the peak bandwidth in kBps 21 */ 22 struct icc_req { 23 struct hlist_node req_node; 24 struct icc_node *node; 25 struct device *dev; 26 bool enabled; 27 u32 tag; 28 u32 avg_bw; 29 u32 peak_bw; 30 }; 31 32 /** 33 * struct icc_path - interconnect path structure 34 * @name: a string name of the path (useful for ftrace) 35 * @num_nodes: number of hops (nodes) 36 * @reqs: array of the requests applicable to this path of nodes 37 */ 38 struct icc_path { 39 const char *name; 40 size_t num_nodes; 41 struct icc_req reqs[] __counted_by(num_nodes); 42 }; 43 44 struct icc_path *icc_get(struct device *dev, const char *src, const char *dst); 45 int icc_debugfs_client_init(struct dentry *icc_dir); 46 47 #endif 48