Lines Matching refs:clk
51 struct nvkm_clk *clk = &priv->base; in read_vco() local
54 return clk->read(clk, nv_clk_src_sppll0); in read_vco()
55 return clk->read(clk, nv_clk_src_sppll1); in read_vco()
61 struct nvkm_clk *clk = &priv->base; in read_pll() local
79 sclk = clk->read(clk, nv_clk_src_mpllsrc); in read_pll()
82 sclk = clk->read(clk, nv_clk_src_mpllsrcref); in read_pll()
124 read_clk(struct gf100_clk_priv *priv, int clk) in read_clk() argument
126 u32 sctl = nv_rd32(priv, 0x137250 + (clk * 4)); in read_clk()
130 if (ssel & (1 << clk)) { in read_clk()
131 if (clk < 7) in read_clk()
132 sclk = read_pll(priv, 0x137000 + (clk * 0x20)); in read_clk()
137 sclk = read_div(priv, clk, 0x137160, 0x1371d0); in read_clk()
148 gf100_clk_read(struct nvkm_clk *clk, enum nv_clk_src src) in gf100_clk_read() argument
150 struct nvkm_device *device = nv_device(clk); in gf100_clk_read()
151 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_read()
173 return clk->read(clk, nv_clk_src_mpll); in gf100_clk_read()
174 return clk->read(clk, nv_clk_src_mdiv); in gf100_clk_read()
193 nv_error(clk, "invalid clock source %d\n", src); in gf100_clk_read()
199 calc_div(struct gf100_clk_priv *priv, int clk, u32 ref, u32 freq, u32 *ddiv) in calc_div() argument
210 calc_src(struct gf100_clk_priv *priv, int clk, u32 freq, u32 *dsrc, u32 *ddiv) in calc_src() argument
232 sclk = read_vco(priv, 0x137160 + (clk * 4)); in calc_src()
233 if (clk < 7) in calc_src()
234 sclk = calc_div(priv, clk, sclk, freq, ddiv); in calc_src()
239 calc_pll(struct gf100_clk_priv *priv, int clk, u32 freq, u32 *coef) in calc_pll() argument
245 ret = nvbios_pll_parse(bios, 0x137000 + (clk * 0x20), &limits); in calc_pll()
249 limits.refclk = read_div(priv, clk, 0x137120, 0x137140); in calc_pll()
263 struct nvkm_cstate *cstate, int clk, int dom) in calc_clk() argument
265 struct gf100_clk_info *info = &priv->eng[clk]; in calc_clk()
275 clk0 = calc_src(priv, clk, freq, &src0, &div0); in calc_clk()
276 clk0 = calc_div(priv, clk, clk0, freq, &div1D); in calc_clk()
279 if (clk0 != freq && (0x00004387 & (1 << clk))) { in calc_clk()
280 if (clk <= 7) in calc_clk()
281 clk1 = calc_pll(priv, clk, freq, &info->coef); in calc_clk()
284 clk1 = calc_div(priv, clk, clk1, freq, &div1P); in calc_clk()
306 info->ssel = (1 << clk); in calc_clk()
314 gf100_clk_calc(struct nvkm_clk *clk, struct nvkm_cstate *cstate) in gf100_clk_calc() argument
316 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_calc()
333 gf100_clk_prog_0(struct gf100_clk_priv *priv, int clk) in gf100_clk_prog_0() argument
335 struct gf100_clk_info *info = &priv->eng[clk]; in gf100_clk_prog_0()
336 if (clk < 7 && !info->ssel) { in gf100_clk_prog_0()
337 nv_mask(priv, 0x1371d0 + (clk * 0x04), 0x80003f3f, info->ddiv); in gf100_clk_prog_0()
338 nv_wr32(priv, 0x137160 + (clk * 0x04), info->dsrc); in gf100_clk_prog_0()
343 gf100_clk_prog_1(struct gf100_clk_priv *priv, int clk) in gf100_clk_prog_1() argument
345 nv_mask(priv, 0x137100, (1 << clk), 0x00000000); in gf100_clk_prog_1()
346 nv_wait(priv, 0x137100, (1 << clk), 0x00000000); in gf100_clk_prog_1()
350 gf100_clk_prog_2(struct gf100_clk_priv *priv, int clk) in gf100_clk_prog_2() argument
352 struct gf100_clk_info *info = &priv->eng[clk]; in gf100_clk_prog_2()
353 const u32 addr = 0x137000 + (clk * 0x20); in gf100_clk_prog_2()
354 if (clk <= 7) { in gf100_clk_prog_2()
367 gf100_clk_prog_3(struct gf100_clk_priv *priv, int clk) in gf100_clk_prog_3() argument
369 struct gf100_clk_info *info = &priv->eng[clk]; in gf100_clk_prog_3()
371 nv_mask(priv, 0x137100, (1 << clk), info->ssel); in gf100_clk_prog_3()
372 nv_wait(priv, 0x137100, (1 << clk), info->ssel); in gf100_clk_prog_3()
377 gf100_clk_prog_4(struct gf100_clk_priv *priv, int clk) in gf100_clk_prog_4() argument
379 struct gf100_clk_info *info = &priv->eng[clk]; in gf100_clk_prog_4()
380 nv_mask(priv, 0x137250 + (clk * 0x04), 0x00003f3f, info->mdiv); in gf100_clk_prog_4()
384 gf100_clk_prog(struct nvkm_clk *clk) in gf100_clk_prog() argument
386 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_prog()
410 gf100_clk_tidy(struct nvkm_clk *clk) in gf100_clk_tidy() argument
412 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_tidy()