1 // SPDX-License-Identifier: GPL-2.0-only
3 * OMAP2-specific DPLL control functions
5 * Copyright (C) 2011 Nokia Corporation
9 #include <linux/kernel.h>
10 #include <linux/errno.h>
11 #include <linux/clk.h>
16 #include "cm-regbits-24xx.h"
18 /* Private functions */
21 * _allow_idle - enable DPLL autoidle bits
22 * @clk: struct clk * of the DPLL to operate on
24 * Enable DPLL automatic idle control. The DPLL will enter low-power
25 * stop when its downstream clocks are gated. No return value.
26 * REVISIT: DPLL can optionally enter low-power bypass by writing 0x1
27 * instead. Add some mechanism to optionally enter this mode.
29 static void _allow_idle(struct clk_hw_omap
*clk
)
31 if (!clk
|| !clk
->dpll_data
)
34 omap2xxx_cm_set_dpll_auto_low_power_stop();
38 * _deny_idle - prevent DPLL from automatically idling
39 * @clk: struct clk * of the DPLL to operate on
41 * Disable DPLL automatic idle control. No return value.
43 static void _deny_idle(struct clk_hw_omap
*clk
)
45 if (!clk
|| !clk
->dpll_data
)
48 omap2xxx_cm_set_dpll_disable_autoidle();
53 const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll
= {
54 .allow_idle
= _allow_idle
,
55 .deny_idle
= _deny_idle
,