blob: 0064305ac8c467f46026623ade9fa9dc63cb7893 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*******************************************************************************
2 * Copyright Statement:
3 * --------------------
4 * This software is protected by Copyright and the information contained
5 * herein is confidential. The software may not be copied and the information
6 * contained herein may not be used or disclosed except with the written
7 * permission of MediaTek Inc. (C) 2012
8 *
9 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10 * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11 * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12 * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15 * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16 * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17 * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18 * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19 * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20 * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21 *
22 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24 * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25 * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26 * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27 *
28 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30 * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31 * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32 * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33 *
34 ******************************************************************************/
35
36/*******************************************************************************
37 * Filename:
38 * ---------
39 * pll_gen97p.h
40 *
41 * Project:
42 * --------
43 * UMOLYE
44 *
45 * Description:
46 * ------------
47 * PLL Related Functions
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 * ============================================================================
54 * $Log$
55 *
56 *
57 *
58 ****************************************************************************/
59
60#ifndef __PLL_MT6297P_H__
61#define __PLL_MT6297P_H__
62//wolf: the code below is not ready, just for build pass~
63/*******************************************************************************
64 * Locally Used Options
65 ******************************************************************************/
66#define PLL_REG32(addr) *(volatile kal_uint32 *)(addr)
67#define PLL_TYPE (volatile kal_uint32 *)
68
69/*******************************************************************************
70 * Define macro for boot code
71 ******************************************************************************/
72#define __SECTION__(S) __attribute__((__section__(#S)))
73#define __PLL_CODE_IN_BOOT__ __SECTION__(BR_EXT)/* "BR_EXT" section for bootROM */
74
75/*******************************************************************************
76 * Register Define
77 ******************************************************************************/
78
79///////////////////////////////////////////////////////////////////////////////
80/// PLLMIXED (0xA0140000)
81///////////////////////////////////////////////////////////////////////////////
82/* ==========PLL setting========== */
83#define REG_MDTOP_PLLMIXED_CODA_VERSION (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x0))
84#define REG_MDTOP_PLLMIXED_DCXO_PLL_SETTLE_CTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4))
85#define REG_MDTOP_PLLMIXED_DCXO_RDY_WO_ACK (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x8))
86#define REG_MDTOP_PLLMIXED_DCXO_MODE_CTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC))
87#define REG_MDTOP_PLLMIXED_PLL_ON_CTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x10))
88#define REG_MDTOP_PLLMIXED_PLL_SW_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x14))
89#define REG_MDTOP_PLLMIXED_PLL_SW_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x18))
90#define REG_MDTOP_PLLMIXED_PLL_SW_CTL2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x1C))
91#define REG_MDTOP_PLLMIXED_PLL_SETTLE_26M_CTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x20))
92#define REG_MDTOP_PLLMIXED_RF_SETTLE_CTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x24))
93#define REG_MDTOP_PLLMIXED_PLL_DLY_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x30))
94#define REG_MDTOP_PLLMIXED_PLL_DLY_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x34))
95#define REG_MDTOP_PLLMIXED_PLL_DLY_CTL2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x38))
96
97/* ==========PLL frequency control==> PCW & POSDIV========== */
98#define REG_MDTOP_PLLMIXED_MDMCUPLL_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x40))
99#define REG_MDTOP_PLLMIXED_MDMCUPLL_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x44))
100#define REG_MDTOP_PLLMIXED_MDVDSPPLL_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x48))
101#define REG_MDTOP_PLLMIXED_MDVDSPPLL_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4C))
102#define REG_MDTOP_PLLMIXED_MDBRPPLL_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x50))
103#define REG_MDTOP_PLLMIXED_MDBRPPLL_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x54))
104#define REG_MDTOP_PLLMIXED_MDBPIPLL_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x58))
105#define REG_MDTOP_PLLMIXED_MDBPIPLL_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x5C))
106
107#define REG_MDTOP_PLLMIXED_MDNRPLL0_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x68))
108#define REG_MDTOP_PLLMIXED_MDNRPLL0_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x6C))
109#define REG_MDTOP_PLLMIXED_MDNRPLL1_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x70))
110#define REG_MDTOP_PLLMIXED_MDNRPLL1_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x74))
111#define REG_MDTOP_PLLMIXED_MDNRPLL2_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x78))
112#define REG_MDTOP_PLLMIXED_MDNRPLL2_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x7C))
113#define REG_MDTOP_PLLMIXED_MDNRPLL3_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x80))
114#define REG_MDTOP_PLLMIXED_MDNRPLL3_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x84))
115#define REG_MDTOP_PLLMIXED_MDNRPLL4_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x88))
116#define REG_MDTOP_PLLMIXED_MDNRPLL4_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x8C))
117#define REG_MDTOP_PLLMIXED_MDNRPLL5_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x90))
118#define REG_MDTOP_PLLMIXED_MDNRPLL5_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x94))
119#define REG_MDTOP_PLLMIXED_MDPLL_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x98))
120#define REG_MDTOP_PLLMIXED_MDPLL_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x9C))
121#define REG_MDTOP_PLLMIXED_MDPLLGP_RESERVE (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xA0))
122
123#define REG_MDTOP_PLLMIXED_MDPLLGP1_CTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x100))
124#define REG_MDTOP_PLLMIXED_MDPLLGP2_CTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x104))
125#define REG_MDTOP_PLLMIXED_PLL_RESERVE (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x10C))
126#define REG_MDTOP_PLLMIXED_PLL_RESERVE2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x110))
127#define REG_MDTOP_PLLMIXED_PLL_RESERVE3 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x114))
128#define REG_MDTOP_PLLMIXED_PLL_RESERVE4 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x118))
129
130#define REG_MDTOP_PLLMIXED_PLL_DIV_RSTB (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x120))
131#define REG_MDTOP_PLLMIXED_PLL_DIV_EN0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x124))
132#define REG_MDTOP_PLLMIXED_PLL_DIV_EN2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x12C))
133#define REG_MDTOP_PLLMIXED_PLL_DIV_EN3 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x130))
134#define REG_MDTOP_PLLMIXED_PLL_SRC_SEL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x140))
135
136#define REG_MDTOP_PLLMIXED_PLL_FHCTL_RST (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x200))
137
138/* ==========PLL IRQ related========== */
139#define REG_MDTOP_PLLMIXED_PLL_ABNORM_GEARHP_IRQ (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x300))
140#define REG_MDTOP_PLLMIXED_PLL_ABNORM_GEARHP_MASK (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x304))
141#define REG_MDTOP_PLLMIXED_PLL_REQ_WO_DCXO_IRQ (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x308))
142#define REG_MDTOP_PLLMIXED_PLL_REQ_WO_DCXO_MASK (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x30C))
143#define REG_MDTOP_PLLMIXED_PLL_REQ_ABNORM_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x310))
144#define REG_MDTOP_PLLMIXED_PLL_HP_RDY_IRQ (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x314))
145 #define PLLMIXED_MDMCUPLL_HP_RDY_IRQ_OFFSET (1)
146 #define PLLMIXED_MDVDSPPLL_HP_RDY_IRQ_OFFSET (2)
147 #define PLLMIXED_MDBRPPLL_HP_RDY_IRQ_OFFSET (3)
148
149#define REG_MDTOP_PLLMIXED_PLL_HP_RDY_IRQ_MASK (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x318))
150#define REG_MDTOP_PLLMIXED_DCXO_RDY_WO_ACK_MASK (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x31C))
151
152/* PLL IRQ related macro */
153#define PLLMIXED_PLL_HP_RDY_IRQ_MASK (0x1)/* mask bit numbers for each IRQ */
154
155/* ==========PLL FHCTL========== */
156#define REG_MDTOP_PLLMIXED_MDMCUPLL_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x400))
157#define REG_MDTOP_PLLMIXED_MDMCUPLL_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x404))
158#define REG_MDTOP_PLLMIXED_MDMCUPLL_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x408))
159#define REG_MDTOP_PLLMIXED_MDVDSPPLL_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x410))
160#define REG_MDTOP_PLLMIXED_MDVDSPPLL_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x414))
161#define REG_MDTOP_PLLMIXED_MDVDSPPLL_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x418))
162#define REG_MDTOP_PLLMIXED_MDBRPPLL_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x420))
163#define REG_MDTOP_PLLMIXED_MDBRPPLL_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x424))
164#define REG_MDTOP_PLLMIXED_MDBRPPLL_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x428))
165#define REG_MDTOP_PLLMIXED_MDBPIPLL_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x430))
166#define REG_MDTOP_PLLMIXED_MDBPIPLL_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x434))
167#define REG_MDTOP_PLLMIXED_MDBPIPLL_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x438))
168
169#define REG_MDTOP_PLLMIXED_MDNRPLL0_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x450))
170#define REG_MDTOP_PLLMIXED_MDNRPLL0_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x454))
171#define REG_MDTOP_PLLMIXED_MDNRPLL0_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x458))
172#define REG_MDTOP_PLLMIXED_MDNRPLL1_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x460))
173#define REG_MDTOP_PLLMIXED_MDNRPLL1_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x464))
174#define REG_MDTOP_PLLMIXED_MDNRPLL1_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x468))
175#define REG_MDTOP_PLLMIXED_MDNRPLL2_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x470))
176#define REG_MDTOP_PLLMIXED_MDNRPLL2_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x474))
177#define REG_MDTOP_PLLMIXED_MDNRPLL2_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x478))
178#define REG_MDTOP_PLLMIXED_MDNRPLL3_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x480))
179#define REG_MDTOP_PLLMIXED_MDNRPLL3_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x484))
180#define REG_MDTOP_PLLMIXED_MDNRPLL3_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x488))
181#define REG_MDTOP_PLLMIXED_MDNRPLL4_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x490))
182#define REG_MDTOP_PLLMIXED_MDNRPLL4_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x494))
183#define REG_MDTOP_PLLMIXED_MDNRPLL4_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x498))
184#define REG_MDTOP_PLLMIXED_MDNRPLL5_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4A0))
185#define REG_MDTOP_PLLMIXED_MDNRPLL5_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4A4))
186#define REG_MDTOP_PLLMIXED_MDNRPLL5_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4A8))
187#define REG_MDTOP_PLLMIXED_MDPLL_FHCTL (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4B0))
188#define REG_MDTOP_PLLMIXED_MDPLL_FRDDS_LMT (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4B4))
189#define REG_MDTOP_PLLMIXED_MDPLL_SW_GEAR (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x4B8))
190
191/* ==========PLL Gear Set========== */
192#define REG_MDTOP_PLLMIXED_MDMCUPLL_GEAR_SET0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x500))
193#define REG_MDTOP_PLLMIXED_MDMCUPLL_GEAR_SET1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x504))
194#define REG_MDTOP_PLLMIXED_MDMCUPLL_GEAR_SET2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x508))
195#define REG_MDTOP_PLLMIXED_MDMCUPLL_GEAR_SET3 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x50C))
196#define REG_MDTOP_PLLMIXED_MDVDSPPLL_GEAR_SET0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x510))
197#define REG_MDTOP_PLLMIXED_MDVDSPPLL_GEAR_SET1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x514))
198#define REG_MDTOP_PLLMIXED_MDVDSPPLL_GEAR_SET2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x518))
199#define REG_MDTOP_PLLMIXED_MDVDSPPLL_GEAR_SET3 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x51C))
200#define REG_MDTOP_PLLMIXED_MDBRPPLL_GEAR_SET0 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x520))
201#define REG_MDTOP_PLLMIXED_MDBRPPLL_GEAR_SET1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x524))
202#define REG_MDTOP_PLLMIXED_MDBRPPLL_GEAR_SET2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x528))
203#define REG_MDTOP_PLLMIXED_MDBRPPLL_GEAR_SET3 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x52C))
204
205/* ==========PLL Status========== */
206#define REG_MDTOP_PLLMIXED_MDMCUPLL_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x800))
207#define REG_MDTOP_PLLMIXED_MDVDSPPLL_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x804))
208#define REG_MDTOP_PLLMIXED_MDBRPPLL_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x808))
209#define REG_MDTOP_PLLMIXED_MDBPIBPLL_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x810))
210
211#define REG_MDTOP_PLLMIXED_MDNRPLL0_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x818))
212#define REG_MDTOP_PLLMIXED_MDNRPLL1_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x81C))
213#define REG_MDTOP_PLLMIXED_MDNRPLL2_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x820))
214#define REG_MDTOP_PLLMIXED_MDNRPLL3_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x824))
215#define REG_MDTOP_PLLMIXED_MDNRPLL4_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x828))
216#define REG_MDTOP_PLLMIXED_MDNRPLL5_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x82C))
217#define REG_MDTOP_PLLMIXED_MDPLL_STS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0x830))
218
219#define REG_MDTOP_PLLMIXED_MDMCUPLL_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC14))
220#define REG_MDTOP_PLLMIXED_MDVDSPPLL_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC18))
221#define REG_MDTOP_PLLMIXED_MDBRPPLL_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC1C))
222#define REG_MDTOP_PLLMIXED_MDBPIPLL_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC20))
223
224#define REG_MDTOP_PLLMIXED_MDNRPLL0_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC28))
225#define REG_MDTOP_PLLMIXED_MDNRPLL1_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC2C))
226#define REG_MDTOP_PLLMIXED_MDNRPLL2_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC30))
227#define REG_MDTOP_PLLMIXED_MDNRPLL3_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC34))
228#define REG_MDTOP_PLLMIXED_MDNRPLL4_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC38))
229#define REG_MDTOP_PLLMIXED_MDNRPLL5_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC3C))
230#define REG_MDTOP_PLLMIXED_MDPLL_DA (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xC40))
231
232#define REG_MDTOP_PLLMIXED_FRDDS_OFF_IRQ_MODE (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xD00))
233#define REG_MDTOP_PLLMIXED_HP_RDY_OFF_IRQ_MODE (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xD04))
234
235#define REG_MDTOP_PLLMIXED_PLL_DUMMY (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xF00))
236#define REG_MDTOP_PLLMIXED_PLL_DUMMY1 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xF04))
237#define REG_MDTOP_PLLMIXED_PLL_DUMMY2 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xF08))
238#define REG_MDTOP_PLLMIXED_PLL_DUMMY3 (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xF0C))
239#define REG_MDTOP_PLLMIXED_PLL_STATUS (PLL_TYPE(BASE_MADDR_MDTOP_PLLMIXED+0xF10))
240
241
242///////////////////////////////////////////////////////////////////////////////
243/// CLKSW (0xA0150000)
244///////////////////////////////////////////////////////////////////////////////
245#define REG_MDTOP_CLKSW_CODA_VERSION (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x0))
246#define REG_MDTOP_CLKSW_MD_SLEEP_CNT (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x4))
247#define REG_MDTOP_CLKSW_RFSLPC_SW_CTRL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x8))
248#define REG_MDTOP_CLKSW_MDTOPSM_SW_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x10))
249#define REG_MDTOP_CLKSW_L1TOPSM_SW_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x14))
250#define REG_MDTOP_CLKSW_L1TOPSM_SW_CTL2 (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x18))
251#define REG_MDTOP_CLKSW_CKOFF_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x1C))
252#define REG_MDTOP_CLKSW_CLKON_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x20))
253#define REG_MDTOP_CLKSW_CLKSEL_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x24))
254#define REG_MDTOP_CLKSW_CLKSEL_CTL_2 (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x28))
255
256/* ==========SDF clock control related========== */
257#define REG_MDTOP_CLKSW_SDF_ATB_CK_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x2C))
258#define REG_MDTOP_CLKSW_ATB_LOG_SDF_SW_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x30))
259#define REG_MDTOP_CLKSW_LOG_ATB_CK_CTL0 (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x34))
260#define REG_MDTOP_CLKSW_LOG_ATB_CK_CTL1 (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x38))
261
262#define REG_MDTOP_CLKSW_EXTCK_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x40))
263
264/* ==========FLEXCKGEN_SEL========== */
265#define REG_MDTOP_CLKSW_MDSYS_BUS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x44))
266#define REG_MDTOP_CLKSW_RAKE_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x48))
267#define REG_MDTOP_CLKSW_CSSYS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x4C))
268#define REG_MDTOP_CLKSW_BSI_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x50))
269#define REG_MDTOP_CLKSW_DBG_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x54))
270#define REG_MDTOP_CLKSW_LOG_ATB_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x58))
271#define REG_MDTOP_CLKSW_DFESYNC_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x5C))
272#define REG_MDTOP_CLKSW_MML2_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x70))
273#define REG_MDTOP_CLKSW_MCU_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x74))
274#define REG_MDTOP_CLKSW_SHAOLIN_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x78))
275#define REG_MDTOP_CLKSW_VDSP_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x7C))
276#define REG_MDTOP_CLKSW_BRP_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x80))
277
278#define REG_MDTOP_CLKSW_NR_CS_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x84))
279#define REG_MDTOP_CLKSW_NR_CM_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x88))
280#define REG_MDTOP_CLKSW_HRAM_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x8C))
281#define REG_MDTOP_CLKSW_VCORE_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x90))
282#define REG_MDTOP_CLKSW_MCORE_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x94))
283#define REG_MDTOP_CLKSW_RXDDM_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x98))
284#define REG_MDTOP_CLKSW_RXDBRP_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x9C))
285
286#define REG_MDTOP_CLKSW_FETXBSRP_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xA4))
287#define REG_MDTOP_CLKSW_NR_TXBSRP_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xA8))
288#define REG_MDTOP_CLKSW_NR_RXT2F_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xAC))
289#define REG_MDTOP_CLKSW_CPC_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xB0))
290#define REG_MDTOP_CLKSW_TOP_BUS4X_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xB4))
291#define REG_MDTOP_CLKSW_RXDFE_DFS_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xB8))
292#define REG_MDTOP_CLKSW_BUS2X_NODCM_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xBC))
293#define REG_MDTOP_CLKSW_TOP_BUS4X_FIXED_FLEXCKGEN_SEL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xC0))
294
295/* ==========FLEXCKGEN_STS========== */
296#define REG_MDTOP_CLKSW_MDSYS_BUS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xCC))
297#define REG_MDTOP_CLKSW_RAKE_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xD0))
298#define REG_MDTOP_CLKSW_CSSYS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xD4))
299#define REG_MDTOP_CLKSW_BSI_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xD8))
300#define REG_MDTOP_CLKSW_DBG_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xDC))
301#define REG_MDTOP_CLKSW_LOG_ATB_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xE0))
302#define REG_MDTOP_CLKSW_DFESYNC_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xE4))
303#define REG_MDTOP_CLKSW_MDPLL_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xE8))
304
305#define REG_MDTOP_CLKSW_MML2_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xF0))
306#define REG_MDTOP_CLKSW_MCU_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xF4))
307#define REG_MDTOP_CLKSW_SHAOLIN_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xF8))
308#define REG_MDTOP_CLKSW_VDSP_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xFC))
309#define REG_MDTOP_CLKSW_BRP_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x100))
310#define REG_MDTOP_CLKSW_NR_CS_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x104))
311#define REG_MDTOP_CLKSW_NR_CM_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x108))
312#define REG_MDTOP_CLKSW_HRAM_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x10C))
313#define REG_MDTOP_CLKSW_VCORE_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x110))
314#define REG_MDTOP_CLKSW_MCORE_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x114))
315#define REG_MDTOP_CLKSW_RXDDM_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x118))
316#define REG_MDTOP_CLKSW_RXDBRP_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x11C))
317
318#define REG_MDTOP_CLKSW_FETXBSRP_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x124))
319#define REG_MDTOP_CLKSW_NR_TXBSRP_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x12C))
320#define REG_MDTOP_CLKSW_NR_RXT2F_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x130))
321#define REG_MDTOP_CLKSW_CPC_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x134))
322#define REG_MDTOP_CLKSW_TOP_BUS4X_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x138))
323#define REG_MDTOP_CLKSW_RXDFE_DFS_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x13C))
324#define REG_MDTOP_CLKSW_BUS2X_NODCM_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x140))
325#define REG_MDTOP_CLKSW_TOP_BUS4X_FIXED_FLEXCKGEN_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x144))
326
327#define REG_MDTOP_CLKSW_CKMUX_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x200))
328#define REG_MDTOP_CLKSW_PLL_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x210))
329#define REG_MDTOP_CLKSW_DFS_STS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x220))
330#define REG_MDTOP_CLKSW_DFS_STS_2 (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x224))
331
332/* ==========direct pll request========== */
333#define REG_MDTOP_CLKSW_MDMCU_DIRECT_PLLREQ (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x300))
334#define REG_MDTOP_CLKSW_MDBUS_DIRECT_PLLREQ (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x304))
335#define REG_MDTOP_CLKSW_VDSP_DIRECT_PLLREQ (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x308))
336#define REG_MDTOP_CLKSW_BRP_DIRECT_PLLREQ (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x30C))
337
338/* ==========Frequency Meter========== */
339#define REG_MDTOP_CLKSW_CKMON_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x400))
340#define REG_MDTOP_CLKSW_FREQ_METER_CTL (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x404))
341#define REG_MDTOP_CLKSW_FREQ_METER_XTAL_CNT (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x408))
342#define REG_MDTOP_CLKSW_FREQ_METER_CKMON_CNT (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x40C))
343#define REG_MDTOP_CLKSW_FREQ_METER_H (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x410))
344#define REG_MDTOP_CLKSW_FREQ_METER_L (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x414))
345
346#define REG_MDTOP_CLKSW_CLK_REQ_MON (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x500))
347#define REG_MDTOP_CLKSW_CLK_RDY_MON (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0x504))
348
349/* ==========DUMMY & STATUS========== */
350#define REG_MDTOP_CLKSW_CLK_DUMMY (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xF00))
351#define REG_MDTOP_CLKSW_CLK_STATUS (PLL_TYPE(BASE_MADDR_MDTOP_CLKSW+0xF04))
352
353
354/*******************************************************************************
355 * Define Macro
356 ******************************************************************************/
357#define MD_PLL_MAGIC_NUM 0x62970000
358#define MD_PLL_MAGIC_26M 0x62970026
359#define MD_PLL_MAGIC_MD 0x62971111
360
361
362 /*------------------------------------------------------------------------
363 * Purpose: Transfer PCW in xxxPLL_STS to Mhz. This macro is porting from md_dvfs_pll_freq_get(const PLL_SOURCE pll).
364 * Parameters:
365 * Input: pcw: The PCW value in xxxPLL_STS.
366 * divier: The divier for this PLL(EX: ICCPLL_DIVIDER, IMCPLL_DIVIDER...).
367 * Output: None.
368 * returns : Mhz.
369 * Note : This macr is only used to transfer pcw in xxxPLL_STS to Mhz.
370 * You should not used this macro to transfer pcw in xxxPLL_CTL0 to Mhz due to the meaning is different.
371 * (PCW in xxxPLL_STS is bit [21:7] of xxxPLL_CTL0.)
372 *------------------------------------------------------------------------
373 */
374#define PLLMIXED_PLL_STS_SDM_PCW_TO_MHZ(pcw, divier) ((((pcw) * 26) / (1 << 7)) / divier)
375
376/*******************************************************************************
377 * ENUM
378 ******************************************************************************/
379// frequency meter index list (debug only)
380typedef enum {
381 PLL_FM_SOURCE_START = 0x0,
382 PLL_FM_AD_MDNRPLL5 = 0x0,
383 PLL_FM_AD_MDNRPLL4_1 = 0x1,
384 PLL_FM_AD_MDNRPLL4_0 = 0x2,
385 PLL_FM_AD_MDNRPLL3 = 0x3,
386 PLL_FM_AD_MDNRPLL2 = 0x4,
387 PLL_FM_AD_MDNRPLL1 = 0x5,
388 PLL_FM_AD_MDNRPLL0 = 0x6,
389 PLL_FM_MDSYS_NRL2_CLOCK = 0x7, // NRL2 = MML2
390 PLL_FM_MDRXSYS_DFESYNC_CLOCK = 0x8,
391 PLL_FM_MDTOP_F216P7M_CLOCK = 0x9,
392 PLL_FM_TRACE_MON_CLOCK = 0xA,
393 PLL_FM_MDSYS_216P7M_CLOCK = 0xB,
394 PLL_FM_MDRXSYS_RAKE_CLOCK = 0xC,
395 PLL_FM_MDRXSYS_BRP_CLOCK = 0xD,
396 PLL_FM_MDRXSYS_VDSP_CLOCK = 0xE,
397 PLL_FM_MDTOP_LOG_ATB_CLOCK = 0xF,
398 PLL_FM_FESYS_CSYS_CLOCK = 0x10,
399 PLL_FM_MDSYS_SHAOLIN_CLOCK = 0x11,
400 PLL_FM_FESYS_BSI_CLOCK = 0x12,
401 PLL_FM_MDSYS_MDCORE_CLOCK = 0x13,
402 PLL_FM_MDSYS_BUS2X_NODCM_CLOCK = 0x14,
403 PLL_FM_MDSYS_BUS4X_CLOCK = 0x15,
404 PLL_FM_MDTOP_DBG_CLOCK = 0x16,
405 PLL_FM_MDTOP_F32K_CLOCK = 0x17,
406 PLL_FM_AD_MDBPI_PLL_D7 = 0x18, /* AD means "analog to digital" */
407 PLL_FM_AD_MDBPI_PLL_D5 = 0x19,
408 PLL_FM_AD_MDBPI_PLL_D4 = 0x1A,
409 PLL_FM_AD_MDBPI_PLL_D3 = 0x1B,
410 PLL_FM_AD_MDBPI_PLL_D2 = 0x1C,
411 PLL_FM_AD_MDBRP_PLL = 0x1D,
412 PLL_FM_AD_MDVDSP_PLL = 0x1E,
413 PLL_FM_AD_MDMCU_PLL = 0x1F,
414 /* CKMON_SRC_SEL2 = 1 */
415
416 PLL_FM_DFESYS_RXDFE_BB_CORE_CLOCK = 0x2E,
417 PLL_FM_AD_MDNRPLL4_2 = 0x2F,
418 PLL_FM_MDTOP_BUS4X_FIXED_CLOCK = 0x30,
419 PLL_FM_DA_DRF_26M_CLOCK = 0x31,
420 PLL_FM_MDTOP_BUS4X_CLOCK = 0x32,
421 PLL_FM_RXCPC_CPC_CLOCK = 0x33,
422
423 PLL_FM_RXDDMBRP_RXDBRP_CLOCK = 0x35,
424 PLL_FM_RXDDMBRP_RXDDM_CLOCK = 0x36,
425 PLL_FM_MCORE_MCORE_CLOCK = 0x37,
426 PLL_FM_VCOREHRAM_VCORE_CLOCK = 0x38,
427 PLL_FM_VCOREHRAM_HRAM_CLOCK = 0x39,
428 PLL_FM_FESYS_TXBSRP_CLOCK = 0x3A,
429 PLL_FM_FESYS_MDPLL_CLOCK = 0x3B,
430 PLL_FM_TX_CS_NR_RXT2F_NR_CLOCK = 0x3C,
431 PLL_FM_TX_CS_NR_TXBSRP_NR_CLOCK= 0x3D,
432 PLL_FM_TX_CS_NR_CM_NR_CLOCK = 0x3E,
433 PLL_FM_TX_CS_NR_CS_NR_CLOCK = 0x3F,
434 PLL_FM_SOURCE_END = 0x3F
435} PLL_FM_SOURCE;
436
437typedef enum {
438 CLKSW_SDF_SRC_MDPLL_F650M = 0,
439 CLKSW_SDF_SRC_TOP_BUS4X = 1,
440 CLKSW_SDF_SRC_MDPLL_F325M = 2,
441 CLKSW_SDF_SRC_MDPLL_F216P7M = 3,
442 CLKSW_SDF_SRC_26M,
443 CLKSW_SDF_SRC_END
444} PLL_CLKSW_SDF_SRC;
445
446typedef enum {
447 CLKSW_SDF_SRC_DIV_1 = 0,
448 CLKSW_SDF_SRC_DIV_2 = 1,
449 CLKSW_SDF_SRC_DIV_3 = 2,
450 CLKSW_SDF_SRC_DIV_4 = 3
451} PLL_CLKSW_SDF_SRC_DIV;
452
453/* Below for debugging */
454
455#define PLL_FM_NUM 48 /* Note: This number should also sync to EE owner. */
456typedef struct {
457 kal_uint32 AD_MDNRPLL5; /* 0 */
458 kal_uint32 AD_MDNRPLL4_1;
459 kal_uint32 AD_MDNRPLL4_0;
460 kal_uint32 AD_MDNRPLL3;
461 kal_uint32 AD_MDNRPLL2;
462 kal_uint32 AD_MDNRPLL1; /* 5 */
463 kal_uint32 AD_MDNRPLL0;
464 kal_uint32 MDSYS_NRL2_CLOCK;
465 kal_uint32 MDRXSYS_DFESYNC_CLOCK;
466 kal_uint32 MDTOP_F216P7M_CLOCK;
467 kal_uint32 TRACE_MON_CLOCK; /* 10 */
468 kal_uint32 MDSYS_216P7M_CLOCK;
469 kal_uint32 MDRXSYS_RAKE_CLOCK;
470 kal_uint32 MDRXSYS_BRP_CLOCK;
471 kal_uint32 MDRXSYS_VDSP_CLOCK;
472 kal_uint32 MDTOP_LOG_ATB_CLOCK; /* 15 */
473 kal_uint32 FESYS_CSYS_CLOCK;
474 kal_uint32 MDSYS_SHAOLIN_CLOCK;
475 kal_uint32 FESYS_BSI_CLOCK;
476 kal_uint32 MDSYS_MDCORE_CLOCK;
477 kal_uint32 MDSYS_BUS2X_NODCM_CLOCK; /* 20 */
478 kal_uint32 MDSYS_BUS4X_CLOCK;
479 kal_uint32 MDTOP_DBG_CLOCK;
480 kal_uint32 AD_MDBPI_PLL_D7;
481 kal_uint32 AD_MDBPI_PLL_D5;
482 kal_uint32 AD_MDBPI_PLL_D4; /* 25 */
483 kal_uint32 AD_MDBPI_PLL_D3;
484 kal_uint32 AD_MDBPI_PLL_D2;
485 kal_uint32 AD_MDBRP_PLL;
486 kal_uint32 AD_MDVDSP_PLL;
487 kal_uint32 AD_MDMCU_PLL; /* 30 */
488 kal_uint32 DFESYS_RXDFE_BB_CORE_CLOCK;
489 kal_uint32 AD_MDNRPLL4_2;
490 kal_uint32 MDTOP_BUS4X_FIXED_CLOCK;
491 kal_uint32 DA_DRF_26M_CLOCK;
492 kal_uint32 MDTOP_BUS4X_CLOCK; /* 35 */
493 kal_uint32 RXCPC_CPC_CLOCK;
494 kal_uint32 RXDDMBRP_RXDBRP_CLOCK;
495 kal_uint32 RXDDMBRP_RXDDM_CLOCK;
496 kal_uint32 MCORE_MCORE_CLOCK;
497 kal_uint32 VCOREHRAM_VCORE_CLOCK; /* 40 */
498 kal_uint32 VCOREHRAM_HRAM_CLOCK;
499 kal_uint32 FESYS_TXBSRP_CLOCK;
500 kal_uint32 FESYS_MDPLL_CLOCK;
501 kal_uint32 TX_CS_NR_RXT2F_NR_CLOCK;
502 kal_uint32 TX_CS_NR_TXBSRP_NR_CLOCK;/* 45 */
503 kal_uint32 TX_CS_NR_CM_NR_CLOCK;
504 kal_uint32 TX_CS_NR_CS_NR_CLOCK;
505 /* we couldn't add more PLL here... */
506
507} PLL_CLK_INFO;
508
509extern PLL_CLK_INFO g_pll_info;
510extern const char PLL_FM_clock[PLL_FM_NUM][32];
511
512/* Above for debugging */
513
514/*******************************************************************************
515 * Include header files
516 ******************************************************************************/
517extern void PLL_MD_Pll_Init(void);
518extern void PLL_Set_CLK_To_26M(void);
519
520extern void PLL_Check_26M_ACK_Status(kal_uint32 identifier);
521extern void PLL_exception_dump(void);
522extern kal_uint32 PLL_FrequencyMeter_GetFreq(PLL_FM_SOURCE index);
523
524/* For SDF user in driver/sib_drv/sdf/src/md97/drv_sdf_97.c */
525extern kal_uint32 PLL_CLKSW_SDF_SRC_CKSEL_Get();
526extern kal_uint32 PLL_CLKSW_SDF_SRC_CKSEL_Div_Get();
527extern kal_bool PLL_CLKSW_SDF_SRC_CKSEL_Set(PLL_CLKSW_SDF_SRC src_clk, PLL_CLKSW_SDF_SRC_DIV src_div);
528
529#endif /* !__PLL_MT6297P_H__ */
530