18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * OMAP4 Clock domains framework
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2009-2011 Texas Instruments, Inc.
68c2ecf20Sopenharmony_ci * Copyright (C) 2009-2011 Nokia Corporation
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * Abhijit Pagare (abhijitpagare@ti.com)
98c2ecf20Sopenharmony_ci * Benoit Cousson (b-cousson@ti.com)
108c2ecf20Sopenharmony_ci * Paul Walmsley (paul@pwsan.com)
118c2ecf20Sopenharmony_ci *
128c2ecf20Sopenharmony_ci * This file is automatically generated from the OMAP hardware databases.
138c2ecf20Sopenharmony_ci * We respectfully ask that any modifications to this file be coordinated
148c2ecf20Sopenharmony_ci * with the public linux-omap@vger.kernel.org mailing list and the
158c2ecf20Sopenharmony_ci * authors above to ensure that the autogeneration scripts are kept
168c2ecf20Sopenharmony_ci * up-to-date with the file contents.
178c2ecf20Sopenharmony_ci */
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#include <linux/kernel.h>
208c2ecf20Sopenharmony_ci#include <linux/io.h>
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci#include "clockdomain.h"
238c2ecf20Sopenharmony_ci#include "cm1_44xx.h"
248c2ecf20Sopenharmony_ci#include "cm2_44xx.h"
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci#include "cm-regbits-44xx.h"
278c2ecf20Sopenharmony_ci#include "prm44xx.h"
288c2ecf20Sopenharmony_ci#include "prcm44xx.h"
298c2ecf20Sopenharmony_ci#include "prcm_mpu44xx.h"
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci/* Static Dependencies for OMAP4 Clock Domains */
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_cistatic struct clkdm_dep d2d_wkup_sleep_deps[] = {
348c2ecf20Sopenharmony_ci	{ .clkdm_name = "abe_clkdm" },
358c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
368c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
378c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_2_clkdm" },
388c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
398c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_init_clkdm" },
408c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_cfg_clkdm" },
418c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_per_clkdm" },
428c2ecf20Sopenharmony_ci	{ NULL },
438c2ecf20Sopenharmony_ci};
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_cistatic struct clkdm_dep ducati_wkup_sleep_deps[] = {
468c2ecf20Sopenharmony_ci	{ .clkdm_name = "abe_clkdm" },
478c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
488c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
498c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_2_clkdm" },
508c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_dss_clkdm" },
518c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
528c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_gfx_clkdm" },
538c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_init_clkdm" },
548c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_cfg_clkdm" },
558c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_per_clkdm" },
568c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_secure_clkdm" },
578c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_wkup_clkdm" },
588c2ecf20Sopenharmony_ci	{ .clkdm_name = "tesla_clkdm" },
598c2ecf20Sopenharmony_ci	{ NULL },
608c2ecf20Sopenharmony_ci};
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_cistatic struct clkdm_dep iss_wkup_sleep_deps[] = {
638c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
648c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
658c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
668c2ecf20Sopenharmony_ci	{ NULL },
678c2ecf20Sopenharmony_ci};
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_cistatic struct clkdm_dep ivahd_wkup_sleep_deps[] = {
708c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
718c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
728c2ecf20Sopenharmony_ci	{ NULL },
738c2ecf20Sopenharmony_ci};
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_cistatic struct clkdm_dep l3_dma_wkup_sleep_deps[] = {
768c2ecf20Sopenharmony_ci	{ .clkdm_name = "abe_clkdm" },
778c2ecf20Sopenharmony_ci	{ .clkdm_name = "ducati_clkdm" },
788c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
798c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
808c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_dss_clkdm" },
818c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
828c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_init_clkdm" },
838c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_cfg_clkdm" },
848c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_per_clkdm" },
858c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_secure_clkdm" },
868c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_wkup_clkdm" },
878c2ecf20Sopenharmony_ci	{ NULL },
888c2ecf20Sopenharmony_ci};
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_cistatic struct clkdm_dep l3_dss_wkup_sleep_deps[] = {
918c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
928c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_2_clkdm" },
938c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
948c2ecf20Sopenharmony_ci	{ NULL },
958c2ecf20Sopenharmony_ci};
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_cistatic struct clkdm_dep l3_gfx_wkup_sleep_deps[] = {
988c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
998c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
1008c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
1018c2ecf20Sopenharmony_ci	{ NULL },
1028c2ecf20Sopenharmony_ci};
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_cistatic struct clkdm_dep l3_init_wkup_sleep_deps[] = {
1058c2ecf20Sopenharmony_ci	{ .clkdm_name = "abe_clkdm" },
1068c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
1078c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
1088c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_cfg_clkdm" },
1098c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_per_clkdm" },
1108c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_secure_clkdm" },
1118c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_wkup_clkdm" },
1128c2ecf20Sopenharmony_ci	{ NULL },
1138c2ecf20Sopenharmony_ci};
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_cistatic struct clkdm_dep l4_secure_wkup_sleep_deps[] = {
1168c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
1178c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
1188c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_per_clkdm" },
1198c2ecf20Sopenharmony_ci	{ NULL },
1208c2ecf20Sopenharmony_ci};
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_cistatic struct clkdm_dep mpu_wkup_sleep_deps[] = {
1238c2ecf20Sopenharmony_ci	{ .clkdm_name = "abe_clkdm" },
1248c2ecf20Sopenharmony_ci	{ .clkdm_name = "ducati_clkdm" },
1258c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
1268c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
1278c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_2_clkdm" },
1288c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_dss_clkdm" },
1298c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
1308c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_gfx_clkdm" },
1318c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_init_clkdm" },
1328c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_cfg_clkdm" },
1338c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_per_clkdm" },
1348c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_secure_clkdm" },
1358c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_wkup_clkdm" },
1368c2ecf20Sopenharmony_ci	{ .clkdm_name = "tesla_clkdm" },
1378c2ecf20Sopenharmony_ci	{ NULL },
1388c2ecf20Sopenharmony_ci};
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_cistatic struct clkdm_dep tesla_wkup_sleep_deps[] = {
1418c2ecf20Sopenharmony_ci	{ .clkdm_name = "abe_clkdm" },
1428c2ecf20Sopenharmony_ci	{ .clkdm_name = "ivahd_clkdm" },
1438c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_1_clkdm" },
1448c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_2_clkdm" },
1458c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_emif_clkdm" },
1468c2ecf20Sopenharmony_ci	{ .clkdm_name = "l3_init_clkdm" },
1478c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_cfg_clkdm" },
1488c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_per_clkdm" },
1498c2ecf20Sopenharmony_ci	{ .clkdm_name = "l4_wkup_clkdm" },
1508c2ecf20Sopenharmony_ci	{ NULL },
1518c2ecf20Sopenharmony_ci};
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_cistatic struct clockdomain l4_cefuse_44xx_clkdm = {
1548c2ecf20Sopenharmony_ci	.name		  = "l4_cefuse_clkdm",
1558c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "cefuse_pwrdm" },
1568c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
1578c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CEFUSE_INST,
1588c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CEFUSE_CEFUSE_CDOFFS,
1598c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
1608c2ecf20Sopenharmony_ci};
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_cistatic struct clockdomain l4_cfg_44xx_clkdm = {
1638c2ecf20Sopenharmony_ci	.name		  = "l4_cfg_clkdm",
1648c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
1658c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
1668c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
1678c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_L4CFG_CDOFFS,
1688c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_L4CFG_STATDEP_SHIFT,
1698c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP,
1708c2ecf20Sopenharmony_ci};
1718c2ecf20Sopenharmony_ci
1728c2ecf20Sopenharmony_cistatic struct clockdomain tesla_44xx_clkdm = {
1738c2ecf20Sopenharmony_ci	.name		  = "tesla_clkdm",
1748c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "tesla_pwrdm" },
1758c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM1_PARTITION,
1768c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM1_TESLA_INST,
1778c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM1_TESLA_TESLA_CDOFFS,
1788c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_TESLA_STATDEP_SHIFT,
1798c2ecf20Sopenharmony_ci	.wkdep_srcs	  = tesla_wkup_sleep_deps,
1808c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = tesla_wkup_sleep_deps,
1818c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
1828c2ecf20Sopenharmony_ci};
1838c2ecf20Sopenharmony_ci
1848c2ecf20Sopenharmony_cistatic struct clockdomain l3_gfx_44xx_clkdm = {
1858c2ecf20Sopenharmony_ci	.name		  = "l3_gfx_clkdm",
1868c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "gfx_pwrdm" },
1878c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
1888c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_GFX_INST,
1898c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_GFX_GFX_CDOFFS,
1908c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_GFX_STATDEP_SHIFT,
1918c2ecf20Sopenharmony_ci	.wkdep_srcs	  = l3_gfx_wkup_sleep_deps,
1928c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = l3_gfx_wkup_sleep_deps,
1938c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
1948c2ecf20Sopenharmony_ci};
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_cistatic struct clockdomain ivahd_44xx_clkdm = {
1978c2ecf20Sopenharmony_ci	.name		  = "ivahd_clkdm",
1988c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "ivahd_pwrdm" },
1998c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
2008c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_IVAHD_INST,
2018c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_IVAHD_IVAHD_CDOFFS,
2028c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_IVAHD_STATDEP_SHIFT,
2038c2ecf20Sopenharmony_ci	.wkdep_srcs	  = ivahd_wkup_sleep_deps,
2048c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = ivahd_wkup_sleep_deps,
2058c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
2068c2ecf20Sopenharmony_ci};
2078c2ecf20Sopenharmony_ci
2088c2ecf20Sopenharmony_cistatic struct clockdomain l4_secure_44xx_clkdm = {
2098c2ecf20Sopenharmony_ci	.name		  = "l4_secure_clkdm",
2108c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "l4per_pwrdm" },
2118c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
2128c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_L4PER_INST,
2138c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_L4PER_L4SEC_CDOFFS,
2148c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_L4SEC_STATDEP_SHIFT,
2158c2ecf20Sopenharmony_ci	.wkdep_srcs	  = l4_secure_wkup_sleep_deps,
2168c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = l4_secure_wkup_sleep_deps,
2178c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_SWSUP,
2188c2ecf20Sopenharmony_ci};
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_cistatic struct clockdomain l4_per_44xx_clkdm = {
2218c2ecf20Sopenharmony_ci	.name		  = "l4_per_clkdm",
2228c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "l4per_pwrdm" },
2238c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
2248c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_L4PER_INST,
2258c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_L4PER_L4PER_CDOFFS,
2268c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_L4PER_STATDEP_SHIFT,
2278c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
2288c2ecf20Sopenharmony_ci};
2298c2ecf20Sopenharmony_ci
2308c2ecf20Sopenharmony_cistatic struct clockdomain abe_44xx_clkdm = {
2318c2ecf20Sopenharmony_ci	.name		  = "abe_clkdm",
2328c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "abe_pwrdm" },
2338c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM1_PARTITION,
2348c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM1_ABE_INST,
2358c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM1_ABE_ABE_CDOFFS,
2368c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_ABE_STATDEP_SHIFT,
2378c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
2388c2ecf20Sopenharmony_ci};
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_cistatic struct clockdomain l3_instr_44xx_clkdm = {
2418c2ecf20Sopenharmony_ci	.name		  = "l3_instr_clkdm",
2428c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
2438c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
2448c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
2458c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_L3INSTR_CDOFFS,
2468c2ecf20Sopenharmony_ci};
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_cistatic struct clockdomain l3_init_44xx_clkdm = {
2498c2ecf20Sopenharmony_ci	.name		  = "l3_init_clkdm",
2508c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "l3init_pwrdm" },
2518c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
2528c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_L3INIT_INST,
2538c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_L3INIT_L3INIT_CDOFFS,
2548c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_L3INIT_STATDEP_SHIFT,
2558c2ecf20Sopenharmony_ci	.wkdep_srcs	  = l3_init_wkup_sleep_deps,
2568c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = l3_init_wkup_sleep_deps,
2578c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
2588c2ecf20Sopenharmony_ci};
2598c2ecf20Sopenharmony_ci
2608c2ecf20Sopenharmony_cistatic struct clockdomain d2d_44xx_clkdm = {
2618c2ecf20Sopenharmony_ci	.name		  = "d2d_clkdm",
2628c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
2638c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
2648c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
2658c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_D2D_CDOFFS,
2668c2ecf20Sopenharmony_ci	.wkdep_srcs	  = d2d_wkup_sleep_deps,
2678c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = d2d_wkup_sleep_deps,
2688c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
2698c2ecf20Sopenharmony_ci};
2708c2ecf20Sopenharmony_ci
2718c2ecf20Sopenharmony_cistatic struct clockdomain mpu0_44xx_clkdm = {
2728c2ecf20Sopenharmony_ci	.name		  = "mpu0_clkdm",
2738c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "cpu0_pwrdm" },
2748c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_PRCM_MPU_PARTITION,
2758c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_PRCM_MPU_CPU0_INST,
2768c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_PRCM_MPU_CPU0_CPU0_CDOFFS,
2778c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
2788c2ecf20Sopenharmony_ci};
2798c2ecf20Sopenharmony_ci
2808c2ecf20Sopenharmony_cistatic struct clockdomain mpu1_44xx_clkdm = {
2818c2ecf20Sopenharmony_ci	.name		  = "mpu1_clkdm",
2828c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "cpu1_pwrdm" },
2838c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_PRCM_MPU_PARTITION,
2848c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_PRCM_MPU_CPU1_INST,
2858c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_PRCM_MPU_CPU1_CPU1_CDOFFS,
2868c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
2878c2ecf20Sopenharmony_ci};
2888c2ecf20Sopenharmony_ci
2898c2ecf20Sopenharmony_cistatic struct clockdomain l3_emif_44xx_clkdm = {
2908c2ecf20Sopenharmony_ci	.name		  = "l3_emif_clkdm",
2918c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
2928c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
2938c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
2948c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_MEMIF_CDOFFS,
2958c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_MEMIF_STATDEP_SHIFT,
2968c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
2978c2ecf20Sopenharmony_ci};
2988c2ecf20Sopenharmony_ci
2998c2ecf20Sopenharmony_cistatic struct clockdomain l4_ao_44xx_clkdm = {
3008c2ecf20Sopenharmony_ci	.name		  = "l4_ao_clkdm",
3018c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "always_on_core_pwrdm" },
3028c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
3038c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_ALWAYS_ON_INST,
3048c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_ALWAYS_ON_ALWON_CDOFFS,
3058c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
3068c2ecf20Sopenharmony_ci};
3078c2ecf20Sopenharmony_ci
3088c2ecf20Sopenharmony_cistatic struct clockdomain ducati_44xx_clkdm = {
3098c2ecf20Sopenharmony_ci	.name		  = "ducati_clkdm",
3108c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
3118c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
3128c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
3138c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_DUCATI_CDOFFS,
3148c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_DUCATI_STATDEP_SHIFT,
3158c2ecf20Sopenharmony_ci	.wkdep_srcs	  = ducati_wkup_sleep_deps,
3168c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = ducati_wkup_sleep_deps,
3178c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
3188c2ecf20Sopenharmony_ci};
3198c2ecf20Sopenharmony_ci
3208c2ecf20Sopenharmony_cistatic struct clockdomain mpu_44xx_clkdm = {
3218c2ecf20Sopenharmony_ci	.name		  = "mpuss_clkdm",
3228c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "mpu_pwrdm" },
3238c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM1_PARTITION,
3248c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM1_MPU_INST,
3258c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM1_MPU_MPU_CDOFFS,
3268c2ecf20Sopenharmony_ci	.wkdep_srcs	  = mpu_wkup_sleep_deps,
3278c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = mpu_wkup_sleep_deps,
3288c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
3298c2ecf20Sopenharmony_ci};
3308c2ecf20Sopenharmony_ci
3318c2ecf20Sopenharmony_cistatic struct clockdomain l3_2_44xx_clkdm = {
3328c2ecf20Sopenharmony_ci	.name		  = "l3_2_clkdm",
3338c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
3348c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
3358c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
3368c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_L3_2_CDOFFS,
3378c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_L3_2_STATDEP_SHIFT,
3388c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP,
3398c2ecf20Sopenharmony_ci};
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_cistatic struct clockdomain l3_1_44xx_clkdm = {
3428c2ecf20Sopenharmony_ci	.name		  = "l3_1_clkdm",
3438c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
3448c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
3458c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
3468c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_L3_1_CDOFFS,
3478c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_L3_1_STATDEP_SHIFT,
3488c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP,
3498c2ecf20Sopenharmony_ci};
3508c2ecf20Sopenharmony_ci
3518c2ecf20Sopenharmony_cistatic struct clockdomain iss_44xx_clkdm = {
3528c2ecf20Sopenharmony_ci	.name		  = "iss_clkdm",
3538c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "cam_pwrdm" },
3548c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
3558c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CAM_INST,
3568c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CAM_CAM_CDOFFS,
3578c2ecf20Sopenharmony_ci	.wkdep_srcs	  = iss_wkup_sleep_deps,
3588c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = iss_wkup_sleep_deps,
3598c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_SWSUP,
3608c2ecf20Sopenharmony_ci};
3618c2ecf20Sopenharmony_ci
3628c2ecf20Sopenharmony_cistatic struct clockdomain l3_dss_44xx_clkdm = {
3638c2ecf20Sopenharmony_ci	.name		  = "l3_dss_clkdm",
3648c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "dss_pwrdm" },
3658c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
3668c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_DSS_INST,
3678c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_DSS_DSS_CDOFFS,
3688c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_DSS_STATDEP_SHIFT,
3698c2ecf20Sopenharmony_ci	.wkdep_srcs	  = l3_dss_wkup_sleep_deps,
3708c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = l3_dss_wkup_sleep_deps,
3718c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP_SWSUP,
3728c2ecf20Sopenharmony_ci};
3738c2ecf20Sopenharmony_ci
3748c2ecf20Sopenharmony_cistatic struct clockdomain l4_wkup_44xx_clkdm = {
3758c2ecf20Sopenharmony_ci	.name		  = "l4_wkup_clkdm",
3768c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "wkup_pwrdm" },
3778c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_PRM_PARTITION,
3788c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_PRM_WKUP_CM_INST,
3798c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_PRM_WKUP_CM_WKUP_CDOFFS,
3808c2ecf20Sopenharmony_ci	.dep_bit	  = OMAP4430_L4WKUP_STATDEP_SHIFT,
3818c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_HWSUP | CLKDM_ACTIVE_WITH_MPU,
3828c2ecf20Sopenharmony_ci};
3838c2ecf20Sopenharmony_ci
3848c2ecf20Sopenharmony_cistatic struct clockdomain emu_sys_44xx_clkdm = {
3858c2ecf20Sopenharmony_ci	.name		  = "emu_sys_clkdm",
3868c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "emu_pwrdm" },
3878c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_PRM_PARTITION,
3888c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_PRM_EMU_CM_INST,
3898c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_PRM_EMU_CM_EMU_CDOFFS,
3908c2ecf20Sopenharmony_ci	.flags		  = (CLKDM_CAN_ENABLE_AUTO | CLKDM_CAN_FORCE_WAKEUP |
3918c2ecf20Sopenharmony_ci			     CLKDM_MISSING_IDLE_REPORTING),
3928c2ecf20Sopenharmony_ci};
3938c2ecf20Sopenharmony_ci
3948c2ecf20Sopenharmony_cistatic struct clockdomain l3_dma_44xx_clkdm = {
3958c2ecf20Sopenharmony_ci	.name		  = "l3_dma_clkdm",
3968c2ecf20Sopenharmony_ci	.pwrdm		  = { .name = "core_pwrdm" },
3978c2ecf20Sopenharmony_ci	.prcm_partition	  = OMAP4430_CM2_PARTITION,
3988c2ecf20Sopenharmony_ci	.cm_inst	  = OMAP4430_CM2_CORE_INST,
3998c2ecf20Sopenharmony_ci	.clkdm_offs	  = OMAP4430_CM2_CORE_SDMA_CDOFFS,
4008c2ecf20Sopenharmony_ci	.wkdep_srcs	  = l3_dma_wkup_sleep_deps,
4018c2ecf20Sopenharmony_ci	.sleepdep_srcs	  = l3_dma_wkup_sleep_deps,
4028c2ecf20Sopenharmony_ci	.flags		  = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
4038c2ecf20Sopenharmony_ci};
4048c2ecf20Sopenharmony_ci
4058c2ecf20Sopenharmony_ci/* As clockdomains are added or removed above, this list must also be changed */
4068c2ecf20Sopenharmony_cistatic struct clockdomain *clockdomains_omap44xx[] __initdata = {
4078c2ecf20Sopenharmony_ci	&l4_cefuse_44xx_clkdm,
4088c2ecf20Sopenharmony_ci	&l4_cfg_44xx_clkdm,
4098c2ecf20Sopenharmony_ci	&tesla_44xx_clkdm,
4108c2ecf20Sopenharmony_ci	&l3_gfx_44xx_clkdm,
4118c2ecf20Sopenharmony_ci	&ivahd_44xx_clkdm,
4128c2ecf20Sopenharmony_ci	&l4_secure_44xx_clkdm,
4138c2ecf20Sopenharmony_ci	&l4_per_44xx_clkdm,
4148c2ecf20Sopenharmony_ci	&abe_44xx_clkdm,
4158c2ecf20Sopenharmony_ci	&l3_instr_44xx_clkdm,
4168c2ecf20Sopenharmony_ci	&l3_init_44xx_clkdm,
4178c2ecf20Sopenharmony_ci	&d2d_44xx_clkdm,
4188c2ecf20Sopenharmony_ci	&mpu0_44xx_clkdm,
4198c2ecf20Sopenharmony_ci	&mpu1_44xx_clkdm,
4208c2ecf20Sopenharmony_ci	&l3_emif_44xx_clkdm,
4218c2ecf20Sopenharmony_ci	&l4_ao_44xx_clkdm,
4228c2ecf20Sopenharmony_ci	&ducati_44xx_clkdm,
4238c2ecf20Sopenharmony_ci	&mpu_44xx_clkdm,
4248c2ecf20Sopenharmony_ci	&l3_2_44xx_clkdm,
4258c2ecf20Sopenharmony_ci	&l3_1_44xx_clkdm,
4268c2ecf20Sopenharmony_ci	&iss_44xx_clkdm,
4278c2ecf20Sopenharmony_ci	&l3_dss_44xx_clkdm,
4288c2ecf20Sopenharmony_ci	&l4_wkup_44xx_clkdm,
4298c2ecf20Sopenharmony_ci	&emu_sys_44xx_clkdm,
4308c2ecf20Sopenharmony_ci	&l3_dma_44xx_clkdm,
4318c2ecf20Sopenharmony_ci	NULL
4328c2ecf20Sopenharmony_ci};
4338c2ecf20Sopenharmony_ci
4348c2ecf20Sopenharmony_ci
4358c2ecf20Sopenharmony_civoid __init omap44xx_clockdomains_init(void)
4368c2ecf20Sopenharmony_ci{
4378c2ecf20Sopenharmony_ci	clkdm_register_platform_funcs(&omap4_clkdm_operations);
4388c2ecf20Sopenharmony_ci	clkdm_register_clkdms(clockdomains_omap44xx);
4398c2ecf20Sopenharmony_ci	clkdm_complete_init();
4408c2ecf20Sopenharmony_ci}
441