Lines Matching refs:clk
43 read_vco(struct gt215_clk *clk, int idx) in read_vco() argument
45 struct nvkm_device *device = clk->base.subdev.device; in read_vco()
52 return read_pll(clk, 0x41, 0x00e820); in read_vco()
54 return read_pll(clk, 0x42, 0x00e8a0); in read_vco()
61 read_clk(struct gt215_clk *clk, int idx, bool ignore_en) in read_clk() argument
63 struct nvkm_device *device = clk->base.subdev.device; in read_clk()
99 sclk = read_vco(clk, idx); in read_clk()
108 read_pll(struct gt215_clk *clk, int idx, u32 pll) in read_pll() argument
110 struct nvkm_device *device = clk->base.subdev.device; in read_pll()
127 sclk = read_clk(clk, 0x00 + idx, false); in read_pll()
130 sclk = read_clk(clk, 0x10 + idx, false); in read_pll()
142 struct gt215_clk *clk = gt215_clk(base); in gt215_clk_read() local
143 struct nvkm_subdev *subdev = &clk->base.subdev; in gt215_clk_read()
152 return read_pll(clk, 0x00, 0x4200); in gt215_clk_read()
154 return read_pll(clk, 0x01, 0x4220); in gt215_clk_read()
156 return read_pll(clk, 0x02, 0x4000); in gt215_clk_read()
158 return read_clk(clk, 0x20, false); in gt215_clk_read()
160 return read_clk(clk, 0x21, false); in gt215_clk_read()
162 return read_clk(clk, 0x25, false); in gt215_clk_read()
167 return read_clk(clk, 0x1d, false); in gt215_clk_read()
187 struct gt215_clk *clk = gt215_clk(base); in gt215_clk_info() local
191 info->clk = 0; in gt215_clk_info()
195 info->clk = 0x00000100; in gt215_clk_info()
198 info->clk = 0x00002100; in gt215_clk_info()
201 info->clk = 0x00002140; in gt215_clk_info()
204 sclk = read_vco(clk, idx); in gt215_clk_info()
221 info->clk = (((sdiv - 2) << 16) | 0x00003100); in gt215_clk_info()
235 struct gt215_clk *clk = gt215_clk(base); in gt215_pll_info() local
236 struct nvkm_subdev *subdev = &clk->base.subdev; in gt215_pll_info()
245 ret = gt215_clk_info(&clk->base, idx, khz, info); in gt215_pll_info()
256 ret = gt215_clk_info(&clk->base, idx - 0x10, limits.refclk, info); in gt215_pll_info()
271 calc_clk(struct gt215_clk *clk, struct nvkm_cstate *cstate, in calc_clk() argument
274 int ret = gt215_pll_info(&clk->base, idx, pll, cstate->domain[dom], in calc_clk()
275 &clk->eng[dom]); in calc_clk()
282 calc_host(struct gt215_clk *clk, struct nvkm_cstate *cstate) in calc_host() argument
286 struct gt215_clk_info *info = &clk->eng[nv_clk_src_host]; in calc_host()
289 info->clk = 0; in calc_host()
296 ret = gt215_clk_info(&clk->base, 0x1d, kHz, info); in calc_host()
304 gt215_clk_pre(struct nvkm_clk *clk, unsigned long *flags) in gt215_clk_pre() argument
306 struct nvkm_device *device = clk->subdev.device; in gt215_clk_pre()
339 gt215_clk_post(struct nvkm_clk *clk, unsigned long *flags) in gt215_clk_post() argument
341 struct nvkm_device *device = clk->subdev.device; in gt215_clk_post()
352 disable_clk_src(struct gt215_clk *clk, u32 src) in disable_clk_src() argument
354 struct nvkm_device *device = clk->base.subdev.device; in disable_clk_src()
360 prog_pll(struct gt215_clk *clk, int idx, u32 pll, int dom) in prog_pll() argument
362 struct gt215_clk_info *info = &clk->eng[dom]; in prog_pll()
363 struct nvkm_device *device = clk->base.subdev.device; in prog_pll()
379 nvkm_mask(device, src0, 0x003f3141, 0x00000101 | info->clk); in prog_pll()
393 disable_clk_src(clk, src1); in prog_pll()
395 nvkm_mask(device, src1, 0x003f3141, 0x00000101 | info->clk); in prog_pll()
399 disable_clk_src(clk, src0); in prog_pll()
404 prog_clk(struct gt215_clk *clk, int idx, int dom) in prog_clk() argument
406 struct gt215_clk_info *info = &clk->eng[dom]; in prog_clk()
407 struct nvkm_device *device = clk->base.subdev.device; in prog_clk()
408 nvkm_mask(device, 0x004120 + (idx * 4), 0x003f3141, 0x00000101 | info->clk); in prog_clk()
412 prog_host(struct gt215_clk *clk) in prog_host() argument
414 struct gt215_clk_info *info = &clk->eng[nv_clk_src_host]; in prog_host()
415 struct nvkm_device *device = clk->base.subdev.device; in prog_host()
422 disable_clk_src(clk, 0x4194); in prog_host()
426 prog_clk(clk, 0x1d, nv_clk_src_host); in prog_host()
440 prog_core(struct gt215_clk *clk, int dom) in prog_core() argument
442 struct gt215_clk_info *info = &clk->eng[dom]; in prog_core()
443 struct nvkm_device *device = clk->base.subdev.device; in prog_core()
449 prog_pll(clk, 0x00, 0x004200, dom); in prog_core()
458 struct gt215_clk *clk = gt215_clk(base); in gt215_clk_calc() local
459 struct gt215_clk_info *core = &clk->eng[nv_clk_src_core]; in gt215_clk_calc()
462 if ((ret = calc_clk(clk, cstate, 0x10, 0x4200, nv_clk_src_core)) || in gt215_clk_calc()
463 (ret = calc_clk(clk, cstate, 0x11, 0x4220, nv_clk_src_shader)) || in gt215_clk_calc()
464 (ret = calc_clk(clk, cstate, 0x20, 0x0000, nv_clk_src_disp)) || in gt215_clk_calc()
465 (ret = calc_clk(clk, cstate, 0x21, 0x0000, nv_clk_src_vdec)) || in gt215_clk_calc()
466 (ret = calc_host(clk, cstate))) in gt215_clk_calc()
472 ret = gt215_clk_info(&clk->base, 0x10, in gt215_clk_calc()
474 &clk->eng[nv_clk_src_core_intm]); in gt215_clk_calc()
485 struct gt215_clk *clk = gt215_clk(base); in gt215_clk_prog() local
486 struct gt215_clk_info *core = &clk->eng[nv_clk_src_core]; in gt215_clk_prog()
491 ret = gt215_clk_pre(&clk->base, f); in gt215_clk_prog()
496 prog_core(clk, nv_clk_src_core_intm); in gt215_clk_prog()
498 prog_core(clk, nv_clk_src_core); in gt215_clk_prog()
499 prog_pll(clk, 0x01, 0x004220, nv_clk_src_shader); in gt215_clk_prog()
500 prog_clk(clk, 0x20, nv_clk_src_disp); in gt215_clk_prog()
501 prog_clk(clk, 0x21, nv_clk_src_vdec); in gt215_clk_prog()
502 prog_host(clk); in gt215_clk_prog()
508 gt215_clk_post(&clk->base, f); in gt215_clk_prog()
539 struct gt215_clk *clk; in gt215_clk_new() local
541 if (!(clk = kzalloc(sizeof(*clk), GFP_KERNEL))) in gt215_clk_new()
543 *pclk = &clk->base; in gt215_clk_new()
545 return nvkm_clk_ctor(>215_clk, device, index, true, &clk->base); in gt215_clk_new()