Lines Matching refs:xvcu

294 static int xvcu_set_vcu_pll_info(struct xvcu_device *xvcu)  in xvcu_set_vcu_pll_info()  argument
303 inte = xvcu_read(xvcu->logicore_reg_ba, VCU_PLL_CLK); in xvcu_set_vcu_pll_info()
304 deci = xvcu_read(xvcu->logicore_reg_ba, VCU_PLL_CLK_DEC); in xvcu_set_vcu_pll_info()
305 coreclk = xvcu_read(xvcu->logicore_reg_ba, VCU_CORE_CLK) * MHZ; in xvcu_set_vcu_pll_info()
306 mcuclk = xvcu_read(xvcu->logicore_reg_ba, VCU_MCU_CLK) * MHZ; in xvcu_set_vcu_pll_info()
308 dev_err(xvcu->dev, "Invalid mcu and core clock data\n"); in xvcu_set_vcu_pll_info()
313 dev_dbg(xvcu->dev, "Ref clock from logicoreIP is %uHz\n", refclk); in xvcu_set_vcu_pll_info()
314 dev_dbg(xvcu->dev, "Core clock from logicoreIP is %uHz\n", coreclk); in xvcu_set_vcu_pll_info()
315 dev_dbg(xvcu->dev, "Mcu clock from logicoreIP is %uHz\n", mcuclk); in xvcu_set_vcu_pll_info()
317 clk_disable_unprepare(xvcu->pll_ref); in xvcu_set_vcu_pll_info()
318 ret = clk_set_rate(xvcu->pll_ref, refclk); in xvcu_set_vcu_pll_info()
320 dev_warn(xvcu->dev, "failed to set logicoreIP refclk rate\n"); in xvcu_set_vcu_pll_info()
322 ret = clk_prepare_enable(xvcu->pll_ref); in xvcu_set_vcu_pll_info()
324 dev_err(xvcu->dev, "failed to enable pll_ref clock source\n"); in xvcu_set_vcu_pll_info()
328 refclk = clk_get_rate(xvcu->pll_ref); in xvcu_set_vcu_pll_info()
335 vcu_pll_ctrl = xvcu_read(xvcu->vcu_slcr_ba, VCU_PLL_CTRL); in xvcu_set_vcu_pll_info()
339 dev_err(xvcu->dev, "clkoutdiv value is invalid\n"); in xvcu_set_vcu_pll_info()
373 dev_err(xvcu->dev, "Invalid clock combination.\n"); in xvcu_set_vcu_pll_info()
377 xvcu->coreclk = pll_clk / divisor_core; in xvcu_set_vcu_pll_info()
379 dev_dbg(xvcu->dev, "Actual Ref clock freq is %uHz\n", refclk); in xvcu_set_vcu_pll_info()
380 dev_dbg(xvcu->dev, "Actual Core clock freq is %uHz\n", xvcu->coreclk); in xvcu_set_vcu_pll_info()
381 dev_dbg(xvcu->dev, "Actual Mcu clock freq is %uHz\n", mcuclk); in xvcu_set_vcu_pll_info()
394 xvcu_write(xvcu->vcu_slcr_ba, VCU_PLL_CTRL, vcu_pll_ctrl); in xvcu_set_vcu_pll_info()
397 ctrl = xvcu_read(xvcu->vcu_slcr_ba, VCU_ENC_CORE_CTRL); in xvcu_set_vcu_pll_info()
403 xvcu_write(xvcu->vcu_slcr_ba, VCU_ENC_CORE_CTRL, ctrl); in xvcu_set_vcu_pll_info()
405 ctrl = xvcu_read(xvcu->vcu_slcr_ba, VCU_DEC_CORE_CTRL); in xvcu_set_vcu_pll_info()
411 xvcu_write(xvcu->vcu_slcr_ba, VCU_DEC_CORE_CTRL, ctrl); in xvcu_set_vcu_pll_info()
413 ctrl = xvcu_read(xvcu->vcu_slcr_ba, VCU_ENC_MCU_CTRL); in xvcu_set_vcu_pll_info()
418 xvcu_write(xvcu->vcu_slcr_ba, VCU_ENC_MCU_CTRL, ctrl); in xvcu_set_vcu_pll_info()
420 ctrl = xvcu_read(xvcu->vcu_slcr_ba, VCU_DEC_MCU_CTRL); in xvcu_set_vcu_pll_info()
425 xvcu_write(xvcu->vcu_slcr_ba, VCU_DEC_MCU_CTRL, ctrl); in xvcu_set_vcu_pll_info()
433 xvcu_write(xvcu->vcu_slcr_ba, VCU_PLL_CFG, cfg_val); in xvcu_set_vcu_pll_info()
447 static int xvcu_set_pll(struct xvcu_device *xvcu) in xvcu_set_pll() argument
453 ret = xvcu_set_vcu_pll_info(xvcu); in xvcu_set_pll()
455 dev_err(xvcu->dev, "failed to set pll info\n"); in xvcu_set_pll()
459 xvcu_write_field_reg(xvcu->vcu_slcr_ba, VCU_PLL_CTRL, in xvcu_set_pll()
462 xvcu_write_field_reg(xvcu->vcu_slcr_ba, VCU_PLL_CTRL, in xvcu_set_pll()
465 xvcu_write_field_reg(xvcu->vcu_slcr_ba, VCU_PLL_CTRL, in xvcu_set_pll()
474 lock_status = xvcu_read(xvcu->vcu_slcr_ba, VCU_PLL_STATUS); in xvcu_set_pll()
476 xvcu_write_field_reg(xvcu->vcu_slcr_ba, VCU_PLL_CTRL, in xvcu_set_pll()
484 dev_err(xvcu->dev, "PLL is not locked\n"); in xvcu_set_pll()
500 struct xvcu_device *xvcu; in xvcu_probe() local
503 xvcu = devm_kzalloc(&pdev->dev, sizeof(*xvcu), GFP_KERNEL); in xvcu_probe()
504 if (!xvcu) in xvcu_probe()
507 xvcu->dev = &pdev->dev; in xvcu_probe()
514 xvcu->vcu_slcr_ba = devm_ioremap(&pdev->dev, res->start, in xvcu_probe()
516 if (!xvcu->vcu_slcr_ba) { in xvcu_probe()
527 xvcu->logicore_reg_ba = devm_ioremap(&pdev->dev, res->start, in xvcu_probe()
529 if (!xvcu->logicore_reg_ba) { in xvcu_probe()
534 xvcu->aclk = devm_clk_get(&pdev->dev, "aclk"); in xvcu_probe()
535 if (IS_ERR(xvcu->aclk)) { in xvcu_probe()
537 return PTR_ERR(xvcu->aclk); in xvcu_probe()
540 xvcu->pll_ref = devm_clk_get(&pdev->dev, "pll_ref"); in xvcu_probe()
541 if (IS_ERR(xvcu->pll_ref)) { in xvcu_probe()
543 return PTR_ERR(xvcu->pll_ref); in xvcu_probe()
546 ret = clk_prepare_enable(xvcu->aclk); in xvcu_probe()
552 ret = clk_prepare_enable(xvcu->pll_ref); in xvcu_probe()
563 xvcu_write(xvcu->logicore_reg_ba, VCU_GASKET_INIT, VCU_GASKET_VALUE); in xvcu_probe()
566 ret = xvcu_set_pll(xvcu); in xvcu_probe()
572 dev_set_drvdata(&pdev->dev, xvcu); in xvcu_probe()
579 clk_disable_unprepare(xvcu->pll_ref); in xvcu_probe()
581 clk_disable_unprepare(xvcu->aclk); in xvcu_probe()
595 struct xvcu_device *xvcu; in xvcu_remove() local
597 xvcu = platform_get_drvdata(pdev); in xvcu_remove()
598 if (!xvcu) in xvcu_remove()
602 xvcu_write(xvcu->logicore_reg_ba, VCU_GASKET_INIT, 0); in xvcu_remove()
604 clk_disable_unprepare(xvcu->pll_ref); in xvcu_remove()
605 clk_disable_unprepare(xvcu->aclk); in xvcu_remove()