Lines Matching refs:priv
50 read_vco(struct gk104_clk_priv *priv, u32 dsrc) in read_vco() argument
52 u32 ssrc = nv_rd32(priv, dsrc); in read_vco()
54 return read_pll(priv, 0x00e800); in read_vco()
55 return read_pll(priv, 0x00e820); in read_vco()
59 read_pll(struct gk104_clk_priv *priv, u32 pll) in read_pll() argument
61 u32 ctrl = nv_rd32(priv, pll + 0x00); in read_pll()
62 u32 coef = nv_rd32(priv, pll + 0x04); in read_pll()
75 sclk = nv_device(priv)->crystal; in read_pll()
79 sclk = read_pll(priv, 0x132020); in read_pll()
83 sclk = read_div(priv, 0, 0x137320, 0x137330); in read_pll()
84 fN = nv_rd32(priv, pll + 0x10) >> 16; in read_pll()
90 sclk = read_div(priv, (pll & 0xff) / 0x20, 0x137120, 0x137140); in read_pll()
104 read_div(struct gk104_clk_priv *priv, int doff, u32 dsrc, u32 dctl) in read_div() argument
106 u32 ssrc = nv_rd32(priv, dsrc + (doff * 4)); in read_div()
107 u32 sctl = nv_rd32(priv, dctl + (doff * 4)); in read_div()
112 return nv_device(priv)->crystal; in read_div()
118 u32 sclk = read_vco(priv, dsrc + (doff * 4)); in read_div()
123 return read_vco(priv, dsrc + (doff * 4)); in read_div()
130 read_mem(struct gk104_clk_priv *priv) in read_mem() argument
132 switch (nv_rd32(priv, 0x1373f4) & 0x0000000f) { in read_mem()
133 case 1: return read_pll(priv, 0x132020); in read_mem()
134 case 2: return read_pll(priv, 0x132000); in read_mem()
141 read_clk(struct gk104_clk_priv *priv, int clk) in read_clk() argument
143 u32 sctl = nv_rd32(priv, 0x137250 + (clk * 4)); in read_clk()
147 u32 ssel = nv_rd32(priv, 0x137100); in read_clk()
149 sclk = read_pll(priv, 0x137000 + (clk * 0x20)); in read_clk()
152 sclk = read_div(priv, clk, 0x137160, 0x1371d0); in read_clk()
156 u32 ssrc = nv_rd32(priv, 0x137160 + (clk * 0x04)); in read_clk()
158 sclk = read_div(priv, clk, 0x137160, 0x1371d0); in read_clk()
161 sclk = read_pll(priv, 0x1370e0); in read_clk()
167 sclk = read_div(priv, clk, 0x137160, 0x1371d0); in read_clk()
187 struct gk104_clk_priv *priv = (void *)clk; in gk104_clk_read() local
195 return read_mem(priv); in gk104_clk_read()
197 return read_clk(priv, 0x00); in gk104_clk_read()
199 return read_clk(priv, 0x01); in gk104_clk_read()
201 return read_clk(priv, 0x02); in gk104_clk_read()
203 return read_clk(priv, 0x07); in gk104_clk_read()
205 return read_clk(priv, 0x08); in gk104_clk_read()
207 return read_clk(priv, 0x0c); in gk104_clk_read()
209 return read_clk(priv, 0x0e); in gk104_clk_read()
217 calc_div(struct gk104_clk_priv *priv, int clk, u32 ref, u32 freq, u32 *ddiv) in calc_div() argument
228 calc_src(struct gk104_clk_priv *priv, int clk, u32 freq, u32 *dsrc, u32 *ddiv) in calc_src() argument
250 sclk = read_vco(priv, 0x137160 + (clk * 4)); in calc_src()
252 sclk = calc_div(priv, clk, sclk, freq, ddiv); in calc_src()
257 calc_pll(struct gk104_clk_priv *priv, int clk, u32 freq, u32 *coef) in calc_pll() argument
259 struct nvkm_bios *bios = nvkm_bios(priv); in calc_pll()
267 limits.refclk = read_div(priv, clk, 0x137120, 0x137140); in calc_pll()
271 ret = gt215_pll_calc(nv_subdev(priv), &limits, freq, &N, NULL, &M, &P); in calc_pll()
280 calc_clk(struct gk104_clk_priv *priv, in calc_clk() argument
283 struct gk104_clk_info *info = &priv->eng[clk]; in calc_clk()
293 clk0 = calc_src(priv, clk, freq, &src0, &div0); in calc_clk()
294 clk0 = calc_div(priv, clk, clk0, freq, &div1D); in calc_clk()
299 clk1 = calc_pll(priv, clk, freq, &info->coef); in calc_clk()
302 clk1 = calc_div(priv, clk, clk1, freq, &div1P); in calc_clk()
334 struct gk104_clk_priv *priv = (void *)clk; in gk104_clk_calc() local
337 if ((ret = calc_clk(priv, cstate, 0x00, nv_clk_src_gpc)) || in gk104_clk_calc()
338 (ret = calc_clk(priv, cstate, 0x01, nv_clk_src_rop)) || in gk104_clk_calc()
339 (ret = calc_clk(priv, cstate, 0x02, nv_clk_src_hubk07)) || in gk104_clk_calc()
340 (ret = calc_clk(priv, cstate, 0x07, nv_clk_src_hubk06)) || in gk104_clk_calc()
341 (ret = calc_clk(priv, cstate, 0x08, nv_clk_src_hubk01)) || in gk104_clk_calc()
342 (ret = calc_clk(priv, cstate, 0x0c, nv_clk_src_daemon)) || in gk104_clk_calc()
343 (ret = calc_clk(priv, cstate, 0x0e, nv_clk_src_vdec))) in gk104_clk_calc()
350 gk104_clk_prog_0(struct gk104_clk_priv *priv, int clk) in gk104_clk_prog_0() argument
352 struct gk104_clk_info *info = &priv->eng[clk]; in gk104_clk_prog_0()
354 nv_mask(priv, 0x1371d0 + (clk * 0x04), 0x8000003f, info->ddiv); in gk104_clk_prog_0()
355 nv_wr32(priv, 0x137160 + (clk * 0x04), info->dsrc); in gk104_clk_prog_0()
360 gk104_clk_prog_1_0(struct gk104_clk_priv *priv, int clk) in gk104_clk_prog_1_0() argument
362 nv_mask(priv, 0x137100, (1 << clk), 0x00000000); in gk104_clk_prog_1_0()
363 nv_wait(priv, 0x137100, (1 << clk), 0x00000000); in gk104_clk_prog_1_0()
367 gk104_clk_prog_1_1(struct gk104_clk_priv *priv, int clk) in gk104_clk_prog_1_1() argument
369 nv_mask(priv, 0x137160 + (clk * 0x04), 0x00000100, 0x00000000); in gk104_clk_prog_1_1()
373 gk104_clk_prog_2(struct gk104_clk_priv *priv, int clk) in gk104_clk_prog_2() argument
375 struct gk104_clk_info *info = &priv->eng[clk]; in gk104_clk_prog_2()
377 nv_mask(priv, addr + 0x00, 0x00000004, 0x00000000); in gk104_clk_prog_2()
378 nv_mask(priv, addr + 0x00, 0x00000001, 0x00000000); in gk104_clk_prog_2()
380 nv_wr32(priv, addr + 0x04, info->coef); in gk104_clk_prog_2()
381 nv_mask(priv, addr + 0x00, 0x00000001, 0x00000001); in gk104_clk_prog_2()
382 nv_wait(priv, addr + 0x00, 0x00020000, 0x00020000); in gk104_clk_prog_2()
383 nv_mask(priv, addr + 0x00, 0x00020004, 0x00000004); in gk104_clk_prog_2()
388 gk104_clk_prog_3(struct gk104_clk_priv *priv, int clk) in gk104_clk_prog_3() argument
390 struct gk104_clk_info *info = &priv->eng[clk]; in gk104_clk_prog_3()
392 nv_mask(priv, 0x137250 + (clk * 0x04), 0x00003f00, info->mdiv); in gk104_clk_prog_3()
394 nv_mask(priv, 0x137250 + (clk * 0x04), 0x0000003f, info->mdiv); in gk104_clk_prog_3()
398 gk104_clk_prog_4_0(struct gk104_clk_priv *priv, int clk) in gk104_clk_prog_4_0() argument
400 struct gk104_clk_info *info = &priv->eng[clk]; in gk104_clk_prog_4_0()
402 nv_mask(priv, 0x137100, (1 << clk), info->ssel); in gk104_clk_prog_4_0()
403 nv_wait(priv, 0x137100, (1 << clk), info->ssel); in gk104_clk_prog_4_0()
408 gk104_clk_prog_4_1(struct gk104_clk_priv *priv, int clk) in gk104_clk_prog_4_1() argument
410 struct gk104_clk_info *info = &priv->eng[clk]; in gk104_clk_prog_4_1()
412 nv_mask(priv, 0x137160 + (clk * 0x04), 0x40000000, 0x40000000); in gk104_clk_prog_4_1()
413 nv_mask(priv, 0x137160 + (clk * 0x04), 0x00000100, 0x00000100); in gk104_clk_prog_4_1()
420 struct gk104_clk_priv *priv = (void *)clk; in gk104_clk_prog() local
436 for (j = 0; j < ARRAY_SIZE(priv->eng); j++) { in gk104_clk_prog()
439 if (!priv->eng[j].freq) in gk104_clk_prog()
441 stage[i].exec(priv, j); in gk104_clk_prog()
451 struct gk104_clk_priv *priv = (void *)clk; in gk104_clk_tidy() local
452 memset(priv->eng, 0x00, sizeof(priv->eng)); in gk104_clk_tidy()
475 struct gk104_clk_priv *priv; in gk104_clk_ctor() local
479 NULL, 0, true, &priv); in gk104_clk_ctor()
480 *pobject = nv_object(priv); in gk104_clk_ctor()
484 priv->base.read = gk104_clk_read; in gk104_clk_ctor()
485 priv->base.calc = gk104_clk_calc; in gk104_clk_ctor()
486 priv->base.prog = gk104_clk_prog; in gk104_clk_ctor()
487 priv->base.tidy = gk104_clk_tidy; in gk104_clk_ctor()