Lines Matching refs:settings

126 	struct clk_si544_muldiv *settings)  in si544_get_muldiv()  argument
135 settings->ls_div_bits = (reg[1] >> 4) & 0x07; in si544_get_muldiv()
136 settings->hs_div = (reg[1] & 0x07) << 8 | reg[0]; in si544_get_muldiv()
142 settings->fb_div_int = reg[4] | (reg[5] & 0x07) << 8; in si544_get_muldiv()
143 settings->fb_div_frac = reg[0] | reg[1] << 8 | reg[2] << 16 | in si544_get_muldiv()
151 settings->delta_m = reg[0] << 8 | reg[1] << 16 | reg[2] << 24; in si544_get_muldiv()
152 settings->delta_m >>= 8; in si544_get_muldiv()
170 struct clk_si544_muldiv *settings) in si544_set_muldiv() argument
175 reg[0] = settings->hs_div; in si544_set_muldiv()
176 reg[1] = settings->hs_div >> 8 | settings->ls_div_bits << 4; in si544_set_muldiv()
182 reg[0] = settings->fb_div_frac; in si544_set_muldiv()
183 reg[1] = settings->fb_div_frac >> 8; in si544_set_muldiv()
184 reg[2] = settings->fb_div_frac >> 16; in si544_set_muldiv()
185 reg[3] = settings->fb_div_frac >> 24; in si544_set_muldiv()
186 reg[4] = settings->fb_div_int; in si544_set_muldiv()
187 reg[5] = settings->fb_div_int >> 8; in si544_set_muldiv()
220 static int si544_calc_muldiv(struct clk_si544_muldiv *settings, in si544_calc_muldiv() argument
230 settings->ls_div_bits = 0; in si544_calc_muldiv()
233 settings->ls_div_bits = 0; in si544_calc_muldiv()
243 settings->ls_div_bits = res; in si544_calc_muldiv()
250 settings->hs_div = vco; in si544_calc_muldiv()
253 if ((settings->hs_div & 1) && in si544_calc_muldiv()
254 (settings->hs_div > HS_DIV_MAX_ODD || settings->ls_div_bits)) in si544_calc_muldiv()
255 ++settings->hs_div; in si544_calc_muldiv()
258 vco = (u64)ls_freq * settings->hs_div; in si544_calc_muldiv()
262 settings->fb_div_int = vco; in si544_calc_muldiv()
268 settings->fb_div_frac = vco; in si544_calc_muldiv()
271 settings->delta_m = 0; in si544_calc_muldiv()
278 const struct clk_si544_muldiv *settings) in si544_calc_center_rate() argument
280 u32 d = settings->hs_div * BIT(settings->ls_div_bits); in si544_calc_center_rate()
284 vco = (u64)settings->fb_div_frac * FXO; in si544_calc_center_rate()
289 vco += (u64)settings->fb_div_int * FXO; in si544_calc_center_rate()
297 static unsigned long si544_calc_rate(const struct clk_si544_muldiv *settings) in si544_calc_rate() argument
299 unsigned long rate = si544_calc_center_rate(settings); in si544_calc_rate()
300 s64 delta = (s64)rate * (DELTA_M_FRAC_NUM * settings->delta_m); in si544_calc_rate()
307 if (settings->delta_m < 0) in si544_calc_rate()
320 struct clk_si544_muldiv settings; in si544_recalc_rate() local
323 err = si544_get_muldiv(data, &settings); in si544_recalc_rate()
327 return si544_calc_rate(&settings); in si544_recalc_rate()
364 struct clk_si544_muldiv settings; in si544_set_rate() local
375 err = si544_get_muldiv(data, &settings); in si544_set_rate()
379 center = si544_calc_center_rate(&settings); in si544_set_rate()
388 err = si544_calc_muldiv(&settings, rate); in si544_set_rate()
403 err = si544_set_delta_m(data, settings.delta_m); in si544_set_rate()
407 err = si544_set_muldiv(data, &settings); in si544_set_rate()