static int slave_div_set_rate(struct clk *c, unsigned long rate) { struct div_clk *d = to_div_clk(c); int div, rc = 0; long rrate; rrate = __slave_div_round_rate(c, rate, &div); if (rrate != rate) return -EINVAL; if (div == d->data.div) return 0; /* * For fixed divider clock we don't want to return an error if the * requested rate matches the achievable rate. So, don't check for * !d->ops and return an error. __slave_div_round_rate() ensures * div == d->data.div if !d->ops. */ rc = d->ops->set_div(d, div); if (rc) return rc; d->data.div = div; return 0; }
static int slave_div_set_rate(struct clk *c, unsigned long rate) { struct div_clk *d = to_div_clk(c); int div, rc = 0; long rrate; rrate = __slave_div_round_rate(c, rate, &div); if (rrate != rate) return -EINVAL; if (div == d->data.div) return 0; rc = d->ops->set_div(d, div); if (rc) return rc; d->data.div = div; return 0; }
static long slave_div_round_rate(struct clk *c, unsigned long rate) { return __slave_div_round_rate(c, rate, NULL); }