Skip to content

Commit 2db8dc7

Browse files
konradybcioandersson
authored andcommitted
clk: qcom: smd-rpm: Add a way to define bus clocks with rate and flags
Some clocks, at least PCNoC (a.k.a CNoC_PERIPH) need to be always on, at least on the ACTIVE side, regardless of whether they're used for bus scaling or not. Introduce a new macro to preset non-INT_MAX rates and clk flags to make it easy and work implicitly through the CCF. Signed-off-by: Konrad Dybcio <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Bjorn Andersson <[email protected]>
1 parent a7bea08 commit 2db8dc7

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

drivers/clk/qcom/clk-smd-rpm.c

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include <dt-bindings/clock/qcom,rpmcc.h>
2020

2121
#define __DEFINE_CLK_SMD_RPM_PREFIX(_prefix, _name, _active, \
22-
type, r_id, key) \
22+
type, r_id, key, ao_rate, ao_flags) \
2323
static struct clk_smd_rpm clk_smd_rpm_##_prefix##_active; \
2424
static struct clk_smd_rpm clk_smd_rpm_##_prefix##_name = { \
2525
.rpm_res_type = (type), \
@@ -43,7 +43,7 @@
4343
.active_only = true, \
4444
.rpm_key = (key), \
4545
.peer = &clk_smd_rpm_##_prefix##_name, \
46-
.rate = INT_MAX, \
46+
.rate = (ao_rate), \
4747
.hw.init = &(struct clk_init_data){ \
4848
.ops = &clk_smd_rpm_ops, \
4949
.name = #_active, \
@@ -52,12 +52,14 @@
5252
.name = "xo_board", \
5353
}, \
5454
.num_parents = 1, \
55+
.flags = (ao_flags), \
5556
}, \
5657
}
5758

58-
#define __DEFINE_CLK_SMD_RPM(_name, _active, type, r_id, key) \
59+
#define __DEFINE_CLK_SMD_RPM(_name, _active, type, r_id, key,\
60+
ao_rate, ao_flags) \
5961
__DEFINE_CLK_SMD_RPM_PREFIX(/* empty */, _name, _active, \
60-
type, r_id, key)
62+
type, r_id, key, ao_rate, ao_flags)
6163

6264
#define __DEFINE_CLK_SMD_RPM_BRANCH_PREFIX(_prefix, _name, _active,\
6365
type, r_id, r, key, ao_flags) \
@@ -105,17 +107,22 @@
105107

106108
#define DEFINE_CLK_SMD_RPM(_name, type, r_id) \
107109
__DEFINE_CLK_SMD_RPM(_name##_clk, _name##_a_clk, \
108-
type, r_id, QCOM_RPM_SMD_KEY_RATE)
110+
type, r_id, QCOM_RPM_SMD_KEY_RATE, INT_MAX, 0)
109111

110112
#define DEFINE_CLK_SMD_RPM_BUS(_name, r_id) \
111113
__DEFINE_CLK_SMD_RPM_PREFIX(bus_##r_id##_, \
112114
_name##_clk, _name##_a_clk, QCOM_SMD_RPM_BUS_CLK, r_id, \
113-
QCOM_RPM_SMD_KEY_RATE)
115+
QCOM_RPM_SMD_KEY_RATE, INT_MAX, 0)
116+
117+
#define DEFINE_CLK_SMD_RPM_BUS_A(_name, r_id, ao_rate, ao_flags) \
118+
__DEFINE_CLK_SMD_RPM_PREFIX(bus_##r_id##_, \
119+
_name##_clk, _name##_a_clk, QCOM_SMD_RPM_BUS_CLK, r_id, \
120+
QCOM_RPM_SMD_KEY_RATE, ao_rate, ao_flags)
114121

115122
#define DEFINE_CLK_SMD_RPM_CLK_SRC(_name, type, r_id) \
116123
__DEFINE_CLK_SMD_RPM( \
117124
_name##_clk_src, _name##_a_clk_src, \
118-
type, r_id, QCOM_RPM_SMD_KEY_RATE)
125+
type, r_id, QCOM_RPM_SMD_KEY_RATE, INT_MAX, 0)
119126

120127
#define DEFINE_CLK_SMD_RPM_BRANCH(_name, type, r_id, r) \
121128
__DEFINE_CLK_SMD_RPM_BRANCH_PREFIX(branch_, \
@@ -129,7 +136,7 @@
129136

130137
#define DEFINE_CLK_SMD_RPM_QDSS(_name, type, r_id) \
131138
__DEFINE_CLK_SMD_RPM(_name##_clk, _name##_a_clk, \
132-
type, r_id, QCOM_RPM_SMD_KEY_STATE)
139+
type, r_id, QCOM_RPM_SMD_KEY_STATE, INT_MAX, 0)
133140

134141
#define DEFINE_CLK_SMD_RPM_XO_BUFFER(_name, r_id, r) \
135142
__DEFINE_CLK_SMD_RPM_BRANCH(_name, _name##_a, \

0 commit comments

Comments
 (0)