diff options
author | Georgi Djakov <georgi.djakov@linaro.org> | 2020-09-18 09:12:40 +0300 |
---|---|---|
committer | Georgi Djakov <georgi.djakov@linaro.org> | 2020-09-18 09:13:40 +0300 |
commit | 628fdbcf9d665ab68f5493936ca23383a5844ff7 (patch) | |
tree | 89432b0ad4511d2f478dc18a465992b67249aa6c /include | |
parent | b1a367bb1cbba607d6c5d7dcf828b049241ee9a6 (diff) | |
parent | 7d3b0b0d8184ce4a20fd9f48cd12484139bec939 (diff) | |
download | linux-628fdbcf9d665ab68f5493936ca23383a5844ff7.tar.bz2 |
Merge branch 'icc-syncstate' into icc-next
* icc-syncstate:
interconnect: Add get_bw() callback
interconnect: Add sync state support
interconnect: qcom: Use icc_sync_state
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/interconnect-provider.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/interconnect-provider.h b/include/linux/interconnect-provider.h index 4d535fddd5d3..6bd01f7159c6 100644 --- a/include/linux/interconnect-provider.h +++ b/include/linux/interconnect-provider.h @@ -49,6 +49,7 @@ struct icc_node *of_icc_xlate_onecell(struct of_phandle_args *spec, * @aggregate: pointer to device specific aggregate operation function * @pre_aggregate: pointer to device specific function that is called * before the aggregation begins (optional) + * @get_bw: pointer to device specific function to get current bandwidth * @xlate: provider-specific callback for mapping nodes from phandle arguments * @xlate_extended: vendor-specific callback for mapping node data from phandle arguments * @dev: the device this interconnect provider belongs to @@ -63,6 +64,7 @@ struct icc_provider { int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak); void (*pre_aggregate)(struct icc_node *node); + int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak); struct icc_node* (*xlate)(struct of_phandle_args *spec, void *data); struct icc_node_data* (*xlate_extended)(struct of_phandle_args *spec, void *data); struct device *dev; @@ -86,6 +88,8 @@ struct icc_provider { * @req_list: a list of QoS constraint requests associated with this node * @avg_bw: aggregated value of average bandwidth requests from all consumers * @peak_bw: aggregated value of peak bandwidth requests from all consumers + * @init_avg: average bandwidth value that is read from the hardware during init + * @init_peak: peak bandwidth value that is read from the hardware during init * @data: pointer to private data */ struct icc_node { @@ -102,6 +106,8 @@ struct icc_node { struct hlist_head req_list; u32 avg_bw; u32 peak_bw; + u32 init_avg; + u32 init_peak; void *data; }; @@ -119,6 +125,7 @@ int icc_nodes_remove(struct icc_provider *provider); int icc_provider_add(struct icc_provider *provider); int icc_provider_del(struct icc_provider *provider); struct icc_node_data *of_icc_get_from_provider(struct of_phandle_args *spec); +void icc_sync_state(struct device *dev); #else |