2 * Copyright (c) 2017, Impinj, Inc.
4 * i.MX7 CCM, PMU and ANALOG IP blocks emulation code
6 * Author: Andrey Smirnov <andrew.smirnov@gmail.com>
8 * This work is licensed under the terms of the GNU GPL, version 2 or later.
9 * See the COPYING file in the top-level directory.
15 #include "hw/misc/imx_ccm.h"
16 #include "qemu/bitops.h"
17 #include "qom/object.h"
19 enum IMX7AnalogRegisters
{
29 ANALOG_PLL_DDR_SS_SET
,
30 ANALOG_PLL_DDR_SS_CLR
,
31 ANALOG_PLL_DDR_SS_TOG
,
33 ANALOG_PLL_DDR_NUM_SET
,
34 ANALOG_PLL_DDR_NUM_CLR
,
35 ANALOG_PLL_DDR_NUM_TOG
,
37 ANALOG_PLL_DDR_DENOM_SET
,
38 ANALOG_PLL_DDR_DENOM_CLR
,
39 ANALOG_PLL_DDR_DENOM_TOG
,
61 ANALOG_PLL_AUDIO_SS_SET
,
62 ANALOG_PLL_AUDIO_SS_CLR
,
63 ANALOG_PLL_AUDIO_SS_TOG
,
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
,
77 ANALOG_PLL_VIDEO_SS_SET
,
78 ANALOG_PLL_VIDEO_SS_CLR
,
79 ANALOG_PLL_VIDEO_SS_TOG
,
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
,
93 ANALOG_DIGPROG
= 0x800 / sizeof(uint32_t),
96 ANALOG_PLL_LOCK
= BIT(31)
99 enum IMX7CCMRegisters
{
100 CCM_MAX
= 0xBE00 / sizeof(uint32_t) + 1,
103 enum IMX7PMURegisters
{
104 PMU_MAX
= 0x140 / sizeof(uint32_t),
107 #define TYPE_IMX7_CCM "imx7.ccm"
108 OBJECT_DECLARE_SIMPLE_TYPE(IMX7CCMState
, IMX7_CCM
)
110 struct IMX7CCMState
{
112 IMXCCMState parent_obj
;
117 uint32_t ccm
[CCM_MAX
];
121 #define TYPE_IMX7_ANALOG "imx7.analog"
122 OBJECT_DECLARE_SIMPLE_TYPE(IMX7AnalogState
, IMX7_ANALOG
)
124 struct IMX7AnalogState
{
126 IMXCCMState parent_obj
;
130 MemoryRegion container
;
132 MemoryRegion digprog
;
136 uint32_t analog
[ANALOG_MAX
];
137 uint32_t pmu
[PMU_MAX
];
140 #endif /* IMX7_CCM_H */