1/* 2 * DRA7xx Clock domains framework 3 * 4 * Copyright (C) 2009-2013 Texas Instruments, Inc. 5 * Copyright (C) 2009-2011 Nokia Corporation 6 * 7 * Generated by code originally written by: 8 * Abhijit Pagare (abhijitpagare@ti.com) 9 * Benoit Cousson (b-cousson@ti.com) 10 * Paul Walmsley (paul@pwsan.com) 11 * 12 * This file is automatically generated from the OMAP hardware databases. 13 * We respectfully ask that any modifications to this file be coordinated 14 * with the public linux-omap@vger.kernel.org mailing list and the 15 * authors above to ensure that the autogeneration scripts are kept 16 * up-to-date with the file contents. 17 * 18 * This program is free software; you can redistribute it and/or modify 19 * it under the terms of the GNU General Public License version 2 as 20 * published by the Free Software Foundation. 21 */ 22 23#include <linux/kernel.h> 24#include <linux/io.h> 25 26#include "clockdomain.h" 27#include "cm1_7xx.h" 28#include "cm2_7xx.h" 29 30#include "cm-regbits-7xx.h" 31#include "prm7xx.h" 32#include "prcm44xx.h" 33#include "prcm_mpu7xx.h" 34 35/* Static Dependencies for DRA7xx Clock Domains */ 36 37static struct clkdm_dep cam_wkup_sleep_deps[] = { 38 { .clkdm_name = "emif_clkdm" }, 39 { NULL }, 40}; 41 42static struct clkdm_dep dma_wkup_sleep_deps[] = { 43 { .clkdm_name = "dss_clkdm" }, 44 { .clkdm_name = "emif_clkdm" }, 45 { .clkdm_name = "ipu_clkdm" }, 46 { .clkdm_name = "ipu1_clkdm" }, 47 { .clkdm_name = "ipu2_clkdm" }, 48 { .clkdm_name = "iva_clkdm" }, 49 { .clkdm_name = "l3init_clkdm" }, 50 { .clkdm_name = "l4cfg_clkdm" }, 51 { .clkdm_name = "l4per_clkdm" }, 52 { .clkdm_name = "l4per2_clkdm" }, 53 { .clkdm_name = "l4per3_clkdm" }, 54 { .clkdm_name = "l4sec_clkdm" }, 55 { .clkdm_name = "pcie_clkdm" }, 56 { .clkdm_name = "wkupaon_clkdm" }, 57 { NULL }, 58}; 59 60static struct clkdm_dep dsp1_wkup_sleep_deps[] = { 61 { .clkdm_name = "atl_clkdm" }, 62 { .clkdm_name = "cam_clkdm" }, 63 { .clkdm_name = "dsp2_clkdm" }, 64 { .clkdm_name = "dss_clkdm" }, 65 { .clkdm_name = "emif_clkdm" }, 66 { .clkdm_name = "eve1_clkdm" }, 67 { .clkdm_name = "eve2_clkdm" }, 68 { .clkdm_name = "eve3_clkdm" }, 69 { .clkdm_name = "eve4_clkdm" }, 70 { .clkdm_name = "gmac_clkdm" }, 71 { .clkdm_name = "gpu_clkdm" }, 72 { .clkdm_name = "ipu_clkdm" }, 73 { .clkdm_name = "ipu1_clkdm" }, 74 { .clkdm_name = "ipu2_clkdm" }, 75 { .clkdm_name = "iva_clkdm" }, 76 { .clkdm_name = "l3init_clkdm" }, 77 { .clkdm_name = "l4per_clkdm" }, 78 { .clkdm_name = "l4per2_clkdm" }, 79 { .clkdm_name = "l4per3_clkdm" }, 80 { .clkdm_name = "l4sec_clkdm" }, 81 { .clkdm_name = "pcie_clkdm" }, 82 { .clkdm_name = "vpe_clkdm" }, 83 { .clkdm_name = "wkupaon_clkdm" }, 84 { NULL }, 85}; 86 87static struct clkdm_dep dsp2_wkup_sleep_deps[] = { 88 { .clkdm_name = "atl_clkdm" }, 89 { .clkdm_name = "cam_clkdm" }, 90 { .clkdm_name = "dsp1_clkdm" }, 91 { .clkdm_name = "dss_clkdm" }, 92 { .clkdm_name = "emif_clkdm" }, 93 { .clkdm_name = "eve1_clkdm" }, 94 { .clkdm_name = "eve2_clkdm" }, 95 { .clkdm_name = "eve3_clkdm" }, 96 { .clkdm_name = "eve4_clkdm" }, 97 { .clkdm_name = "gmac_clkdm" }, 98 { .clkdm_name = "gpu_clkdm" }, 99 { .clkdm_name = "ipu_clkdm" }, 100 { .clkdm_name = "ipu1_clkdm" }, 101 { .clkdm_name = "ipu2_clkdm" }, 102 { .clkdm_name = "iva_clkdm" }, 103 { .clkdm_name = "l3init_clkdm" }, 104 { .clkdm_name = "l4per_clkdm" }, 105 { .clkdm_name = "l4per2_clkdm" }, 106 { .clkdm_name = "l4per3_clkdm" }, 107 { .clkdm_name = "l4sec_clkdm" }, 108 { .clkdm_name = "pcie_clkdm" }, 109 { .clkdm_name = "vpe_clkdm" }, 110 { .clkdm_name = "wkupaon_clkdm" }, 111 { NULL }, 112}; 113 114static struct clkdm_dep dss_wkup_sleep_deps[] = { 115 { .clkdm_name = "emif_clkdm" }, 116 { .clkdm_name = "iva_clkdm" }, 117 { NULL }, 118}; 119 120static struct clkdm_dep eve1_wkup_sleep_deps[] = { 121 { .clkdm_name = "emif_clkdm" }, 122 { .clkdm_name = "eve2_clkdm" }, 123 { .clkdm_name = "eve3_clkdm" }, 124 { .clkdm_name = "eve4_clkdm" }, 125 { .clkdm_name = "iva_clkdm" }, 126 { NULL }, 127}; 128 129static struct clkdm_dep eve2_wkup_sleep_deps[] = { 130 { .clkdm_name = "emif_clkdm" }, 131 { .clkdm_name = "eve1_clkdm" }, 132 { .clkdm_name = "eve3_clkdm" }, 133 { .clkdm_name = "eve4_clkdm" }, 134 { .clkdm_name = "iva_clkdm" }, 135 { NULL }, 136}; 137 138static struct clkdm_dep eve3_wkup_sleep_deps[] = { 139 { .clkdm_name = "emif_clkdm" }, 140 { .clkdm_name = "eve1_clkdm" }, 141 { .clkdm_name = "eve2_clkdm" }, 142 { .clkdm_name = "eve4_clkdm" }, 143 { .clkdm_name = "iva_clkdm" }, 144 { NULL }, 145}; 146 147static struct clkdm_dep eve4_wkup_sleep_deps[] = { 148 { .clkdm_name = "emif_clkdm" }, 149 { .clkdm_name = "eve1_clkdm" }, 150 { .clkdm_name = "eve2_clkdm" }, 151 { .clkdm_name = "eve3_clkdm" }, 152 { .clkdm_name = "iva_clkdm" }, 153 { NULL }, 154}; 155 156static struct clkdm_dep gmac_wkup_sleep_deps[] = { 157 { .clkdm_name = "emif_clkdm" }, 158 { .clkdm_name = "l4per2_clkdm" }, 159 { NULL }, 160}; 161 162static struct clkdm_dep gpu_wkup_sleep_deps[] = { 163 { .clkdm_name = "emif_clkdm" }, 164 { .clkdm_name = "iva_clkdm" }, 165 { NULL }, 166}; 167 168static struct clkdm_dep ipu1_wkup_sleep_deps[] = { 169 { .clkdm_name = "atl_clkdm" }, 170 { .clkdm_name = "dsp1_clkdm" }, 171 { .clkdm_name = "dsp2_clkdm" }, 172 { .clkdm_name = "dss_clkdm" }, 173 { .clkdm_name = "emif_clkdm" }, 174 { .clkdm_name = "eve1_clkdm" }, 175 { .clkdm_name = "eve2_clkdm" }, 176 { .clkdm_name = "eve3_clkdm" }, 177 { .clkdm_name = "eve4_clkdm" }, 178 { .clkdm_name = "gmac_clkdm" }, 179 { .clkdm_name = "gpu_clkdm" }, 180 { .clkdm_name = "ipu_clkdm" }, 181 { .clkdm_name = "ipu2_clkdm" }, 182 { .clkdm_name = "iva_clkdm" }, 183 { .clkdm_name = "l3init_clkdm" }, 184 { .clkdm_name = "l3main1_clkdm" }, 185 { .clkdm_name = "l4cfg_clkdm" }, 186 { .clkdm_name = "l4per_clkdm" }, 187 { .clkdm_name = "l4per2_clkdm" }, 188 { .clkdm_name = "l4per3_clkdm" }, 189 { .clkdm_name = "l4sec_clkdm" }, 190 { .clkdm_name = "pcie_clkdm" }, 191 { .clkdm_name = "vpe_clkdm" }, 192 { .clkdm_name = "wkupaon_clkdm" }, 193 { NULL }, 194}; 195 196static struct clkdm_dep ipu2_wkup_sleep_deps[] = { 197 { .clkdm_name = "atl_clkdm" }, 198 { .clkdm_name = "dsp1_clkdm" }, 199 { .clkdm_name = "dsp2_clkdm" }, 200 { .clkdm_name = "dss_clkdm" }, 201 { .clkdm_name = "emif_clkdm" }, 202 { .clkdm_name = "eve1_clkdm" }, 203 { .clkdm_name = "eve2_clkdm" }, 204 { .clkdm_name = "eve3_clkdm" }, 205 { .clkdm_name = "eve4_clkdm" }, 206 { .clkdm_name = "gmac_clkdm" }, 207 { .clkdm_name = "gpu_clkdm" }, 208 { .clkdm_name = "ipu_clkdm" }, 209 { .clkdm_name = "ipu1_clkdm" }, 210 { .clkdm_name = "iva_clkdm" }, 211 { .clkdm_name = "l3init_clkdm" }, 212 { .clkdm_name = "l3main1_clkdm" }, 213 { .clkdm_name = "l4cfg_clkdm" }, 214 { .clkdm_name = "l4per_clkdm" }, 215 { .clkdm_name = "l4per2_clkdm" }, 216 { .clkdm_name = "l4per3_clkdm" }, 217 { .clkdm_name = "l4sec_clkdm" }, 218 { .clkdm_name = "pcie_clkdm" }, 219 { .clkdm_name = "vpe_clkdm" }, 220 { .clkdm_name = "wkupaon_clkdm" }, 221 { NULL }, 222}; 223 224static struct clkdm_dep iva_wkup_sleep_deps[] = { 225 { .clkdm_name = "emif_clkdm" }, 226 { NULL }, 227}; 228 229static struct clkdm_dep l3init_wkup_sleep_deps[] = { 230 { .clkdm_name = "emif_clkdm" }, 231 { .clkdm_name = "iva_clkdm" }, 232 { .clkdm_name = "l4cfg_clkdm" }, 233 { .clkdm_name = "l4per_clkdm" }, 234 { .clkdm_name = "l4per3_clkdm" }, 235 { .clkdm_name = "l4sec_clkdm" }, 236 { .clkdm_name = "wkupaon_clkdm" }, 237 { NULL }, 238}; 239 240static struct clkdm_dep l4per2_wkup_sleep_deps[] = { 241 { .clkdm_name = "dsp1_clkdm" }, 242 { .clkdm_name = "dsp2_clkdm" }, 243 { .clkdm_name = "ipu1_clkdm" }, 244 { .clkdm_name = "ipu2_clkdm" }, 245 { NULL }, 246}; 247 248static struct clkdm_dep l4sec_wkup_sleep_deps[] = { 249 { .clkdm_name = "emif_clkdm" }, 250 { .clkdm_name = "l4per_clkdm" }, 251 { NULL }, 252}; 253 254static struct clkdm_dep mpu_wkup_sleep_deps[] = { 255 { .clkdm_name = "cam_clkdm" }, 256 { .clkdm_name = "dsp1_clkdm" }, 257 { .clkdm_name = "dsp2_clkdm" }, 258 { .clkdm_name = "dss_clkdm" }, 259 { .clkdm_name = "emif_clkdm" }, 260 { .clkdm_name = "eve1_clkdm" }, 261 { .clkdm_name = "eve2_clkdm" }, 262 { .clkdm_name = "eve3_clkdm" }, 263 { .clkdm_name = "eve4_clkdm" }, 264 { .clkdm_name = "gmac_clkdm" }, 265 { .clkdm_name = "gpu_clkdm" }, 266 { .clkdm_name = "ipu_clkdm" }, 267 { .clkdm_name = "ipu1_clkdm" }, 268 { .clkdm_name = "ipu2_clkdm" }, 269 { .clkdm_name = "iva_clkdm" }, 270 { .clkdm_name = "l3init_clkdm" }, 271 { .clkdm_name = "l3main1_clkdm" }, 272 { .clkdm_name = "l4cfg_clkdm" }, 273 { .clkdm_name = "l4per_clkdm" }, 274 { .clkdm_name = "l4per2_clkdm" }, 275 { .clkdm_name = "l4per3_clkdm" }, 276 { .clkdm_name = "l4sec_clkdm" }, 277 { .clkdm_name = "pcie_clkdm" }, 278 { .clkdm_name = "vpe_clkdm" }, 279 { .clkdm_name = "wkupaon_clkdm" }, 280 { NULL }, 281}; 282 283static struct clkdm_dep pcie_wkup_sleep_deps[] = { 284 { .clkdm_name = "atl_clkdm" }, 285 { .clkdm_name = "cam_clkdm" }, 286 { .clkdm_name = "dsp1_clkdm" }, 287 { .clkdm_name = "dsp2_clkdm" }, 288 { .clkdm_name = "dss_clkdm" }, 289 { .clkdm_name = "emif_clkdm" }, 290 { .clkdm_name = "eve1_clkdm" }, 291 { .clkdm_name = "eve2_clkdm" }, 292 { .clkdm_name = "eve3_clkdm" }, 293 { .clkdm_name = "eve4_clkdm" }, 294 { .clkdm_name = "gmac_clkdm" }, 295 { .clkdm_name = "gpu_clkdm" }, 296 { .clkdm_name = "ipu_clkdm" }, 297 { .clkdm_name = "ipu1_clkdm" }, 298 { .clkdm_name = "iva_clkdm" }, 299 { .clkdm_name = "l3init_clkdm" }, 300 { .clkdm_name = "l4cfg_clkdm" }, 301 { .clkdm_name = "l4per_clkdm" }, 302 { .clkdm_name = "l4per2_clkdm" }, 303 { .clkdm_name = "l4per3_clkdm" }, 304 { .clkdm_name = "l4sec_clkdm" }, 305 { .clkdm_name = "vpe_clkdm" }, 306 { NULL }, 307}; 308 309static struct clkdm_dep vpe_wkup_sleep_deps[] = { 310 { .clkdm_name = "emif_clkdm" }, 311 { .clkdm_name = "l4per3_clkdm" }, 312 { NULL }, 313}; 314 315static struct clockdomain l4per3_7xx_clkdm = { 316 .name = "l4per3_clkdm", 317 .pwrdm = { .name = "l4per_pwrdm" }, 318 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 319 .cm_inst = DRA7XX_CM_CORE_L4PER_INST, 320 .clkdm_offs = DRA7XX_CM_CORE_L4PER_L4PER3_CDOFFS, 321 .dep_bit = DRA7XX_L4PER3_STATDEP_SHIFT, 322 .flags = CLKDM_CAN_HWSUP_SWSUP, 323}; 324 325static struct clockdomain l4per2_7xx_clkdm = { 326 .name = "l4per2_clkdm", 327 .pwrdm = { .name = "l4per_pwrdm" }, 328 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 329 .cm_inst = DRA7XX_CM_CORE_L4PER_INST, 330 .clkdm_offs = DRA7XX_CM_CORE_L4PER_L4PER2_CDOFFS, 331 .dep_bit = DRA7XX_L4PER2_STATDEP_SHIFT, 332 .wkdep_srcs = l4per2_wkup_sleep_deps, 333 .sleepdep_srcs = l4per2_wkup_sleep_deps, 334 .flags = CLKDM_CAN_SWSUP, 335}; 336 337static struct clockdomain mpu0_7xx_clkdm = { 338 .name = "mpu0_clkdm", 339 .pwrdm = { .name = "cpu0_pwrdm" }, 340 .prcm_partition = DRA7XX_MPU_PRCM_PARTITION, 341 .cm_inst = DRA7XX_MPU_PRCM_CM_C0_INST, 342 .clkdm_offs = DRA7XX_MPU_PRCM_CM_C0_CPU0_CDOFFS, 343 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 344}; 345 346static struct clockdomain iva_7xx_clkdm = { 347 .name = "iva_clkdm", 348 .pwrdm = { .name = "iva_pwrdm" }, 349 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 350 .cm_inst = DRA7XX_CM_CORE_IVA_INST, 351 .clkdm_offs = DRA7XX_CM_CORE_IVA_IVA_CDOFFS, 352 .dep_bit = DRA7XX_IVA_STATDEP_SHIFT, 353 .wkdep_srcs = iva_wkup_sleep_deps, 354 .sleepdep_srcs = iva_wkup_sleep_deps, 355 .flags = CLKDM_CAN_HWSUP_SWSUP, 356}; 357 358static struct clockdomain coreaon_7xx_clkdm = { 359 .name = "coreaon_clkdm", 360 .pwrdm = { .name = "coreaon_pwrdm" }, 361 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 362 .cm_inst = DRA7XX_CM_CORE_COREAON_INST, 363 .clkdm_offs = DRA7XX_CM_CORE_COREAON_COREAON_CDOFFS, 364 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 365}; 366 367static struct clockdomain ipu1_7xx_clkdm = { 368 .name = "ipu1_clkdm", 369 .pwrdm = { .name = "ipu_pwrdm" }, 370 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 371 .cm_inst = DRA7XX_CM_CORE_AON_IPU_INST, 372 .clkdm_offs = DRA7XX_CM_CORE_AON_IPU_IPU1_CDOFFS, 373 .dep_bit = DRA7XX_IPU1_STATDEP_SHIFT, 374 .wkdep_srcs = ipu1_wkup_sleep_deps, 375 .sleepdep_srcs = ipu1_wkup_sleep_deps, 376 .flags = CLKDM_CAN_HWSUP_SWSUP, 377}; 378 379static struct clockdomain ipu2_7xx_clkdm = { 380 .name = "ipu2_clkdm", 381 .pwrdm = { .name = "core_pwrdm" }, 382 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 383 .cm_inst = DRA7XX_CM_CORE_CORE_INST, 384 .clkdm_offs = DRA7XX_CM_CORE_CORE_IPU2_CDOFFS, 385 .dep_bit = DRA7XX_IPU2_STATDEP_SHIFT, 386 .wkdep_srcs = ipu2_wkup_sleep_deps, 387 .sleepdep_srcs = ipu2_wkup_sleep_deps, 388 .flags = CLKDM_CAN_HWSUP_SWSUP, 389}; 390 391static struct clockdomain l3init_7xx_clkdm = { 392 .name = "l3init_clkdm", 393 .pwrdm = { .name = "l3init_pwrdm" }, 394 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 395 .cm_inst = DRA7XX_CM_CORE_L3INIT_INST, 396 .clkdm_offs = DRA7XX_CM_CORE_L3INIT_L3INIT_CDOFFS, 397 .dep_bit = DRA7XX_L3INIT_STATDEP_SHIFT, 398 .wkdep_srcs = l3init_wkup_sleep_deps, 399 .sleepdep_srcs = l3init_wkup_sleep_deps, 400 .flags = CLKDM_CAN_HWSUP_SWSUP, 401}; 402 403static struct clockdomain l4sec_7xx_clkdm = { 404 .name = "l4sec_clkdm", 405 .pwrdm = { .name = "l4per_pwrdm" }, 406 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 407 .cm_inst = DRA7XX_CM_CORE_L4PER_INST, 408 .clkdm_offs = DRA7XX_CM_CORE_L4PER_L4SEC_CDOFFS, 409 .dep_bit = DRA7XX_L4SEC_STATDEP_SHIFT, 410 .wkdep_srcs = l4sec_wkup_sleep_deps, 411 .sleepdep_srcs = l4sec_wkup_sleep_deps, 412 .flags = CLKDM_CAN_HWSUP_SWSUP, 413}; 414 415static struct clockdomain l3main1_7xx_clkdm = { 416 .name = "l3main1_clkdm", 417 .pwrdm = { .name = "core_pwrdm" }, 418 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 419 .cm_inst = DRA7XX_CM_CORE_CORE_INST, 420 .clkdm_offs = DRA7XX_CM_CORE_CORE_L3MAIN1_CDOFFS, 421 .dep_bit = DRA7XX_L3MAIN1_STATDEP_SHIFT, 422 .flags = CLKDM_CAN_HWSUP, 423}; 424 425static struct clockdomain vpe_7xx_clkdm = { 426 .name = "vpe_clkdm", 427 .pwrdm = { .name = "vpe_pwrdm" }, 428 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 429 .cm_inst = DRA7XX_CM_CORE_AON_VPE_INST, 430 .clkdm_offs = DRA7XX_CM_CORE_AON_VPE_VPE_CDOFFS, 431 .dep_bit = DRA7XX_VPE_STATDEP_SHIFT, 432 .wkdep_srcs = vpe_wkup_sleep_deps, 433 .sleepdep_srcs = vpe_wkup_sleep_deps, 434 .flags = CLKDM_CAN_HWSUP_SWSUP, 435}; 436 437static struct clockdomain mpu_7xx_clkdm = { 438 .name = "mpu_clkdm", 439 .pwrdm = { .name = "mpu_pwrdm" }, 440 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 441 .cm_inst = DRA7XX_CM_CORE_AON_MPU_INST, 442 .clkdm_offs = DRA7XX_CM_CORE_AON_MPU_MPU_CDOFFS, 443 .wkdep_srcs = mpu_wkup_sleep_deps, 444 .sleepdep_srcs = mpu_wkup_sleep_deps, 445 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 446}; 447 448static struct clockdomain custefuse_7xx_clkdm = { 449 .name = "custefuse_clkdm", 450 .pwrdm = { .name = "custefuse_pwrdm" }, 451 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 452 .cm_inst = DRA7XX_CM_CORE_CUSTEFUSE_INST, 453 .clkdm_offs = DRA7XX_CM_CORE_CUSTEFUSE_CUSTEFUSE_CDOFFS, 454 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 455}; 456 457static struct clockdomain ipu_7xx_clkdm = { 458 .name = "ipu_clkdm", 459 .pwrdm = { .name = "ipu_pwrdm" }, 460 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 461 .cm_inst = DRA7XX_CM_CORE_AON_IPU_INST, 462 .clkdm_offs = DRA7XX_CM_CORE_AON_IPU_IPU_CDOFFS, 463 .dep_bit = DRA7XX_IPU_STATDEP_SHIFT, 464 .flags = CLKDM_CAN_HWSUP_SWSUP, 465}; 466 467static struct clockdomain mpu1_7xx_clkdm = { 468 .name = "mpu1_clkdm", 469 .pwrdm = { .name = "cpu1_pwrdm" }, 470 .prcm_partition = DRA7XX_MPU_PRCM_PARTITION, 471 .cm_inst = DRA7XX_MPU_PRCM_CM_C1_INST, 472 .clkdm_offs = DRA7XX_MPU_PRCM_CM_C1_CPU1_CDOFFS, 473 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 474}; 475 476static struct clockdomain gmac_7xx_clkdm = { 477 .name = "gmac_clkdm", 478 .pwrdm = { .name = "l3init_pwrdm" }, 479 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 480 .cm_inst = DRA7XX_CM_CORE_L3INIT_INST, 481 .clkdm_offs = DRA7XX_CM_CORE_L3INIT_GMAC_CDOFFS, 482 .dep_bit = DRA7XX_GMAC_STATDEP_SHIFT, 483 .wkdep_srcs = gmac_wkup_sleep_deps, 484 .sleepdep_srcs = gmac_wkup_sleep_deps, 485 .flags = CLKDM_CAN_HWSUP_SWSUP, 486}; 487 488static struct clockdomain l4cfg_7xx_clkdm = { 489 .name = "l4cfg_clkdm", 490 .pwrdm = { .name = "core_pwrdm" }, 491 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 492 .cm_inst = DRA7XX_CM_CORE_CORE_INST, 493 .clkdm_offs = DRA7XX_CM_CORE_CORE_L4CFG_CDOFFS, 494 .dep_bit = DRA7XX_L4CFG_STATDEP_SHIFT, 495 .flags = CLKDM_CAN_HWSUP, 496}; 497 498static struct clockdomain dma_7xx_clkdm = { 499 .name = "dma_clkdm", 500 .pwrdm = { .name = "core_pwrdm" }, 501 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 502 .cm_inst = DRA7XX_CM_CORE_CORE_INST, 503 .clkdm_offs = DRA7XX_CM_CORE_CORE_DMA_CDOFFS, 504 .wkdep_srcs = dma_wkup_sleep_deps, 505 .sleepdep_srcs = dma_wkup_sleep_deps, 506 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 507}; 508 509static struct clockdomain rtc_7xx_clkdm = { 510 .name = "rtc_clkdm", 511 .pwrdm = { .name = "rtc_pwrdm" }, 512 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 513 .cm_inst = DRA7XX_CM_CORE_AON_RTC_INST, 514 .clkdm_offs = DRA7XX_CM_CORE_AON_RTC_RTC_CDOFFS, 515 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 516}; 517 518static struct clockdomain pcie_7xx_clkdm = { 519 .name = "pcie_clkdm", 520 .pwrdm = { .name = "l3init_pwrdm" }, 521 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 522 .cm_inst = DRA7XX_CM_CORE_L3INIT_INST, 523 .clkdm_offs = DRA7XX_CM_CORE_L3INIT_PCIE_CDOFFS, 524 .dep_bit = DRA7XX_PCIE_STATDEP_SHIFT, 525 .wkdep_srcs = pcie_wkup_sleep_deps, 526 .sleepdep_srcs = pcie_wkup_sleep_deps, 527 .flags = CLKDM_CAN_HWSUP_SWSUP, 528}; 529 530static struct clockdomain atl_7xx_clkdm = { 531 .name = "atl_clkdm", 532 .pwrdm = { .name = "core_pwrdm" }, 533 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 534 .cm_inst = DRA7XX_CM_CORE_CORE_INST, 535 .clkdm_offs = DRA7XX_CM_CORE_CORE_ATL_CDOFFS, 536 .dep_bit = DRA7XX_ATL_STATDEP_SHIFT, 537 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 538}; 539 540static struct clockdomain l3instr_7xx_clkdm = { 541 .name = "l3instr_clkdm", 542 .pwrdm = { .name = "core_pwrdm" }, 543 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 544 .cm_inst = DRA7XX_CM_CORE_CORE_INST, 545 .clkdm_offs = DRA7XX_CM_CORE_CORE_L3INSTR_CDOFFS, 546}; 547 548static struct clockdomain dss_7xx_clkdm = { 549 .name = "dss_clkdm", 550 .pwrdm = { .name = "dss_pwrdm" }, 551 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 552 .cm_inst = DRA7XX_CM_CORE_DSS_INST, 553 .clkdm_offs = DRA7XX_CM_CORE_DSS_DSS_CDOFFS, 554 .dep_bit = DRA7XX_DSS_STATDEP_SHIFT, 555 .wkdep_srcs = dss_wkup_sleep_deps, 556 .sleepdep_srcs = dss_wkup_sleep_deps, 557 .flags = CLKDM_CAN_HWSUP_SWSUP, 558}; 559 560static struct clockdomain emif_7xx_clkdm = { 561 .name = "emif_clkdm", 562 .pwrdm = { .name = "core_pwrdm" }, 563 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 564 .cm_inst = DRA7XX_CM_CORE_CORE_INST, 565 .clkdm_offs = DRA7XX_CM_CORE_CORE_EMIF_CDOFFS, 566 .dep_bit = DRA7XX_EMIF_STATDEP_SHIFT, 567 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 568}; 569 570static struct clockdomain emu_7xx_clkdm = { 571 .name = "emu_clkdm", 572 .pwrdm = { .name = "emu_pwrdm" }, 573 .prcm_partition = DRA7XX_PRM_PARTITION, 574 .cm_inst = DRA7XX_PRM_EMU_CM_INST, 575 .clkdm_offs = DRA7XX_PRM_EMU_CM_EMU_CDOFFS, 576 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 577}; 578 579static struct clockdomain dsp2_7xx_clkdm = { 580 .name = "dsp2_clkdm", 581 .pwrdm = { .name = "dsp2_pwrdm" }, 582 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 583 .cm_inst = DRA7XX_CM_CORE_AON_DSP2_INST, 584 .clkdm_offs = DRA7XX_CM_CORE_AON_DSP2_DSP2_CDOFFS, 585 .dep_bit = DRA7XX_DSP2_STATDEP_SHIFT, 586 .wkdep_srcs = dsp2_wkup_sleep_deps, 587 .sleepdep_srcs = dsp2_wkup_sleep_deps, 588 .flags = CLKDM_CAN_HWSUP_SWSUP, 589}; 590 591static struct clockdomain dsp1_7xx_clkdm = { 592 .name = "dsp1_clkdm", 593 .pwrdm = { .name = "dsp1_pwrdm" }, 594 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 595 .cm_inst = DRA7XX_CM_CORE_AON_DSP1_INST, 596 .clkdm_offs = DRA7XX_CM_CORE_AON_DSP1_DSP1_CDOFFS, 597 .dep_bit = DRA7XX_DSP1_STATDEP_SHIFT, 598 .wkdep_srcs = dsp1_wkup_sleep_deps, 599 .sleepdep_srcs = dsp1_wkup_sleep_deps, 600 .flags = CLKDM_CAN_HWSUP_SWSUP, 601}; 602 603static struct clockdomain cam_7xx_clkdm = { 604 .name = "cam_clkdm", 605 .pwrdm = { .name = "cam_pwrdm" }, 606 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 607 .cm_inst = DRA7XX_CM_CORE_CAM_INST, 608 .clkdm_offs = DRA7XX_CM_CORE_CAM_CAM_CDOFFS, 609 .dep_bit = DRA7XX_CAM_STATDEP_SHIFT, 610 .wkdep_srcs = cam_wkup_sleep_deps, 611 .sleepdep_srcs = cam_wkup_sleep_deps, 612 .flags = CLKDM_CAN_HWSUP_SWSUP, 613}; 614 615static struct clockdomain l4per_7xx_clkdm = { 616 .name = "l4per_clkdm", 617 .pwrdm = { .name = "l4per_pwrdm" }, 618 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 619 .cm_inst = DRA7XX_CM_CORE_L4PER_INST, 620 .clkdm_offs = DRA7XX_CM_CORE_L4PER_L4PER_CDOFFS, 621 .dep_bit = DRA7XX_L4PER_STATDEP_SHIFT, 622 .flags = CLKDM_CAN_HWSUP_SWSUP, 623}; 624 625static struct clockdomain gpu_7xx_clkdm = { 626 .name = "gpu_clkdm", 627 .pwrdm = { .name = "gpu_pwrdm" }, 628 .prcm_partition = DRA7XX_CM_CORE_PARTITION, 629 .cm_inst = DRA7XX_CM_CORE_GPU_INST, 630 .clkdm_offs = DRA7XX_CM_CORE_GPU_GPU_CDOFFS, 631 .dep_bit = DRA7XX_GPU_STATDEP_SHIFT, 632 .wkdep_srcs = gpu_wkup_sleep_deps, 633 .sleepdep_srcs = gpu_wkup_sleep_deps, 634 .flags = CLKDM_CAN_HWSUP_SWSUP, 635}; 636 637static struct clockdomain eve4_7xx_clkdm = { 638 .name = "eve4_clkdm", 639 .pwrdm = { .name = "eve4_pwrdm" }, 640 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 641 .cm_inst = DRA7XX_CM_CORE_AON_EVE4_INST, 642 .clkdm_offs = DRA7XX_CM_CORE_AON_EVE4_EVE4_CDOFFS, 643 .dep_bit = DRA7XX_EVE4_STATDEP_SHIFT, 644 .wkdep_srcs = eve4_wkup_sleep_deps, 645 .sleepdep_srcs = eve4_wkup_sleep_deps, 646 .flags = CLKDM_CAN_HWSUP_SWSUP, 647}; 648 649static struct clockdomain eve2_7xx_clkdm = { 650 .name = "eve2_clkdm", 651 .pwrdm = { .name = "eve2_pwrdm" }, 652 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 653 .cm_inst = DRA7XX_CM_CORE_AON_EVE2_INST, 654 .clkdm_offs = DRA7XX_CM_CORE_AON_EVE2_EVE2_CDOFFS, 655 .dep_bit = DRA7XX_EVE2_STATDEP_SHIFT, 656 .wkdep_srcs = eve2_wkup_sleep_deps, 657 .sleepdep_srcs = eve2_wkup_sleep_deps, 658 .flags = CLKDM_CAN_HWSUP_SWSUP, 659}; 660 661static struct clockdomain eve3_7xx_clkdm = { 662 .name = "eve3_clkdm", 663 .pwrdm = { .name = "eve3_pwrdm" }, 664 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 665 .cm_inst = DRA7XX_CM_CORE_AON_EVE3_INST, 666 .clkdm_offs = DRA7XX_CM_CORE_AON_EVE3_EVE3_CDOFFS, 667 .dep_bit = DRA7XX_EVE3_STATDEP_SHIFT, 668 .wkdep_srcs = eve3_wkup_sleep_deps, 669 .sleepdep_srcs = eve3_wkup_sleep_deps, 670 .flags = CLKDM_CAN_HWSUP_SWSUP, 671}; 672 673static struct clockdomain wkupaon_7xx_clkdm = { 674 .name = "wkupaon_clkdm", 675 .pwrdm = { .name = "wkupaon_pwrdm" }, 676 .prcm_partition = DRA7XX_PRM_PARTITION, 677 .cm_inst = DRA7XX_PRM_WKUPAON_CM_INST, 678 .clkdm_offs = DRA7XX_PRM_WKUPAON_CM_WKUPAON_CDOFFS, 679 .dep_bit = DRA7XX_WKUPAON_STATDEP_SHIFT, 680 .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP, 681}; 682 683static struct clockdomain eve1_7xx_clkdm = { 684 .name = "eve1_clkdm", 685 .pwrdm = { .name = "eve1_pwrdm" }, 686 .prcm_partition = DRA7XX_CM_CORE_AON_PARTITION, 687 .cm_inst = DRA7XX_CM_CORE_AON_EVE1_INST, 688 .clkdm_offs = DRA7XX_CM_CORE_AON_EVE1_EVE1_CDOFFS, 689 .dep_bit = DRA7XX_EVE1_STATDEP_SHIFT, 690 .wkdep_srcs = eve1_wkup_sleep_deps, 691 .sleepdep_srcs = eve1_wkup_sleep_deps, 692 .flags = CLKDM_CAN_HWSUP_SWSUP, 693}; 694 695/* As clockdomains are added or removed above, this list must also be changed */ 696static struct clockdomain *clockdomains_dra7xx[] __initdata = { 697 &l4per3_7xx_clkdm, 698 &l4per2_7xx_clkdm, 699 &mpu0_7xx_clkdm, 700 &iva_7xx_clkdm, 701 &coreaon_7xx_clkdm, 702 &ipu1_7xx_clkdm, 703 &ipu2_7xx_clkdm, 704 &l3init_7xx_clkdm, 705 &l4sec_7xx_clkdm, 706 &l3main1_7xx_clkdm, 707 &vpe_7xx_clkdm, 708 &mpu_7xx_clkdm, 709 &custefuse_7xx_clkdm, 710 &ipu_7xx_clkdm, 711 &mpu1_7xx_clkdm, 712 &gmac_7xx_clkdm, 713 &l4cfg_7xx_clkdm, 714 &dma_7xx_clkdm, 715 &rtc_7xx_clkdm, 716 &pcie_7xx_clkdm, 717 &atl_7xx_clkdm, 718 &l3instr_7xx_clkdm, 719 &dss_7xx_clkdm, 720 &emif_7xx_clkdm, 721 &emu_7xx_clkdm, 722 &dsp2_7xx_clkdm, 723 &dsp1_7xx_clkdm, 724 &cam_7xx_clkdm, 725 &l4per_7xx_clkdm, 726 &gpu_7xx_clkdm, 727 &eve4_7xx_clkdm, 728 &eve2_7xx_clkdm, 729 &eve3_7xx_clkdm, 730 &wkupaon_7xx_clkdm, 731 &eve1_7xx_clkdm, 732 NULL 733}; 734 735void __init dra7xx_clockdomains_init(void) 736{ 737 clkdm_register_platform_funcs(&omap4_clkdm_operations); 738 clkdm_register_clkdms(clockdomains_dra7xx); 739 clkdm_complete_init(); 740} 741