Skip to content

Commit 58c53d4

Browse files
LorenzoBianconibebarino
authored andcommitted
clk: en7523: fix rate divider for slic and spi clocks
Introduce div_offset field in en_clk_desc struct in order to fix rate divider estimation in en7523_get_div routine for slic and spi fixed rate clocks. Moreover, fix base_shift for crypto clock. Fixes: 1e62731 ("clk: en7523: Add clock driver for Airoha EN7523 SoC") Signed-off-by: Lorenzo Bianconi <[email protected]> Link: https://lore.kernel.org/r/c491bdea05d847f1f1294b94f14725d292eb95d0.1718615934.git.lorenzo@kernel.org Reviewed-by: AngeloGioacchino Del Regno <[email protected]> Signed-off-by: Stephen Boyd <[email protected]>
1 parent bf288bd commit 58c53d4

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/clk/clk-en7523.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ struct en_clk_desc {
6262
u8 div_shift;
6363
u16 div_val0;
6464
u8 div_step;
65+
u8 div_offset;
6566
};
6667

6768
struct en_clk_gate {
@@ -106,6 +107,7 @@ static const struct en_clk_desc en7523_base_clks[] = {
106107
.div_bits = 3,
107108
.div_shift = 0,
108109
.div_step = 1,
110+
.div_offset = 1,
109111
}, {
110112
.id = EN7523_CLK_EMI,
111113
.name = "emi",
@@ -119,6 +121,7 @@ static const struct en_clk_desc en7523_base_clks[] = {
119121
.div_bits = 3,
120122
.div_shift = 0,
121123
.div_step = 1,
124+
.div_offset = 1,
122125
}, {
123126
.id = EN7523_CLK_BUS,
124127
.name = "bus",
@@ -132,6 +135,7 @@ static const struct en_clk_desc en7523_base_clks[] = {
132135
.div_bits = 3,
133136
.div_shift = 0,
134137
.div_step = 1,
138+
.div_offset = 1,
135139
}, {
136140
.id = EN7523_CLK_SLIC,
137141
.name = "slic",
@@ -172,13 +176,14 @@ static const struct en_clk_desc en7523_base_clks[] = {
172176
.div_bits = 3,
173177
.div_shift = 0,
174178
.div_step = 1,
179+
.div_offset = 1,
175180
}, {
176181
.id = EN7523_CLK_CRYPTO,
177182
.name = "crypto",
178183

179184
.base_reg = REG_CRYPTO_CLKSRC,
180185
.base_bits = 1,
181-
.base_shift = 8,
186+
.base_shift = 0,
182187
.base_values = emi_base,
183188
.n_base_values = ARRAY_SIZE(emi_base),
184189
}
@@ -281,7 +286,7 @@ static u32 en7523_get_div(void __iomem *base, int i)
281286
if (!val && desc->div_val0)
282287
return desc->div_val0;
283288

284-
return (val + 1) * desc->div_step;
289+
return (val + desc->div_offset) * desc->div_step;
285290
}
286291

287292
static int en7523_pci_is_enabled(struct clk_hw *hw)

0 commit comments

Comments
 (0)