1257462Semaste/* SPDX-License-Identifier: GPL-2.0 */ 2146082Skientzle/* 3146082Skientzle * Interconnect framework internal structs 4146082Skientzle * 5146082Skientzle * Copyright (c) 2019, Linaro Ltd. 6146082Skientzle * Author: Georgi Djakov <georgi.djakov@linaro.org> 7146082Skientzle */ 8146082Skientzle 9146082Skientzle#ifndef __DRIVERS_INTERCONNECT_INTERNAL_H 10146082Skientzle#define __DRIVERS_INTERCONNECT_INTERNAL_H 11146082Skientzle 12146082Skientzle/** 13146082Skientzle * struct icc_req - constraints that are attached to each node 14146082Skientzle * @req_node: entry in list of requests for the particular @node 15146082Skientzle * @node: the interconnect node to which this constraint applies 16146082Skientzle * @dev: reference to the device that sets the constraints 17146082Skientzle * @enabled: indicates whether the path with this request is enabled 18146082Skientzle * @tag: path tag (optional) 19146082Skientzle * @avg_bw: an integer describing the average bandwidth in kBps 20146082Skientzle * @peak_bw: an integer describing the peak bandwidth in kBps 21146082Skientzle */ 22146082Skientzlestruct icc_req { 23146082Skientzle struct hlist_node req_node; 24146082Skientzle struct icc_node *node; 25146082Skientzle struct device *dev; 26146082Skientzle bool enabled; 27146082Skientzle u32 tag; 28146082Skientzle u32 avg_bw; 29146082Skientzle u32 peak_bw; 30146082Skientzle}; 31146082Skientzle 32146082Skientzle/** 33146082Skientzle * struct icc_path - interconnect path structure 34146082Skientzle * @name: a string name of the path (useful for ftrace) 35146082Skientzle * @num_nodes: number of hops (nodes) 36146082Skientzle * @reqs: array of the requests applicable to this path of nodes 37146082Skientzle */ 38146082Skientzlestruct icc_path { 39146082Skientzle const char *name; 40146082Skientzle size_t num_nodes; 41146082Skientzle struct icc_req reqs[] __counted_by(num_nodes); 42146082Skientzle}; 43146082Skientzle 44146082Skientzlestruct icc_path *icc_get(struct device *dev, const char *src, const char *dst); 45int icc_debugfs_client_init(struct dentry *icc_dir); 46 47#endif 48