1
2
3
4
5
6
7
8
9
10
11
12#ifndef IMX7_CCM_H
13#define IMX7_CCM_H
14
15#include "hw/misc/imx_ccm.h"
16#include "qemu/bitops.h"
17#include "qom/object.h"
18
19enum IMX7AnalogRegisters {
20 ANALOG_PLL_ARM,
21 ANALOG_PLL_ARM_SET,
22 ANALOG_PLL_ARM_CLR,
23 ANALOG_PLL_ARM_TOG,
24 ANALOG_PLL_DDR,
25 ANALOG_PLL_DDR_SET,
26 ANALOG_PLL_DDR_CLR,
27 ANALOG_PLL_DDR_TOG,
28 ANALOG_PLL_DDR_SS,
29 ANALOG_PLL_DDR_SS_SET,
30 ANALOG_PLL_DDR_SS_CLR,
31 ANALOG_PLL_DDR_SS_TOG,
32 ANALOG_PLL_DDR_NUM,
33 ANALOG_PLL_DDR_NUM_SET,
34 ANALOG_PLL_DDR_NUM_CLR,
35 ANALOG_PLL_DDR_NUM_TOG,
36 ANALOG_PLL_DDR_DENOM,
37 ANALOG_PLL_DDR_DENOM_SET,
38 ANALOG_PLL_DDR_DENOM_CLR,
39 ANALOG_PLL_DDR_DENOM_TOG,
40 ANALOG_PLL_480,
41 ANALOG_PLL_480_SET,
42 ANALOG_PLL_480_CLR,
43 ANALOG_PLL_480_TOG,
44 ANALOG_PLL_480A,
45 ANALOG_PLL_480A_SET,
46 ANALOG_PLL_480A_CLR,
47 ANALOG_PLL_480A_TOG,
48 ANALOG_PLL_480B,
49 ANALOG_PLL_480B_SET,
50 ANALOG_PLL_480B_CLR,
51 ANALOG_PLL_480B_TOG,
52 ANALOG_PLL_ENET,
53 ANALOG_PLL_ENET_SET,
54 ANALOG_PLL_ENET_CLR,
55 ANALOG_PLL_ENET_TOG,
56 ANALOG_PLL_AUDIO,
57 ANALOG_PLL_AUDIO_SET,
58 ANALOG_PLL_AUDIO_CLR,
59 ANALOG_PLL_AUDIO_TOG,
60 ANALOG_PLL_AUDIO_SS,
61 ANALOG_PLL_AUDIO_SS_SET,
62 ANALOG_PLL_AUDIO_SS_CLR,
63 ANALOG_PLL_AUDIO_SS_TOG,
64 ANALOG_PLL_AUDIO_NUM,
65 ANALOG_PLL_AUDIO_NUM_SET,
66 ANALOG_PLL_AUDIO_NUM_CLR,
67 ANALOG_PLL_AUDIO_NUM_TOG,
68 ANALOG_PLL_AUDIO_DENOM,
69 ANALOG_PLL_AUDIO_DENOM_SET,
70 ANALOG_PLL_AUDIO_DENOM_CLR,
71 ANALOG_PLL_AUDIO_DENOM_TOG,
72 ANALOG_PLL_VIDEO,
73 ANALOG_PLL_VIDEO_SET,
74 ANALOG_PLL_VIDEO_CLR,
75 ANALOG_PLL_VIDEO_TOG,
76 ANALOG_PLL_VIDEO_SS,
77 ANALOG_PLL_VIDEO_SS_SET,
78 ANALOG_PLL_VIDEO_SS_CLR,
79 ANALOG_PLL_VIDEO_SS_TOG,
80 ANALOG_PLL_VIDEO_NUM,
81 ANALOG_PLL_VIDEO_NUM_SET,
82 ANALOG_PLL_VIDEO_NUM_CLR,
83 ANALOG_PLL_VIDEO_NUM_TOG,
84 ANALOG_PLL_VIDEO_DENOM,
85 ANALOG_PLL_VIDEO_DENOM_SET,
86 ANALOG_PLL_VIDEO_DENOM_CLR,
87 ANALOG_PLL_VIDEO_DENOM_TOG,
88 ANALOG_PLL_MISC0,
89 ANALOG_PLL_MISC0_SET,
90 ANALOG_PLL_MISC0_CLR,
91 ANALOG_PLL_MISC0_TOG,
92
93 ANALOG_DIGPROG = 0x800 / sizeof(uint32_t),
94 ANALOG_MAX,
95
96 ANALOG_PLL_LOCK = BIT(31)
97};
98
99enum IMX7CCMRegisters {
100 CCM_MAX = 0xBE00 / sizeof(uint32_t) + 1,
101};
102
103enum IMX7PMURegisters {
104 PMU_MAX = 0x140 / sizeof(uint32_t),
105};
106
107#define TYPE_IMX7_CCM "imx7.ccm"
108OBJECT_DECLARE_SIMPLE_TYPE(IMX7CCMState, IMX7_CCM)
109
110struct IMX7CCMState {
111
112 IMXCCMState parent_obj;
113
114
115 MemoryRegion iomem;
116
117 uint32_t ccm[CCM_MAX];
118};
119
120
121#define TYPE_IMX7_ANALOG "imx7.analog"
122OBJECT_DECLARE_SIMPLE_TYPE(IMX7AnalogState, IMX7_ANALOG)
123
124struct IMX7AnalogState {
125
126 IMXCCMState parent_obj;
127
128
129 struct {
130 MemoryRegion container;
131 MemoryRegion analog;
132 MemoryRegion digprog;
133 MemoryRegion pmu;
134 } mmio;
135
136 uint32_t analog[ANALOG_MAX];
137 uint32_t pmu[PMU_MAX];
138};
139
140#endif
141