Skip to content

Commit c17f8fd

Browse files
committed
Merge tag 'qcom-clk-for-5.19-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into clk-qcom
Pull some Qualcomm clock driver reverts from Bjorn Andersson: After concerns were raised about the new PCIe pipe_clk mux implementation an updated implementation has evolved, but has not yet been accepted. This reverts the merged changes to avoid these concerns in the current release. * tag 'qcom-clk-for-5.19-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: Revert "clk: qcom: regmap-mux: add pipe clk implementation" Revert "clk: qcom: gcc-sc7280: use new clk_regmap_mux_safe_ops for PCIe pipe clocks" Revert "clk: qcom: gcc-sm8450: use new clk_regmap_mux_safe_ops for PCIe pipe clocks"
2 parents 856c798 + 03e053b commit c17f8fd

4 files changed

Lines changed: 4 additions & 89 deletions

File tree

drivers/clk/qcom/clk-regmap-mux.c

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -49,87 +49,9 @@ static int mux_set_parent(struct clk_hw *hw, u8 index)
4949
return regmap_update_bits(clkr->regmap, mux->reg, mask, val);
5050
}
5151

52-
static u8 mux_safe_get_parent(struct clk_hw *hw)
53-
{
54-
struct clk_regmap_mux *mux = to_clk_regmap_mux(hw);
55-
unsigned int val;
56-
57-
if (clk_hw_is_enabled(hw))
58-
return mux_get_parent(hw);
59-
60-
val = mux->stored_parent_cfg;
61-
62-
if (mux->parent_map)
63-
return qcom_find_cfg_index(hw, mux->parent_map, val);
64-
65-
return val;
66-
}
67-
68-
static int mux_safe_set_parent(struct clk_hw *hw, u8 index)
69-
{
70-
struct clk_regmap_mux *mux = to_clk_regmap_mux(hw);
71-
72-
if (clk_hw_is_enabled(hw))
73-
return mux_set_parent(hw, index);
74-
75-
if (mux->parent_map)
76-
index = mux->parent_map[index].cfg;
77-
78-
mux->stored_parent_cfg = index;
79-
80-
return 0;
81-
}
82-
83-
static void mux_safe_disable(struct clk_hw *hw)
84-
{
85-
struct clk_regmap_mux *mux = to_clk_regmap_mux(hw);
86-
struct clk_regmap *clkr = to_clk_regmap(hw);
87-
unsigned int mask = GENMASK(mux->width + mux->shift - 1, mux->shift);
88-
unsigned int val;
89-
90-
regmap_read(clkr->regmap, mux->reg, &val);
91-
92-
mux->stored_parent_cfg = (val & mask) >> mux->shift;
93-
94-
val = mux->safe_src_parent;
95-
if (mux->parent_map) {
96-
int index = qcom_find_src_index(hw, mux->parent_map, val);
97-
98-
if (WARN_ON(index < 0))
99-
return;
100-
101-
val = mux->parent_map[index].cfg;
102-
}
103-
val <<= mux->shift;
104-
105-
regmap_update_bits(clkr->regmap, mux->reg, mask, val);
106-
}
107-
108-
static int mux_safe_enable(struct clk_hw *hw)
109-
{
110-
struct clk_regmap_mux *mux = to_clk_regmap_mux(hw);
111-
struct clk_regmap *clkr = to_clk_regmap(hw);
112-
unsigned int mask = GENMASK(mux->width + mux->shift - 1, mux->shift);
113-
unsigned int val;
114-
115-
val = mux->stored_parent_cfg;
116-
val <<= mux->shift;
117-
118-
return regmap_update_bits(clkr->regmap, mux->reg, mask, val);
119-
}
120-
12152
const struct clk_ops clk_regmap_mux_closest_ops = {
12253
.get_parent = mux_get_parent,
12354
.set_parent = mux_set_parent,
12455
.determine_rate = __clk_mux_determine_rate_closest,
12556
};
12657
EXPORT_SYMBOL_GPL(clk_regmap_mux_closest_ops);
127-
128-
const struct clk_ops clk_regmap_mux_safe_ops = {
129-
.enable = mux_safe_enable,
130-
.disable = mux_safe_disable,
131-
.get_parent = mux_safe_get_parent,
132-
.set_parent = mux_safe_set_parent,
133-
.determine_rate = __clk_mux_determine_rate_closest,
134-
};
135-
EXPORT_SYMBOL_GPL(clk_regmap_mux_safe_ops);

drivers/clk/qcom/clk-regmap-mux.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,10 @@ struct clk_regmap_mux {
1414
u32 reg;
1515
u32 shift;
1616
u32 width;
17-
u8 safe_src_parent;
18-
u8 stored_parent_cfg;
1917
const struct parent_map *parent_map;
2018
struct clk_regmap clkr;
2119
};
2220

2321
extern const struct clk_ops clk_regmap_mux_closest_ops;
24-
extern const struct clk_ops clk_regmap_mux_safe_ops;
2522

2623
#endif

drivers/clk/qcom/gcc-sc7280.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -373,14 +373,13 @@ static struct clk_regmap_mux gcc_pcie_0_pipe_clk_src = {
373373
.reg = 0x6b054,
374374
.shift = 0,
375375
.width = 2,
376-
.safe_src_parent = P_BI_TCXO,
377376
.parent_map = gcc_parent_map_6,
378377
.clkr = {
379378
.hw.init = &(struct clk_init_data){
380379
.name = "gcc_pcie_0_pipe_clk_src",
381380
.parent_data = gcc_parent_data_6,
382381
.num_parents = ARRAY_SIZE(gcc_parent_data_6),
383-
.ops = &clk_regmap_mux_safe_ops,
382+
.ops = &clk_regmap_mux_closest_ops,
384383
},
385384
},
386385
};
@@ -389,14 +388,13 @@ static struct clk_regmap_mux gcc_pcie_1_pipe_clk_src = {
389388
.reg = 0x8d054,
390389
.shift = 0,
391390
.width = 2,
392-
.safe_src_parent = P_BI_TCXO,
393391
.parent_map = gcc_parent_map_7,
394392
.clkr = {
395393
.hw.init = &(struct clk_init_data){
396394
.name = "gcc_pcie_1_pipe_clk_src",
397395
.parent_data = gcc_parent_data_7,
398396
.num_parents = ARRAY_SIZE(gcc_parent_data_7),
399-
.ops = &clk_regmap_mux_safe_ops,
397+
.ops = &clk_regmap_mux_closest_ops,
400398
},
401399
},
402400
};

drivers/clk/qcom/gcc-sm8450.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,14 +243,13 @@ static struct clk_regmap_mux gcc_pcie_0_pipe_clk_src = {
243243
.reg = 0x7b060,
244244
.shift = 0,
245245
.width = 2,
246-
.safe_src_parent = P_BI_TCXO,
247246
.parent_map = gcc_parent_map_4,
248247
.clkr = {
249248
.hw.init = &(struct clk_init_data){
250249
.name = "gcc_pcie_0_pipe_clk_src",
251250
.parent_data = gcc_parent_data_4,
252251
.num_parents = ARRAY_SIZE(gcc_parent_data_4),
253-
.ops = &clk_regmap_mux_safe_ops,
252+
.ops = &clk_regmap_mux_closest_ops,
254253
},
255254
},
256255
};
@@ -274,14 +273,13 @@ static struct clk_regmap_mux gcc_pcie_1_pipe_clk_src = {
274273
.reg = 0x9d064,
275274
.shift = 0,
276275
.width = 2,
277-
.safe_src_parent = P_BI_TCXO,
278276
.parent_map = gcc_parent_map_6,
279277
.clkr = {
280278
.hw.init = &(struct clk_init_data){
281279
.name = "gcc_pcie_1_pipe_clk_src",
282280
.parent_data = gcc_parent_data_6,
283281
.num_parents = ARRAY_SIZE(gcc_parent_data_6),
284-
.ops = &clk_regmap_mux_safe_ops,
282+
.ops = &clk_regmap_mux_closest_ops,
285283
},
286284
},
287285
};

0 commit comments

Comments
 (0)