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