s10_clock_manager.h 3.63 KB
Newer Older
1
2
3
4
5
6
7
8
9
/*
 * Copyright (c) 2019, Intel Corporation. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#ifndef __CLOCKMANAGER_H__
#define __CLOCKMANAGER_H__

10
#include "socfpga_handoff.h"
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

#define ALT_CLKMGR				0xffd10000

#define ALT_CLKMGR_CTRL				0x0
#define ALT_CLKMGR_STAT				0x4
#define ALT_CLKMGR_INTRCLR			0x14
#define ALT_CLKMGR_INTRCLR_MAINLOCKLOST_SET_MSK	0x00000004
#define ALT_CLKMGR_INTRCLR_PERLOCKLOST_SET_MSK	0x00000008

#define ALT_CLKMGR_CTRL_BOOTMODE_SET_MSK	0x00000001
#define ALT_CLKMGR_STAT_BUSY_E_BUSY		0x1
#define ALT_CLKMGR_STAT_BUSY(x)			(((x) & 0x00000001) >> 0)
#define ALT_CLKMGR_STAT_MAINPLLLOCKED(x)	(((x) & 0x00000100) >> 8)
#define ALT_CLKMGR_STAT_PERPLLLOCKED(x)		(((x) & 0x00000200) >> 9)

#define ALT_CLKMGR_MAINPLL			0xffd10030
#define ALT_CLKMGR_MAINPLL_EN			0x0
#define ALT_CLKMGR_MAINPLL_BYPASS		0xc
#define ALT_CLKMGR_MAINPLL_MPUCLK		0x18
#define ALT_CLKMGR_MAINPLL_NOCCLK		0x1c
#define ALT_CLKMGR_MAINPLL_CNTR2CLK		0x20
#define ALT_CLKMGR_MAINPLL_CNTR3CLK		0x24
#define ALT_CLKMGR_MAINPLL_CNTR4CLK		0x28
#define ALT_CLKMGR_MAINPLL_CNTR5CLK		0x2c
#define ALT_CLKMGR_MAINPLL_CNTR6CLK		0x30
#define ALT_CLKMGR_MAINPLL_CNTR7CLK		0x34
#define ALT_CLKMGR_MAINPLL_CNTR8CLK		0x38
#define ALT_CLKMGR_MAINPLL_CNTR9CLK		0x3c
#define ALT_CLKMGR_MAINPLL_NOCDIV		0x40
#define ALT_CLKMGR_MAINPLL_PLLGLOB		0x44
#define ALT_CLKMGR_MAINPLL_FDBCK		0x48
#define ALT_CLKMGR_MAINPLL_PLLC0		0x54
#define ALT_CLKMGR_MAINPLL_PLLC1		0x58
#define ALT_CLKMGR_MAINPLL_VCOCALIB		0x5c
#define ALT_CLKMGR_MAINPLL_EN_RESET		0x000000ff
#define ALT_CLKMGR_MAINPLL_FDBCK_MDIV(x)	(((x) & 0xff000000) >> 24)
#define ALT_CLKMGR_MAINPLL_PLLGLOB_PD_SET_MSK	0x00000001
#define ALT_CLKMGR_MAINPLL_PLLGLOB_REFCLKDIV(x)	(((x) & 0x00003f00) >> 8)
#define ALT_CLKMGR_MAINPLL_PLLGLOB_RST_SET_MSK	0x00000002
#define ALT_CLKMGR_MAINPLL_VCOCALIB_HSCNT_SET(x) (((x) << 0) & 0x000000ff)
#define ALT_CLKMGR_MAINPLL_VCOCALIB_MSCNT_SET(x) (((x) << 9) & 0x0001fe00)

53
54
55
56
57
58
59
#define ALT_CLKMGR_PSRC(x)			(((x) & 0x00030000) >> 16)
#define ALT_CLKMGR_SRC_MAIN			0
#define ALT_CLKMGR_SRC_PER			1

#define ALT_CLKMGR_PLLGLOB_PSRC_EOSC1		0x0
#define ALT_CLKMGR_PLLGLOB_PSRC_INTOSC		0x1
#define ALT_CLKMGR_PLLGLOB_PSRC_F2S		0x2
60

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#define ALT_CLKMGR_PERPLL			0xffd100a4
#define ALT_CLKMGR_PERPLL_EN			0x0
#define ALT_CLKMGR_PERPLL_BYPASS		0xc
#define ALT_CLKMGR_PERPLL_CNTR2CLK		0x18
#define ALT_CLKMGR_PERPLL_CNTR3CLK		0x1c
#define ALT_CLKMGR_PERPLL_CNTR4CLK		0x20
#define ALT_CLKMGR_PERPLL_CNTR5CLK		0x24
#define ALT_CLKMGR_PERPLL_CNTR6CLK		0x28
#define ALT_CLKMGR_PERPLL_CNTR7CLK		0x2c
#define ALT_CLKMGR_PERPLL_CNTR8CLK		0x30
#define ALT_CLKMGR_PERPLL_CNTR9CLK		0x34
#define ALT_CLKMGR_PERPLL_GPIODIV		0x3c
#define ALT_CLKMGR_PERPLL_EMACCTL		0x38
#define ALT_CLKMGR_PERPLL_PLLGLOB		0x40
#define ALT_CLKMGR_PERPLL_FDBCK			0x44
#define ALT_CLKMGR_PERPLL_PLLC0			0x50
#define ALT_CLKMGR_PERPLL_PLLC1			0x54
#define ALT_CLKMGR_PERPLL_EN_RESET		0x00000fff
#define ALT_CLKMGR_PERPLL_FDBCK_MDIV(x)		(((x) & 0xff000000) >> 24)
#define ALT_CLKMGR_PERPLL_GPIODIV_GPIODBCLK_SET(x) (((x) << 0) & 0x0000ffff)
#define ALT_CLKMGR_PERPLL_PLLGLOB_PD_SET_MSK	0x00000001
#define ALT_CLKMGR_PERPLL_PLLGLOB_REFCLKDIV(x)	(((x) & 0x00003f00) >> 8)
#define ALT_CLKMGR_PERPLL_PLLGLOB_REFCLKDIV_SET(x) (((x) << 8) & 0x00003f00)
#define ALT_CLKMGR_PERPLL_PLLGLOB_RST_SET_MSK	0x00000002
#define ALT_CLKMGR_PERPLL_VCOCALIB_HSCNT_SET(x) (((x) << 0) & 0x000000ff)
#define ALT_CLKMGR_PERPLL_VCOCALIB_MSCNT_SET(x) (((x) << 9) & 0x0001fe00)
#define ALT_CLKMGR_PERPLL_VCOCALIB		0x58

89
#define ALT_CLKMGR_INTOSC_HZ			460000000
90

91
void config_clkmgr_handoff(handoff *hoff_ptr);
92
93
94
uint32_t get_wdt_clk(void);
uint32_t get_uart_clk(void);
uint32_t get_mmc_clk(void);
95
96

#endif