Path: blob/master/arch/arm/mach-omap2/clockdomains33xx_data.c
26295 views
// SPDX-License-Identifier: GPL-2.0-only1/*2* AM33XX Clock Domain data.3*4* Copyright (C) 2011-2012 Texas Instruments Incorporated - https://www.ti.com/5* Vaibhav Hiremath <[email protected]>6*/78#include <linux/kernel.h>9#include <linux/io.h>1011#include "clockdomain.h"12#include "cm.h"13#include "cm33xx.h"14#include "cm-regbits-33xx.h"1516static struct clockdomain l4ls_am33xx_clkdm = {17.name = "l4ls_clkdm",18.pwrdm = { .name = "per_pwrdm" },19.cm_inst = AM33XX_CM_PER_MOD,20.clkdm_offs = AM33XX_CM_PER_L4LS_CLKSTCTRL_OFFSET,21.flags = CLKDM_CAN_SWSUP | CLKDM_STANDBY_FORCE_WAKEUP,22};2324static struct clockdomain l3s_am33xx_clkdm = {25.name = "l3s_clkdm",26.pwrdm = { .name = "per_pwrdm" },27.cm_inst = AM33XX_CM_PER_MOD,28.clkdm_offs = AM33XX_CM_PER_L3S_CLKSTCTRL_OFFSET,29.flags = CLKDM_CAN_SWSUP,30};3132static struct clockdomain l4fw_am33xx_clkdm = {33.name = "l4fw_clkdm",34.pwrdm = { .name = "per_pwrdm" },35.cm_inst = AM33XX_CM_PER_MOD,36.clkdm_offs = AM33XX_CM_PER_L4FW_CLKSTCTRL_OFFSET,37.flags = CLKDM_CAN_SWSUP,38};3940static struct clockdomain l3_am33xx_clkdm = {41.name = "l3_clkdm",42.pwrdm = { .name = "per_pwrdm" },43.cm_inst = AM33XX_CM_PER_MOD,44.clkdm_offs = AM33XX_CM_PER_L3_CLKSTCTRL_OFFSET,45.flags = CLKDM_CAN_SWSUP,46};4748static struct clockdomain l4hs_am33xx_clkdm = {49.name = "l4hs_clkdm",50.pwrdm = { .name = "per_pwrdm" },51.cm_inst = AM33XX_CM_PER_MOD,52.clkdm_offs = AM33XX_CM_PER_L4HS_CLKSTCTRL_OFFSET,53.flags = CLKDM_CAN_SWSUP,54};5556static struct clockdomain ocpwp_l3_am33xx_clkdm = {57.name = "ocpwp_l3_clkdm",58.pwrdm = { .name = "per_pwrdm" },59.cm_inst = AM33XX_CM_PER_MOD,60.clkdm_offs = AM33XX_CM_PER_OCPWP_L3_CLKSTCTRL_OFFSET,61.flags = CLKDM_CAN_SWSUP,62};6364static struct clockdomain pruss_ocp_am33xx_clkdm = {65.name = "pruss_ocp_clkdm",66.pwrdm = { .name = "per_pwrdm" },67.cm_inst = AM33XX_CM_PER_MOD,68.clkdm_offs = AM33XX_CM_PER_PRUSS_CLKSTCTRL_OFFSET,69.flags = CLKDM_CAN_SWSUP,70};7172static struct clockdomain cpsw_125mhz_am33xx_clkdm = {73.name = "cpsw_125mhz_clkdm",74.pwrdm = { .name = "per_pwrdm" },75.cm_inst = AM33XX_CM_PER_MOD,76.clkdm_offs = AM33XX_CM_PER_CPSW_CLKSTCTRL_OFFSET,77.flags = CLKDM_CAN_SWSUP,78};7980static struct clockdomain lcdc_am33xx_clkdm = {81.name = "lcdc_clkdm",82.pwrdm = { .name = "per_pwrdm" },83.cm_inst = AM33XX_CM_PER_MOD,84.clkdm_offs = AM33XX_CM_PER_LCDC_CLKSTCTRL_OFFSET,85.flags = CLKDM_CAN_SWSUP,86};8788static struct clockdomain clk_24mhz_am33xx_clkdm = {89.name = "clk_24mhz_clkdm",90.pwrdm = { .name = "per_pwrdm" },91.cm_inst = AM33XX_CM_PER_MOD,92.clkdm_offs = AM33XX_CM_PER_CLK_24MHZ_CLKSTCTRL_OFFSET,93.flags = CLKDM_CAN_SWSUP,94};9596static struct clockdomain l4_wkup_am33xx_clkdm = {97.name = "l4_wkup_clkdm",98.pwrdm = { .name = "wkup_pwrdm" },99.cm_inst = AM33XX_CM_WKUP_MOD,100.clkdm_offs = AM33XX_CM_WKUP_CLKSTCTRL_OFFSET,101.flags = CLKDM_CAN_SWSUP,102};103104static struct clockdomain l3_aon_am33xx_clkdm = {105.name = "l3_aon_clkdm",106.pwrdm = { .name = "wkup_pwrdm" },107.cm_inst = AM33XX_CM_WKUP_MOD,108.clkdm_offs = AM33XX_CM_L3_AON_CLKSTCTRL_OFFSET,109.flags = CLKDM_CAN_SWSUP,110};111112static struct clockdomain l4_wkup_aon_am33xx_clkdm = {113.name = "l4_wkup_aon_clkdm",114.pwrdm = { .name = "wkup_pwrdm" },115.cm_inst = AM33XX_CM_WKUP_MOD,116.clkdm_offs = AM33XX_CM_L4_WKUP_AON_CLKSTCTRL_OFFSET,117.flags = CLKDM_CAN_SWSUP,118};119120static struct clockdomain mpu_am33xx_clkdm = {121.name = "mpu_clkdm",122.pwrdm = { .name = "mpu_pwrdm" },123.cm_inst = AM33XX_CM_MPU_MOD,124.clkdm_offs = AM33XX_CM_MPU_CLKSTCTRL_OFFSET,125.flags = CLKDM_CAN_SWSUP,126};127128static struct clockdomain l4_rtc_am33xx_clkdm = {129.name = "l4_rtc_clkdm",130.pwrdm = { .name = "rtc_pwrdm" },131.cm_inst = AM33XX_CM_RTC_MOD,132.clkdm_offs = AM33XX_CM_RTC_CLKSTCTRL_OFFSET,133.flags = CLKDM_CAN_SWSUP,134};135136static struct clockdomain gfx_l3_am33xx_clkdm = {137.name = "gfx_l3_clkdm",138.pwrdm = { .name = "gfx_pwrdm" },139.cm_inst = AM33XX_CM_GFX_MOD,140.clkdm_offs = AM33XX_CM_GFX_L3_CLKSTCTRL_OFFSET,141.flags = CLKDM_CAN_SWSUP,142};143144static struct clockdomain gfx_l4ls_gfx_am33xx_clkdm = {145.name = "gfx_l4ls_gfx_clkdm",146.pwrdm = { .name = "gfx_pwrdm" },147.cm_inst = AM33XX_CM_GFX_MOD,148.clkdm_offs = AM33XX_CM_GFX_L4LS_GFX_CLKSTCTRL__1_OFFSET,149.flags = CLKDM_CAN_SWSUP,150};151152static struct clockdomain l4_cefuse_am33xx_clkdm = {153.name = "l4_cefuse_clkdm",154.pwrdm = { .name = "cefuse_pwrdm" },155.cm_inst = AM33XX_CM_CEFUSE_MOD,156.clkdm_offs = AM33XX_CM_CEFUSE_CLKSTCTRL_OFFSET,157.flags = CLKDM_CAN_SWSUP,158};159160static struct clockdomain *clockdomains_am33xx[] __initdata = {161&l4ls_am33xx_clkdm,162&l3s_am33xx_clkdm,163&l4fw_am33xx_clkdm,164&l3_am33xx_clkdm,165&l4hs_am33xx_clkdm,166&ocpwp_l3_am33xx_clkdm,167&pruss_ocp_am33xx_clkdm,168&cpsw_125mhz_am33xx_clkdm,169&lcdc_am33xx_clkdm,170&clk_24mhz_am33xx_clkdm,171&l4_wkup_am33xx_clkdm,172&l3_aon_am33xx_clkdm,173&l4_wkup_aon_am33xx_clkdm,174&mpu_am33xx_clkdm,175&l4_rtc_am33xx_clkdm,176&gfx_l3_am33xx_clkdm,177&gfx_l4ls_gfx_am33xx_clkdm,178&l4_cefuse_am33xx_clkdm,179NULL,180};181182void __init am33xx_clockdomains_init(void)183{184clkdm_register_platform_funcs(&am33xx_clkdm_operations);185clkdm_register_clkdms(clockdomains_am33xx);186clkdm_complete_init();187}188189190