1 // SPDX-License-Identifier: GPL-2.0-only 1 2 /* 3 * AM33XX Clock Domain data. 4 * 5 * Copyright (C) 2011-2012 Texas Instruments I 6 * Vaibhav Hiremath <hvaibhav@ti.com> 7 */ 8 9 #include <linux/kernel.h> 10 #include <linux/io.h> 11 12 #include "clockdomain.h" 13 #include "cm.h" 14 #include "cm33xx.h" 15 #include "cm-regbits-33xx.h" 16 17 static struct clockdomain l4ls_am33xx_clkdm = 18 .name = "l4ls_clkdm", 19 .pwrdm = { .name = "per_pwrdm 20 .cm_inst = AM33XX_CM_PER_MOD, 21 .clkdm_offs = AM33XX_CM_PER_L4LS_C 22 .flags = CLKDM_CAN_SWSUP, 23 }; 24 25 static struct clockdomain l3s_am33xx_clkdm = { 26 .name = "l3s_clkdm", 27 .pwrdm = { .name = "per_pwrdm 28 .cm_inst = AM33XX_CM_PER_MOD, 29 .clkdm_offs = AM33XX_CM_PER_L3S_CL 30 .flags = CLKDM_CAN_SWSUP, 31 }; 32 33 static struct clockdomain l4fw_am33xx_clkdm = 34 .name = "l4fw_clkdm", 35 .pwrdm = { .name = "per_pwrdm 36 .cm_inst = AM33XX_CM_PER_MOD, 37 .clkdm_offs = AM33XX_CM_PER_L4FW_C 38 .flags = CLKDM_CAN_SWSUP, 39 }; 40 41 static struct clockdomain l3_am33xx_clkdm = { 42 .name = "l3_clkdm", 43 .pwrdm = { .name = "per_pwrdm 44 .cm_inst = AM33XX_CM_PER_MOD, 45 .clkdm_offs = AM33XX_CM_PER_L3_CLK 46 .flags = CLKDM_CAN_SWSUP, 47 }; 48 49 static struct clockdomain l4hs_am33xx_clkdm = 50 .name = "l4hs_clkdm", 51 .pwrdm = { .name = "per_pwrdm 52 .cm_inst = AM33XX_CM_PER_MOD, 53 .clkdm_offs = AM33XX_CM_PER_L4HS_C 54 .flags = CLKDM_CAN_SWSUP, 55 }; 56 57 static struct clockdomain ocpwp_l3_am33xx_clkd 58 .name = "ocpwp_l3_clkdm", 59 .pwrdm = { .name = "per_pwrdm 60 .cm_inst = AM33XX_CM_PER_MOD, 61 .clkdm_offs = AM33XX_CM_PER_OCPWP_ 62 .flags = CLKDM_CAN_SWSUP, 63 }; 64 65 static struct clockdomain pruss_ocp_am33xx_clk 66 .name = "pruss_ocp_clkdm", 67 .pwrdm = { .name = "per_pwrdm 68 .cm_inst = AM33XX_CM_PER_MOD, 69 .clkdm_offs = AM33XX_CM_PER_PRUSS_ 70 .flags = CLKDM_CAN_SWSUP, 71 }; 72 73 static struct clockdomain cpsw_125mhz_am33xx_c 74 .name = "cpsw_125mhz_clkdm", 75 .pwrdm = { .name = "per_pwrdm 76 .cm_inst = AM33XX_CM_PER_MOD, 77 .clkdm_offs = AM33XX_CM_PER_CPSW_C 78 .flags = CLKDM_CAN_SWSUP, 79 }; 80 81 static struct clockdomain lcdc_am33xx_clkdm = 82 .name = "lcdc_clkdm", 83 .pwrdm = { .name = "per_pwrdm 84 .cm_inst = AM33XX_CM_PER_MOD, 85 .clkdm_offs = AM33XX_CM_PER_LCDC_C 86 .flags = CLKDM_CAN_SWSUP, 87 }; 88 89 static struct clockdomain clk_24mhz_am33xx_clk 90 .name = "clk_24mhz_clkdm", 91 .pwrdm = { .name = "per_pwrdm 92 .cm_inst = AM33XX_CM_PER_MOD, 93 .clkdm_offs = AM33XX_CM_PER_CLK_24 94 .flags = CLKDM_CAN_SWSUP, 95 }; 96 97 static struct clockdomain l4_wkup_am33xx_clkdm 98 .name = "l4_wkup_clkdm", 99 .pwrdm = { .name = "wkup_pwrd 100 .cm_inst = AM33XX_CM_WKUP_MOD, 101 .clkdm_offs = AM33XX_CM_WKUP_CLKST 102 .flags = CLKDM_CAN_SWSUP, 103 }; 104 105 static struct clockdomain l3_aon_am33xx_clkdm 106 .name = "l3_aon_clkdm", 107 .pwrdm = { .name = "wkup_pwrd 108 .cm_inst = AM33XX_CM_WKUP_MOD, 109 .clkdm_offs = AM33XX_CM_L3_AON_CLK 110 .flags = CLKDM_CAN_SWSUP, 111 }; 112 113 static struct clockdomain l4_wkup_aon_am33xx_c 114 .name = "l4_wkup_aon_clkdm", 115 .pwrdm = { .name = "wkup_pwrd 116 .cm_inst = AM33XX_CM_WKUP_MOD, 117 .clkdm_offs = AM33XX_CM_L4_WKUP_AO 118 .flags = CLKDM_CAN_SWSUP, 119 }; 120 121 static struct clockdomain mpu_am33xx_clkdm = { 122 .name = "mpu_clkdm", 123 .pwrdm = { .name = "mpu_pwrdm 124 .cm_inst = AM33XX_CM_MPU_MOD, 125 .clkdm_offs = AM33XX_CM_MPU_CLKSTC 126 .flags = CLKDM_CAN_SWSUP, 127 }; 128 129 static struct clockdomain l4_rtc_am33xx_clkdm 130 .name = "l4_rtc_clkdm", 131 .pwrdm = { .name = "rtc_pwrdm 132 .cm_inst = AM33XX_CM_RTC_MOD, 133 .clkdm_offs = AM33XX_CM_RTC_CLKSTC 134 .flags = CLKDM_CAN_SWSUP, 135 }; 136 137 static struct clockdomain gfx_l3_am33xx_clkdm 138 .name = "gfx_l3_clkdm", 139 .pwrdm = { .name = "gfx_pwrdm 140 .cm_inst = AM33XX_CM_GFX_MOD, 141 .clkdm_offs = AM33XX_CM_GFX_L3_CLK 142 .flags = CLKDM_CAN_SWSUP, 143 }; 144 145 static struct clockdomain gfx_l4ls_gfx_am33xx_ 146 .name = "gfx_l4ls_gfx_clkdm" 147 .pwrdm = { .name = "gfx_pwrdm 148 .cm_inst = AM33XX_CM_GFX_MOD, 149 .clkdm_offs = AM33XX_CM_GFX_L4LS_G 150 .flags = CLKDM_CAN_SWSUP, 151 }; 152 153 static struct clockdomain l4_cefuse_am33xx_clk 154 .name = "l4_cefuse_clkdm", 155 .pwrdm = { .name = "cefuse_pw 156 .cm_inst = AM33XX_CM_CEFUSE_MOD 157 .clkdm_offs = AM33XX_CM_CEFUSE_CLK 158 .flags = CLKDM_CAN_SWSUP, 159 }; 160 161 static struct clockdomain *clockdomains_am33xx 162 &l4ls_am33xx_clkdm, 163 &l3s_am33xx_clkdm, 164 &l4fw_am33xx_clkdm, 165 &l3_am33xx_clkdm, 166 &l4hs_am33xx_clkdm, 167 &ocpwp_l3_am33xx_clkdm, 168 &pruss_ocp_am33xx_clkdm, 169 &cpsw_125mhz_am33xx_clkdm, 170 &lcdc_am33xx_clkdm, 171 &clk_24mhz_am33xx_clkdm, 172 &l4_wkup_am33xx_clkdm, 173 &l3_aon_am33xx_clkdm, 174 &l4_wkup_aon_am33xx_clkdm, 175 &mpu_am33xx_clkdm, 176 &l4_rtc_am33xx_clkdm, 177 &gfx_l3_am33xx_clkdm, 178 &gfx_l4ls_gfx_am33xx_clkdm, 179 &l4_cefuse_am33xx_clkdm, 180 NULL, 181 }; 182 183 void __init am33xx_clockdomains_init(void) 184 { 185 clkdm_register_platform_funcs(&am33xx_ 186 clkdm_register_clkdms(clockdomains_am3 187 clkdm_complete_init(); 188 } 189
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.