]> git.ipfire.org Git - thirdparty/qemu.git/blame - include/hw/misc/imx6_ccm.h
Move QOM typedefs and add missing includes
[thirdparty/qemu.git] / include / hw / misc / imx6_ccm.h
CommitLineData
a66d815c
JCD
1/*
2 * IMX6 Clock Control Module
3 *
4 * Copyright (C) 2012 NICTA
5 * Updated by Jean-Christophe Dubois <jcd@tribudubois.net>
6 *
7 * This work is licensed under the terms of the GNU GPL, version 2 or later.
8 * See the COPYING file in the top-level directory.
9 */
10
11#ifndef IMX6_CCM_H
12#define IMX6_CCM_H
13
14#include "hw/misc/imx_ccm.h"
15#include "qemu/bitops.h"
db1015e9 16#include "qom/object.h"
a66d815c
JCD
17
18#define CCM_CCR 0
19#define CCM_CCDR 1
20#define CCM_CSR 2
21#define CCM_CCSR 3
22#define CCM_CACRR 4
23#define CCM_CBCDR 5
24#define CCM_CBCMR 6
25#define CCM_CSCMR1 7
26#define CCM_CSCMR2 8
27#define CCM_CSCDR1 9
28#define CCM_CS1CDR 10
29#define CCM_CS2CDR 11
30#define CCM_CDCDR 12
31#define CCM_CHSCCDR 13
32#define CCM_CSCDR2 14
33#define CCM_CSCDR3 15
34#define CCM_CDHIPR 18
35#define CCM_CTOR 20
36#define CCM_CLPCR 21
37#define CCM_CISR 22
38#define CCM_CIMR 23
39#define CCM_CCOSR 24
40#define CCM_CGPR 25
41#define CCM_CCGR0 26
42#define CCM_CCGR1 27
43#define CCM_CCGR2 28
44#define CCM_CCGR3 29
45#define CCM_CCGR4 30
46#define CCM_CCGR5 31
47#define CCM_CCGR6 32
48#define CCM_CMEOR 34
49#define CCM_MAX 35
50
51#define CCM_ANALOG_PLL_ARM 0
52#define CCM_ANALOG_PLL_ARM_SET 1
53#define CCM_ANALOG_PLL_ARM_CLR 2
54#define CCM_ANALOG_PLL_ARM_TOG 3
55#define CCM_ANALOG_PLL_USB1 4
56#define CCM_ANALOG_PLL_USB1_SET 5
57#define CCM_ANALOG_PLL_USB1_CLR 6
58#define CCM_ANALOG_PLL_USB1_TOG 7
59#define CCM_ANALOG_PLL_USB2 8
60#define CCM_ANALOG_PLL_USB2_SET 9
61#define CCM_ANALOG_PLL_USB2_CLR 10
62#define CCM_ANALOG_PLL_USB2_TOG 11
63#define CCM_ANALOG_PLL_SYS 12
64#define CCM_ANALOG_PLL_SYS_SET 13
65#define CCM_ANALOG_PLL_SYS_CLR 14
66#define CCM_ANALOG_PLL_SYS_TOG 15
67#define CCM_ANALOG_PLL_SYS_SS 16
68#define CCM_ANALOG_PLL_SYS_NUM 20
69#define CCM_ANALOG_PLL_SYS_DENOM 24
70#define CCM_ANALOG_PLL_AUDIO 28
71#define CCM_ANALOG_PLL_AUDIO_SET 29
72#define CCM_ANALOG_PLL_AUDIO_CLR 30
73#define CCM_ANALOG_PLL_AUDIO_TOG 31
74#define CCM_ANALOG_PLL_AUDIO_NUM 32
75#define CCM_ANALOG_PLL_AUDIO_DENOM 36
76#define CCM_ANALOG_PLL_VIDEO 40
77#define CCM_ANALOG_PLL_VIDEO_SET 41
78#define CCM_ANALOG_PLL_VIDEO_CLR 42
79#define CCM_ANALOG_PLL_VIDEO_TOG 44
80#define CCM_ANALOG_PLL_VIDEO_NUM 46
81#define CCM_ANALOG_PLL_VIDEO_DENOM 48
82#define CCM_ANALOG_PLL_MLB 52
83#define CCM_ANALOG_PLL_MLB_SET 53
84#define CCM_ANALOG_PLL_MLB_CLR 54
85#define CCM_ANALOG_PLL_MLB_TOG 55
86#define CCM_ANALOG_PLL_ENET 56
87#define CCM_ANALOG_PLL_ENET_SET 57
88#define CCM_ANALOG_PLL_ENET_CLR 58
89#define CCM_ANALOG_PLL_ENET_TOG 59
90#define CCM_ANALOG_PFD_480 60
91#define CCM_ANALOG_PFD_480_SET 61
92#define CCM_ANALOG_PFD_480_CLR 62
93#define CCM_ANALOG_PFD_480_TOG 63
94#define CCM_ANALOG_PFD_528 64
95#define CCM_ANALOG_PFD_528_SET 65
96#define CCM_ANALOG_PFD_528_CLR 66
97#define CCM_ANALOG_PFD_528_TOG 67
98
99/* PMU registers */
100#define PMU_REG_1P1 68
101#define PMU_REG_3P0 72
102#define PMU_REG_2P5 76
103#define PMU_REG_CORE 80
104
105#define CCM_ANALOG_MISC0 84
106#define PMU_MISC0 84
107#define CCM_ANALOG_MISC0_SET 85
108#define CCM_ANALOG_MISC0_CLR 86
109#define CCM_ANALOG_MISC0_TOG 87
110
111#define PMU_MISC1 88
112#define PMU_MISC1_SET 89
113#define PMU_MISC1_CLR 90
114#define PMU_MISC1_TOG 91
115
116#define CCM_ANALOG_MISC2 92
117#define PMU_MISC2 92
118#define CCM_ANALOG_MISC2_SET 93
119#define CCM_ANALOG_MISC2_CLR 94
120#define CCM_ANALOG_MISC2_TOG 95
121
122#define USB_ANALOG_USB1_VBUS_DETECT 104
123#define USB_ANALOG_USB1_VBUS_DETECT_SET 105
124#define USB_ANALOG_USB1_VBUS_DETECT_CLR 106
125#define USB_ANALOG_USB1_VBUS_DETECT_TOG 107
126#define USB_ANALOG_USB1_CHRG_DETECT 108
127#define USB_ANALOG_USB1_CHRG_DETECT_SET 109
128#define USB_ANALOG_USB1_CHRG_DETECT_CLR 110
129#define USB_ANALOG_USB1_CHRG_DETECT_TOG 111
130#define USB_ANALOG_USB1_VBUS_DETECT_STAT 112
131#define USB_ANALOG_USB1_CHRG_DETECT_STAT 116
132#define USB_ANALOG_USB1_MISC 124
133#define USB_ANALOG_USB1_MISC_SET 125
134#define USB_ANALOG_USB1_MISC_CLR 126
135#define USB_ANALOG_USB1_MISC_TOG 127
136#define USB_ANALOG_USB2_VBUS_DETECT 128
137#define USB_ANALOG_USB2_VBUS_DETECT_SET 129
138#define USB_ANALOG_USB2_VBUS_DETECT_CLR 130
139#define USB_ANALOG_USB2_VBUS_DETECT_TOG 131
140#define USB_ANALOG_USB2_CHRG_DETECT 132
141#define USB_ANALOG_USB2_CHRG_DETECT_SET 133
142#define USB_ANALOG_USB2_CHRG_DETECT_CLR 134
143#define USB_ANALOG_USB2_CHRG_DETECT_TOG 135
144#define USB_ANALOG_USB2_VBUS_DETECT_STAT 136
145#define USB_ANALOG_USB2_CHRG_DETECT_STAT 140
146#define USB_ANALOG_USB2_MISC 148
147#define USB_ANALOG_USB2_MISC_SET 149
148#define USB_ANALOG_USB2_MISC_CLR 150
149#define USB_ANALOG_USB2_MISC_TOG 151
150#define USB_ANALOG_DIGPROG 152
151#define CCM_ANALOG_MAX 153
152
153/* CCM_CBCMR */
154#define PRE_PERIPH_CLK_SEL_SHIFT (18)
155#define PRE_PERIPH_CLK_SEL_LENGTH (2)
156
157/* CCM_CBCDR */
158#define AHB_PODF_SHIFT (10)
159#define AHB_PODF_LENGTH (3)
160#define IPG_PODF_SHIFT (8)
161#define IPG_PODF_LENGTH (2)
162
163/* CCM_CSCMR1 */
164#define PERCLK_PODF_SHIFT (0)
165#define PERCLK_PODF_LENGTH (6)
166
167/* CCM_ANALOG_PFD_528 */
168#define PFD0_FRAC_SHIFT (0)
169#define PFD0_FRAC_LENGTH (6)
170#define PFD2_FRAC_SHIFT (16)
171#define PFD2_FRAC_LENGTH (6)
172
173/* CCM_ANALOG_PLL_SYS */
174#define DIV_SELECT_SHIFT (0)
175#define DIV_SELECT_LENGTH (1)
176
177#define CCM_ANALOG_PLL_LOCK (1 << 31);
178
179#define EXTRACT(value, name) extract32(value, name##_SHIFT, name##_LENGTH)
180
181#define TYPE_IMX6_CCM "imx6.ccm"
db1015e9 182typedef struct IMX6CCMState IMX6CCMState;
a66d815c
JCD
183#define IMX6_CCM(obj) OBJECT_CHECK(IMX6CCMState, (obj), TYPE_IMX6_CCM)
184
db1015e9 185struct IMX6CCMState {
a66d815c
JCD
186 /* <private> */
187 IMXCCMState parent_obj;
188
189 /* <public> */
190 MemoryRegion container;
191 MemoryRegion ioccm;
192 MemoryRegion ioanalog;
193
194 uint32_t ccm[CCM_MAX];
195 uint32_t analog[CCM_ANALOG_MAX];
196
db1015e9 197};
a66d815c
JCD
198
199#endif /* IMX6_CCM_H */