Lines Matching refs:priv
49 read_vco(struct gf100_clk_priv *priv, u32 dsrc) in read_vco() argument
51 struct nvkm_clk *clk = &priv->base; in read_vco()
52 u32 ssrc = nv_rd32(priv, dsrc); in read_vco()
59 read_pll(struct gf100_clk_priv *priv, u32 pll) in read_pll() argument
61 struct nvkm_clk *clk = &priv->base; in read_pll()
62 u32 ctrl = nv_rd32(priv, pll + 0x00); in read_pll()
63 u32 coef = nv_rd32(priv, pll + 0x04); in read_pll()
75 sclk = nv_device(priv)->crystal; in read_pll()
88 sclk = read_div(priv, (pll & 0xff) / 0x20, 0x137120, 0x137140); in read_pll()
98 read_div(struct gf100_clk_priv *priv, int doff, u32 dsrc, u32 dctl) in read_div() argument
100 u32 ssrc = nv_rd32(priv, dsrc + (doff * 4)); in read_div()
101 u32 sctl = nv_rd32(priv, dctl + (doff * 4)); in read_div()
106 return nv_device(priv)->crystal; in read_div()
112 u32 sclk = read_vco(priv, dsrc + (doff * 4)); in read_div()
117 return read_vco(priv, dsrc + (doff * 4)); in read_div()
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()
127 u32 ssel = nv_rd32(priv, 0x137100); in read_clk()
132 sclk = read_pll(priv, 0x137000 + (clk * 0x20)); in read_clk()
134 sclk = read_pll(priv, 0x1370e0); in read_clk()
137 sclk = read_div(priv, clk, 0x137160, 0x1371d0); in read_clk()
151 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_read() local
159 return read_pll(priv, 0x00e800); in gf100_clk_read()
161 return read_pll(priv, 0x00e820); in gf100_clk_read()
164 return read_div(priv, 0, 0x137320, 0x137330); in gf100_clk_read()
166 return read_pll(priv, 0x132020); in gf100_clk_read()
168 return read_pll(priv, 0x132000); in gf100_clk_read()
170 return read_div(priv, 0, 0x137300, 0x137310); in gf100_clk_read()
172 if (nv_rd32(priv, 0x1373f0) & 0x00000002) in gf100_clk_read()
177 return read_clk(priv, 0x00); in gf100_clk_read()
179 return read_clk(priv, 0x01); in gf100_clk_read()
181 return read_clk(priv, 0x02); in gf100_clk_read()
183 return read_clk(priv, 0x07); in gf100_clk_read()
185 return read_clk(priv, 0x08); in gf100_clk_read()
187 return read_clk(priv, 0x09); in gf100_clk_read()
189 return read_clk(priv, 0x0c); in gf100_clk_read()
191 return read_clk(priv, 0x0e); 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()
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
241 struct nvkm_bios *bios = nvkm_bios(priv); in calc_pll()
249 limits.refclk = read_div(priv, clk, 0x137120, 0x137140); in calc_pll()
253 ret = gt215_pll_calc(nv_subdev(priv), &limits, freq, &N, NULL, &M, &P); in calc_pll()
262 calc_clk(struct gf100_clk_priv *priv, 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()
281 clk1 = calc_pll(priv, clk, freq, &info->coef); in calc_clk()
284 clk1 = calc_div(priv, clk, clk1, freq, &div1P); in calc_clk()
316 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_calc() local
319 if ((ret = calc_clk(priv, cstate, 0x00, nv_clk_src_gpc)) || in gf100_clk_calc()
320 (ret = calc_clk(priv, cstate, 0x01, nv_clk_src_rop)) || in gf100_clk_calc()
321 (ret = calc_clk(priv, cstate, 0x02, nv_clk_src_hubk07)) || in gf100_clk_calc()
322 (ret = calc_clk(priv, cstate, 0x07, nv_clk_src_hubk06)) || in gf100_clk_calc()
323 (ret = calc_clk(priv, cstate, 0x08, nv_clk_src_hubk01)) || in gf100_clk_calc()
324 (ret = calc_clk(priv, cstate, 0x09, nv_clk_src_copy)) || in gf100_clk_calc()
325 (ret = calc_clk(priv, cstate, 0x0c, nv_clk_src_daemon)) || in gf100_clk_calc()
326 (ret = calc_clk(priv, cstate, 0x0e, nv_clk_src_vdec))) 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()
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()
355 nv_mask(priv, addr + 0x00, 0x00000004, 0x00000000); in gf100_clk_prog_2()
356 nv_mask(priv, addr + 0x00, 0x00000001, 0x00000000); in gf100_clk_prog_2()
358 nv_wr32(priv, addr + 0x04, info->coef); in gf100_clk_prog_2()
359 nv_mask(priv, addr + 0x00, 0x00000001, 0x00000001); in gf100_clk_prog_2()
360 nv_wait(priv, addr + 0x00, 0x00020000, 0x00020000); in gf100_clk_prog_2()
361 nv_mask(priv, addr + 0x00, 0x00020004, 0x00000004); 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()
386 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_prog() local
399 for (j = 0; j < ARRAY_SIZE(priv->eng); j++) { in gf100_clk_prog()
400 if (!priv->eng[j].freq) in gf100_clk_prog()
402 stage[i].exec(priv, j); in gf100_clk_prog()
412 struct gf100_clk_priv *priv = (void *)clk; in gf100_clk_tidy() local
413 memset(priv->eng, 0x00, sizeof(priv->eng)); in gf100_clk_tidy()
437 struct gf100_clk_priv *priv; in gf100_clk_ctor() local
441 NULL, 0, false, &priv); in gf100_clk_ctor()
442 *pobject = nv_object(priv); in gf100_clk_ctor()
446 priv->base.read = gf100_clk_read; in gf100_clk_ctor()
447 priv->base.calc = gf100_clk_calc; in gf100_clk_ctor()
448 priv->base.prog = gf100_clk_prog; in gf100_clk_ctor()
449 priv->base.tidy = gf100_clk_tidy; in gf100_clk_ctor()