1 /* 2 * 3 * Copyright (C) 2013 Texas Instruments Incorporated 4 * 5 * Interconnects common for AM335x and AM43x 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License as 9 * published by the Free Software Foundation version 2. 10 * 11 * This program is distributed "as is" WITHOUT ANY WARRANTY of any 12 * kind, whether express or implied; without even the implied warranty 13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 */ 16 17 #include <linux/sizes.h> 18 #include "omap_hwmod.h" 19 #include "omap_hwmod_33xx_43xx_common_data.h" 20 21 /* mpu -> l3 main */ 22 struct omap_hwmod_ocp_if am33xx_mpu__l3_main = { 23 .master = &am33xx_mpu_hwmod, 24 .slave = &am33xx_l3_main_hwmod, 25 .clk = "dpll_mpu_m2_ck", 26 .user = OCP_USER_MPU, 27 }; 28 29 /* l3 main -> l3 s */ 30 struct omap_hwmod_ocp_if am33xx_l3_main__l3_s = { 31 .master = &am33xx_l3_main_hwmod, 32 .slave = &am33xx_l3_s_hwmod, 33 .clk = "l3s_gclk", 34 .user = OCP_USER_MPU | OCP_USER_SDMA, 35 }; 36 37 /* l3 s -> l4 per/ls */ 38 struct omap_hwmod_ocp_if am33xx_l3_s__l4_ls = { 39 .master = &am33xx_l3_s_hwmod, 40 .slave = &am33xx_l4_ls_hwmod, 41 .clk = "l3s_gclk", 42 .user = OCP_USER_MPU | OCP_USER_SDMA, 43 }; 44 45 /* l3 s -> l4 wkup */ 46 struct omap_hwmod_ocp_if am33xx_l3_s__l4_wkup = { 47 .master = &am33xx_l3_s_hwmod, 48 .slave = &am33xx_l4_wkup_hwmod, 49 .clk = "l3s_gclk", 50 .user = OCP_USER_MPU | OCP_USER_SDMA, 51 }; 52 53 /* l3 main -> l3 instr */ 54 struct omap_hwmod_ocp_if am33xx_l3_main__l3_instr = { 55 .master = &am33xx_l3_main_hwmod, 56 .slave = &am33xx_l3_instr_hwmod, 57 .clk = "l3s_gclk", 58 .user = OCP_USER_MPU | OCP_USER_SDMA, 59 }; 60 61 /* mpu -> prcm */ 62 struct omap_hwmod_ocp_if am33xx_mpu__prcm = { 63 .master = &am33xx_mpu_hwmod, 64 .slave = &am33xx_prcm_hwmod, 65 .clk = "dpll_mpu_m2_ck", 66 .user = OCP_USER_MPU | OCP_USER_SDMA, 67 }; 68 69 /* l3 s -> l3 main*/ 70 struct omap_hwmod_ocp_if am33xx_l3_s__l3_main = { 71 .master = &am33xx_l3_s_hwmod, 72 .slave = &am33xx_l3_main_hwmod, 73 .clk = "l3s_gclk", 74 .user = OCP_USER_MPU | OCP_USER_SDMA, 75 }; 76 77 /* pru-icss -> l3 main */ 78 struct omap_hwmod_ocp_if am33xx_pruss__l3_main = { 79 .master = &am33xx_pruss_hwmod, 80 .slave = &am33xx_l3_main_hwmod, 81 .clk = "l3_gclk", 82 .user = OCP_USER_MPU | OCP_USER_SDMA, 83 }; 84 85 /* gfx -> l3 main */ 86 struct omap_hwmod_ocp_if am33xx_gfx__l3_main = { 87 .master = &am33xx_gfx_hwmod, 88 .slave = &am33xx_l3_main_hwmod, 89 .clk = "dpll_core_m4_ck", 90 .user = OCP_USER_MPU | OCP_USER_SDMA, 91 }; 92 93 /* l3 main -> gfx */ 94 struct omap_hwmod_ocp_if am33xx_l3_main__gfx = { 95 .master = &am33xx_l3_main_hwmod, 96 .slave = &am33xx_gfx_hwmod, 97 .clk = "dpll_core_m4_ck", 98 .user = OCP_USER_MPU | OCP_USER_SDMA, 99 }; 100 101 /* l4 wkup -> rtc */ 102 struct omap_hwmod_ocp_if am33xx_l4_wkup__rtc = { 103 .master = &am33xx_l4_wkup_hwmod, 104 .slave = &am33xx_rtc_hwmod, 105 .clk = "clkdiv32k_ick", 106 .user = OCP_USER_MPU, 107 }; 108 109 /* l4 per/ls -> DCAN0 */ 110 struct omap_hwmod_ocp_if am33xx_l4_per__dcan0 = { 111 .master = &am33xx_l4_ls_hwmod, 112 .slave = &am33xx_dcan0_hwmod, 113 .clk = "l4ls_gclk", 114 .user = OCP_USER_MPU | OCP_USER_SDMA, 115 }; 116 117 /* l4 per/ls -> DCAN1 */ 118 struct omap_hwmod_ocp_if am33xx_l4_per__dcan1 = { 119 .master = &am33xx_l4_ls_hwmod, 120 .slave = &am33xx_dcan1_hwmod, 121 .clk = "l4ls_gclk", 122 .user = OCP_USER_MPU | OCP_USER_SDMA, 123 }; 124 125 /* l4 per/ls -> GPIO2 */ 126 struct omap_hwmod_ocp_if am33xx_l4_per__gpio1 = { 127 .master = &am33xx_l4_ls_hwmod, 128 .slave = &am33xx_gpio1_hwmod, 129 .clk = "l4ls_gclk", 130 .user = OCP_USER_MPU | OCP_USER_SDMA, 131 }; 132 133 /* l4 per/ls -> gpio3 */ 134 struct omap_hwmod_ocp_if am33xx_l4_per__gpio2 = { 135 .master = &am33xx_l4_ls_hwmod, 136 .slave = &am33xx_gpio2_hwmod, 137 .clk = "l4ls_gclk", 138 .user = OCP_USER_MPU | OCP_USER_SDMA, 139 }; 140 141 /* l4 per/ls -> gpio4 */ 142 struct omap_hwmod_ocp_if am33xx_l4_per__gpio3 = { 143 .master = &am33xx_l4_ls_hwmod, 144 .slave = &am33xx_gpio3_hwmod, 145 .clk = "l4ls_gclk", 146 .user = OCP_USER_MPU | OCP_USER_SDMA, 147 }; 148 149 struct omap_hwmod_ocp_if am33xx_cpgmac0__mdio = { 150 .master = &am33xx_cpgmac0_hwmod, 151 .slave = &am33xx_mdio_hwmod, 152 .user = OCP_USER_MPU, 153 }; 154 155 struct omap_hwmod_ocp_if am33xx_l4_ls__elm = { 156 .master = &am33xx_l4_ls_hwmod, 157 .slave = &am33xx_elm_hwmod, 158 .clk = "l4ls_gclk", 159 .user = OCP_USER_MPU, 160 }; 161 162 struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss0 = { 163 .master = &am33xx_l4_ls_hwmod, 164 .slave = &am33xx_epwmss0_hwmod, 165 .clk = "l4ls_gclk", 166 .user = OCP_USER_MPU, 167 }; 168 169 struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss1 = { 170 .master = &am33xx_l4_ls_hwmod, 171 .slave = &am33xx_epwmss1_hwmod, 172 .clk = "l4ls_gclk", 173 .user = OCP_USER_MPU, 174 }; 175 176 struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss2 = { 177 .master = &am33xx_l4_ls_hwmod, 178 .slave = &am33xx_epwmss2_hwmod, 179 .clk = "l4ls_gclk", 180 .user = OCP_USER_MPU, 181 }; 182 183 /* l3s cfg -> gpmc */ 184 struct omap_hwmod_ocp_if am33xx_l3_s__gpmc = { 185 .master = &am33xx_l3_s_hwmod, 186 .slave = &am33xx_gpmc_hwmod, 187 .clk = "l3s_gclk", 188 .user = OCP_USER_MPU, 189 }; 190 191 /* i2c2 */ 192 struct omap_hwmod_ocp_if am33xx_l4_per__i2c2 = { 193 .master = &am33xx_l4_ls_hwmod, 194 .slave = &am33xx_i2c2_hwmod, 195 .clk = "l4ls_gclk", 196 .user = OCP_USER_MPU, 197 }; 198 199 struct omap_hwmod_ocp_if am33xx_l4_per__i2c3 = { 200 .master = &am33xx_l4_ls_hwmod, 201 .slave = &am33xx_i2c3_hwmod, 202 .clk = "l4ls_gclk", 203 .user = OCP_USER_MPU, 204 }; 205 206 /* l4 ls -> mailbox */ 207 struct omap_hwmod_ocp_if am33xx_l4_per__mailbox = { 208 .master = &am33xx_l4_ls_hwmod, 209 .slave = &am33xx_mailbox_hwmod, 210 .clk = "l4ls_gclk", 211 .user = OCP_USER_MPU, 212 }; 213 214 /* l4 ls -> spinlock */ 215 struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock = { 216 .master = &am33xx_l4_ls_hwmod, 217 .slave = &am33xx_spinlock_hwmod, 218 .clk = "l4ls_gclk", 219 .user = OCP_USER_MPU, 220 }; 221 222 /* l4 ls -> mcasp0 */ 223 struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp0 = { 224 .master = &am33xx_l4_ls_hwmod, 225 .slave = &am33xx_mcasp0_hwmod, 226 .clk = "l4ls_gclk", 227 .user = OCP_USER_MPU, 228 }; 229 230 /* l4 ls -> mcasp1 */ 231 struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp1 = { 232 .master = &am33xx_l4_ls_hwmod, 233 .slave = &am33xx_mcasp1_hwmod, 234 .clk = "l4ls_gclk", 235 .user = OCP_USER_MPU, 236 }; 237 238 /* l4 ls -> mmc0 */ 239 struct omap_hwmod_ocp_if am33xx_l4_ls__mmc0 = { 240 .master = &am33xx_l4_ls_hwmod, 241 .slave = &am33xx_mmc0_hwmod, 242 .clk = "l4ls_gclk", 243 .user = OCP_USER_MPU, 244 }; 245 246 /* l4 ls -> mmc1 */ 247 struct omap_hwmod_ocp_if am33xx_l4_ls__mmc1 = { 248 .master = &am33xx_l4_ls_hwmod, 249 .slave = &am33xx_mmc1_hwmod, 250 .clk = "l4ls_gclk", 251 .user = OCP_USER_MPU, 252 }; 253 254 /* l3 s -> mmc2 */ 255 struct omap_hwmod_ocp_if am33xx_l3_s__mmc2 = { 256 .master = &am33xx_l3_s_hwmod, 257 .slave = &am33xx_mmc2_hwmod, 258 .clk = "l3s_gclk", 259 .user = OCP_USER_MPU, 260 }; 261 262 /* l4 ls -> mcspi0 */ 263 struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0 = { 264 .master = &am33xx_l4_ls_hwmod, 265 .slave = &am33xx_spi0_hwmod, 266 .clk = "l4ls_gclk", 267 .user = OCP_USER_MPU, 268 }; 269 270 /* l4 ls -> mcspi1 */ 271 struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi1 = { 272 .master = &am33xx_l4_ls_hwmod, 273 .slave = &am33xx_spi1_hwmod, 274 .clk = "l4ls_gclk", 275 .user = OCP_USER_MPU, 276 }; 277 278 /* l4 per -> timer2 */ 279 struct omap_hwmod_ocp_if am33xx_l4_ls__timer2 = { 280 .master = &am33xx_l4_ls_hwmod, 281 .slave = &am33xx_timer2_hwmod, 282 .clk = "l4ls_gclk", 283 .user = OCP_USER_MPU, 284 }; 285 286 /* l4 per -> timer3 */ 287 struct omap_hwmod_ocp_if am33xx_l4_ls__timer3 = { 288 .master = &am33xx_l4_ls_hwmod, 289 .slave = &am33xx_timer3_hwmod, 290 .clk = "l4ls_gclk", 291 .user = OCP_USER_MPU, 292 }; 293 294 /* l4 per -> timer4 */ 295 struct omap_hwmod_ocp_if am33xx_l4_ls__timer4 = { 296 .master = &am33xx_l4_ls_hwmod, 297 .slave = &am33xx_timer4_hwmod, 298 .clk = "l4ls_gclk", 299 .user = OCP_USER_MPU, 300 }; 301 302 /* l4 per -> timer5 */ 303 struct omap_hwmod_ocp_if am33xx_l4_ls__timer5 = { 304 .master = &am33xx_l4_ls_hwmod, 305 .slave = &am33xx_timer5_hwmod, 306 .clk = "l4ls_gclk", 307 .user = OCP_USER_MPU, 308 }; 309 310 /* l4 per -> timer6 */ 311 struct omap_hwmod_ocp_if am33xx_l4_ls__timer6 = { 312 .master = &am33xx_l4_ls_hwmod, 313 .slave = &am33xx_timer6_hwmod, 314 .clk = "l4ls_gclk", 315 .user = OCP_USER_MPU, 316 }; 317 318 /* l4 per -> timer7 */ 319 struct omap_hwmod_ocp_if am33xx_l4_ls__timer7 = { 320 .master = &am33xx_l4_ls_hwmod, 321 .slave = &am33xx_timer7_hwmod, 322 .clk = "l4ls_gclk", 323 .user = OCP_USER_MPU, 324 }; 325 326 /* l3 main -> tpcc */ 327 struct omap_hwmod_ocp_if am33xx_l3_main__tpcc = { 328 .master = &am33xx_l3_main_hwmod, 329 .slave = &am33xx_tpcc_hwmod, 330 .clk = "l3_gclk", 331 .user = OCP_USER_MPU, 332 }; 333 334 /* l3 main -> tpcc0 */ 335 struct omap_hwmod_ocp_if am33xx_l3_main__tptc0 = { 336 .master = &am33xx_l3_main_hwmod, 337 .slave = &am33xx_tptc0_hwmod, 338 .clk = "l3_gclk", 339 .user = OCP_USER_MPU, 340 }; 341 342 /* l3 main -> tpcc1 */ 343 struct omap_hwmod_ocp_if am33xx_l3_main__tptc1 = { 344 .master = &am33xx_l3_main_hwmod, 345 .slave = &am33xx_tptc1_hwmod, 346 .clk = "l3_gclk", 347 .user = OCP_USER_MPU, 348 }; 349 350 /* l3 main -> tpcc2 */ 351 struct omap_hwmod_ocp_if am33xx_l3_main__tptc2 = { 352 .master = &am33xx_l3_main_hwmod, 353 .slave = &am33xx_tptc2_hwmod, 354 .clk = "l3_gclk", 355 .user = OCP_USER_MPU, 356 }; 357 358 /* l4 ls -> uart2 */ 359 struct omap_hwmod_ocp_if am33xx_l4_ls__uart2 = { 360 .master = &am33xx_l4_ls_hwmod, 361 .slave = &am33xx_uart2_hwmod, 362 .clk = "l4ls_gclk", 363 .user = OCP_USER_MPU, 364 }; 365 366 /* l4 ls -> uart3 */ 367 struct omap_hwmod_ocp_if am33xx_l4_ls__uart3 = { 368 .master = &am33xx_l4_ls_hwmod, 369 .slave = &am33xx_uart3_hwmod, 370 .clk = "l4ls_gclk", 371 .user = OCP_USER_MPU, 372 }; 373 374 /* l4 ls -> uart4 */ 375 struct omap_hwmod_ocp_if am33xx_l4_ls__uart4 = { 376 .master = &am33xx_l4_ls_hwmod, 377 .slave = &am33xx_uart4_hwmod, 378 .clk = "l4ls_gclk", 379 .user = OCP_USER_MPU, 380 }; 381 382 /* l4 ls -> uart5 */ 383 struct omap_hwmod_ocp_if am33xx_l4_ls__uart5 = { 384 .master = &am33xx_l4_ls_hwmod, 385 .slave = &am33xx_uart5_hwmod, 386 .clk = "l4ls_gclk", 387 .user = OCP_USER_MPU, 388 }; 389 390 /* l4 ls -> uart6 */ 391 struct omap_hwmod_ocp_if am33xx_l4_ls__uart6 = { 392 .master = &am33xx_l4_ls_hwmod, 393 .slave = &am33xx_uart6_hwmod, 394 .clk = "l4ls_gclk", 395 .user = OCP_USER_MPU, 396 }; 397 398 /* l3 main -> ocmc */ 399 struct omap_hwmod_ocp_if am33xx_l3_main__ocmc = { 400 .master = &am33xx_l3_main_hwmod, 401 .slave = &am33xx_ocmcram_hwmod, 402 .user = OCP_USER_MPU | OCP_USER_SDMA, 403 }; 404 405 /* l3 main -> sha0 HIB2 */ 406 struct omap_hwmod_ocp_if am33xx_l3_main__sha0 = { 407 .master = &am33xx_l3_main_hwmod, 408 .slave = &am33xx_sha0_hwmod, 409 .clk = "sha0_fck", 410 .user = OCP_USER_MPU | OCP_USER_SDMA, 411 }; 412 413 /* l3 main -> AES0 HIB2 */ 414 struct omap_hwmod_ocp_if am33xx_l3_main__aes0 = { 415 .master = &am33xx_l3_main_hwmod, 416 .slave = &am33xx_aes0_hwmod, 417 .clk = "aes0_fck", 418 .user = OCP_USER_MPU | OCP_USER_SDMA, 419 }; 420 421 /* l4 per -> rng */ 422 struct omap_hwmod_ocp_if am33xx_l4_per__rng = { 423 .master = &am33xx_l4_ls_hwmod, 424 .slave = &am33xx_rng_hwmod, 425 .clk = "rng_fck", 426 .user = OCP_USER_MPU, 427 }; 428