interconnect: qcom: rpm: drop bogus pm domain attach
[linux-block.git] / drivers / interconnect / qcom / icc-rpm.h
CommitLineData
62feb14e
JN
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020 Linaro Ltd
4 */
5
6#ifndef __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H
7#define __DRIVERS_INTERCONNECT_QCOM_ICC_RPM_H
8
dcbce7b0
LY
9#include <dt-bindings/interconnect/qcom,icc.h>
10
62feb14e
JN
11#define RPM_BUS_MASTER_REQ 0x73616d62
12#define RPM_BUS_SLAVE_REQ 0x766c7362
13
62feb14e
JN
14#define to_qcom_provider(_provider) \
15 container_of(_provider, struct qcom_icc_provider, provider)
16
e9d54c26
SG
17enum qcom_icc_type {
18 QCOM_ICC_NOC,
19 QCOM_ICC_BIMC,
08c59040 20 QCOM_ICC_QNOC,
e9d54c26
SG
21};
22
62feb14e
JN
23/**
24 * struct qcom_icc_provider - Qualcomm specific interconnect provider
25 * @provider: generic interconnect provider
26 * @bus_clks: the clk_bulk_data table of bus clocks
27 * @num_clks: the total number of clk_bulk_data entries
e9d54c26 28 * @type: the ICC provider type
0788f4d5 29 * @qos_offset: offset to QoS registers
2b6c7d64 30 * @regmap: regmap for QoS registers read/write access
65fac3b3 31 * @bus_clk_rate: bus clock rate in Hz
62feb14e
JN
32 */
33struct qcom_icc_provider {
34 struct icc_provider provider;
62feb14e 35 int num_clks;
e9d54c26 36 enum qcom_icc_type type;
2b6c7d64 37 struct regmap *regmap;
0788f4d5 38 unsigned int qos_offset;
97f7d384 39 u64 *bus_clk_rate;
63e8ab61 40 struct clk_bulk_data bus_clks[];
62feb14e
JN
41};
42
2b6c7d64
DB
43/**
44 * struct qcom_icc_qos - Qualcomm specific interconnect QoS parameters
45 * @areq_prio: node requests priority
46 * @prio_level: priority level for bus communication
47 * @limit_commands: activate/deactivate limiter mode during runtime
48 * @ap_owned: indicates if the node is owned by the AP or by the RPM
49 * @qos_mode: default qos mode for this node
50 * @qos_port: qos port number for finding qos registers of this node
08c59040 51 * @urg_fwd_en: enable urgent forwarding
2b6c7d64
DB
52 */
53struct qcom_icc_qos {
54 u32 areq_prio;
55 u32 prio_level;
56 bool limit_commands;
57 bool ap_owned;
58 int qos_mode;
59 int qos_port;
08c59040 60 bool urg_fwd_en;
2b6c7d64
DB
61};
62
62feb14e
JN
63/**
64 * struct qcom_icc_node - Qualcomm specific interconnect nodes
65 * @name: the node name used in debugfs
66 * @id: a unique node identifier
67 * @links: an array of nodes where we can go next while traversing
68 * @num_links: the total number of @links
69 * @buswidth: width of the interconnect between a node and the bus (bytes)
dcbce7b0
LY
70 * @sum_avg: current sum aggregate value of all avg bw requests
71 * @max_peak: current max aggregate value of all peak bw requests
62feb14e
JN
72 * @mas_rpm_id: RPM id for devices that are bus masters
73 * @slv_rpm_id: RPM id for devices that are bus slaves
2b6c7d64 74 * @qos: NoC QoS setting parameters
62feb14e
JN
75 */
76struct qcom_icc_node {
77 unsigned char *name;
78 u16 id;
2b6c7d64 79 const u16 *links;
62feb14e
JN
80 u16 num_links;
81 u16 buswidth;
dcbce7b0
LY
82 u64 sum_avg[QCOM_ICC_NUM_BUCKETS];
83 u64 max_peak[QCOM_ICC_NUM_BUCKETS];
62feb14e
JN
84 int mas_rpm_id;
85 int slv_rpm_id;
2b6c7d64 86 struct qcom_icc_qos qos;
62feb14e
JN
87};
88
89struct qcom_icc_desc {
2ccf33c0 90 struct qcom_icc_node * const *nodes;
62feb14e 91 size_t num_nodes;
2b6c7d64
DB
92 const char * const *clocks;
93 size_t num_clocks;
e9d54c26 94 enum qcom_icc_type type;
2b6c7d64 95 const struct regmap_config *regmap_cfg;
0788f4d5 96 unsigned int qos_offset;
62feb14e
JN
97};
98
2b6c7d64
DB
99/* Valid for both NoC and BIMC */
100#define NOC_QOS_MODE_INVALID -1
101#define NOC_QOS_MODE_FIXED 0x0
102#define NOC_QOS_MODE_BYPASS 0x2
62feb14e 103
63e8ab61 104int qnoc_probe(struct platform_device *pdev);
62feb14e
JN
105int qnoc_remove(struct platform_device *pdev);
106
107#endif