static int vexpress_osc_set_rate(struct clk_hw *hw, unsigned long rate, unsigned long parent_rate) { struct vexpress_osc *osc = to_vexpress_osc(hw); return regmap_write(osc->reg, 0, rate); }
static int vexpress_osc_set_rate(struct clk_hw *hw, unsigned long rate, unsigned long parent_rate) { struct vexpress_osc *osc = to_vexpress_osc(hw); return vexpress_config_write(osc->func, 0, rate); }
static unsigned long vexpress_osc_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { struct vexpress_osc *osc = to_vexpress_osc(hw); u32 rate; regmap_read(osc->reg, 0, &rate); return rate; }
static long vexpress_osc_round_rate(struct clk_hw *hw, unsigned long rate, unsigned long *parent_rate) { struct vexpress_osc *osc = to_vexpress_osc(hw); if (WARN_ON(osc->rate_min && rate < osc->rate_min)) rate = osc->rate_min; if (WARN_ON(osc->rate_max && rate > osc->rate_max)) rate = osc->rate_max; return rate; }