if (clk->flags & RATE_CKCTL) { dsor_exp = calc_dsor_exp(clk, rate); if (dsor_exp < 0) return dsor_exp; if (dsor_exp > 3) dsor_exp = 3; return clk->parent->rate / (1 << dsor_exp); }  if(clk->round_rate != 0) return clk->round_rate(clk, rate);  return clk->rate;
return ret;
long clk_round_rate(struct clk *clk, unsigned long rate){	int dsor_exp;	if (clk->flags & RATE_FIXED)		return clk->rate;	if (clk->flags & RATE_CKCTL) {		dsor_exp = calc_dsor_exp(clk, rate);		if (dsor_exp < 0)			return dsor_exp;		if (dsor_exp > 3)			dsor_exp = 3;		return clk->parent->rate / (1 << dsor_exp);	}	if(clk->round_rate != 0)		return clk->round_rate(clk, rate);	return clk->rate;}