mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.3 KiB
56 lines
1.3 KiB
// SPDX-License-Identifier: GPL-2.0-only |
|
/* |
|
* OMAP2-specific DPLL control functions |
|
* |
|
* Copyright (C) 2011 Nokia Corporation |
|
* Paul Walmsley |
|
*/ |
|
|
|
#include <linux/kernel.h> |
|
#include <linux/errno.h> |
|
#include <linux/clk.h> |
|
#include <linux/io.h> |
|
|
|
#include "clock.h" |
|
#include "cm2xxx.h" |
|
#include "cm-regbits-24xx.h" |
|
|
|
/* Private functions */ |
|
|
|
/** |
|
* _allow_idle - enable DPLL autoidle bits |
|
* @clk: struct clk * of the DPLL to operate on |
|
* |
|
* Enable DPLL automatic idle control. The DPLL will enter low-power |
|
* stop when its downstream clocks are gated. No return value. |
|
* REVISIT: DPLL can optionally enter low-power bypass by writing 0x1 |
|
* instead. Add some mechanism to optionally enter this mode. |
|
*/ |
|
static void _allow_idle(struct clk_hw_omap *clk) |
|
{ |
|
if (!clk || !clk->dpll_data) |
|
return; |
|
|
|
omap2xxx_cm_set_dpll_auto_low_power_stop(); |
|
} |
|
|
|
/** |
|
* _deny_idle - prevent DPLL from automatically idling |
|
* @clk: struct clk * of the DPLL to operate on |
|
* |
|
* Disable DPLL automatic idle control. No return value. |
|
*/ |
|
static void _deny_idle(struct clk_hw_omap *clk) |
|
{ |
|
if (!clk || !clk->dpll_data) |
|
return; |
|
|
|
omap2xxx_cm_set_dpll_disable_autoidle(); |
|
} |
|
|
|
|
|
/* Public data */ |
|
const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll = { |
|
.allow_idle = _allow_idle, |
|
.deny_idle = _deny_idle, |
|
};
|
|
|