Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm/mach-omap2/clockdomains33xx_data.c
26295 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
/*
3
* AM33XX Clock Domain data.
4
*
5
* Copyright (C) 2011-2012 Texas Instruments Incorporated - https://www.ti.com/
6
* Vaibhav Hiremath <[email protected]>
7
*/
8
9
#include <linux/kernel.h>
10
#include <linux/io.h>
11
12
#include "clockdomain.h"
13
#include "cm.h"
14
#include "cm33xx.h"
15
#include "cm-regbits-33xx.h"
16
17
static struct clockdomain l4ls_am33xx_clkdm = {
18
.name = "l4ls_clkdm",
19
.pwrdm = { .name = "per_pwrdm" },
20
.cm_inst = AM33XX_CM_PER_MOD,
21
.clkdm_offs = AM33XX_CM_PER_L4LS_CLKSTCTRL_OFFSET,
22
.flags = CLKDM_CAN_SWSUP | CLKDM_STANDBY_FORCE_WAKEUP,
23
};
24
25
static struct clockdomain l3s_am33xx_clkdm = {
26
.name = "l3s_clkdm",
27
.pwrdm = { .name = "per_pwrdm" },
28
.cm_inst = AM33XX_CM_PER_MOD,
29
.clkdm_offs = AM33XX_CM_PER_L3S_CLKSTCTRL_OFFSET,
30
.flags = CLKDM_CAN_SWSUP,
31
};
32
33
static struct clockdomain l4fw_am33xx_clkdm = {
34
.name = "l4fw_clkdm",
35
.pwrdm = { .name = "per_pwrdm" },
36
.cm_inst = AM33XX_CM_PER_MOD,
37
.clkdm_offs = AM33XX_CM_PER_L4FW_CLKSTCTRL_OFFSET,
38
.flags = CLKDM_CAN_SWSUP,
39
};
40
41
static struct clockdomain l3_am33xx_clkdm = {
42
.name = "l3_clkdm",
43
.pwrdm = { .name = "per_pwrdm" },
44
.cm_inst = AM33XX_CM_PER_MOD,
45
.clkdm_offs = AM33XX_CM_PER_L3_CLKSTCTRL_OFFSET,
46
.flags = CLKDM_CAN_SWSUP,
47
};
48
49
static struct clockdomain l4hs_am33xx_clkdm = {
50
.name = "l4hs_clkdm",
51
.pwrdm = { .name = "per_pwrdm" },
52
.cm_inst = AM33XX_CM_PER_MOD,
53
.clkdm_offs = AM33XX_CM_PER_L4HS_CLKSTCTRL_OFFSET,
54
.flags = CLKDM_CAN_SWSUP,
55
};
56
57
static struct clockdomain ocpwp_l3_am33xx_clkdm = {
58
.name = "ocpwp_l3_clkdm",
59
.pwrdm = { .name = "per_pwrdm" },
60
.cm_inst = AM33XX_CM_PER_MOD,
61
.clkdm_offs = AM33XX_CM_PER_OCPWP_L3_CLKSTCTRL_OFFSET,
62
.flags = CLKDM_CAN_SWSUP,
63
};
64
65
static struct clockdomain pruss_ocp_am33xx_clkdm = {
66
.name = "pruss_ocp_clkdm",
67
.pwrdm = { .name = "per_pwrdm" },
68
.cm_inst = AM33XX_CM_PER_MOD,
69
.clkdm_offs = AM33XX_CM_PER_PRUSS_CLKSTCTRL_OFFSET,
70
.flags = CLKDM_CAN_SWSUP,
71
};
72
73
static struct clockdomain cpsw_125mhz_am33xx_clkdm = {
74
.name = "cpsw_125mhz_clkdm",
75
.pwrdm = { .name = "per_pwrdm" },
76
.cm_inst = AM33XX_CM_PER_MOD,
77
.clkdm_offs = AM33XX_CM_PER_CPSW_CLKSTCTRL_OFFSET,
78
.flags = CLKDM_CAN_SWSUP,
79
};
80
81
static struct clockdomain lcdc_am33xx_clkdm = {
82
.name = "lcdc_clkdm",
83
.pwrdm = { .name = "per_pwrdm" },
84
.cm_inst = AM33XX_CM_PER_MOD,
85
.clkdm_offs = AM33XX_CM_PER_LCDC_CLKSTCTRL_OFFSET,
86
.flags = CLKDM_CAN_SWSUP,
87
};
88
89
static struct clockdomain clk_24mhz_am33xx_clkdm = {
90
.name = "clk_24mhz_clkdm",
91
.pwrdm = { .name = "per_pwrdm" },
92
.cm_inst = AM33XX_CM_PER_MOD,
93
.clkdm_offs = AM33XX_CM_PER_CLK_24MHZ_CLKSTCTRL_OFFSET,
94
.flags = CLKDM_CAN_SWSUP,
95
};
96
97
static struct clockdomain l4_wkup_am33xx_clkdm = {
98
.name = "l4_wkup_clkdm",
99
.pwrdm = { .name = "wkup_pwrdm" },
100
.cm_inst = AM33XX_CM_WKUP_MOD,
101
.clkdm_offs = AM33XX_CM_WKUP_CLKSTCTRL_OFFSET,
102
.flags = CLKDM_CAN_SWSUP,
103
};
104
105
static struct clockdomain l3_aon_am33xx_clkdm = {
106
.name = "l3_aon_clkdm",
107
.pwrdm = { .name = "wkup_pwrdm" },
108
.cm_inst = AM33XX_CM_WKUP_MOD,
109
.clkdm_offs = AM33XX_CM_L3_AON_CLKSTCTRL_OFFSET,
110
.flags = CLKDM_CAN_SWSUP,
111
};
112
113
static struct clockdomain l4_wkup_aon_am33xx_clkdm = {
114
.name = "l4_wkup_aon_clkdm",
115
.pwrdm = { .name = "wkup_pwrdm" },
116
.cm_inst = AM33XX_CM_WKUP_MOD,
117
.clkdm_offs = AM33XX_CM_L4_WKUP_AON_CLKSTCTRL_OFFSET,
118
.flags = CLKDM_CAN_SWSUP,
119
};
120
121
static struct clockdomain mpu_am33xx_clkdm = {
122
.name = "mpu_clkdm",
123
.pwrdm = { .name = "mpu_pwrdm" },
124
.cm_inst = AM33XX_CM_MPU_MOD,
125
.clkdm_offs = AM33XX_CM_MPU_CLKSTCTRL_OFFSET,
126
.flags = CLKDM_CAN_SWSUP,
127
};
128
129
static struct clockdomain l4_rtc_am33xx_clkdm = {
130
.name = "l4_rtc_clkdm",
131
.pwrdm = { .name = "rtc_pwrdm" },
132
.cm_inst = AM33XX_CM_RTC_MOD,
133
.clkdm_offs = AM33XX_CM_RTC_CLKSTCTRL_OFFSET,
134
.flags = CLKDM_CAN_SWSUP,
135
};
136
137
static struct clockdomain gfx_l3_am33xx_clkdm = {
138
.name = "gfx_l3_clkdm",
139
.pwrdm = { .name = "gfx_pwrdm" },
140
.cm_inst = AM33XX_CM_GFX_MOD,
141
.clkdm_offs = AM33XX_CM_GFX_L3_CLKSTCTRL_OFFSET,
142
.flags = CLKDM_CAN_SWSUP,
143
};
144
145
static struct clockdomain gfx_l4ls_gfx_am33xx_clkdm = {
146
.name = "gfx_l4ls_gfx_clkdm",
147
.pwrdm = { .name = "gfx_pwrdm" },
148
.cm_inst = AM33XX_CM_GFX_MOD,
149
.clkdm_offs = AM33XX_CM_GFX_L4LS_GFX_CLKSTCTRL__1_OFFSET,
150
.flags = CLKDM_CAN_SWSUP,
151
};
152
153
static struct clockdomain l4_cefuse_am33xx_clkdm = {
154
.name = "l4_cefuse_clkdm",
155
.pwrdm = { .name = "cefuse_pwrdm" },
156
.cm_inst = AM33XX_CM_CEFUSE_MOD,
157
.clkdm_offs = AM33XX_CM_CEFUSE_CLKSTCTRL_OFFSET,
158
.flags = CLKDM_CAN_SWSUP,
159
};
160
161
static struct clockdomain *clockdomains_am33xx[] __initdata = {
162
&l4ls_am33xx_clkdm,
163
&l3s_am33xx_clkdm,
164
&l4fw_am33xx_clkdm,
165
&l3_am33xx_clkdm,
166
&l4hs_am33xx_clkdm,
167
&ocpwp_l3_am33xx_clkdm,
168
&pruss_ocp_am33xx_clkdm,
169
&cpsw_125mhz_am33xx_clkdm,
170
&lcdc_am33xx_clkdm,
171
&clk_24mhz_am33xx_clkdm,
172
&l4_wkup_am33xx_clkdm,
173
&l3_aon_am33xx_clkdm,
174
&l4_wkup_aon_am33xx_clkdm,
175
&mpu_am33xx_clkdm,
176
&l4_rtc_am33xx_clkdm,
177
&gfx_l3_am33xx_clkdm,
178
&gfx_l4ls_gfx_am33xx_clkdm,
179
&l4_cefuse_am33xx_clkdm,
180
NULL,
181
};
182
183
void __init am33xx_clockdomains_init(void)
184
{
185
clkdm_register_platform_funcs(&am33xx_clkdm_operations);
186
clkdm_register_clkdms(clockdomains_am33xx);
187
clkdm_complete_init();
188
}
189
190