Path: blob/master/arch/arm/mach-omap2/clockdomains54xx_data.c
26292 views
// SPDX-License-Identifier: GPL-2.0-only1/*2* OMAP54XX Clock domains framework3*4* Copyright (C) 2013 Texas Instruments, Inc.5*6* Abhijit Pagare ([email protected])7* Benoit Cousson ([email protected])8* Paul Walmsley ([email protected])9*10* This file is automatically generated from the OMAP hardware databases.11* We respectfully ask that any modifications to this file be coordinated12* with the public [email protected] mailing list and the13* authors above to ensure that the autogeneration scripts are kept14* up-to-date with the file contents.15*/1617#include <linux/kernel.h>18#include <linux/io.h>1920#include "clockdomain.h"21#include "cm1_54xx.h"22#include "cm2_54xx.h"2324#include "cm-regbits-54xx.h"25#include "prm54xx.h"26#include "prcm44xx.h"27#include "prcm_mpu54xx.h"2829/* Static Dependencies for OMAP4 Clock Domains */3031static struct clkdm_dep c2c_wkup_sleep_deps[] = {32{ .clkdm_name = "abe_clkdm" },33{ .clkdm_name = "emif_clkdm" },34{ .clkdm_name = "iva_clkdm" },35{ .clkdm_name = "l3init_clkdm" },36{ .clkdm_name = "l3main1_clkdm" },37{ .clkdm_name = "l3main2_clkdm" },38{ .clkdm_name = "l4cfg_clkdm" },39{ .clkdm_name = "l4per_clkdm" },40{ NULL },41};4243static struct clkdm_dep cam_wkup_sleep_deps[] = {44{ .clkdm_name = "emif_clkdm" },45{ .clkdm_name = "iva_clkdm" },46{ .clkdm_name = "l3main1_clkdm" },47{ NULL },48};4950static struct clkdm_dep dma_wkup_sleep_deps[] = {51{ .clkdm_name = "abe_clkdm" },52{ .clkdm_name = "dss_clkdm" },53{ .clkdm_name = "emif_clkdm" },54{ .clkdm_name = "ipu_clkdm" },55{ .clkdm_name = "iva_clkdm" },56{ .clkdm_name = "l3init_clkdm" },57{ .clkdm_name = "l3main1_clkdm" },58{ .clkdm_name = "l4cfg_clkdm" },59{ .clkdm_name = "l4per_clkdm" },60{ .clkdm_name = "l4sec_clkdm" },61{ .clkdm_name = "wkupaon_clkdm" },62{ NULL },63};6465static struct clkdm_dep dsp_wkup_sleep_deps[] = {66{ .clkdm_name = "abe_clkdm" },67{ .clkdm_name = "emif_clkdm" },68{ .clkdm_name = "iva_clkdm" },69{ .clkdm_name = "l3init_clkdm" },70{ .clkdm_name = "l3main1_clkdm" },71{ .clkdm_name = "l3main2_clkdm" },72{ .clkdm_name = "l4cfg_clkdm" },73{ .clkdm_name = "l4per_clkdm" },74{ .clkdm_name = "wkupaon_clkdm" },75{ NULL },76};7778static struct clkdm_dep dss_wkup_sleep_deps[] = {79{ .clkdm_name = "emif_clkdm" },80{ .clkdm_name = "iva_clkdm" },81{ .clkdm_name = "l3main2_clkdm" },82{ NULL },83};8485static struct clkdm_dep gpu_wkup_sleep_deps[] = {86{ .clkdm_name = "emif_clkdm" },87{ .clkdm_name = "iva_clkdm" },88{ .clkdm_name = "l3main1_clkdm" },89{ NULL },90};9192static struct clkdm_dep ipu_wkup_sleep_deps[] = {93{ .clkdm_name = "abe_clkdm" },94{ .clkdm_name = "dsp_clkdm" },95{ .clkdm_name = "dss_clkdm" },96{ .clkdm_name = "emif_clkdm" },97{ .clkdm_name = "gpu_clkdm" },98{ .clkdm_name = "iva_clkdm" },99{ .clkdm_name = "l3init_clkdm" },100{ .clkdm_name = "l3main1_clkdm" },101{ .clkdm_name = "l3main2_clkdm" },102{ .clkdm_name = "l4cfg_clkdm" },103{ .clkdm_name = "l4per_clkdm" },104{ .clkdm_name = "l4sec_clkdm" },105{ .clkdm_name = "wkupaon_clkdm" },106{ NULL },107};108109static struct clkdm_dep iva_wkup_sleep_deps[] = {110{ .clkdm_name = "emif_clkdm" },111{ .clkdm_name = "l3main1_clkdm" },112{ NULL },113};114115static struct clkdm_dep l3init_wkup_sleep_deps[] = {116{ .clkdm_name = "abe_clkdm" },117{ .clkdm_name = "emif_clkdm" },118{ .clkdm_name = "iva_clkdm" },119{ .clkdm_name = "l4cfg_clkdm" },120{ .clkdm_name = "l4per_clkdm" },121{ .clkdm_name = "l4sec_clkdm" },122{ .clkdm_name = "wkupaon_clkdm" },123{ NULL },124};125126static struct clkdm_dep l4sec_wkup_sleep_deps[] = {127{ .clkdm_name = "emif_clkdm" },128{ .clkdm_name = "l3main1_clkdm" },129{ .clkdm_name = "l4per_clkdm" },130{ NULL },131};132133static struct clkdm_dep mipiext_wkup_sleep_deps[] = {134{ .clkdm_name = "abe_clkdm" },135{ .clkdm_name = "emif_clkdm" },136{ .clkdm_name = "iva_clkdm" },137{ .clkdm_name = "l3init_clkdm" },138{ .clkdm_name = "l3main1_clkdm" },139{ .clkdm_name = "l3main2_clkdm" },140{ .clkdm_name = "l4cfg_clkdm" },141{ .clkdm_name = "l4per_clkdm" },142{ NULL },143};144145static struct clkdm_dep mpu_wkup_sleep_deps[] = {146{ .clkdm_name = "abe_clkdm" },147{ .clkdm_name = "dsp_clkdm" },148{ .clkdm_name = "dss_clkdm" },149{ .clkdm_name = "emif_clkdm" },150{ .clkdm_name = "gpu_clkdm" },151{ .clkdm_name = "ipu_clkdm" },152{ .clkdm_name = "iva_clkdm" },153{ .clkdm_name = "l3init_clkdm" },154{ .clkdm_name = "l3main1_clkdm" },155{ .clkdm_name = "l3main2_clkdm" },156{ .clkdm_name = "l4cfg_clkdm" },157{ .clkdm_name = "l4per_clkdm" },158{ .clkdm_name = "l4sec_clkdm" },159{ .clkdm_name = "wkupaon_clkdm" },160{ NULL },161};162163static struct clockdomain l4sec_54xx_clkdm = {164.name = "l4sec_clkdm",165.pwrdm = { .name = "core_pwrdm" },166.prcm_partition = OMAP54XX_CM_CORE_PARTITION,167.cm_inst = OMAP54XX_CM_CORE_CORE_INST,168.clkdm_offs = OMAP54XX_CM_CORE_CORE_L4SEC_CDOFFS,169.dep_bit = OMAP54XX_L4SEC_STATDEP_SHIFT,170.wkdep_srcs = l4sec_wkup_sleep_deps,171.sleepdep_srcs = l4sec_wkup_sleep_deps,172.flags = CLKDM_CAN_SWSUP,173};174175static struct clockdomain iva_54xx_clkdm = {176.name = "iva_clkdm",177.pwrdm = { .name = "iva_pwrdm" },178.prcm_partition = OMAP54XX_CM_CORE_PARTITION,179.cm_inst = OMAP54XX_CM_CORE_IVA_INST,180.clkdm_offs = OMAP54XX_CM_CORE_IVA_IVA_CDOFFS,181.dep_bit = OMAP54XX_IVA_STATDEP_SHIFT,182.wkdep_srcs = iva_wkup_sleep_deps,183.sleepdep_srcs = iva_wkup_sleep_deps,184.flags = CLKDM_CAN_HWSUP_SWSUP,185};186187static struct clockdomain mipiext_54xx_clkdm = {188.name = "mipiext_clkdm",189.pwrdm = { .name = "core_pwrdm" },190.prcm_partition = OMAP54XX_CM_CORE_PARTITION,191.cm_inst = OMAP54XX_CM_CORE_CORE_INST,192.clkdm_offs = OMAP54XX_CM_CORE_CORE_MIPIEXT_CDOFFS,193.wkdep_srcs = mipiext_wkup_sleep_deps,194.sleepdep_srcs = mipiext_wkup_sleep_deps,195.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,196};197198static struct clockdomain l3main2_54xx_clkdm = {199.name = "l3main2_clkdm",200.pwrdm = { .name = "core_pwrdm" },201.prcm_partition = OMAP54XX_CM_CORE_PARTITION,202.cm_inst = OMAP54XX_CM_CORE_CORE_INST,203.clkdm_offs = OMAP54XX_CM_CORE_CORE_L3MAIN2_CDOFFS,204.dep_bit = OMAP54XX_L3MAIN2_STATDEP_SHIFT,205.flags = CLKDM_CAN_HWSUP,206};207208static struct clockdomain l3main1_54xx_clkdm = {209.name = "l3main1_clkdm",210.pwrdm = { .name = "core_pwrdm" },211.prcm_partition = OMAP54XX_CM_CORE_PARTITION,212.cm_inst = OMAP54XX_CM_CORE_CORE_INST,213.clkdm_offs = OMAP54XX_CM_CORE_CORE_L3MAIN1_CDOFFS,214.dep_bit = OMAP54XX_L3MAIN1_STATDEP_SHIFT,215.flags = CLKDM_CAN_HWSUP,216};217218static struct clockdomain custefuse_54xx_clkdm = {219.name = "custefuse_clkdm",220.pwrdm = { .name = "custefuse_pwrdm" },221.prcm_partition = OMAP54XX_CM_CORE_PARTITION,222.cm_inst = OMAP54XX_CM_CORE_CUSTEFUSE_INST,223.clkdm_offs = OMAP54XX_CM_CORE_CUSTEFUSE_CUSTEFUSE_CDOFFS,224.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,225};226227static struct clockdomain ipu_54xx_clkdm = {228.name = "ipu_clkdm",229.pwrdm = { .name = "core_pwrdm" },230.prcm_partition = OMAP54XX_CM_CORE_PARTITION,231.cm_inst = OMAP54XX_CM_CORE_CORE_INST,232.clkdm_offs = OMAP54XX_CM_CORE_CORE_IPU_CDOFFS,233.dep_bit = OMAP54XX_IPU_STATDEP_SHIFT,234.wkdep_srcs = ipu_wkup_sleep_deps,235.sleepdep_srcs = ipu_wkup_sleep_deps,236.flags = CLKDM_CAN_HWSUP_SWSUP,237};238239static struct clockdomain l4cfg_54xx_clkdm = {240.name = "l4cfg_clkdm",241.pwrdm = { .name = "core_pwrdm" },242.prcm_partition = OMAP54XX_CM_CORE_PARTITION,243.cm_inst = OMAP54XX_CM_CORE_CORE_INST,244.clkdm_offs = OMAP54XX_CM_CORE_CORE_L4CFG_CDOFFS,245.dep_bit = OMAP54XX_L4CFG_STATDEP_SHIFT,246.flags = CLKDM_CAN_HWSUP,247};248249static struct clockdomain abe_54xx_clkdm = {250.name = "abe_clkdm",251.pwrdm = { .name = "abe_pwrdm" },252.prcm_partition = OMAP54XX_CM_CORE_AON_PARTITION,253.cm_inst = OMAP54XX_CM_CORE_AON_ABE_INST,254.clkdm_offs = OMAP54XX_CM_CORE_AON_ABE_ABE_CDOFFS,255.dep_bit = OMAP54XX_ABE_STATDEP_SHIFT,256.flags = CLKDM_CAN_HWSUP_SWSUP,257};258259static struct clockdomain dss_54xx_clkdm = {260.name = "dss_clkdm",261.pwrdm = { .name = "dss_pwrdm" },262.prcm_partition = OMAP54XX_CM_CORE_PARTITION,263.cm_inst = OMAP54XX_CM_CORE_DSS_INST,264.clkdm_offs = OMAP54XX_CM_CORE_DSS_DSS_CDOFFS,265.dep_bit = OMAP54XX_DSS_STATDEP_SHIFT,266.wkdep_srcs = dss_wkup_sleep_deps,267.sleepdep_srcs = dss_wkup_sleep_deps,268.flags = CLKDM_CAN_HWSUP_SWSUP,269};270271static struct clockdomain dsp_54xx_clkdm = {272.name = "dsp_clkdm",273.pwrdm = { .name = "dsp_pwrdm" },274.prcm_partition = OMAP54XX_CM_CORE_AON_PARTITION,275.cm_inst = OMAP54XX_CM_CORE_AON_DSP_INST,276.clkdm_offs = OMAP54XX_CM_CORE_AON_DSP_DSP_CDOFFS,277.dep_bit = OMAP54XX_DSP_STATDEP_SHIFT,278.wkdep_srcs = dsp_wkup_sleep_deps,279.sleepdep_srcs = dsp_wkup_sleep_deps,280.flags = CLKDM_CAN_HWSUP_SWSUP,281};282283static struct clockdomain c2c_54xx_clkdm = {284.name = "c2c_clkdm",285.pwrdm = { .name = "core_pwrdm" },286.prcm_partition = OMAP54XX_CM_CORE_PARTITION,287.cm_inst = OMAP54XX_CM_CORE_CORE_INST,288.clkdm_offs = OMAP54XX_CM_CORE_CORE_C2C_CDOFFS,289.wkdep_srcs = c2c_wkup_sleep_deps,290.sleepdep_srcs = c2c_wkup_sleep_deps,291.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,292};293294static struct clockdomain l4per_54xx_clkdm = {295.name = "l4per_clkdm",296.pwrdm = { .name = "core_pwrdm" },297.prcm_partition = OMAP54XX_CM_CORE_PARTITION,298.cm_inst = OMAP54XX_CM_CORE_CORE_INST,299.clkdm_offs = OMAP54XX_CM_CORE_CORE_L4PER_CDOFFS,300.dep_bit = OMAP54XX_L4PER_STATDEP_SHIFT,301.flags = CLKDM_CAN_HWSUP_SWSUP,302};303304static struct clockdomain gpu_54xx_clkdm = {305.name = "gpu_clkdm",306.pwrdm = { .name = "gpu_pwrdm" },307.prcm_partition = OMAP54XX_CM_CORE_PARTITION,308.cm_inst = OMAP54XX_CM_CORE_GPU_INST,309.clkdm_offs = OMAP54XX_CM_CORE_GPU_GPU_CDOFFS,310.dep_bit = OMAP54XX_GPU_STATDEP_SHIFT,311.wkdep_srcs = gpu_wkup_sleep_deps,312.sleepdep_srcs = gpu_wkup_sleep_deps,313.flags = CLKDM_CAN_HWSUP_SWSUP,314};315316static struct clockdomain wkupaon_54xx_clkdm = {317.name = "wkupaon_clkdm",318.pwrdm = { .name = "wkupaon_pwrdm" },319.prcm_partition = OMAP54XX_PRM_PARTITION,320.cm_inst = OMAP54XX_PRM_WKUPAON_CM_INST,321.clkdm_offs = OMAP54XX_PRM_WKUPAON_CM_WKUPAON_CDOFFS,322.dep_bit = OMAP54XX_WKUPAON_STATDEP_SHIFT,323.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,324};325326static struct clockdomain mpu0_54xx_clkdm = {327.name = "mpu0_clkdm",328.pwrdm = { .name = "cpu0_pwrdm" },329.prcm_partition = OMAP54XX_PRCM_MPU_PARTITION,330.cm_inst = OMAP54XX_PRCM_MPU_CM_C0_INST,331.clkdm_offs = OMAP54XX_PRCM_MPU_CM_C0_CPU0_CDOFFS,332.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,333};334335static struct clockdomain mpu1_54xx_clkdm = {336.name = "mpu1_clkdm",337.pwrdm = { .name = "cpu1_pwrdm" },338.prcm_partition = OMAP54XX_PRCM_MPU_PARTITION,339.cm_inst = OMAP54XX_PRCM_MPU_CM_C1_INST,340.clkdm_offs = OMAP54XX_PRCM_MPU_CM_C1_CPU1_CDOFFS,341.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,342};343344static struct clockdomain coreaon_54xx_clkdm = {345.name = "coreaon_clkdm",346.pwrdm = { .name = "coreaon_pwrdm" },347.prcm_partition = OMAP54XX_CM_CORE_PARTITION,348.cm_inst = OMAP54XX_CM_CORE_COREAON_INST,349.clkdm_offs = OMAP54XX_CM_CORE_COREAON_COREAON_CDOFFS,350.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,351};352353static struct clockdomain mpu_54xx_clkdm = {354.name = "mpu_clkdm",355.pwrdm = { .name = "mpu_pwrdm" },356.prcm_partition = OMAP54XX_CM_CORE_AON_PARTITION,357.cm_inst = OMAP54XX_CM_CORE_AON_MPU_INST,358.clkdm_offs = OMAP54XX_CM_CORE_AON_MPU_MPU_CDOFFS,359.wkdep_srcs = mpu_wkup_sleep_deps,360.sleepdep_srcs = mpu_wkup_sleep_deps,361.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,362};363364static struct clockdomain l3init_54xx_clkdm = {365.name = "l3init_clkdm",366.pwrdm = { .name = "l3init_pwrdm" },367.prcm_partition = OMAP54XX_CM_CORE_PARTITION,368.cm_inst = OMAP54XX_CM_CORE_L3INIT_INST,369.clkdm_offs = OMAP54XX_CM_CORE_L3INIT_L3INIT_CDOFFS,370.dep_bit = OMAP54XX_L3INIT_STATDEP_SHIFT,371.wkdep_srcs = l3init_wkup_sleep_deps,372.sleepdep_srcs = l3init_wkup_sleep_deps,373.flags = CLKDM_CAN_HWSUP_SWSUP,374};375376static struct clockdomain dma_54xx_clkdm = {377.name = "dma_clkdm",378.pwrdm = { .name = "core_pwrdm" },379.prcm_partition = OMAP54XX_CM_CORE_PARTITION,380.cm_inst = OMAP54XX_CM_CORE_CORE_INST,381.clkdm_offs = OMAP54XX_CM_CORE_CORE_DMA_CDOFFS,382.wkdep_srcs = dma_wkup_sleep_deps,383.sleepdep_srcs = dma_wkup_sleep_deps,384.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,385};386387static struct clockdomain l3instr_54xx_clkdm = {388.name = "l3instr_clkdm",389.pwrdm = { .name = "core_pwrdm" },390.prcm_partition = OMAP54XX_CM_CORE_PARTITION,391.cm_inst = OMAP54XX_CM_CORE_CORE_INST,392.clkdm_offs = OMAP54XX_CM_CORE_CORE_L3INSTR_CDOFFS,393};394395static struct clockdomain emif_54xx_clkdm = {396.name = "emif_clkdm",397.pwrdm = { .name = "core_pwrdm" },398.prcm_partition = OMAP54XX_CM_CORE_PARTITION,399.cm_inst = OMAP54XX_CM_CORE_CORE_INST,400.clkdm_offs = OMAP54XX_CM_CORE_CORE_EMIF_CDOFFS,401.dep_bit = OMAP54XX_EMIF_STATDEP_SHIFT,402.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,403};404405static struct clockdomain emu_54xx_clkdm = {406.name = "emu_clkdm",407.pwrdm = { .name = "emu_pwrdm" },408.prcm_partition = OMAP54XX_PRM_PARTITION,409.cm_inst = OMAP54XX_PRM_EMU_CM_INST,410.clkdm_offs = OMAP54XX_PRM_EMU_CM_EMU_CDOFFS,411.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,412};413414static struct clockdomain cam_54xx_clkdm = {415.name = "cam_clkdm",416.pwrdm = { .name = "cam_pwrdm" },417.prcm_partition = OMAP54XX_CM_CORE_PARTITION,418.cm_inst = OMAP54XX_CM_CORE_CAM_INST,419.clkdm_offs = OMAP54XX_CM_CORE_CAM_CAM_CDOFFS,420.wkdep_srcs = cam_wkup_sleep_deps,421.sleepdep_srcs = cam_wkup_sleep_deps,422.flags = CLKDM_CAN_HWSUP_SWSUP,423};424425/* As clockdomains are added or removed above, this list must also be changed */426static struct clockdomain *clockdomains_omap54xx[] __initdata = {427&l4sec_54xx_clkdm,428&iva_54xx_clkdm,429&mipiext_54xx_clkdm,430&l3main2_54xx_clkdm,431&l3main1_54xx_clkdm,432&custefuse_54xx_clkdm,433&ipu_54xx_clkdm,434&l4cfg_54xx_clkdm,435&abe_54xx_clkdm,436&dss_54xx_clkdm,437&dsp_54xx_clkdm,438&c2c_54xx_clkdm,439&l4per_54xx_clkdm,440&gpu_54xx_clkdm,441&wkupaon_54xx_clkdm,442&mpu0_54xx_clkdm,443&mpu1_54xx_clkdm,444&coreaon_54xx_clkdm,445&mpu_54xx_clkdm,446&l3init_54xx_clkdm,447&dma_54xx_clkdm,448&l3instr_54xx_clkdm,449&emif_54xx_clkdm,450&emu_54xx_clkdm,451&cam_54xx_clkdm,452NULL453};454455void __init omap54xx_clockdomains_init(void)456{457clkdm_register_platform_funcs(&omap4_clkdm_operations);458clkdm_register_clkdms(clockdomains_omap54xx);459clkdm_complete_init();460}461462463