blob: 58fab40a2e4530abba059ebc1f27e4f9ab0c5d34 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Jorge Ramirez-Ortiz7c75f7f2018-01-10 11:33:49 +01002/*
3 * Qualcomm APQ8016, APQ8096
4 *
5 * (C) Copyright 2017 Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Jorge Ramirez-Ortiz7c75f7f2018-01-10 11:33:49 +01006 */
7#ifndef _CLOCK_SNAPDRAGON_H
8#define _CLOCK_SNAPDRAGON_H
9
10#define CFG_CLK_SRC_CXO (0 << 8)
11#define CFG_CLK_SRC_GPLL0 (1 << 8)
12#define CFG_CLK_SRC_MASK (7 << 8)
13
Ramon Fried640dc342018-05-16 12:13:39 +030014struct pll_vote_clk {
Jorge Ramirez-Ortiz7c75f7f2018-01-10 11:33:49 +010015 uintptr_t status;
16 int status_bit;
17 uintptr_t ena_vote;
18 int vote_bit;
19};
20
Ramon Fried640dc342018-05-16 12:13:39 +030021struct vote_clk {
22 uintptr_t cbcr_reg;
23 uintptr_t ena_vote;
24 int vote_bit;
25};
Jorge Ramirez-Ortiz7c75f7f2018-01-10 11:33:49 +010026struct bcr_regs {
27 uintptr_t cfg_rcgr;
28 uintptr_t cmd_rcgr;
29 uintptr_t M;
30 uintptr_t N;
31 uintptr_t D;
32};
33
34struct msm_clk_priv {
35 phys_addr_t base;
36};
37
Ramon Fried640dc342018-05-16 12:13:39 +030038void clk_enable_gpll0(phys_addr_t base, const struct pll_vote_clk *gpll0);
Jorge Ramirez-Ortiz7c75f7f2018-01-10 11:33:49 +010039void clk_bcr_update(phys_addr_t apps_cmd_rgcr);
40void clk_enable_cbc(phys_addr_t cbcr);
Ramon Fried640dc342018-05-16 12:13:39 +030041void clk_enable_vote_clk(phys_addr_t base, const struct vote_clk *vclk);
Jorge Ramirez-Ortiz7c75f7f2018-01-10 11:33:49 +010042void clk_rcg_set_rate_mnd(phys_addr_t base, const struct bcr_regs *regs,
43 int div, int m, int n, int source);
44
45#endif