blob: 9f6cfb265f4342f3b9e36b682cbb541462846397 [file] [log] [blame]
Vitaly Andrianovef509b92014-04-04 13:16:53 -04001/*
2 * keystone2: common clock header file
3 *
4 * (C) Copyright 2012-2014
5 * Texas Instruments Incorporated, <www.ti.com>
6 *
7 * SPDX-License-Identifier: GPL-2.0+
8 */
9
10#ifndef __ASM_ARCH_CLOCK_H
11#define __ASM_ARCH_CLOCK_H
12
Khoronzhuk, Ivan8dfc15f2014-07-09 23:44:47 +030013#ifndef __ASSEMBLY__
14
Vitaly Andrianovef509b92014-04-04 13:16:53 -040015#ifdef CONFIG_SOC_K2HK
16#include <asm/arch/clock-k2hk.h>
17#endif
18
Hao Zhang4dca7f02014-07-16 00:59:23 +030019#ifdef CONFIG_SOC_K2E
20#include <asm/arch/clock-k2e.h>
21#endif
22
Hao Zhang61d12252014-10-22 16:32:29 +030023#ifdef CONFIG_SOC_K2L
24#include <asm/arch/clock-k2l.h>
25#endif
26
Khoronzhuk, Ivan8dfc15f2014-07-09 23:44:47 +030027#define MAIN_PLL CORE_PLL
28
29#include <asm/types.h>
30
Khoronzhuk, Ivan529ce1e2014-10-22 16:01:28 +030031#define GENERATE_ENUM(NUM, ENUM) ENUM = NUM,
32#define GENERATE_INDX_STR(NUM, STRING) #NUM"\t- "#STRING"\n"
33#define CLOCK_INDEXES_LIST CLK_LIST(GENERATE_INDX_STR)
34
35enum clk_e {
36 CLK_LIST(GENERATE_ENUM)
37};
38
Khoronzhuk, Ivan8dfc15f2014-07-09 23:44:47 +030039struct keystone_pll_regs {
40 u32 reg0;
41 u32 reg1;
42};
43
44/* PLL configuration data */
45struct pll_init_data {
46 int pll;
47 int pll_m; /* PLL Multiplier */
48 int pll_d; /* PLL divider */
49 int pll_od; /* PLL output divider */
50};
51
52extern const struct keystone_pll_regs keystone_pll_regs[];
Vitaly Andrianov61f66fd2014-07-25 22:23:19 +030053extern int dev_speeds[];
54extern int arm_speeds[];
Khoronzhuk, Ivan8dfc15f2014-07-09 23:44:47 +030055
56void init_plls(int num_pll, struct pll_init_data *config);
57void init_pll(const struct pll_init_data *data);
58unsigned long clk_get_rate(unsigned int clk);
59unsigned long clk_round_rate(unsigned int clk, unsigned long hz);
60int clk_set_rate(unsigned int clk, unsigned long hz);
Khoronzhuk, Ivan69a3b812014-10-17 21:01:16 +030061void pass_pll_pa_clk_enable(void);
Vitaly Andrianov61f66fd2014-07-25 22:23:19 +030062int get_max_dev_speed(void);
63int get_max_arm_speed(void);
Khoronzhuk, Ivan8dfc15f2014-07-09 23:44:47 +030064
65#endif
Vitaly Andrianovef509b92014-04-04 13:16:53 -040066#endif