1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2020 Linaro Ltd
6 #ifndef __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H
7 #define __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H
9 #define RPM_BUS_MASTER_REQ 0x73616d62
10 #define RPM_BUS_SLAVE_REQ 0x766c7362
12 #define to_qcom_provider(_provider) \
13 container_of(_provider, struct qcom_icc_provider, provider)
22 * struct qcom_icc_provider - Qualcomm specific interconnect provider
23 * @provider: generic interconnect provider
24 * @bus_clks: the clk_bulk_data table of bus clocks
25 * @num_clks: the total number of clk_bulk_data entries
26 * @type: the ICC provider type
27 * @qos_offset: offset to QoS registers
28 * @regmap: regmap for QoS registers read/write access
30 struct qcom_icc_provider {
31 struct icc_provider provider;
33 enum qcom_icc_type type;
34 struct regmap *regmap;
35 unsigned int qos_offset;
36 struct clk_bulk_data bus_clks[];
40 * struct qcom_icc_qos - Qualcomm specific interconnect QoS parameters
41 * @areq_prio: node requests priority
42 * @prio_level: priority level for bus communication
43 * @limit_commands: activate/deactivate limiter mode during runtime
44 * @ap_owned: indicates if the node is owned by the AP or by the RPM
45 * @qos_mode: default qos mode for this node
46 * @qos_port: qos port number for finding qos registers of this node
47 * @urg_fwd_en: enable urgent forwarding
60 * struct qcom_icc_node - Qualcomm specific interconnect nodes
61 * @name: the node name used in debugfs
62 * @id: a unique node identifier
63 * @links: an array of nodes where we can go next while traversing
64 * @num_links: the total number of @links
65 * @buswidth: width of the interconnect between a node and the bus (bytes)
66 * @mas_rpm_id: RPM id for devices that are bus masters
67 * @slv_rpm_id: RPM id for devices that are bus slaves
68 * @qos: NoC QoS setting parameters
69 * @rate: current bus clock rate in Hz
71 struct qcom_icc_node {
79 struct qcom_icc_qos qos;
83 struct qcom_icc_desc {
84 struct qcom_icc_node **nodes;
86 const char * const *clocks;
89 enum qcom_icc_type type;
90 const struct regmap_config *regmap_cfg;
91 unsigned int qos_offset;
94 /* Valid for both NoC and BIMC */
95 #define NOC_QOS_MODE_INVALID -1
96 #define NOC_QOS_MODE_FIXED 0x0
97 #define NOC_QOS_MODE_BYPASS 0x2
99 int qnoc_probe(struct platform_device *pdev);
100 int qnoc_remove(struct platform_device *pdev);