Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: si570: convert from round_rate() to determine_rate()

The round_rate() clk ops is deprecated, so migrate this driver from
round_rate() to determine_rate() using the Coccinelle semantic patch
on the cover letter of this series.

Signed-off-by: Brian Masney <bmasney@redhat.com>

+16 -10
+16 -10
drivers/clk/clk-si570.c
··· 246 246 return rate; 247 247 } 248 248 249 - static long si570_round_rate(struct clk_hw *hw, unsigned long rate, 250 - unsigned long *parent_rate) 249 + static int si570_determine_rate(struct clk_hw *hw, 250 + struct clk_rate_request *req) 251 251 { 252 252 int err; 253 253 u64 rfreq; 254 254 unsigned int n1, hs_div; 255 255 struct clk_si570 *data = to_clk_si570(hw); 256 256 257 - if (!rate) 258 - return 0; 257 + if (!req->rate) { 258 + req->rate = 0; 259 259 260 - if (div64_u64(abs(rate - data->frequency) * 10000LL, 260 + return 0; 261 + } 262 + 263 + if (div64_u64(abs(req->rate - data->frequency) * 10000LL, 261 264 data->frequency) < 35) { 262 - rfreq = div64_u64((data->rfreq * rate) + 263 - div64_u64(data->frequency, 2), data->frequency); 265 + rfreq = div64_u64((data->rfreq * req->rate) + 266 + div64_u64(data->frequency, 2), 267 + data->frequency); 264 268 n1 = data->n1; 265 269 hs_div = data->hs_div; 266 270 267 271 } else { 268 - err = si570_calc_divs(rate, data, &rfreq, &n1, &hs_div); 272 + err = si570_calc_divs(req->rate, data, &rfreq, &n1, &hs_div); 269 273 if (err) { 270 274 dev_err(&data->i2c_client->dev, 271 275 "unable to round rate\n"); 276 + req->rate = 0; 277 + 272 278 return 0; 273 279 } 274 280 } 275 281 276 - return rate; 282 + return 0; 277 283 } 278 284 279 285 /** ··· 374 368 375 369 static const struct clk_ops si570_clk_ops = { 376 370 .recalc_rate = si570_recalc_rate, 377 - .round_rate = si570_round_rate, 371 + .determine_rate = si570_determine_rate, 378 372 .set_rate = si570_set_rate, 379 373 }; 380 374