@@ -71,6 +71,7 @@ static void clk_fd_get_div(struct clk_hw *hw, struct u32_fract *fract)
71
71
struct clk_fractional_divider * fd = to_clk_fd (hw );
72
72
unsigned long flags = 0 ;
73
73
unsigned long m , n ;
74
+ u32 mmask , nmask ;
74
75
u32 val ;
75
76
76
77
if (fd -> lock )
@@ -85,8 +86,11 @@ static void clk_fd_get_div(struct clk_hw *hw, struct u32_fract *fract)
85
86
else
86
87
__release (fd -> lock );
87
88
88
- m = (val & fd -> mmask ) >> fd -> mshift ;
89
- n = (val & fd -> nmask ) >> fd -> nshift ;
89
+ mmask = GENMASK (fd -> mwidth - 1 , 0 ) << fd -> mshift ;
90
+ nmask = GENMASK (fd -> nwidth - 1 , 0 ) << fd -> nshift ;
91
+
92
+ m = (val & mmask ) >> fd -> mshift ;
93
+ n = (val & nmask ) >> fd -> nshift ;
90
94
91
95
if (fd -> flags & CLK_FRAC_DIVIDER_ZERO_BASED ) {
92
96
m ++ ;
@@ -166,6 +170,7 @@ static int clk_fd_set_rate(struct clk_hw *hw, unsigned long rate,
166
170
struct clk_fractional_divider * fd = to_clk_fd (hw );
167
171
unsigned long flags = 0 ;
168
172
unsigned long m , n ;
173
+ u32 mmask , nmask ;
169
174
u32 val ;
170
175
171
176
rational_best_approximation (rate , parent_rate ,
@@ -182,8 +187,11 @@ static int clk_fd_set_rate(struct clk_hw *hw, unsigned long rate,
182
187
else
183
188
__acquire (fd -> lock );
184
189
190
+ mmask = GENMASK (fd -> mwidth - 1 , 0 ) << fd -> mshift ;
191
+ nmask = GENMASK (fd -> nwidth - 1 , 0 ) << fd -> nshift ;
192
+
185
193
val = clk_fd_readl (fd );
186
- val &= ~(fd -> mmask | fd -> nmask );
194
+ val &= ~(mmask | nmask );
187
195
val |= (m << fd -> mshift ) | (n << fd -> nshift );
188
196
clk_fd_writel (fd , val );
189
197
@@ -260,10 +268,8 @@ struct clk_hw *clk_hw_register_fractional_divider(struct device *dev,
260
268
fd -> reg = reg ;
261
269
fd -> mshift = mshift ;
262
270
fd -> mwidth = mwidth ;
263
- fd -> mmask = GENMASK (mwidth - 1 , 0 ) << mshift ;
264
271
fd -> nshift = nshift ;
265
272
fd -> nwidth = nwidth ;
266
- fd -> nmask = GENMASK (nwidth - 1 , 0 ) << nshift ;
267
273
fd -> flags = clk_divider_flags ;
268
274
fd -> lock = lock ;
269
275
fd -> hw .init = & init ;
0 commit comments