Lines Matching defs:axi_clkgen

49 struct axi_clkgen {
213 static void axi_clkgen_write(struct axi_clkgen *axi_clkgen,
216 writel(val, axi_clkgen->base + reg);
219 static void axi_clkgen_read(struct axi_clkgen *axi_clkgen,
222 *val = readl(axi_clkgen->base + reg);
225 static int axi_clkgen_wait_non_busy(struct axi_clkgen *axi_clkgen)
231 axi_clkgen_read(axi_clkgen, AXI_CLKGEN_V2_REG_DRP_STATUS, &val);
240 static int axi_clkgen_mmcm_read(struct axi_clkgen *axi_clkgen,
246 ret = axi_clkgen_wait_non_busy(axi_clkgen);
253 axi_clkgen_write(axi_clkgen, AXI_CLKGEN_V2_REG_DRP_CNTRL, reg_val);
255 ret = axi_clkgen_wait_non_busy(axi_clkgen);
264 static int axi_clkgen_mmcm_write(struct axi_clkgen *axi_clkgen,
270 ret = axi_clkgen_wait_non_busy(axi_clkgen);
275 axi_clkgen_mmcm_read(axi_clkgen, reg, &reg_val);
281 axi_clkgen_write(axi_clkgen, AXI_CLKGEN_V2_REG_DRP_CNTRL, reg_val);
286 static void axi_clkgen_mmcm_enable(struct axi_clkgen *axi_clkgen,
294 axi_clkgen_write(axi_clkgen, AXI_CLKGEN_V2_REG_RESET, val);
297 static struct axi_clkgen *clk_hw_to_axi_clkgen(struct clk_hw *clk_hw)
299 return container_of(clk_hw, struct axi_clkgen, clk_hw);
302 static void axi_clkgen_set_div(struct axi_clkgen *axi_clkgen,
306 axi_clkgen_mmcm_write(axi_clkgen, reg1,
308 axi_clkgen_mmcm_write(axi_clkgen, reg2,
313 axi_clkgen_mmcm_write(axi_clkgen, reg3,
321 struct axi_clkgen *axi_clkgen = clk_hw_to_axi_clkgen(clk_hw);
339 axi_clkgen_mmcm_write(axi_clkgen, MMCM_REG_POWER, power, 0x9800);
345 axi_clkgen_set_div(axi_clkgen, MMCM_REG_CLKOUT0_1, MMCM_REG_CLKOUT0_2,
349 axi_clkgen_mmcm_write(axi_clkgen, MMCM_REG_CLK_DIV,
354 axi_clkgen_set_div(axi_clkgen, MMCM_REG_CLK_FB1, MMCM_REG_CLK_FB2,
357 axi_clkgen_mmcm_write(axi_clkgen, MMCM_REG_LOCK1, lock & 0x3ff, 0x3ff);
358 axi_clkgen_mmcm_write(axi_clkgen, MMCM_REG_LOCK2,
360 axi_clkgen_mmcm_write(axi_clkgen, MMCM_REG_LOCK3,
362 axi_clkgen_mmcm_write(axi_clkgen, MMCM_REG_FILTER1, filter >> 16, 0x9900);
363 axi_clkgen_mmcm_write(axi_clkgen, MMCM_REG_FILTER2, filter, 0x9900);
385 static unsigned int axi_clkgen_get_div(struct axi_clkgen *axi_clkgen,
391 axi_clkgen_mmcm_read(axi_clkgen, reg2, &val2);
395 axi_clkgen_mmcm_read(axi_clkgen, reg1, &val1);
415 struct axi_clkgen *axi_clkgen = clk_hw_to_axi_clkgen(clk_hw);
420 dout = axi_clkgen_get_div(axi_clkgen, MMCM_REG_CLKOUT0_1,
422 m = axi_clkgen_get_div(axi_clkgen, MMCM_REG_CLK_FB1,
425 axi_clkgen_mmcm_read(axi_clkgen, MMCM_REG_CLK_DIV, &val);
442 struct axi_clkgen *axi_clkgen = clk_hw_to_axi_clkgen(clk_hw);
444 axi_clkgen_mmcm_enable(axi_clkgen, true);
451 struct axi_clkgen *axi_clkgen = clk_hw_to_axi_clkgen(clk_hw);
453 axi_clkgen_mmcm_enable(axi_clkgen, false);
458 struct axi_clkgen *axi_clkgen = clk_hw_to_axi_clkgen(clk_hw);
460 axi_clkgen_write(axi_clkgen, AXI_CLKGEN_V2_REG_CLKSEL, index);
467 struct axi_clkgen *axi_clkgen = clk_hw_to_axi_clkgen(clk_hw);
470 axi_clkgen_read(axi_clkgen, AXI_CLKGEN_V2_REG_CLKSEL, &parent);
496 struct axi_clkgen *axi_clkgen;
511 axi_clkgen = devm_kzalloc(&pdev->dev, sizeof(*axi_clkgen), GFP_KERNEL);
512 if (!axi_clkgen)
516 axi_clkgen->base = devm_ioremap_resource(&pdev->dev, mem);
517 if (IS_ERR(axi_clkgen->base))
518 return PTR_ERR(axi_clkgen->base);
539 axi_clkgen_mmcm_enable(axi_clkgen, false);
541 axi_clkgen->clk_hw.init = &init;
542 ret = devm_clk_hw_register(&pdev->dev, &axi_clkgen->clk_hw);
547 &axi_clkgen->clk_hw);