Path: blob/master/arch/arm/mach-omap2/clockdomains44xx_data.c
26292 views
// SPDX-License-Identifier: GPL-2.0-only1/*2* OMAP4 Clock domains framework3*4* Copyright (C) 2009-2011 Texas Instruments, Inc.5* Copyright (C) 2009-2011 Nokia Corporation6*7* Abhijit Pagare ([email protected])8* Benoit Cousson ([email protected])9* Paul Walmsley ([email protected])10*11* This file is automatically generated from the OMAP hardware databases.12* We respectfully ask that any modifications to this file be coordinated13* with the public [email protected] mailing list and the14* authors above to ensure that the autogeneration scripts are kept15* up-to-date with the file contents.16*/1718#include <linux/kernel.h>19#include <linux/io.h>2021#include "clockdomain.h"22#include "cm1_44xx.h"23#include "cm2_44xx.h"2425#include "cm-regbits-44xx.h"26#include "prm44xx.h"27#include "prcm44xx.h"28#include "prcm_mpu44xx.h"2930/* Static Dependencies for OMAP4 Clock Domains */3132static struct clkdm_dep d2d_wkup_sleep_deps[] = {33{ .clkdm_name = "abe_clkdm" },34{ .clkdm_name = "ivahd_clkdm" },35{ .clkdm_name = "l3_1_clkdm" },36{ .clkdm_name = "l3_2_clkdm" },37{ .clkdm_name = "l3_emif_clkdm" },38{ .clkdm_name = "l3_init_clkdm" },39{ .clkdm_name = "l4_cfg_clkdm" },40{ .clkdm_name = "l4_per_clkdm" },41{ NULL },42};4344static struct clkdm_dep ducati_wkup_sleep_deps[] = {45{ .clkdm_name = "abe_clkdm" },46{ .clkdm_name = "ivahd_clkdm" },47{ .clkdm_name = "l3_1_clkdm" },48{ .clkdm_name = "l3_2_clkdm" },49{ .clkdm_name = "l3_dss_clkdm" },50{ .clkdm_name = "l3_emif_clkdm" },51{ .clkdm_name = "l3_gfx_clkdm" },52{ .clkdm_name = "l3_init_clkdm" },53{ .clkdm_name = "l4_cfg_clkdm" },54{ .clkdm_name = "l4_per_clkdm" },55{ .clkdm_name = "l4_secure_clkdm" },56{ .clkdm_name = "l4_wkup_clkdm" },57{ .clkdm_name = "tesla_clkdm" },58{ NULL },59};6061static struct clkdm_dep iss_wkup_sleep_deps[] = {62{ .clkdm_name = "ivahd_clkdm" },63{ .clkdm_name = "l3_1_clkdm" },64{ .clkdm_name = "l3_emif_clkdm" },65{ NULL },66};6768static struct clkdm_dep ivahd_wkup_sleep_deps[] = {69{ .clkdm_name = "l3_1_clkdm" },70{ .clkdm_name = "l3_emif_clkdm" },71{ NULL },72};7374static struct clkdm_dep l3_dma_wkup_sleep_deps[] = {75{ .clkdm_name = "abe_clkdm" },76{ .clkdm_name = "ducati_clkdm" },77{ .clkdm_name = "ivahd_clkdm" },78{ .clkdm_name = "l3_1_clkdm" },79{ .clkdm_name = "l3_dss_clkdm" },80{ .clkdm_name = "l3_emif_clkdm" },81{ .clkdm_name = "l3_init_clkdm" },82{ .clkdm_name = "l4_cfg_clkdm" },83{ .clkdm_name = "l4_per_clkdm" },84{ .clkdm_name = "l4_secure_clkdm" },85{ .clkdm_name = "l4_wkup_clkdm" },86{ NULL },87};8889static struct clkdm_dep l3_dss_wkup_sleep_deps[] = {90{ .clkdm_name = "ivahd_clkdm" },91{ .clkdm_name = "l3_2_clkdm" },92{ .clkdm_name = "l3_emif_clkdm" },93{ NULL },94};9596static struct clkdm_dep l3_gfx_wkup_sleep_deps[] = {97{ .clkdm_name = "ivahd_clkdm" },98{ .clkdm_name = "l3_1_clkdm" },99{ .clkdm_name = "l3_emif_clkdm" },100{ NULL },101};102103static struct clkdm_dep l3_init_wkup_sleep_deps[] = {104{ .clkdm_name = "abe_clkdm" },105{ .clkdm_name = "ivahd_clkdm" },106{ .clkdm_name = "l3_emif_clkdm" },107{ .clkdm_name = "l4_cfg_clkdm" },108{ .clkdm_name = "l4_per_clkdm" },109{ .clkdm_name = "l4_secure_clkdm" },110{ .clkdm_name = "l4_wkup_clkdm" },111{ NULL },112};113114static struct clkdm_dep l4_secure_wkup_sleep_deps[] = {115{ .clkdm_name = "l3_1_clkdm" },116{ .clkdm_name = "l3_emif_clkdm" },117{ .clkdm_name = "l4_per_clkdm" },118{ NULL },119};120121static struct clkdm_dep mpu_wkup_sleep_deps[] = {122{ .clkdm_name = "abe_clkdm" },123{ .clkdm_name = "ducati_clkdm" },124{ .clkdm_name = "ivahd_clkdm" },125{ .clkdm_name = "l3_1_clkdm" },126{ .clkdm_name = "l3_2_clkdm" },127{ .clkdm_name = "l3_dss_clkdm" },128{ .clkdm_name = "l3_emif_clkdm" },129{ .clkdm_name = "l3_gfx_clkdm" },130{ .clkdm_name = "l3_init_clkdm" },131{ .clkdm_name = "l4_cfg_clkdm" },132{ .clkdm_name = "l4_per_clkdm" },133{ .clkdm_name = "l4_secure_clkdm" },134{ .clkdm_name = "l4_wkup_clkdm" },135{ .clkdm_name = "tesla_clkdm" },136{ NULL },137};138139static struct clkdm_dep tesla_wkup_sleep_deps[] = {140{ .clkdm_name = "abe_clkdm" },141{ .clkdm_name = "ivahd_clkdm" },142{ .clkdm_name = "l3_1_clkdm" },143{ .clkdm_name = "l3_2_clkdm" },144{ .clkdm_name = "l3_emif_clkdm" },145{ .clkdm_name = "l3_init_clkdm" },146{ .clkdm_name = "l4_cfg_clkdm" },147{ .clkdm_name = "l4_per_clkdm" },148{ .clkdm_name = "l4_wkup_clkdm" },149{ NULL },150};151152static struct clockdomain l4_cefuse_44xx_clkdm = {153.name = "l4_cefuse_clkdm",154.pwrdm = { .name = "cefuse_pwrdm" },155.prcm_partition = OMAP4430_CM2_PARTITION,156.cm_inst = OMAP4430_CM2_CEFUSE_INST,157.clkdm_offs = OMAP4430_CM2_CEFUSE_CEFUSE_CDOFFS,158.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,159};160161static struct clockdomain l4_cfg_44xx_clkdm = {162.name = "l4_cfg_clkdm",163.pwrdm = { .name = "core_pwrdm" },164.prcm_partition = OMAP4430_CM2_PARTITION,165.cm_inst = OMAP4430_CM2_CORE_INST,166.clkdm_offs = OMAP4430_CM2_CORE_L4CFG_CDOFFS,167.dep_bit = OMAP4430_L4CFG_STATDEP_SHIFT,168.flags = CLKDM_CAN_HWSUP,169};170171static struct clockdomain tesla_44xx_clkdm = {172.name = "tesla_clkdm",173.pwrdm = { .name = "tesla_pwrdm" },174.prcm_partition = OMAP4430_CM1_PARTITION,175.cm_inst = OMAP4430_CM1_TESLA_INST,176.clkdm_offs = OMAP4430_CM1_TESLA_TESLA_CDOFFS,177.dep_bit = OMAP4430_TESLA_STATDEP_SHIFT,178.wkdep_srcs = tesla_wkup_sleep_deps,179.sleepdep_srcs = tesla_wkup_sleep_deps,180.flags = CLKDM_CAN_HWSUP_SWSUP,181};182183static struct clockdomain l3_gfx_44xx_clkdm = {184.name = "l3_gfx_clkdm",185.pwrdm = { .name = "gfx_pwrdm" },186.prcm_partition = OMAP4430_CM2_PARTITION,187.cm_inst = OMAP4430_CM2_GFX_INST,188.clkdm_offs = OMAP4430_CM2_GFX_GFX_CDOFFS,189.dep_bit = OMAP4430_GFX_STATDEP_SHIFT,190.wkdep_srcs = l3_gfx_wkup_sleep_deps,191.sleepdep_srcs = l3_gfx_wkup_sleep_deps,192.flags = CLKDM_CAN_HWSUP_SWSUP,193};194195static struct clockdomain ivahd_44xx_clkdm = {196.name = "ivahd_clkdm",197.pwrdm = { .name = "ivahd_pwrdm" },198.prcm_partition = OMAP4430_CM2_PARTITION,199.cm_inst = OMAP4430_CM2_IVAHD_INST,200.clkdm_offs = OMAP4430_CM2_IVAHD_IVAHD_CDOFFS,201.dep_bit = OMAP4430_IVAHD_STATDEP_SHIFT,202.wkdep_srcs = ivahd_wkup_sleep_deps,203.sleepdep_srcs = ivahd_wkup_sleep_deps,204.flags = CLKDM_CAN_HWSUP_SWSUP,205};206207static struct clockdomain l4_secure_44xx_clkdm = {208.name = "l4_secure_clkdm",209.pwrdm = { .name = "l4per_pwrdm" },210.prcm_partition = OMAP4430_CM2_PARTITION,211.cm_inst = OMAP4430_CM2_L4PER_INST,212.clkdm_offs = OMAP4430_CM2_L4PER_L4SEC_CDOFFS,213.dep_bit = OMAP4430_L4SEC_STATDEP_SHIFT,214.wkdep_srcs = l4_secure_wkup_sleep_deps,215.sleepdep_srcs = l4_secure_wkup_sleep_deps,216.flags = CLKDM_CAN_SWSUP,217};218219static struct clockdomain l4_per_44xx_clkdm = {220.name = "l4_per_clkdm",221.pwrdm = { .name = "l4per_pwrdm" },222.prcm_partition = OMAP4430_CM2_PARTITION,223.cm_inst = OMAP4430_CM2_L4PER_INST,224.clkdm_offs = OMAP4430_CM2_L4PER_L4PER_CDOFFS,225.dep_bit = OMAP4430_L4PER_STATDEP_SHIFT,226.flags = CLKDM_CAN_HWSUP_SWSUP,227};228229static struct clockdomain abe_44xx_clkdm = {230.name = "abe_clkdm",231.pwrdm = { .name = "abe_pwrdm" },232.prcm_partition = OMAP4430_CM1_PARTITION,233.cm_inst = OMAP4430_CM1_ABE_INST,234.clkdm_offs = OMAP4430_CM1_ABE_ABE_CDOFFS,235.dep_bit = OMAP4430_ABE_STATDEP_SHIFT,236.flags = CLKDM_CAN_HWSUP_SWSUP,237};238239static struct clockdomain l3_instr_44xx_clkdm = {240.name = "l3_instr_clkdm",241.pwrdm = { .name = "core_pwrdm" },242.prcm_partition = OMAP4430_CM2_PARTITION,243.cm_inst = OMAP4430_CM2_CORE_INST,244.clkdm_offs = OMAP4430_CM2_CORE_L3INSTR_CDOFFS,245};246247static struct clockdomain l3_init_44xx_clkdm = {248.name = "l3_init_clkdm",249.pwrdm = { .name = "l3init_pwrdm" },250.prcm_partition = OMAP4430_CM2_PARTITION,251.cm_inst = OMAP4430_CM2_L3INIT_INST,252.clkdm_offs = OMAP4430_CM2_L3INIT_L3INIT_CDOFFS,253.dep_bit = OMAP4430_L3INIT_STATDEP_SHIFT,254.wkdep_srcs = l3_init_wkup_sleep_deps,255.sleepdep_srcs = l3_init_wkup_sleep_deps,256.flags = CLKDM_CAN_HWSUP_SWSUP,257};258259static struct clockdomain d2d_44xx_clkdm = {260.name = "d2d_clkdm",261.pwrdm = { .name = "core_pwrdm" },262.prcm_partition = OMAP4430_CM2_PARTITION,263.cm_inst = OMAP4430_CM2_CORE_INST,264.clkdm_offs = OMAP4430_CM2_CORE_D2D_CDOFFS,265.wkdep_srcs = d2d_wkup_sleep_deps,266.sleepdep_srcs = d2d_wkup_sleep_deps,267.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,268};269270static struct clockdomain mpu0_44xx_clkdm = {271.name = "mpu0_clkdm",272.pwrdm = { .name = "cpu0_pwrdm" },273.prcm_partition = OMAP4430_PRCM_MPU_PARTITION,274.cm_inst = OMAP4430_PRCM_MPU_CPU0_INST,275.clkdm_offs = OMAP4430_PRCM_MPU_CPU0_CPU0_CDOFFS,276.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,277};278279static struct clockdomain mpu1_44xx_clkdm = {280.name = "mpu1_clkdm",281.pwrdm = { .name = "cpu1_pwrdm" },282.prcm_partition = OMAP4430_PRCM_MPU_PARTITION,283.cm_inst = OMAP4430_PRCM_MPU_CPU1_INST,284.clkdm_offs = OMAP4430_PRCM_MPU_CPU1_CPU1_CDOFFS,285.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,286};287288static struct clockdomain l3_emif_44xx_clkdm = {289.name = "l3_emif_clkdm",290.pwrdm = { .name = "core_pwrdm" },291.prcm_partition = OMAP4430_CM2_PARTITION,292.cm_inst = OMAP4430_CM2_CORE_INST,293.clkdm_offs = OMAP4430_CM2_CORE_MEMIF_CDOFFS,294.dep_bit = OMAP4430_MEMIF_STATDEP_SHIFT,295.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,296};297298static struct clockdomain l4_ao_44xx_clkdm = {299.name = "l4_ao_clkdm",300.pwrdm = { .name = "always_on_core_pwrdm" },301.prcm_partition = OMAP4430_CM2_PARTITION,302.cm_inst = OMAP4430_CM2_ALWAYS_ON_INST,303.clkdm_offs = OMAP4430_CM2_ALWAYS_ON_ALWON_CDOFFS,304.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,305};306307static struct clockdomain ducati_44xx_clkdm = {308.name = "ducati_clkdm",309.pwrdm = { .name = "core_pwrdm" },310.prcm_partition = OMAP4430_CM2_PARTITION,311.cm_inst = OMAP4430_CM2_CORE_INST,312.clkdm_offs = OMAP4430_CM2_CORE_DUCATI_CDOFFS,313.dep_bit = OMAP4430_DUCATI_STATDEP_SHIFT,314.wkdep_srcs = ducati_wkup_sleep_deps,315.sleepdep_srcs = ducati_wkup_sleep_deps,316.flags = CLKDM_CAN_HWSUP_SWSUP,317};318319static struct clockdomain mpu_44xx_clkdm = {320.name = "mpuss_clkdm",321.pwrdm = { .name = "mpu_pwrdm" },322.prcm_partition = OMAP4430_CM1_PARTITION,323.cm_inst = OMAP4430_CM1_MPU_INST,324.clkdm_offs = OMAP4430_CM1_MPU_MPU_CDOFFS,325.wkdep_srcs = mpu_wkup_sleep_deps,326.sleepdep_srcs = mpu_wkup_sleep_deps,327.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,328};329330static struct clockdomain l3_2_44xx_clkdm = {331.name = "l3_2_clkdm",332.pwrdm = { .name = "core_pwrdm" },333.prcm_partition = OMAP4430_CM2_PARTITION,334.cm_inst = OMAP4430_CM2_CORE_INST,335.clkdm_offs = OMAP4430_CM2_CORE_L3_2_CDOFFS,336.dep_bit = OMAP4430_L3_2_STATDEP_SHIFT,337.flags = CLKDM_CAN_HWSUP,338};339340static struct clockdomain l3_1_44xx_clkdm = {341.name = "l3_1_clkdm",342.pwrdm = { .name = "core_pwrdm" },343.prcm_partition = OMAP4430_CM2_PARTITION,344.cm_inst = OMAP4430_CM2_CORE_INST,345.clkdm_offs = OMAP4430_CM2_CORE_L3_1_CDOFFS,346.dep_bit = OMAP4430_L3_1_STATDEP_SHIFT,347.flags = CLKDM_CAN_HWSUP,348};349350static struct clockdomain iss_44xx_clkdm = {351.name = "iss_clkdm",352.pwrdm = { .name = "cam_pwrdm" },353.prcm_partition = OMAP4430_CM2_PARTITION,354.cm_inst = OMAP4430_CM2_CAM_INST,355.clkdm_offs = OMAP4430_CM2_CAM_CAM_CDOFFS,356.wkdep_srcs = iss_wkup_sleep_deps,357.sleepdep_srcs = iss_wkup_sleep_deps,358.flags = CLKDM_CAN_SWSUP,359};360361static struct clockdomain l3_dss_44xx_clkdm = {362.name = "l3_dss_clkdm",363.pwrdm = { .name = "dss_pwrdm" },364.prcm_partition = OMAP4430_CM2_PARTITION,365.cm_inst = OMAP4430_CM2_DSS_INST,366.clkdm_offs = OMAP4430_CM2_DSS_DSS_CDOFFS,367.dep_bit = OMAP4430_DSS_STATDEP_SHIFT,368.wkdep_srcs = l3_dss_wkup_sleep_deps,369.sleepdep_srcs = l3_dss_wkup_sleep_deps,370.flags = CLKDM_CAN_HWSUP_SWSUP,371};372373static struct clockdomain l4_wkup_44xx_clkdm = {374.name = "l4_wkup_clkdm",375.pwrdm = { .name = "wkup_pwrdm" },376.prcm_partition = OMAP4430_PRM_PARTITION,377.cm_inst = OMAP4430_PRM_WKUP_CM_INST,378.clkdm_offs = OMAP4430_PRM_WKUP_CM_WKUP_CDOFFS,379.dep_bit = OMAP4430_L4WKUP_STATDEP_SHIFT,380.flags = CLKDM_CAN_HWSUP | CLKDM_ACTIVE_WITH_MPU,381};382383static struct clockdomain emu_sys_44xx_clkdm = {384.name = "emu_sys_clkdm",385.pwrdm = { .name = "emu_pwrdm" },386.prcm_partition = OMAP4430_PRM_PARTITION,387.cm_inst = OMAP4430_PRM_EMU_CM_INST,388.clkdm_offs = OMAP4430_PRM_EMU_CM_EMU_CDOFFS,389.flags = (CLKDM_CAN_ENABLE_AUTO | CLKDM_CAN_FORCE_WAKEUP |390CLKDM_MISSING_IDLE_REPORTING),391};392393static struct clockdomain l3_dma_44xx_clkdm = {394.name = "l3_dma_clkdm",395.pwrdm = { .name = "core_pwrdm" },396.prcm_partition = OMAP4430_CM2_PARTITION,397.cm_inst = OMAP4430_CM2_CORE_INST,398.clkdm_offs = OMAP4430_CM2_CORE_SDMA_CDOFFS,399.wkdep_srcs = l3_dma_wkup_sleep_deps,400.sleepdep_srcs = l3_dma_wkup_sleep_deps,401.flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,402};403404/* As clockdomains are added or removed above, this list must also be changed */405static struct clockdomain *clockdomains_omap44xx[] __initdata = {406&l4_cefuse_44xx_clkdm,407&l4_cfg_44xx_clkdm,408&tesla_44xx_clkdm,409&l3_gfx_44xx_clkdm,410&ivahd_44xx_clkdm,411&l4_secure_44xx_clkdm,412&l4_per_44xx_clkdm,413&abe_44xx_clkdm,414&l3_instr_44xx_clkdm,415&l3_init_44xx_clkdm,416&d2d_44xx_clkdm,417&mpu0_44xx_clkdm,418&mpu1_44xx_clkdm,419&l3_emif_44xx_clkdm,420&l4_ao_44xx_clkdm,421&ducati_44xx_clkdm,422&mpu_44xx_clkdm,423&l3_2_44xx_clkdm,424&l3_1_44xx_clkdm,425&iss_44xx_clkdm,426&l3_dss_44xx_clkdm,427&l4_wkup_44xx_clkdm,428&emu_sys_44xx_clkdm,429&l3_dma_44xx_clkdm,430NULL431};432433434void __init omap44xx_clockdomains_init(void)435{436clkdm_register_platform_funcs(&omap4_clkdm_operations);437clkdm_register_clkdms(clockdomains_omap44xx);438clkdm_complete_init();439}440441442