Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branches 'omap-for-v5.13/genpd-dra7', 'omap-for-v5.13/genpd-omap4' and 'omap-for-v5.13/genpd-omap5' into omap-for-v5.13/genpd-drop-legacy

Merge together branches dropping legacy data to avoid a minor merge conflict.

+1 -2113
-1
arch/arm/boot/dts/dra7-l4.dtsi
··· 576 576 577 577 target-module@40000 { /* 0x4a140000, ap 31 06.0 */ 578 578 compatible = "ti,sysc-omap4", "ti,sysc"; 579 - ti,hwmods = "sata"; 580 579 reg = <0x400fc 4>, 581 580 <0x41100 4>; 582 581 reg-names = "rev", "sysc";
-5
arch/arm/boot/dts/dra7.dtsi
··· 214 214 #interrupt-cells = <1>; 215 215 num-lanes = <1>; 216 216 linux,pci-domain = <0>; 217 - ti,hwmods = "pcie1"; 218 217 phys = <&pcie1_phy>; 219 218 phy-names = "pcie-phy0"; 220 219 ti,syscon-lane-sel = <&scm_conf_pcie 0x18>; ··· 241 242 num-lanes = <1>; 242 243 num-ib-windows = <4>; 243 244 num-ob-windows = <16>; 244 - ti,hwmods = "pcie1"; 245 245 phys = <&pcie1_phy>; 246 246 phy-names = "pcie-phy0"; 247 247 ti,syscon-unaligned-access = <&scm_conf1 0x14 1>; ··· 285 287 #interrupt-cells = <1>; 286 288 num-lanes = <1>; 287 289 linux,pci-domain = <1>; 288 - ti,hwmods = "pcie2"; 289 290 phys = <&pcie2_phy>; 290 291 phy-names = "pcie-phy0"; 291 292 interrupt-map-mask = <0 0 0 7>; ··· 465 468 466 469 target-module@4e000000 { 467 470 compatible = "ti,sysc-omap2", "ti,sysc"; 468 - ti,hwmods = "dmm"; 469 471 reg = <0x4e000000 0x4>, 470 472 <0x4e000010 0x4>; 471 473 reg-names = "rev", "sysc"; ··· 768 772 769 773 target-module@4b300000 { 770 774 compatible = "ti,sysc-omap4", "ti,sysc"; 771 - ti,hwmods = "qspi"; 772 775 reg = <0x4b300000 0x4>, 773 776 <0x4b300010 0x4>; 774 777 reg-names = "rev", "sysc";
-4
arch/arm/boot/dts/omap4-l4.dtsi
··· 46 46 47 47 target-module@2000 { /* 0x4a002000, ap 3 06.0 */ 48 48 compatible = "ti,sysc-omap4", "ti,sysc"; 49 - ti,hwmods = "ctrl_module_core"; 50 49 reg = <0x2000 0x4>, 51 50 <0x2010 0x4>; 52 51 reg-names = "rev", "sysc"; ··· 655 656 656 657 target-module@0 { /* 0x4a100000, ap 21 2a.0 */ 657 658 compatible = "ti,sysc-omap4", "ti,sysc"; 658 - ti,hwmods = "ctrl_module_pad_core"; 659 659 reg = <0x0 0x4>, 660 660 <0x10 0x4>; 661 661 reg-names = "rev", "sysc"; ··· 1045 1047 1046 1048 target-module@c000 { /* 0x4a30c000, ap 19 2c.0 */ 1047 1049 compatible = "ti,sysc-omap4", "ti,sysc"; 1048 - ti,hwmods = "ctrl_module_wkup"; 1049 1050 reg = <0xc000 0x4>, 1050 1051 <0xc010 0x4>; 1051 1052 reg-names = "rev", "sysc"; ··· 1205 1208 1206 1209 target-module@e000 { /* 0x4a31e000, ap 21 30.0 */ 1207 1210 compatible = "ti,sysc-omap4", "ti,sysc"; 1208 - ti,hwmods = "ctrl_module_pad_wkup"; 1209 1211 reg = <0xe000 0x4>, 1210 1212 <0xe010 0x4>; 1211 1213 reg-names = "rev", "sysc";
+1 -7
arch/arm/boot/dts/omap4.dtsi
··· 107 107 * hierarchy. 108 108 */ 109 109 ocp { 110 - compatible = "simple-bus"; 110 + compatible = "simple-pm-bus"; 111 111 power-domains = <&prm_l4per>; 112 112 clocks = <&l3_1_clkctrl OMAP4_L3_MAIN_1_CLKCTRL 0>, 113 113 <&l3_2_clkctrl OMAP4_L3_MAIN_2_CLKCTRL 0>, ··· 115 115 #address-cells = <1>; 116 116 #size-cells = <1>; 117 117 ranges; 118 - ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 119 118 120 119 l3-noc@44000000 { 121 120 compatible = "ti,omap4-l3-noc"; ··· 191 192 192 193 target-module@52000000 { 193 194 compatible = "ti,sysc-omap4", "ti,sysc"; 194 - ti,hwmods = "iss"; 195 195 reg = <0x52000000 0x4>, 196 196 <0x52000010 0x4>; 197 197 reg-names = "rev", "sysc"; ··· 222 224 */ 223 225 target-module@54000000 { 224 226 compatible = "ti,sysc-omap4-simple", "ti,sysc"; 225 - ti,hwmods = "debugss"; 226 227 power-domains = <&prm_emu>; 227 228 clocks = <&emu_sys_clkctrl OMAP4_DEBUGSS_CLKCTRL 0>; 228 229 clock-names = "fck"; ··· 285 288 286 289 target-module@4e000000 { 287 290 compatible = "ti,sysc-omap2", "ti,sysc"; 288 - ti,hwmods = "dmm"; 289 291 reg = <0x4e000000 0x4>, 290 292 <0x4e000010 0x4>; 291 293 reg-names = "rev", "sysc"; ··· 304 308 305 309 target-module@4c000000 { 306 310 compatible = "ti,sysc-omap4-simple", "ti,sysc"; 307 - ti,hwmods = "emif1"; 308 311 reg = <0x4c000000 0x4>; 309 312 reg-names = "rev"; 310 313 clocks = <&l3_emif_clkctrl OMAP4_EMIF1_CLKCTRL 0>; ··· 326 331 327 332 target-module@4d000000 { 328 333 compatible = "ti,sysc-omap4-simple", "ti,sysc"; 329 - ti,hwmods = "emif2"; 330 334 reg = <0x4d000000 0x4>; 331 335 reg-names = "rev"; 332 336 clocks = <&l3_emif_clkctrl OMAP4_EMIF2_CLKCTRL 0>;
-4
arch/arm/boot/dts/omap5.dtsi
··· 151 151 #size-cells = <1>; 152 152 ranges = <0 0 0 0xc0000000>; 153 153 dma-ranges = <0x80000000 0x0 0x80000000 0x80000000>; 154 - ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 155 154 156 155 l3-noc@44000000 { 157 156 compatible = "ti,omap5-l3-noc"; ··· 278 279 279 280 target-module@4e000000 { 280 281 compatible = "ti,sysc-omap2", "ti,sysc"; 281 - ti,hwmods = "dmm"; 282 282 reg = <0x4e000000 0x4>, 283 283 <0x4e000010 0x4>; 284 284 reg-names = "rev", "sysc"; ··· 297 299 298 300 target-module@4c000000 { 299 301 compatible = "ti,sysc-omap4-simple", "ti,sysc"; 300 - ti,hwmods = "emif1"; 301 302 reg = <0x4c000000 0x4>; 302 303 reg-names = "rev"; 303 304 clocks = <&emif_clkctrl OMAP5_EMIF1_CLKCTRL 0>; ··· 319 322 320 323 target-module@4d000000 { 321 324 compatible = "ti,sysc-omap4-simple", "ti,sysc"; 322 - ti,hwmods = "emif2"; 323 325 reg = <0x4d000000 0x4>; 324 326 reg-names = "rev"; 325 327 clocks = <&emif_clkctrl OMAP5_EMIF2_CLKCTRL 0>;
-3
arch/arm/mach-omap2/Kconfig
··· 34 34 select ARM_GIC 35 35 select HAVE_ARM_SCU if SMP 36 36 select HAVE_ARM_TWD if SMP 37 - select OMAP_HWMOD 38 37 select OMAP_INTERCONNECT 39 38 select OMAP_INTERCONNECT_BARRIER 40 39 select PL310_ERRATA_588369 if CACHE_L2X0 ··· 53 54 select HAVE_ARM_SCU if SMP 54 55 select HAVE_ARM_ARCH_TIMER 55 56 select ARM_ERRATA_798181 if SMP 56 - select OMAP_HWMOD 57 57 select OMAP_INTERCONNECT 58 58 select OMAP_INTERCONNECT_BARRIER 59 59 select PM_OPP ··· 88 90 select HAVE_ARM_ARCH_TIMER 89 91 select IRQ_CROSSBAR 90 92 select ARM_ERRATA_798181 if SMP 91 - select OMAP_HWMOD 92 93 select OMAP_INTERCONNECT 93 94 select OMAP_INTERCONNECT_BARRIER 94 95 select PM_OPP
-3
arch/arm/mach-omap2/Makefile
··· 207 207 obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o 208 208 obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o 209 209 obj-$(CONFIG_SOC_TI81XX) += omap_hwmod_81xx_data.o 210 - obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o 211 - obj-$(CONFIG_SOC_OMAP5) += omap_hwmod_54xx_data.o 212 - obj-$(CONFIG_SOC_DRA7XX) += omap_hwmod_7xx_data.o 213 210 214 211 # OMAP2420 MSDI controller integration support ("MMC") 215 212 obj-$(CONFIG_SOC_OMAP2420) += msdi.o
-9
arch/arm/mach-omap2/common.h
··· 343 343 } 344 344 #endif 345 345 346 - #ifdef CONFIG_SOC_DRA7XX 347 - extern int dra7xx_pciess_reset(struct omap_hwmod *oh); 348 - #else 349 - static inline int dra7xx_pciess_reset(struct omap_hwmod *oh) 350 - { 351 - return 0; 352 - } 353 - #endif 354 - 355 346 struct omap_system_dma_plat_info; 356 347 357 348 void pdata_quirks_init(const struct of_device_id *);
-5
arch/arm/mach-omap2/io.c
··· 615 615 omap44xx_voltagedomains_init(); 616 616 omap44xx_powerdomains_init(); 617 617 omap44xx_clockdomains_init(); 618 - omap44xx_hwmod_init(); 619 618 omap_hwmod_init_postsetup(); 620 619 omap_l2_cache_init(); 621 620 omap_clk_soc_init = omap4xxx_dt_clk_init; ··· 642 643 omap54xx_voltagedomains_init(); 643 644 omap54xx_powerdomains_init(); 644 645 omap54xx_clockdomains_init(); 645 - omap54xx_hwmod_init(); 646 - omap_hwmod_init_postsetup(); 647 646 omap_clk_soc_init = omap5xxx_dt_clk_init; 648 647 omap_secure_init(); 649 648 } ··· 664 667 dra7xxx_check_revision(); 665 668 dra7xx_powerdomains_init(); 666 669 dra7xx_clockdomains_init(); 667 - dra7xx_hwmod_init(); 668 - omap_hwmod_init_postsetup(); 669 670 omap_clk_soc_init = dra7xx_dt_clk_init; 670 671 omap_secure_init(); 671 672 }
-8
arch/arm/mach-omap2/omap_hwmod.c
··· 3495 3495 { .match = "msdi", .len = 4, .reset = omap_msdi_reset, }, 3496 3496 }; 3497 3497 3498 - static const struct omap_hwmod_reset dra7_reset_quirks[] = { 3499 - { .match = "pcie", .len = 4, .reset = dra7xx_pciess_reset, }, 3500 - }; 3501 - 3502 3498 static const struct omap_hwmod_reset omap_reset_quirks[] = { 3503 3499 { .match = "dss_core", .len = 8, .reset = omap_dss_reset, }, 3504 3500 { .match = "hdq1w", .len = 5, .reset = omap_hdq1w_reset, }, ··· 3529 3533 omap_hwmod_init_reset_quirk(dev, oh, data, 3530 3534 omap24xx_reset_quirks, 3531 3535 ARRAY_SIZE(omap24xx_reset_quirks)); 3532 - 3533 - if (soc_is_dra7xx()) 3534 - omap_hwmod_init_reset_quirk(dev, oh, data, dra7_reset_quirks, 3535 - ARRAY_SIZE(dra7_reset_quirks)); 3536 3536 3537 3537 omap_hwmod_init_reset_quirk(dev, oh, data, omap_reset_quirks, 3538 3538 ARRAY_SIZE(omap_reset_quirks));
-1
arch/arm/mach-omap2/omap_hwmod.h
··· 671 671 extern int omap2430_hwmod_init(void); 672 672 extern int omap3xxx_hwmod_init(void); 673 673 extern int omap44xx_hwmod_init(void); 674 - extern int omap54xx_hwmod_init(void); 675 674 extern int am33xx_hwmod_init(void); 676 675 extern int dm814x_hwmod_init(void); 677 676 extern int dm816x_hwmod_init(void);
-877
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Hardware modules present on the OMAP44xx chips 4 - * 5 - * Copyright (C) 2009-2012 Texas Instruments, Inc. 6 - * Copyright (C) 2009-2010 Nokia Corporation 7 - * 8 - * Paul Walmsley 9 - * Benoit Cousson 10 - * 11 - * This file is automatically generated from the OMAP hardware databases. 12 - * We respectfully ask that any modifications to this file be coordinated 13 - * with the public linux-omap@vger.kernel.org mailing list and the 14 - * authors above to ensure that the autogeneration scripts are kept 15 - * up-to-date with the file contents. 16 - * Note that this file is currently not in sync with autogeneration scripts. 17 - * The above note to be removed, once it is synced up. 18 - */ 19 - 20 - #include <linux/io.h> 21 - 22 - #include "omap_hwmod.h" 23 - #include "omap_hwmod_common_data.h" 24 - #include "cm1_44xx.h" 25 - #include "cm2_44xx.h" 26 - #include "prm44xx.h" 27 - #include "prm-regbits-44xx.h" 28 - 29 - /* Base offset for all OMAP4 interrupts external to MPUSS */ 30 - #define OMAP44XX_IRQ_GIC_START 32 31 - 32 - /* 33 - * IP blocks 34 - */ 35 - 36 - /* 37 - * 'dmm' class 38 - * instance(s): dmm 39 - */ 40 - static struct omap_hwmod_class omap44xx_dmm_hwmod_class = { 41 - .name = "dmm", 42 - }; 43 - 44 - /* dmm */ 45 - static struct omap_hwmod omap44xx_dmm_hwmod = { 46 - .name = "dmm", 47 - .class = &omap44xx_dmm_hwmod_class, 48 - .clkdm_name = "l3_emif_clkdm", 49 - .prcm = { 50 - .omap4 = { 51 - .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET, 52 - .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET, 53 - }, 54 - }, 55 - }; 56 - 57 - /* 58 - * 'l3' class 59 - * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3 60 - */ 61 - static struct omap_hwmod_class omap44xx_l3_hwmod_class = { 62 - .name = "l3", 63 - }; 64 - 65 - /* l3_instr */ 66 - static struct omap_hwmod omap44xx_l3_instr_hwmod = { 67 - .name = "l3_instr", 68 - .class = &omap44xx_l3_hwmod_class, 69 - .clkdm_name = "l3_instr_clkdm", 70 - .prcm = { 71 - .omap4 = { 72 - .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET, 73 - .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET, 74 - .modulemode = MODULEMODE_HWCTRL, 75 - }, 76 - }, 77 - }; 78 - 79 - /* l3_main_1 */ 80 - static struct omap_hwmod omap44xx_l3_main_1_hwmod = { 81 - .name = "l3_main_1", 82 - .class = &omap44xx_l3_hwmod_class, 83 - .clkdm_name = "l3_1_clkdm", 84 - .prcm = { 85 - .omap4 = { 86 - .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET, 87 - .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET, 88 - }, 89 - }, 90 - }; 91 - 92 - /* l3_main_2 */ 93 - static struct omap_hwmod omap44xx_l3_main_2_hwmod = { 94 - .name = "l3_main_2", 95 - .class = &omap44xx_l3_hwmod_class, 96 - .clkdm_name = "l3_2_clkdm", 97 - .prcm = { 98 - .omap4 = { 99 - .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET, 100 - .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET, 101 - }, 102 - }, 103 - }; 104 - 105 - /* l3_main_3 */ 106 - static struct omap_hwmod omap44xx_l3_main_3_hwmod = { 107 - .name = "l3_main_3", 108 - .class = &omap44xx_l3_hwmod_class, 109 - .clkdm_name = "l3_instr_clkdm", 110 - .prcm = { 111 - .omap4 = { 112 - .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET, 113 - .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET, 114 - .modulemode = MODULEMODE_HWCTRL, 115 - }, 116 - }, 117 - }; 118 - 119 - /* 120 - * 'l4' class 121 - * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup 122 - */ 123 - static struct omap_hwmod_class omap44xx_l4_hwmod_class = { 124 - .name = "l4", 125 - }; 126 - 127 - /* l4_cfg */ 128 - static struct omap_hwmod omap44xx_l4_cfg_hwmod = { 129 - .name = "l4_cfg", 130 - .class = &omap44xx_l4_hwmod_class, 131 - .clkdm_name = "l4_cfg_clkdm", 132 - .prcm = { 133 - .omap4 = { 134 - .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET, 135 - .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET, 136 - }, 137 - }, 138 - }; 139 - 140 - /* l4_per */ 141 - static struct omap_hwmod omap44xx_l4_per_hwmod = { 142 - .name = "l4_per", 143 - .class = &omap44xx_l4_hwmod_class, 144 - .clkdm_name = "l4_per_clkdm", 145 - .prcm = { 146 - .omap4 = { 147 - .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET, 148 - .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET, 149 - }, 150 - }, 151 - }; 152 - 153 - /* l4_wkup */ 154 - static struct omap_hwmod omap44xx_l4_wkup_hwmod = { 155 - .name = "l4_wkup", 156 - .class = &omap44xx_l4_hwmod_class, 157 - .clkdm_name = "l4_wkup_clkdm", 158 - .prcm = { 159 - .omap4 = { 160 - .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET, 161 - .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET, 162 - }, 163 - }, 164 - }; 165 - 166 - /* 167 - * 'mpu_bus' class 168 - * instance(s): mpu_private 169 - */ 170 - static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = { 171 - .name = "mpu_bus", 172 - }; 173 - 174 - /* mpu_private */ 175 - static struct omap_hwmod omap44xx_mpu_private_hwmod = { 176 - .name = "mpu_private", 177 - .class = &omap44xx_mpu_bus_hwmod_class, 178 - .clkdm_name = "mpuss_clkdm", 179 - .prcm = { 180 - .omap4 = { 181 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 182 - }, 183 - }, 184 - }; 185 - 186 - /* 187 - * 'ocp_wp_noc' class 188 - * instance(s): ocp_wp_noc 189 - */ 190 - static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = { 191 - .name = "ocp_wp_noc", 192 - }; 193 - 194 - /* ocp_wp_noc */ 195 - static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = { 196 - .name = "ocp_wp_noc", 197 - .class = &omap44xx_ocp_wp_noc_hwmod_class, 198 - .clkdm_name = "l3_instr_clkdm", 199 - .prcm = { 200 - .omap4 = { 201 - .clkctrl_offs = OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET, 202 - .context_offs = OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET, 203 - .modulemode = MODULEMODE_HWCTRL, 204 - }, 205 - }, 206 - }; 207 - 208 - /* 209 - * Modules omap_hwmod structures 210 - * 211 - * The following IPs are excluded for the moment because: 212 - * - They do not need an explicit SW control using omap_hwmod API. 213 - * - They still need to be validated with the driver 214 - * properly adapted to omap_hwmod / omap_device 215 - * 216 - * usim 217 - */ 218 - 219 - /* 220 - * 'ctrl_module' class 221 - * attila core control module + core pad control module + wkup pad control 222 - * module + attila wkup control module 223 - */ 224 - 225 - static struct omap_hwmod_class_sysconfig omap44xx_ctrl_module_sysc = { 226 - .rev_offs = 0x0000, 227 - .sysc_offs = 0x0010, 228 - .sysc_flags = SYSC_HAS_SIDLEMODE, 229 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 230 - SIDLE_SMART_WKUP), 231 - .sysc_fields = &omap_hwmod_sysc_type2, 232 - }; 233 - 234 - static struct omap_hwmod_class omap44xx_ctrl_module_hwmod_class = { 235 - .name = "ctrl_module", 236 - .sysc = &omap44xx_ctrl_module_sysc, 237 - }; 238 - 239 - /* ctrl_module_core */ 240 - static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = { 241 - .name = "ctrl_module_core", 242 - .class = &omap44xx_ctrl_module_hwmod_class, 243 - .clkdm_name = "l4_cfg_clkdm", 244 - .prcm = { 245 - .omap4 = { 246 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 247 - }, 248 - }, 249 - }; 250 - 251 - /* ctrl_module_pad_core */ 252 - static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = { 253 - .name = "ctrl_module_pad_core", 254 - .class = &omap44xx_ctrl_module_hwmod_class, 255 - .clkdm_name = "l4_cfg_clkdm", 256 - .prcm = { 257 - .omap4 = { 258 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 259 - }, 260 - }, 261 - }; 262 - 263 - /* ctrl_module_wkup */ 264 - static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = { 265 - .name = "ctrl_module_wkup", 266 - .class = &omap44xx_ctrl_module_hwmod_class, 267 - .clkdm_name = "l4_wkup_clkdm", 268 - .prcm = { 269 - .omap4 = { 270 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 271 - }, 272 - }, 273 - }; 274 - 275 - /* ctrl_module_pad_wkup */ 276 - static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = { 277 - .name = "ctrl_module_pad_wkup", 278 - .class = &omap44xx_ctrl_module_hwmod_class, 279 - .clkdm_name = "l4_wkup_clkdm", 280 - .prcm = { 281 - .omap4 = { 282 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 283 - }, 284 - }, 285 - }; 286 - 287 - /* 288 - * 'debugss' class 289 - * debug and emulation sub system 290 - */ 291 - 292 - static struct omap_hwmod_class omap44xx_debugss_hwmod_class = { 293 - .name = "debugss", 294 - }; 295 - 296 - /* debugss */ 297 - static struct omap_hwmod omap44xx_debugss_hwmod = { 298 - .name = "debugss", 299 - .class = &omap44xx_debugss_hwmod_class, 300 - .clkdm_name = "emu_sys_clkdm", 301 - .main_clk = "trace_clk_div_ck", 302 - .prcm = { 303 - .omap4 = { 304 - .clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET, 305 - .context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET, 306 - }, 307 - }, 308 - }; 309 - 310 - /* 311 - * 'emif' class 312 - * external memory interface no1 313 - */ 314 - 315 - static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = { 316 - .rev_offs = 0x0000, 317 - }; 318 - 319 - static struct omap_hwmod_class omap44xx_emif_hwmod_class = { 320 - .name = "emif", 321 - .sysc = &omap44xx_emif_sysc, 322 - }; 323 - 324 - /* emif1 */ 325 - static struct omap_hwmod omap44xx_emif1_hwmod = { 326 - .name = "emif1", 327 - .class = &omap44xx_emif_hwmod_class, 328 - .clkdm_name = "l3_emif_clkdm", 329 - .flags = HWMOD_INIT_NO_IDLE, 330 - .main_clk = "ddrphy_ck", 331 - .prcm = { 332 - .omap4 = { 333 - .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET, 334 - .context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET, 335 - .modulemode = MODULEMODE_HWCTRL, 336 - }, 337 - }, 338 - }; 339 - 340 - /* emif2 */ 341 - static struct omap_hwmod omap44xx_emif2_hwmod = { 342 - .name = "emif2", 343 - .class = &omap44xx_emif_hwmod_class, 344 - .clkdm_name = "l3_emif_clkdm", 345 - .flags = HWMOD_INIT_NO_IDLE, 346 - .main_clk = "ddrphy_ck", 347 - .prcm = { 348 - .omap4 = { 349 - .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET, 350 - .context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET, 351 - .modulemode = MODULEMODE_HWCTRL, 352 - }, 353 - }, 354 - }; 355 - 356 - /* 357 - * 'iss' class 358 - * external images sensor pixel data processor 359 - */ 360 - 361 - static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = { 362 - .rev_offs = 0x0000, 363 - .sysc_offs = 0x0010, 364 - /* 365 - * ISS needs 100 OCP clk cycles delay after a softreset before 366 - * accessing sysconfig again. 367 - * The lowest frequency at the moment for L3 bus is 100 MHz, so 368 - * 1usec delay is needed. Add an x2 margin to be safe (2 usecs). 369 - * 370 - * TODO: Indicate errata when available. 371 - */ 372 - .srst_udelay = 2, 373 - .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS | 374 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 375 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 376 - SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | 377 - MSTANDBY_SMART | MSTANDBY_SMART_WKUP), 378 - .sysc_fields = &omap_hwmod_sysc_type2, 379 - }; 380 - 381 - static struct omap_hwmod_class omap44xx_iss_hwmod_class = { 382 - .name = "iss", 383 - .sysc = &omap44xx_iss_sysc, 384 - }; 385 - 386 - /* iss */ 387 - static struct omap_hwmod_opt_clk iss_opt_clks[] = { 388 - { .role = "ctrlclk", .clk = "iss_ctrlclk" }, 389 - }; 390 - 391 - static struct omap_hwmod omap44xx_iss_hwmod = { 392 - .name = "iss", 393 - .class = &omap44xx_iss_hwmod_class, 394 - .clkdm_name = "iss_clkdm", 395 - .main_clk = "ducati_clk_mux_ck", 396 - .prcm = { 397 - .omap4 = { 398 - .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET, 399 - .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET, 400 - .modulemode = MODULEMODE_SWCTRL, 401 - }, 402 - }, 403 - .opt_clks = iss_opt_clks, 404 - .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks), 405 - }; 406 - 407 - /* 408 - * 'mpu' class 409 - * mpu sub-system 410 - */ 411 - 412 - static struct omap_hwmod_class omap44xx_mpu_hwmod_class = { 413 - .name = "mpu", 414 - }; 415 - 416 - /* mpu */ 417 - static struct omap_hwmod omap44xx_mpu_hwmod = { 418 - .name = "mpu", 419 - .class = &omap44xx_mpu_hwmod_class, 420 - .clkdm_name = "mpuss_clkdm", 421 - .flags = HWMOD_INIT_NO_IDLE, 422 - .main_clk = "dpll_mpu_m2_ck", 423 - .prcm = { 424 - .omap4 = { 425 - .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET, 426 - .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET, 427 - }, 428 - }, 429 - }; 430 - 431 - /* 432 - * 'ocmc_ram' class 433 - * top-level core on-chip ram 434 - */ 435 - 436 - static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = { 437 - .name = "ocmc_ram", 438 - }; 439 - 440 - /* ocmc_ram */ 441 - static struct omap_hwmod omap44xx_ocmc_ram_hwmod = { 442 - .name = "ocmc_ram", 443 - .class = &omap44xx_ocmc_ram_hwmod_class, 444 - .clkdm_name = "l3_2_clkdm", 445 - .prcm = { 446 - .omap4 = { 447 - .clkctrl_offs = OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET, 448 - .context_offs = OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET, 449 - }, 450 - }, 451 - }; 452 - 453 - 454 - /* 455 - * 'prcm' class 456 - * power and reset manager (part of the prcm infrastructure) + clock manager 2 457 - * + clock manager 1 (in always on power domain) + local prm in mpu 458 - */ 459 - 460 - static struct omap_hwmod_class omap44xx_prcm_hwmod_class = { 461 - .name = "prcm", 462 - }; 463 - 464 - /* prcm_mpu */ 465 - static struct omap_hwmod omap44xx_prcm_mpu_hwmod = { 466 - .name = "prcm_mpu", 467 - .class = &omap44xx_prcm_hwmod_class, 468 - .clkdm_name = "l4_wkup_clkdm", 469 - .flags = HWMOD_NO_IDLEST, 470 - .prcm = { 471 - .omap4 = { 472 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 473 - }, 474 - }, 475 - }; 476 - 477 - /* cm_core_aon */ 478 - static struct omap_hwmod omap44xx_cm_core_aon_hwmod = { 479 - .name = "cm_core_aon", 480 - .class = &omap44xx_prcm_hwmod_class, 481 - .flags = HWMOD_NO_IDLEST, 482 - .prcm = { 483 - .omap4 = { 484 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 485 - }, 486 - }, 487 - }; 488 - 489 - /* cm_core */ 490 - static struct omap_hwmod omap44xx_cm_core_hwmod = { 491 - .name = "cm_core", 492 - .class = &omap44xx_prcm_hwmod_class, 493 - .flags = HWMOD_NO_IDLEST, 494 - .prcm = { 495 - .omap4 = { 496 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 497 - }, 498 - }, 499 - }; 500 - 501 - /* prm */ 502 - static struct omap_hwmod_rst_info omap44xx_prm_resets[] = { 503 - { .name = "rst_global_warm_sw", .rst_shift = 0 }, 504 - { .name = "rst_global_cold_sw", .rst_shift = 1 }, 505 - }; 506 - 507 - static struct omap_hwmod omap44xx_prm_hwmod = { 508 - .name = "prm", 509 - .class = &omap44xx_prcm_hwmod_class, 510 - .rst_lines = omap44xx_prm_resets, 511 - .rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets), 512 - }; 513 - 514 - /* 515 - * 'scrm' class 516 - * system clock and reset manager 517 - */ 518 - 519 - static struct omap_hwmod_class omap44xx_scrm_hwmod_class = { 520 - .name = "scrm", 521 - }; 522 - 523 - /* scrm */ 524 - static struct omap_hwmod omap44xx_scrm_hwmod = { 525 - .name = "scrm", 526 - .class = &omap44xx_scrm_hwmod_class, 527 - .clkdm_name = "l4_wkup_clkdm", 528 - .prcm = { 529 - .omap4 = { 530 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 531 - }, 532 - }, 533 - }; 534 - 535 - /* 536 - * 'sl2if' class 537 - * shared level 2 memory interface 538 - */ 539 - 540 - static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = { 541 - .name = "sl2if", 542 - }; 543 - 544 - /* sl2if */ 545 - static struct omap_hwmod omap44xx_sl2if_hwmod = { 546 - .name = "sl2if", 547 - .class = &omap44xx_sl2if_hwmod_class, 548 - .clkdm_name = "ivahd_clkdm", 549 - .prcm = { 550 - .omap4 = { 551 - .clkctrl_offs = OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET, 552 - .context_offs = OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET, 553 - .modulemode = MODULEMODE_HWCTRL, 554 - }, 555 - }, 556 - }; 557 - 558 - /* 559 - * interfaces 560 - */ 561 - 562 - /* l3_main_1 -> dmm */ 563 - static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = { 564 - .master = &omap44xx_l3_main_1_hwmod, 565 - .slave = &omap44xx_dmm_hwmod, 566 - .clk = "l3_div_ck", 567 - .user = OCP_USER_SDMA, 568 - }; 569 - 570 - /* mpu -> dmm */ 571 - static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = { 572 - .master = &omap44xx_mpu_hwmod, 573 - .slave = &omap44xx_dmm_hwmod, 574 - .clk = "l3_div_ck", 575 - .user = OCP_USER_MPU, 576 - }; 577 - 578 - /* l3_main_3 -> l3_instr */ 579 - static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = { 580 - .master = &omap44xx_l3_main_3_hwmod, 581 - .slave = &omap44xx_l3_instr_hwmod, 582 - .clk = "l3_div_ck", 583 - .user = OCP_USER_MPU | OCP_USER_SDMA, 584 - }; 585 - 586 - /* ocp_wp_noc -> l3_instr */ 587 - static struct omap_hwmod_ocp_if omap44xx_ocp_wp_noc__l3_instr = { 588 - .master = &omap44xx_ocp_wp_noc_hwmod, 589 - .slave = &omap44xx_l3_instr_hwmod, 590 - .clk = "l3_div_ck", 591 - .user = OCP_USER_MPU | OCP_USER_SDMA, 592 - }; 593 - 594 - /* l3_main_2 -> l3_main_1 */ 595 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { 596 - .master = &omap44xx_l3_main_2_hwmod, 597 - .slave = &omap44xx_l3_main_1_hwmod, 598 - .clk = "l3_div_ck", 599 - .user = OCP_USER_MPU | OCP_USER_SDMA, 600 - }; 601 - 602 - /* l4_cfg -> l3_main_1 */ 603 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = { 604 - .master = &omap44xx_l4_cfg_hwmod, 605 - .slave = &omap44xx_l3_main_1_hwmod, 606 - .clk = "l4_div_ck", 607 - .user = OCP_USER_MPU | OCP_USER_SDMA, 608 - }; 609 - 610 - /* mpu -> l3_main_1 */ 611 - static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = { 612 - .master = &omap44xx_mpu_hwmod, 613 - .slave = &omap44xx_l3_main_1_hwmod, 614 - .clk = "l3_div_ck", 615 - .user = OCP_USER_MPU, 616 - }; 617 - 618 - /* debugss -> l3_main_2 */ 619 - static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = { 620 - .master = &omap44xx_debugss_hwmod, 621 - .slave = &omap44xx_l3_main_2_hwmod, 622 - .clk = "dbgclk_mux_ck", 623 - .user = OCP_USER_MPU | OCP_USER_SDMA, 624 - }; 625 - 626 - /* iss -> l3_main_2 */ 627 - static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = { 628 - .master = &omap44xx_iss_hwmod, 629 - .slave = &omap44xx_l3_main_2_hwmod, 630 - .clk = "l3_div_ck", 631 - .user = OCP_USER_MPU | OCP_USER_SDMA, 632 - }; 633 - 634 - /* l3_main_1 -> l3_main_2 */ 635 - static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = { 636 - .master = &omap44xx_l3_main_1_hwmod, 637 - .slave = &omap44xx_l3_main_2_hwmod, 638 - .clk = "l3_div_ck", 639 - .user = OCP_USER_MPU, 640 - }; 641 - 642 - /* l4_cfg -> l3_main_2 */ 643 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = { 644 - .master = &omap44xx_l4_cfg_hwmod, 645 - .slave = &omap44xx_l3_main_2_hwmod, 646 - .clk = "l4_div_ck", 647 - .user = OCP_USER_MPU | OCP_USER_SDMA, 648 - }; 649 - 650 - /* l3_main_1 -> l3_main_3 */ 651 - static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = { 652 - .master = &omap44xx_l3_main_1_hwmod, 653 - .slave = &omap44xx_l3_main_3_hwmod, 654 - .clk = "l3_div_ck", 655 - .user = OCP_USER_MPU, 656 - }; 657 - 658 - /* l3_main_2 -> l3_main_3 */ 659 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = { 660 - .master = &omap44xx_l3_main_2_hwmod, 661 - .slave = &omap44xx_l3_main_3_hwmod, 662 - .clk = "l3_div_ck", 663 - .user = OCP_USER_MPU | OCP_USER_SDMA, 664 - }; 665 - 666 - /* l4_cfg -> l3_main_3 */ 667 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = { 668 - .master = &omap44xx_l4_cfg_hwmod, 669 - .slave = &omap44xx_l3_main_3_hwmod, 670 - .clk = "l4_div_ck", 671 - .user = OCP_USER_MPU | OCP_USER_SDMA, 672 - }; 673 - 674 - /* l3_main_1 -> l4_cfg */ 675 - static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = { 676 - .master = &omap44xx_l3_main_1_hwmod, 677 - .slave = &omap44xx_l4_cfg_hwmod, 678 - .clk = "l3_div_ck", 679 - .user = OCP_USER_MPU | OCP_USER_SDMA, 680 - }; 681 - 682 - /* l3_main_2 -> l4_per */ 683 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = { 684 - .master = &omap44xx_l3_main_2_hwmod, 685 - .slave = &omap44xx_l4_per_hwmod, 686 - .clk = "l3_div_ck", 687 - .user = OCP_USER_MPU | OCP_USER_SDMA, 688 - }; 689 - 690 - /* l4_cfg -> l4_wkup */ 691 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = { 692 - .master = &omap44xx_l4_cfg_hwmod, 693 - .slave = &omap44xx_l4_wkup_hwmod, 694 - .clk = "l4_div_ck", 695 - .user = OCP_USER_MPU | OCP_USER_SDMA, 696 - }; 697 - 698 - /* mpu -> mpu_private */ 699 - static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = { 700 - .master = &omap44xx_mpu_hwmod, 701 - .slave = &omap44xx_mpu_private_hwmod, 702 - .clk = "l3_div_ck", 703 - .user = OCP_USER_MPU | OCP_USER_SDMA, 704 - }; 705 - 706 - /* l4_cfg -> ocp_wp_noc */ 707 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp_wp_noc = { 708 - .master = &omap44xx_l4_cfg_hwmod, 709 - .slave = &omap44xx_ocp_wp_noc_hwmod, 710 - .clk = "l4_div_ck", 711 - .user = OCP_USER_MPU | OCP_USER_SDMA, 712 - }; 713 - 714 - /* l4_cfg -> ctrl_module_core */ 715 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_core = { 716 - .master = &omap44xx_l4_cfg_hwmod, 717 - .slave = &omap44xx_ctrl_module_core_hwmod, 718 - .clk = "l4_div_ck", 719 - .user = OCP_USER_MPU | OCP_USER_SDMA, 720 - }; 721 - 722 - /* l4_cfg -> ctrl_module_pad_core */ 723 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_pad_core = { 724 - .master = &omap44xx_l4_cfg_hwmod, 725 - .slave = &omap44xx_ctrl_module_pad_core_hwmod, 726 - .clk = "l4_div_ck", 727 - .user = OCP_USER_MPU | OCP_USER_SDMA, 728 - }; 729 - 730 - /* l4_wkup -> ctrl_module_wkup */ 731 - static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_wkup = { 732 - .master = &omap44xx_l4_wkup_hwmod, 733 - .slave = &omap44xx_ctrl_module_wkup_hwmod, 734 - .clk = "l4_wkup_clk_mux_ck", 735 - .user = OCP_USER_MPU | OCP_USER_SDMA, 736 - }; 737 - 738 - /* l4_wkup -> ctrl_module_pad_wkup */ 739 - static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_pad_wkup = { 740 - .master = &omap44xx_l4_wkup_hwmod, 741 - .slave = &omap44xx_ctrl_module_pad_wkup_hwmod, 742 - .clk = "l4_wkup_clk_mux_ck", 743 - .user = OCP_USER_MPU | OCP_USER_SDMA, 744 - }; 745 - 746 - /* l3_instr -> debugss */ 747 - static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = { 748 - .master = &omap44xx_l3_instr_hwmod, 749 - .slave = &omap44xx_debugss_hwmod, 750 - .clk = "l3_div_ck", 751 - .user = OCP_USER_MPU | OCP_USER_SDMA, 752 - }; 753 - 754 - /* l3_main_2 -> iss */ 755 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = { 756 - .master = &omap44xx_l3_main_2_hwmod, 757 - .slave = &omap44xx_iss_hwmod, 758 - .clk = "l3_div_ck", 759 - .user = OCP_USER_MPU | OCP_USER_SDMA, 760 - }; 761 - 762 - /* l3_main_2 -> ocmc_ram */ 763 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = { 764 - .master = &omap44xx_l3_main_2_hwmod, 765 - .slave = &omap44xx_ocmc_ram_hwmod, 766 - .clk = "l3_div_ck", 767 - .user = OCP_USER_MPU | OCP_USER_SDMA, 768 - }; 769 - 770 - /* mpu_private -> prcm_mpu */ 771 - static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = { 772 - .master = &omap44xx_mpu_private_hwmod, 773 - .slave = &omap44xx_prcm_mpu_hwmod, 774 - .clk = "l3_div_ck", 775 - .user = OCP_USER_MPU | OCP_USER_SDMA, 776 - }; 777 - 778 - /* l4_wkup -> cm_core_aon */ 779 - static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = { 780 - .master = &omap44xx_l4_wkup_hwmod, 781 - .slave = &omap44xx_cm_core_aon_hwmod, 782 - .clk = "l4_wkup_clk_mux_ck", 783 - .user = OCP_USER_MPU | OCP_USER_SDMA, 784 - }; 785 - 786 - /* l4_cfg -> cm_core */ 787 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = { 788 - .master = &omap44xx_l4_cfg_hwmod, 789 - .slave = &omap44xx_cm_core_hwmod, 790 - .clk = "l4_div_ck", 791 - .user = OCP_USER_MPU | OCP_USER_SDMA, 792 - }; 793 - 794 - /* l4_wkup -> prm */ 795 - static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = { 796 - .master = &omap44xx_l4_wkup_hwmod, 797 - .slave = &omap44xx_prm_hwmod, 798 - .clk = "l4_wkup_clk_mux_ck", 799 - .user = OCP_USER_MPU | OCP_USER_SDMA, 800 - }; 801 - 802 - /* l4_wkup -> scrm */ 803 - static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = { 804 - .master = &omap44xx_l4_wkup_hwmod, 805 - .slave = &omap44xx_scrm_hwmod, 806 - .clk = "l4_wkup_clk_mux_ck", 807 - .user = OCP_USER_MPU | OCP_USER_SDMA, 808 - }; 809 - 810 - /* l3_main_2 -> sl2if */ 811 - static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = { 812 - .master = &omap44xx_l3_main_2_hwmod, 813 - .slave = &omap44xx_sl2if_hwmod, 814 - .clk = "l3_div_ck", 815 - .user = OCP_USER_MPU | OCP_USER_SDMA, 816 - }; 817 - 818 - /* mpu -> emif1 */ 819 - static struct omap_hwmod_ocp_if omap44xx_mpu__emif1 = { 820 - .master = &omap44xx_mpu_hwmod, 821 - .slave = &omap44xx_emif1_hwmod, 822 - .clk = "l3_div_ck", 823 - .user = OCP_USER_MPU | OCP_USER_SDMA, 824 - }; 825 - 826 - /* mpu -> emif2 */ 827 - static struct omap_hwmod_ocp_if omap44xx_mpu__emif2 = { 828 - .master = &omap44xx_mpu_hwmod, 829 - .slave = &omap44xx_emif2_hwmod, 830 - .clk = "l3_div_ck", 831 - .user = OCP_USER_MPU | OCP_USER_SDMA, 832 - }; 833 - 834 - static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { 835 - &omap44xx_l3_main_1__dmm, 836 - &omap44xx_mpu__dmm, 837 - &omap44xx_l3_main_3__l3_instr, 838 - &omap44xx_ocp_wp_noc__l3_instr, 839 - &omap44xx_l3_main_2__l3_main_1, 840 - &omap44xx_l4_cfg__l3_main_1, 841 - &omap44xx_mpu__l3_main_1, 842 - &omap44xx_debugss__l3_main_2, 843 - &omap44xx_iss__l3_main_2, 844 - &omap44xx_l3_main_1__l3_main_2, 845 - &omap44xx_l4_cfg__l3_main_2, 846 - &omap44xx_l3_main_1__l3_main_3, 847 - &omap44xx_l3_main_2__l3_main_3, 848 - &omap44xx_l4_cfg__l3_main_3, 849 - &omap44xx_l3_main_1__l4_cfg, 850 - &omap44xx_l3_main_2__l4_per, 851 - &omap44xx_l4_cfg__l4_wkup, 852 - &omap44xx_mpu__mpu_private, 853 - &omap44xx_l4_cfg__ocp_wp_noc, 854 - &omap44xx_l4_cfg__ctrl_module_core, 855 - &omap44xx_l4_cfg__ctrl_module_pad_core, 856 - &omap44xx_l4_wkup__ctrl_module_wkup, 857 - &omap44xx_l4_wkup__ctrl_module_pad_wkup, 858 - &omap44xx_l3_instr__debugss, 859 - &omap44xx_l3_main_2__iss, 860 - &omap44xx_l3_main_2__ocmc_ram, 861 - &omap44xx_mpu_private__prcm_mpu, 862 - &omap44xx_l4_wkup__cm_core_aon, 863 - &omap44xx_l4_cfg__cm_core, 864 - &omap44xx_l4_wkup__prm, 865 - &omap44xx_l4_wkup__scrm, 866 - /* &omap44xx_l3_main_2__sl2if, */ 867 - &omap44xx_mpu__emif1, 868 - &omap44xx_mpu__emif2, 869 - NULL, 870 - }; 871 - 872 - int __init omap44xx_hwmod_init(void) 873 - { 874 - omap_hwmod_init(); 875 - return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs); 876 - } 877 -
-467
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Hardware modules present on the OMAP54xx chips 4 - * 5 - * Copyright (C) 2013 Texas Instruments Incorporated - https://www.ti.com 6 - * 7 - * Paul Walmsley 8 - * Benoit Cousson 9 - * 10 - * This file is automatically generated from the OMAP hardware databases. 11 - * We respectfully ask that any modifications to this file be coordinated 12 - * with the public linux-omap@vger.kernel.org mailing list and the 13 - * authors above to ensure that the autogeneration scripts are kept 14 - * up-to-date with the file contents. 15 - */ 16 - 17 - #include <linux/io.h> 18 - #include <linux/power/smartreflex.h> 19 - 20 - #include "omap_hwmod.h" 21 - #include "omap_hwmod_common_data.h" 22 - #include "cm1_54xx.h" 23 - #include "cm2_54xx.h" 24 - #include "prm54xx.h" 25 - 26 - /* Base offset for all OMAP5 interrupts external to MPUSS */ 27 - #define OMAP54XX_IRQ_GIC_START 32 28 - 29 - /* 30 - * IP blocks 31 - */ 32 - 33 - /* 34 - * 'dmm' class 35 - * instance(s): dmm 36 - */ 37 - static struct omap_hwmod_class omap54xx_dmm_hwmod_class = { 38 - .name = "dmm", 39 - }; 40 - 41 - /* dmm */ 42 - static struct omap_hwmod omap54xx_dmm_hwmod = { 43 - .name = "dmm", 44 - .class = &omap54xx_dmm_hwmod_class, 45 - .clkdm_name = "emif_clkdm", 46 - .prcm = { 47 - .omap4 = { 48 - .clkctrl_offs = OMAP54XX_CM_EMIF_DMM_CLKCTRL_OFFSET, 49 - .context_offs = OMAP54XX_RM_EMIF_DMM_CONTEXT_OFFSET, 50 - }, 51 - }, 52 - }; 53 - 54 - /* 55 - * 'l3' class 56 - * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3 57 - */ 58 - static struct omap_hwmod_class omap54xx_l3_hwmod_class = { 59 - .name = "l3", 60 - }; 61 - 62 - /* l3_instr */ 63 - static struct omap_hwmod omap54xx_l3_instr_hwmod = { 64 - .name = "l3_instr", 65 - .class = &omap54xx_l3_hwmod_class, 66 - .clkdm_name = "l3instr_clkdm", 67 - .prcm = { 68 - .omap4 = { 69 - .clkctrl_offs = OMAP54XX_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET, 70 - .context_offs = OMAP54XX_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET, 71 - .modulemode = MODULEMODE_HWCTRL, 72 - }, 73 - }, 74 - }; 75 - 76 - /* l3_main_1 */ 77 - static struct omap_hwmod omap54xx_l3_main_1_hwmod = { 78 - .name = "l3_main_1", 79 - .class = &omap54xx_l3_hwmod_class, 80 - .clkdm_name = "l3main1_clkdm", 81 - .prcm = { 82 - .omap4 = { 83 - .clkctrl_offs = OMAP54XX_CM_L3MAIN1_L3_MAIN_1_CLKCTRL_OFFSET, 84 - .context_offs = OMAP54XX_RM_L3MAIN1_L3_MAIN_1_CONTEXT_OFFSET, 85 - }, 86 - }, 87 - }; 88 - 89 - /* l3_main_2 */ 90 - static struct omap_hwmod omap54xx_l3_main_2_hwmod = { 91 - .name = "l3_main_2", 92 - .class = &omap54xx_l3_hwmod_class, 93 - .clkdm_name = "l3main2_clkdm", 94 - .prcm = { 95 - .omap4 = { 96 - .clkctrl_offs = OMAP54XX_CM_L3MAIN2_L3_MAIN_2_CLKCTRL_OFFSET, 97 - .context_offs = OMAP54XX_RM_L3MAIN2_L3_MAIN_2_CONTEXT_OFFSET, 98 - }, 99 - }, 100 - }; 101 - 102 - /* l3_main_3 */ 103 - static struct omap_hwmod omap54xx_l3_main_3_hwmod = { 104 - .name = "l3_main_3", 105 - .class = &omap54xx_l3_hwmod_class, 106 - .clkdm_name = "l3instr_clkdm", 107 - .prcm = { 108 - .omap4 = { 109 - .clkctrl_offs = OMAP54XX_CM_L3INSTR_L3_MAIN_3_CLKCTRL_OFFSET, 110 - .context_offs = OMAP54XX_RM_L3INSTR_L3_MAIN_3_CONTEXT_OFFSET, 111 - .modulemode = MODULEMODE_HWCTRL, 112 - }, 113 - }, 114 - }; 115 - 116 - /* 117 - * 'l4' class 118 - * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup 119 - */ 120 - static struct omap_hwmod_class omap54xx_l4_hwmod_class = { 121 - .name = "l4", 122 - }; 123 - 124 - /* l4_cfg */ 125 - static struct omap_hwmod omap54xx_l4_cfg_hwmod = { 126 - .name = "l4_cfg", 127 - .class = &omap54xx_l4_hwmod_class, 128 - .clkdm_name = "l4cfg_clkdm", 129 - .prcm = { 130 - .omap4 = { 131 - .clkctrl_offs = OMAP54XX_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET, 132 - .context_offs = OMAP54XX_RM_L4CFG_L4_CFG_CONTEXT_OFFSET, 133 - }, 134 - }, 135 - }; 136 - 137 - /* l4_per */ 138 - static struct omap_hwmod omap54xx_l4_per_hwmod = { 139 - .name = "l4_per", 140 - .class = &omap54xx_l4_hwmod_class, 141 - .clkdm_name = "l4per_clkdm", 142 - .prcm = { 143 - .omap4 = { 144 - .clkctrl_offs = OMAP54XX_CM_L4PER_L4_PER_CLKCTRL_OFFSET, 145 - .context_offs = OMAP54XX_RM_L4PER_L4_PER_CONTEXT_OFFSET, 146 - }, 147 - }, 148 - }; 149 - 150 - /* l4_wkup */ 151 - static struct omap_hwmod omap54xx_l4_wkup_hwmod = { 152 - .name = "l4_wkup", 153 - .class = &omap54xx_l4_hwmod_class, 154 - .clkdm_name = "wkupaon_clkdm", 155 - .prcm = { 156 - .omap4 = { 157 - .clkctrl_offs = OMAP54XX_CM_WKUPAON_L4_WKUP_CLKCTRL_OFFSET, 158 - .context_offs = OMAP54XX_RM_WKUPAON_L4_WKUP_CONTEXT_OFFSET, 159 - }, 160 - }, 161 - }; 162 - 163 - /* 164 - * 'mpu_bus' class 165 - * instance(s): mpu_private 166 - */ 167 - static struct omap_hwmod_class omap54xx_mpu_bus_hwmod_class = { 168 - .name = "mpu_bus", 169 - }; 170 - 171 - /* mpu_private */ 172 - static struct omap_hwmod omap54xx_mpu_private_hwmod = { 173 - .name = "mpu_private", 174 - .class = &omap54xx_mpu_bus_hwmod_class, 175 - .clkdm_name = "mpu_clkdm", 176 - .prcm = { 177 - .omap4 = { 178 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 179 - }, 180 - }, 181 - }; 182 - 183 - /* 184 - * 'emif' class 185 - * external memory interface no1 (wrapper) 186 - */ 187 - 188 - static struct omap_hwmod_class_sysconfig omap54xx_emif_sysc = { 189 - .rev_offs = 0x0000, 190 - }; 191 - 192 - static struct omap_hwmod_class omap54xx_emif_hwmod_class = { 193 - .name = "emif", 194 - .sysc = &omap54xx_emif_sysc, 195 - }; 196 - 197 - /* emif1 */ 198 - static struct omap_hwmod omap54xx_emif1_hwmod = { 199 - .name = "emif1", 200 - .class = &omap54xx_emif_hwmod_class, 201 - .clkdm_name = "emif_clkdm", 202 - .flags = HWMOD_INIT_NO_IDLE, 203 - .main_clk = "dpll_core_h11x2_ck", 204 - .prcm = { 205 - .omap4 = { 206 - .clkctrl_offs = OMAP54XX_CM_EMIF_EMIF1_CLKCTRL_OFFSET, 207 - .context_offs = OMAP54XX_RM_EMIF_EMIF1_CONTEXT_OFFSET, 208 - .modulemode = MODULEMODE_HWCTRL, 209 - }, 210 - }, 211 - }; 212 - 213 - /* emif2 */ 214 - static struct omap_hwmod omap54xx_emif2_hwmod = { 215 - .name = "emif2", 216 - .class = &omap54xx_emif_hwmod_class, 217 - .clkdm_name = "emif_clkdm", 218 - .flags = HWMOD_INIT_NO_IDLE, 219 - .main_clk = "dpll_core_h11x2_ck", 220 - .prcm = { 221 - .omap4 = { 222 - .clkctrl_offs = OMAP54XX_CM_EMIF_EMIF2_CLKCTRL_OFFSET, 223 - .context_offs = OMAP54XX_RM_EMIF_EMIF2_CONTEXT_OFFSET, 224 - .modulemode = MODULEMODE_HWCTRL, 225 - }, 226 - }, 227 - }; 228 - 229 - 230 - 231 - 232 - /* 233 - * 'mpu' class 234 - * mpu sub-system 235 - */ 236 - 237 - static struct omap_hwmod_class omap54xx_mpu_hwmod_class = { 238 - .name = "mpu", 239 - }; 240 - 241 - /* mpu */ 242 - static struct omap_hwmod omap54xx_mpu_hwmod = { 243 - .name = "mpu", 244 - .class = &omap54xx_mpu_hwmod_class, 245 - .clkdm_name = "mpu_clkdm", 246 - .flags = HWMOD_INIT_NO_IDLE, 247 - .main_clk = "dpll_mpu_m2_ck", 248 - .prcm = { 249 - .omap4 = { 250 - .clkctrl_offs = OMAP54XX_CM_MPU_MPU_CLKCTRL_OFFSET, 251 - .context_offs = OMAP54XX_RM_MPU_MPU_CONTEXT_OFFSET, 252 - }, 253 - }, 254 - }; 255 - 256 - /* 257 - * 'sata' class 258 - * sata: serial ata interface gen2 compliant ( 1 rx/ 1 tx) 259 - */ 260 - 261 - static struct omap_hwmod_class_sysconfig omap54xx_sata_sysc = { 262 - .rev_offs = 0x00fc, 263 - .sysc_offs = 0x0000, 264 - .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE), 265 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 266 - SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | 267 - MSTANDBY_SMART | MSTANDBY_SMART_WKUP), 268 - .sysc_fields = &omap_hwmod_sysc_type2, 269 - }; 270 - 271 - static struct omap_hwmod_class omap54xx_sata_hwmod_class = { 272 - .name = "sata", 273 - .sysc = &omap54xx_sata_sysc, 274 - }; 275 - 276 - /* sata */ 277 - static struct omap_hwmod omap54xx_sata_hwmod = { 278 - .name = "sata", 279 - .class = &omap54xx_sata_hwmod_class, 280 - .clkdm_name = "l3init_clkdm", 281 - .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY, 282 - .main_clk = "func_48m_fclk", 283 - .mpu_rt_idx = 1, 284 - .prcm = { 285 - .omap4 = { 286 - .clkctrl_offs = OMAP54XX_CM_L3INIT_SATA_CLKCTRL_OFFSET, 287 - .context_offs = OMAP54XX_RM_L3INIT_SATA_CONTEXT_OFFSET, 288 - .modulemode = MODULEMODE_SWCTRL, 289 - }, 290 - }, 291 - }; 292 - 293 - /* l4_cfg -> sata */ 294 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__sata = { 295 - .master = &omap54xx_l4_cfg_hwmod, 296 - .slave = &omap54xx_sata_hwmod, 297 - .clk = "l3_iclk_div", 298 - .user = OCP_USER_MPU | OCP_USER_SDMA, 299 - }; 300 - 301 - /* 302 - * Interfaces 303 - */ 304 - 305 - /* l3_main_1 -> dmm */ 306 - static struct omap_hwmod_ocp_if omap54xx_l3_main_1__dmm = { 307 - .master = &omap54xx_l3_main_1_hwmod, 308 - .slave = &omap54xx_dmm_hwmod, 309 - .clk = "l3_iclk_div", 310 - .user = OCP_USER_SDMA, 311 - }; 312 - 313 - /* l3_main_3 -> l3_instr */ 314 - static struct omap_hwmod_ocp_if omap54xx_l3_main_3__l3_instr = { 315 - .master = &omap54xx_l3_main_3_hwmod, 316 - .slave = &omap54xx_l3_instr_hwmod, 317 - .clk = "l3_iclk_div", 318 - .user = OCP_USER_MPU | OCP_USER_SDMA, 319 - }; 320 - 321 - /* l3_main_2 -> l3_main_1 */ 322 - static struct omap_hwmod_ocp_if omap54xx_l3_main_2__l3_main_1 = { 323 - .master = &omap54xx_l3_main_2_hwmod, 324 - .slave = &omap54xx_l3_main_1_hwmod, 325 - .clk = "l3_iclk_div", 326 - .user = OCP_USER_MPU | OCP_USER_SDMA, 327 - }; 328 - 329 - /* l4_cfg -> l3_main_1 */ 330 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_1 = { 331 - .master = &omap54xx_l4_cfg_hwmod, 332 - .slave = &omap54xx_l3_main_1_hwmod, 333 - .clk = "l3_iclk_div", 334 - .user = OCP_USER_MPU | OCP_USER_SDMA, 335 - }; 336 - 337 - /* mpu -> l3_main_1 */ 338 - static struct omap_hwmod_ocp_if omap54xx_mpu__l3_main_1 = { 339 - .master = &omap54xx_mpu_hwmod, 340 - .slave = &omap54xx_l3_main_1_hwmod, 341 - .clk = "l3_iclk_div", 342 - .user = OCP_USER_MPU, 343 - }; 344 - 345 - /* l3_main_1 -> l3_main_2 */ 346 - static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l3_main_2 = { 347 - .master = &omap54xx_l3_main_1_hwmod, 348 - .slave = &omap54xx_l3_main_2_hwmod, 349 - .clk = "l3_iclk_div", 350 - .user = OCP_USER_MPU, 351 - }; 352 - 353 - /* l4_cfg -> l3_main_2 */ 354 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_2 = { 355 - .master = &omap54xx_l4_cfg_hwmod, 356 - .slave = &omap54xx_l3_main_2_hwmod, 357 - .clk = "l3_iclk_div", 358 - .user = OCP_USER_MPU | OCP_USER_SDMA, 359 - }; 360 - 361 - /* l3_main_1 -> l3_main_3 */ 362 - static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l3_main_3 = { 363 - .master = &omap54xx_l3_main_1_hwmod, 364 - .slave = &omap54xx_l3_main_3_hwmod, 365 - .clk = "l3_iclk_div", 366 - .user = OCP_USER_MPU, 367 - }; 368 - 369 - /* l3_main_2 -> l3_main_3 */ 370 - static struct omap_hwmod_ocp_if omap54xx_l3_main_2__l3_main_3 = { 371 - .master = &omap54xx_l3_main_2_hwmod, 372 - .slave = &omap54xx_l3_main_3_hwmod, 373 - .clk = "l3_iclk_div", 374 - .user = OCP_USER_MPU | OCP_USER_SDMA, 375 - }; 376 - 377 - /* l4_cfg -> l3_main_3 */ 378 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_3 = { 379 - .master = &omap54xx_l4_cfg_hwmod, 380 - .slave = &omap54xx_l3_main_3_hwmod, 381 - .clk = "l3_iclk_div", 382 - .user = OCP_USER_MPU | OCP_USER_SDMA, 383 - }; 384 - 385 - /* l3_main_1 -> l4_cfg */ 386 - static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l4_cfg = { 387 - .master = &omap54xx_l3_main_1_hwmod, 388 - .slave = &omap54xx_l4_cfg_hwmod, 389 - .clk = "l4_root_clk_div", 390 - .user = OCP_USER_MPU | OCP_USER_SDMA, 391 - }; 392 - 393 - /* l3_main_2 -> l4_per */ 394 - static struct omap_hwmod_ocp_if omap54xx_l3_main_2__l4_per = { 395 - .master = &omap54xx_l3_main_2_hwmod, 396 - .slave = &omap54xx_l4_per_hwmod, 397 - .clk = "l4_root_clk_div", 398 - .user = OCP_USER_MPU | OCP_USER_SDMA, 399 - }; 400 - 401 - /* l3_main_1 -> l4_wkup */ 402 - static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l4_wkup = { 403 - .master = &omap54xx_l3_main_1_hwmod, 404 - .slave = &omap54xx_l4_wkup_hwmod, 405 - .clk = "wkupaon_iclk_mux", 406 - .user = OCP_USER_MPU | OCP_USER_SDMA, 407 - }; 408 - 409 - /* mpu -> mpu_private */ 410 - static struct omap_hwmod_ocp_if omap54xx_mpu__mpu_private = { 411 - .master = &omap54xx_mpu_hwmod, 412 - .slave = &omap54xx_mpu_private_hwmod, 413 - .clk = "l3_iclk_div", 414 - .user = OCP_USER_MPU | OCP_USER_SDMA, 415 - }; 416 - 417 - /* mpu -> emif1 */ 418 - static struct omap_hwmod_ocp_if omap54xx_mpu__emif1 = { 419 - .master = &omap54xx_mpu_hwmod, 420 - .slave = &omap54xx_emif1_hwmod, 421 - .clk = "dpll_core_h11x2_ck", 422 - .user = OCP_USER_MPU | OCP_USER_SDMA, 423 - }; 424 - 425 - /* mpu -> emif2 */ 426 - static struct omap_hwmod_ocp_if omap54xx_mpu__emif2 = { 427 - .master = &omap54xx_mpu_hwmod, 428 - .slave = &omap54xx_emif2_hwmod, 429 - .clk = "dpll_core_h11x2_ck", 430 - .user = OCP_USER_MPU | OCP_USER_SDMA, 431 - }; 432 - 433 - /* l4_cfg -> mpu */ 434 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mpu = { 435 - .master = &omap54xx_l4_cfg_hwmod, 436 - .slave = &omap54xx_mpu_hwmod, 437 - .clk = "l4_root_clk_div", 438 - .user = OCP_USER_MPU | OCP_USER_SDMA, 439 - }; 440 - 441 - static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = { 442 - &omap54xx_l3_main_1__dmm, 443 - &omap54xx_l3_main_3__l3_instr, 444 - &omap54xx_l3_main_2__l3_main_1, 445 - &omap54xx_l4_cfg__l3_main_1, 446 - &omap54xx_mpu__l3_main_1, 447 - &omap54xx_l3_main_1__l3_main_2, 448 - &omap54xx_l4_cfg__l3_main_2, 449 - &omap54xx_l3_main_1__l3_main_3, 450 - &omap54xx_l3_main_2__l3_main_3, 451 - &omap54xx_l4_cfg__l3_main_3, 452 - &omap54xx_l3_main_1__l4_cfg, 453 - &omap54xx_l3_main_2__l4_per, 454 - &omap54xx_l3_main_1__l4_wkup, 455 - &omap54xx_mpu__mpu_private, 456 - &omap54xx_mpu__emif1, 457 - &omap54xx_mpu__emif2, 458 - &omap54xx_l4_cfg__mpu, 459 - &omap54xx_l4_cfg__sata, 460 - NULL, 461 - }; 462 - 463 - int __init omap54xx_hwmod_init(void) 464 - { 465 - omap_hwmod_init(); 466 - return omap_hwmod_register_links(omap54xx_hwmod_ocp_ifs); 467 - }
-719
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Hardware modules present on the DRA7xx chips 4 - * 5 - * Copyright (C) 2013 Texas Instruments Incorporated - https://www.ti.com 6 - * 7 - * Paul Walmsley 8 - * Benoit Cousson 9 - * 10 - * This file is automatically generated from the OMAP hardware databases. 11 - * We respectfully ask that any modifications to this file be coordinated 12 - * with the public linux-omap@vger.kernel.org mailing list and the 13 - * authors above to ensure that the autogeneration scripts are kept 14 - * up-to-date with the file contents. 15 - */ 16 - 17 - #include <linux/io.h> 18 - 19 - #include "omap_hwmod.h" 20 - #include "omap_hwmod_common_data.h" 21 - #include "cm1_7xx.h" 22 - #include "cm2_7xx.h" 23 - #include "prm7xx.h" 24 - #include "soc.h" 25 - 26 - /* Base offset for all DRA7XX interrupts external to MPUSS */ 27 - #define DRA7XX_IRQ_GIC_START 32 28 - 29 - /* 30 - * IP blocks 31 - */ 32 - 33 - /* 34 - * 'dmm' class 35 - * instance(s): dmm 36 - */ 37 - static struct omap_hwmod_class dra7xx_dmm_hwmod_class = { 38 - .name = "dmm", 39 - }; 40 - 41 - /* dmm */ 42 - static struct omap_hwmod dra7xx_dmm_hwmod = { 43 - .name = "dmm", 44 - .class = &dra7xx_dmm_hwmod_class, 45 - .clkdm_name = "emif_clkdm", 46 - .prcm = { 47 - .omap4 = { 48 - .clkctrl_offs = DRA7XX_CM_EMIF_DMM_CLKCTRL_OFFSET, 49 - .context_offs = DRA7XX_RM_EMIF_DMM_CONTEXT_OFFSET, 50 - }, 51 - }, 52 - }; 53 - 54 - /* 55 - * 'l3' class 56 - * instance(s): l3_instr, l3_main_1, l3_main_2 57 - */ 58 - static struct omap_hwmod_class dra7xx_l3_hwmod_class = { 59 - .name = "l3", 60 - }; 61 - 62 - /* l3_instr */ 63 - static struct omap_hwmod dra7xx_l3_instr_hwmod = { 64 - .name = "l3_instr", 65 - .class = &dra7xx_l3_hwmod_class, 66 - .clkdm_name = "l3instr_clkdm", 67 - .prcm = { 68 - .omap4 = { 69 - .clkctrl_offs = DRA7XX_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET, 70 - .context_offs = DRA7XX_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET, 71 - .modulemode = MODULEMODE_HWCTRL, 72 - }, 73 - }, 74 - }; 75 - 76 - /* l3_main_1 */ 77 - static struct omap_hwmod dra7xx_l3_main_1_hwmod = { 78 - .name = "l3_main_1", 79 - .class = &dra7xx_l3_hwmod_class, 80 - .clkdm_name = "l3main1_clkdm", 81 - .prcm = { 82 - .omap4 = { 83 - .clkctrl_offs = DRA7XX_CM_L3MAIN1_L3_MAIN_1_CLKCTRL_OFFSET, 84 - .context_offs = DRA7XX_RM_L3MAIN1_L3_MAIN_1_CONTEXT_OFFSET, 85 - }, 86 - }, 87 - }; 88 - 89 - /* l3_main_2 */ 90 - static struct omap_hwmod dra7xx_l3_main_2_hwmod = { 91 - .name = "l3_main_2", 92 - .class = &dra7xx_l3_hwmod_class, 93 - .clkdm_name = "l3instr_clkdm", 94 - .prcm = { 95 - .omap4 = { 96 - .clkctrl_offs = DRA7XX_CM_L3INSTR_L3_MAIN_2_CLKCTRL_OFFSET, 97 - .context_offs = DRA7XX_RM_L3INSTR_L3_MAIN_2_CONTEXT_OFFSET, 98 - .modulemode = MODULEMODE_HWCTRL, 99 - }, 100 - }, 101 - }; 102 - 103 - /* 104 - * 'l4' class 105 - * instance(s): l4_cfg, l4_per1, l4_per2, l4_per3, l4_wkup 106 - */ 107 - static struct omap_hwmod_class dra7xx_l4_hwmod_class = { 108 - .name = "l4", 109 - }; 110 - 111 - /* l4_cfg */ 112 - static struct omap_hwmod dra7xx_l4_cfg_hwmod = { 113 - .name = "l4_cfg", 114 - .class = &dra7xx_l4_hwmod_class, 115 - .clkdm_name = "l4cfg_clkdm", 116 - .prcm = { 117 - .omap4 = { 118 - .clkctrl_offs = DRA7XX_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET, 119 - .context_offs = DRA7XX_RM_L4CFG_L4_CFG_CONTEXT_OFFSET, 120 - }, 121 - }, 122 - }; 123 - 124 - /* l4_per1 */ 125 - static struct omap_hwmod dra7xx_l4_per1_hwmod = { 126 - .name = "l4_per1", 127 - .class = &dra7xx_l4_hwmod_class, 128 - .clkdm_name = "l4per_clkdm", 129 - .prcm = { 130 - .omap4 = { 131 - .clkctrl_offs = DRA7XX_CM_L4PER_L4_PER1_CLKCTRL_OFFSET, 132 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 133 - }, 134 - }, 135 - }; 136 - 137 - /* l4_per2 */ 138 - static struct omap_hwmod dra7xx_l4_per2_hwmod = { 139 - .name = "l4_per2", 140 - .class = &dra7xx_l4_hwmod_class, 141 - .clkdm_name = "l4per2_clkdm", 142 - .prcm = { 143 - .omap4 = { 144 - .clkctrl_offs = DRA7XX_CM_L4PER2_L4_PER2_CLKCTRL_OFFSET, 145 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 146 - }, 147 - }, 148 - }; 149 - 150 - /* l4_per3 */ 151 - static struct omap_hwmod dra7xx_l4_per3_hwmod = { 152 - .name = "l4_per3", 153 - .class = &dra7xx_l4_hwmod_class, 154 - .clkdm_name = "l4per3_clkdm", 155 - .prcm = { 156 - .omap4 = { 157 - .clkctrl_offs = DRA7XX_CM_L4PER3_L4_PER3_CLKCTRL_OFFSET, 158 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 159 - }, 160 - }, 161 - }; 162 - 163 - /* l4_wkup */ 164 - static struct omap_hwmod dra7xx_l4_wkup_hwmod = { 165 - .name = "l4_wkup", 166 - .class = &dra7xx_l4_hwmod_class, 167 - .clkdm_name = "wkupaon_clkdm", 168 - .prcm = { 169 - .omap4 = { 170 - .clkctrl_offs = DRA7XX_CM_WKUPAON_L4_WKUP_CLKCTRL_OFFSET, 171 - .context_offs = DRA7XX_RM_WKUPAON_L4_WKUP_CONTEXT_OFFSET, 172 - }, 173 - }, 174 - }; 175 - 176 - /* 177 - * 'atl' class 178 - * 179 - */ 180 - 181 - static struct omap_hwmod_class dra7xx_atl_hwmod_class = { 182 - .name = "atl", 183 - }; 184 - 185 - /* atl */ 186 - static struct omap_hwmod dra7xx_atl_hwmod = { 187 - .name = "atl", 188 - .class = &dra7xx_atl_hwmod_class, 189 - .clkdm_name = "atl_clkdm", 190 - .main_clk = "atl_gfclk_mux", 191 - .prcm = { 192 - .omap4 = { 193 - .clkctrl_offs = DRA7XX_CM_ATL_ATL_CLKCTRL_OFFSET, 194 - .context_offs = DRA7XX_RM_ATL_ATL_CONTEXT_OFFSET, 195 - .modulemode = MODULEMODE_SWCTRL, 196 - }, 197 - }, 198 - }; 199 - 200 - /* 201 - * 'bb2d' class 202 - * 203 - */ 204 - 205 - static struct omap_hwmod_class dra7xx_bb2d_hwmod_class = { 206 - .name = "bb2d", 207 - }; 208 - 209 - /* bb2d */ 210 - static struct omap_hwmod dra7xx_bb2d_hwmod = { 211 - .name = "bb2d", 212 - .class = &dra7xx_bb2d_hwmod_class, 213 - .clkdm_name = "dss_clkdm", 214 - .main_clk = "dpll_core_h24x2_ck", 215 - .prcm = { 216 - .omap4 = { 217 - .clkctrl_offs = DRA7XX_CM_DSS_BB2D_CLKCTRL_OFFSET, 218 - .context_offs = DRA7XX_RM_DSS_BB2D_CONTEXT_OFFSET, 219 - .modulemode = MODULEMODE_SWCTRL, 220 - }, 221 - }, 222 - }; 223 - 224 - /* 225 - * 'ctrl_module' class 226 - * 227 - */ 228 - 229 - static struct omap_hwmod_class dra7xx_ctrl_module_hwmod_class = { 230 - .name = "ctrl_module", 231 - }; 232 - 233 - /* ctrl_module_wkup */ 234 - static struct omap_hwmod dra7xx_ctrl_module_wkup_hwmod = { 235 - .name = "ctrl_module_wkup", 236 - .class = &dra7xx_ctrl_module_hwmod_class, 237 - .clkdm_name = "wkupaon_clkdm", 238 - .prcm = { 239 - .omap4 = { 240 - .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT, 241 - }, 242 - }, 243 - }; 244 - 245 - /* 246 - * 'mpu' class 247 - * 248 - */ 249 - 250 - static struct omap_hwmod_class dra7xx_mpu_hwmod_class = { 251 - .name = "mpu", 252 - }; 253 - 254 - /* mpu */ 255 - static struct omap_hwmod dra7xx_mpu_hwmod = { 256 - .name = "mpu", 257 - .class = &dra7xx_mpu_hwmod_class, 258 - .clkdm_name = "mpu_clkdm", 259 - .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, 260 - .main_clk = "dpll_mpu_m2_ck", 261 - .prcm = { 262 - .omap4 = { 263 - .clkctrl_offs = DRA7XX_CM_MPU_MPU_CLKCTRL_OFFSET, 264 - .context_offs = DRA7XX_RM_MPU_MPU_CONTEXT_OFFSET, 265 - }, 266 - }, 267 - }; 268 - 269 - 270 - /* 271 - * 'PCIE' class 272 - * 273 - */ 274 - 275 - /* 276 - * As noted in documentation for _reset() in omap_hwmod.c, the stock reset 277 - * functionality of OMAP HWMOD layer does not deassert the hardreset lines 278 - * associated with an IP automatically leaving the driver to handle that 279 - * by itself. This does not work for PCIeSS which needs the reset lines 280 - * deasserted for the driver to start accessing registers. 281 - * 282 - * We use a PCIeSS HWMOD class specific reset handler to deassert the hardreset 283 - * lines after asserting them. 284 - */ 285 - int dra7xx_pciess_reset(struct omap_hwmod *oh) 286 - { 287 - int i; 288 - 289 - for (i = 0; i < oh->rst_lines_cnt; i++) { 290 - omap_hwmod_assert_hardreset(oh, oh->rst_lines[i].name); 291 - omap_hwmod_deassert_hardreset(oh, oh->rst_lines[i].name); 292 - } 293 - 294 - return 0; 295 - } 296 - 297 - static struct omap_hwmod_class dra7xx_pciess_hwmod_class = { 298 - .name = "pcie", 299 - .reset = dra7xx_pciess_reset, 300 - }; 301 - 302 - /* pcie1 */ 303 - static struct omap_hwmod_rst_info dra7xx_pciess1_resets[] = { 304 - { .name = "pcie", .rst_shift = 0 }, 305 - }; 306 - 307 - static struct omap_hwmod dra7xx_pciess1_hwmod = { 308 - .name = "pcie1", 309 - .class = &dra7xx_pciess_hwmod_class, 310 - .clkdm_name = "pcie_clkdm", 311 - .rst_lines = dra7xx_pciess1_resets, 312 - .rst_lines_cnt = ARRAY_SIZE(dra7xx_pciess1_resets), 313 - .main_clk = "l4_root_clk_div", 314 - .prcm = { 315 - .omap4 = { 316 - .clkctrl_offs = DRA7XX_CM_L3INIT_PCIESS1_CLKCTRL_OFFSET, 317 - .rstctrl_offs = DRA7XX_RM_L3INIT_PCIESS_RSTCTRL_OFFSET, 318 - .context_offs = DRA7XX_RM_L3INIT_PCIESS1_CONTEXT_OFFSET, 319 - .modulemode = MODULEMODE_SWCTRL, 320 - }, 321 - }, 322 - }; 323 - 324 - /* pcie2 */ 325 - static struct omap_hwmod_rst_info dra7xx_pciess2_resets[] = { 326 - { .name = "pcie", .rst_shift = 1 }, 327 - }; 328 - 329 - /* pcie2 */ 330 - static struct omap_hwmod dra7xx_pciess2_hwmod = { 331 - .name = "pcie2", 332 - .class = &dra7xx_pciess_hwmod_class, 333 - .clkdm_name = "pcie_clkdm", 334 - .rst_lines = dra7xx_pciess2_resets, 335 - .rst_lines_cnt = ARRAY_SIZE(dra7xx_pciess2_resets), 336 - .main_clk = "l4_root_clk_div", 337 - .prcm = { 338 - .omap4 = { 339 - .clkctrl_offs = DRA7XX_CM_L3INIT_PCIESS2_CLKCTRL_OFFSET, 340 - .rstctrl_offs = DRA7XX_RM_L3INIT_PCIESS_RSTCTRL_OFFSET, 341 - .context_offs = DRA7XX_RM_L3INIT_PCIESS2_CONTEXT_OFFSET, 342 - .modulemode = MODULEMODE_SWCTRL, 343 - }, 344 - }, 345 - }; 346 - 347 - /* 348 - * 'qspi' class 349 - * 350 - */ 351 - 352 - static struct omap_hwmod_class_sysconfig dra7xx_qspi_sysc = { 353 - .rev_offs = 0, 354 - .sysc_offs = 0x0010, 355 - .sysc_flags = SYSC_HAS_SIDLEMODE, 356 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 357 - SIDLE_SMART_WKUP), 358 - .sysc_fields = &omap_hwmod_sysc_type2, 359 - }; 360 - 361 - static struct omap_hwmod_class dra7xx_qspi_hwmod_class = { 362 - .name = "qspi", 363 - .sysc = &dra7xx_qspi_sysc, 364 - }; 365 - 366 - /* qspi */ 367 - static struct omap_hwmod dra7xx_qspi_hwmod = { 368 - .name = "qspi", 369 - .class = &dra7xx_qspi_hwmod_class, 370 - .clkdm_name = "l4per2_clkdm", 371 - .main_clk = "qspi_gfclk_div", 372 - .prcm = { 373 - .omap4 = { 374 - .clkctrl_offs = DRA7XX_CM_L4PER2_QSPI_CLKCTRL_OFFSET, 375 - .context_offs = DRA7XX_RM_L4PER2_QSPI_CONTEXT_OFFSET, 376 - .modulemode = MODULEMODE_SWCTRL, 377 - }, 378 - }, 379 - }; 380 - 381 - /* 382 - * 'sata' class 383 - * 384 - */ 385 - 386 - static struct omap_hwmod_class_sysconfig dra7xx_sata_sysc = { 387 - .rev_offs = 0x00fc, 388 - .sysc_offs = 0x0000, 389 - .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE), 390 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 391 - SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | 392 - MSTANDBY_SMART | MSTANDBY_SMART_WKUP), 393 - .sysc_fields = &omap_hwmod_sysc_type2, 394 - }; 395 - 396 - static struct omap_hwmod_class dra7xx_sata_hwmod_class = { 397 - .name = "sata", 398 - .sysc = &dra7xx_sata_sysc, 399 - }; 400 - 401 - /* sata */ 402 - 403 - static struct omap_hwmod dra7xx_sata_hwmod = { 404 - .name = "sata", 405 - .class = &dra7xx_sata_hwmod_class, 406 - .clkdm_name = "l3init_clkdm", 407 - .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY, 408 - .main_clk = "func_48m_fclk", 409 - .mpu_rt_idx = 1, 410 - .prcm = { 411 - .omap4 = { 412 - .clkctrl_offs = DRA7XX_CM_L3INIT_SATA_CLKCTRL_OFFSET, 413 - .context_offs = DRA7XX_RM_L3INIT_SATA_CONTEXT_OFFSET, 414 - .modulemode = MODULEMODE_SWCTRL, 415 - }, 416 - }, 417 - }; 418 - 419 - /* 420 - * 'vcp' class 421 - * 422 - */ 423 - 424 - static struct omap_hwmod_class dra7xx_vcp_hwmod_class = { 425 - .name = "vcp", 426 - }; 427 - 428 - /* vcp1 */ 429 - static struct omap_hwmod dra7xx_vcp1_hwmod = { 430 - .name = "vcp1", 431 - .class = &dra7xx_vcp_hwmod_class, 432 - .clkdm_name = "l3main1_clkdm", 433 - .main_clk = "l3_iclk_div", 434 - .prcm = { 435 - .omap4 = { 436 - .clkctrl_offs = DRA7XX_CM_L3MAIN1_VCP1_CLKCTRL_OFFSET, 437 - .context_offs = DRA7XX_RM_L3MAIN1_VCP1_CONTEXT_OFFSET, 438 - }, 439 - }, 440 - }; 441 - 442 - /* vcp2 */ 443 - static struct omap_hwmod dra7xx_vcp2_hwmod = { 444 - .name = "vcp2", 445 - .class = &dra7xx_vcp_hwmod_class, 446 - .clkdm_name = "l3main1_clkdm", 447 - .main_clk = "l3_iclk_div", 448 - .prcm = { 449 - .omap4 = { 450 - .clkctrl_offs = DRA7XX_CM_L3MAIN1_VCP2_CLKCTRL_OFFSET, 451 - .context_offs = DRA7XX_RM_L3MAIN1_VCP2_CONTEXT_OFFSET, 452 - }, 453 - }, 454 - }; 455 - 456 - 457 - 458 - /* 459 - * Interfaces 460 - */ 461 - 462 - /* l3_main_1 -> dmm */ 463 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__dmm = { 464 - .master = &dra7xx_l3_main_1_hwmod, 465 - .slave = &dra7xx_dmm_hwmod, 466 - .clk = "l3_iclk_div", 467 - .user = OCP_USER_SDMA, 468 - }; 469 - 470 - /* l3_main_2 -> l3_instr */ 471 - static struct omap_hwmod_ocp_if dra7xx_l3_main_2__l3_instr = { 472 - .master = &dra7xx_l3_main_2_hwmod, 473 - .slave = &dra7xx_l3_instr_hwmod, 474 - .clk = "l3_iclk_div", 475 - .user = OCP_USER_MPU | OCP_USER_SDMA, 476 - }; 477 - 478 - /* l4_cfg -> l3_main_1 */ 479 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__l3_main_1 = { 480 - .master = &dra7xx_l4_cfg_hwmod, 481 - .slave = &dra7xx_l3_main_1_hwmod, 482 - .clk = "l3_iclk_div", 483 - .user = OCP_USER_MPU | OCP_USER_SDMA, 484 - }; 485 - 486 - /* mpu -> l3_main_1 */ 487 - static struct omap_hwmod_ocp_if dra7xx_mpu__l3_main_1 = { 488 - .master = &dra7xx_mpu_hwmod, 489 - .slave = &dra7xx_l3_main_1_hwmod, 490 - .clk = "l3_iclk_div", 491 - .user = OCP_USER_MPU, 492 - }; 493 - 494 - /* l3_main_1 -> l3_main_2 */ 495 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l3_main_2 = { 496 - .master = &dra7xx_l3_main_1_hwmod, 497 - .slave = &dra7xx_l3_main_2_hwmod, 498 - .clk = "l3_iclk_div", 499 - .user = OCP_USER_MPU, 500 - }; 501 - 502 - /* l4_cfg -> l3_main_2 */ 503 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__l3_main_2 = { 504 - .master = &dra7xx_l4_cfg_hwmod, 505 - .slave = &dra7xx_l3_main_2_hwmod, 506 - .clk = "l3_iclk_div", 507 - .user = OCP_USER_MPU | OCP_USER_SDMA, 508 - }; 509 - 510 - /* l3_main_1 -> l4_cfg */ 511 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_cfg = { 512 - .master = &dra7xx_l3_main_1_hwmod, 513 - .slave = &dra7xx_l4_cfg_hwmod, 514 - .clk = "l3_iclk_div", 515 - .user = OCP_USER_MPU | OCP_USER_SDMA, 516 - }; 517 - 518 - /* l3_main_1 -> l4_per1 */ 519 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per1 = { 520 - .master = &dra7xx_l3_main_1_hwmod, 521 - .slave = &dra7xx_l4_per1_hwmod, 522 - .clk = "l3_iclk_div", 523 - .user = OCP_USER_MPU | OCP_USER_SDMA, 524 - }; 525 - 526 - /* l3_main_1 -> l4_per2 */ 527 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per2 = { 528 - .master = &dra7xx_l3_main_1_hwmod, 529 - .slave = &dra7xx_l4_per2_hwmod, 530 - .clk = "l3_iclk_div", 531 - .user = OCP_USER_MPU | OCP_USER_SDMA, 532 - }; 533 - 534 - /* l3_main_1 -> l4_per3 */ 535 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per3 = { 536 - .master = &dra7xx_l3_main_1_hwmod, 537 - .slave = &dra7xx_l4_per3_hwmod, 538 - .clk = "l3_iclk_div", 539 - .user = OCP_USER_MPU | OCP_USER_SDMA, 540 - }; 541 - 542 - /* l3_main_1 -> l4_wkup */ 543 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_wkup = { 544 - .master = &dra7xx_l3_main_1_hwmod, 545 - .slave = &dra7xx_l4_wkup_hwmod, 546 - .clk = "wkupaon_iclk_mux", 547 - .user = OCP_USER_MPU | OCP_USER_SDMA, 548 - }; 549 - 550 - /* l4_per2 -> atl */ 551 - static struct omap_hwmod_ocp_if dra7xx_l4_per2__atl = { 552 - .master = &dra7xx_l4_per2_hwmod, 553 - .slave = &dra7xx_atl_hwmod, 554 - .clk = "l3_iclk_div", 555 - .user = OCP_USER_MPU | OCP_USER_SDMA, 556 - }; 557 - 558 - /* l3_main_1 -> bb2d */ 559 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__bb2d = { 560 - .master = &dra7xx_l3_main_1_hwmod, 561 - .slave = &dra7xx_bb2d_hwmod, 562 - .clk = "l3_iclk_div", 563 - .user = OCP_USER_MPU | OCP_USER_SDMA, 564 - }; 565 - 566 - /* l4_wkup -> ctrl_module_wkup */ 567 - static struct omap_hwmod_ocp_if dra7xx_l4_wkup__ctrl_module_wkup = { 568 - .master = &dra7xx_l4_wkup_hwmod, 569 - .slave = &dra7xx_ctrl_module_wkup_hwmod, 570 - .clk = "wkupaon_iclk_mux", 571 - .user = OCP_USER_MPU | OCP_USER_SDMA, 572 - }; 573 - 574 - /* l4_cfg -> mpu */ 575 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__mpu = { 576 - .master = &dra7xx_l4_cfg_hwmod, 577 - .slave = &dra7xx_mpu_hwmod, 578 - .clk = "l3_iclk_div", 579 - .user = OCP_USER_MPU | OCP_USER_SDMA, 580 - }; 581 - 582 - /* l3_main_1 -> pciess1 */ 583 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__pciess1 = { 584 - .master = &dra7xx_l3_main_1_hwmod, 585 - .slave = &dra7xx_pciess1_hwmod, 586 - .clk = "l3_iclk_div", 587 - .user = OCP_USER_MPU | OCP_USER_SDMA, 588 - }; 589 - 590 - /* l4_cfg -> pciess1 */ 591 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__pciess1 = { 592 - .master = &dra7xx_l4_cfg_hwmod, 593 - .slave = &dra7xx_pciess1_hwmod, 594 - .clk = "l4_root_clk_div", 595 - .user = OCP_USER_MPU | OCP_USER_SDMA, 596 - }; 597 - 598 - /* l3_main_1 -> pciess2 */ 599 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__pciess2 = { 600 - .master = &dra7xx_l3_main_1_hwmod, 601 - .slave = &dra7xx_pciess2_hwmod, 602 - .clk = "l3_iclk_div", 603 - .user = OCP_USER_MPU | OCP_USER_SDMA, 604 - }; 605 - 606 - /* l4_cfg -> pciess2 */ 607 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__pciess2 = { 608 - .master = &dra7xx_l4_cfg_hwmod, 609 - .slave = &dra7xx_pciess2_hwmod, 610 - .clk = "l4_root_clk_div", 611 - .user = OCP_USER_MPU | OCP_USER_SDMA, 612 - }; 613 - 614 - /* l3_main_1 -> qspi */ 615 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__qspi = { 616 - .master = &dra7xx_l3_main_1_hwmod, 617 - .slave = &dra7xx_qspi_hwmod, 618 - .clk = "l3_iclk_div", 619 - .user = OCP_USER_MPU | OCP_USER_SDMA, 620 - }; 621 - 622 - /* l4_cfg -> sata */ 623 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__sata = { 624 - .master = &dra7xx_l4_cfg_hwmod, 625 - .slave = &dra7xx_sata_hwmod, 626 - .clk = "l3_iclk_div", 627 - .user = OCP_USER_MPU | OCP_USER_SDMA, 628 - }; 629 - 630 - /* l3_main_1 -> vcp1 */ 631 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__vcp1 = { 632 - .master = &dra7xx_l3_main_1_hwmod, 633 - .slave = &dra7xx_vcp1_hwmod, 634 - .clk = "l3_iclk_div", 635 - .user = OCP_USER_MPU | OCP_USER_SDMA, 636 - }; 637 - 638 - /* l4_per2 -> vcp1 */ 639 - static struct omap_hwmod_ocp_if dra7xx_l4_per2__vcp1 = { 640 - .master = &dra7xx_l4_per2_hwmod, 641 - .slave = &dra7xx_vcp1_hwmod, 642 - .clk = "l3_iclk_div", 643 - .user = OCP_USER_MPU | OCP_USER_SDMA, 644 - }; 645 - 646 - /* l3_main_1 -> vcp2 */ 647 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__vcp2 = { 648 - .master = &dra7xx_l3_main_1_hwmod, 649 - .slave = &dra7xx_vcp2_hwmod, 650 - .clk = "l3_iclk_div", 651 - .user = OCP_USER_MPU | OCP_USER_SDMA, 652 - }; 653 - 654 - /* l4_per2 -> vcp2 */ 655 - static struct omap_hwmod_ocp_if dra7xx_l4_per2__vcp2 = { 656 - .master = &dra7xx_l4_per2_hwmod, 657 - .slave = &dra7xx_vcp2_hwmod, 658 - .clk = "l3_iclk_div", 659 - .user = OCP_USER_MPU | OCP_USER_SDMA, 660 - }; 661 - 662 - static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = { 663 - &dra7xx_l3_main_1__dmm, 664 - &dra7xx_l3_main_2__l3_instr, 665 - &dra7xx_l4_cfg__l3_main_1, 666 - &dra7xx_mpu__l3_main_1, 667 - &dra7xx_l3_main_1__l3_main_2, 668 - &dra7xx_l4_cfg__l3_main_2, 669 - &dra7xx_l3_main_1__l4_cfg, 670 - &dra7xx_l3_main_1__l4_per1, 671 - &dra7xx_l3_main_1__l4_per2, 672 - &dra7xx_l3_main_1__l4_per3, 673 - &dra7xx_l3_main_1__l4_wkup, 674 - &dra7xx_l4_per2__atl, 675 - &dra7xx_l3_main_1__bb2d, 676 - &dra7xx_l4_wkup__ctrl_module_wkup, 677 - &dra7xx_l4_cfg__mpu, 678 - &dra7xx_l3_main_1__pciess1, 679 - &dra7xx_l4_cfg__pciess1, 680 - &dra7xx_l3_main_1__pciess2, 681 - &dra7xx_l4_cfg__pciess2, 682 - &dra7xx_l3_main_1__qspi, 683 - &dra7xx_l4_cfg__sata, 684 - &dra7xx_l3_main_1__vcp1, 685 - &dra7xx_l4_per2__vcp1, 686 - &dra7xx_l3_main_1__vcp2, 687 - &dra7xx_l4_per2__vcp2, 688 - NULL, 689 - }; 690 - 691 - /* SoC variant specific hwmod links */ 692 - static struct omap_hwmod_ocp_if *dra72x_hwmod_ocp_ifs[] __initdata = { 693 - NULL, 694 - }; 695 - 696 - static struct omap_hwmod_ocp_if *rtc_hwmod_ocp_ifs[] __initdata = { 697 - NULL, 698 - }; 699 - 700 - int __init dra7xx_hwmod_init(void) 701 - { 702 - int ret; 703 - 704 - omap_hwmod_init(); 705 - ret = omap_hwmod_register_links(dra7xx_hwmod_ocp_ifs); 706 - 707 - if (!ret && soc_is_dra74x()) { 708 - ret = omap_hwmod_register_links(rtc_hwmod_ocp_ifs); 709 - } else if (!ret && soc_is_dra72x()) { 710 - ret = omap_hwmod_register_links(dra72x_hwmod_ocp_ifs); 711 - if (!ret && !of_machine_is_compatible("ti,dra718")) 712 - ret = omap_hwmod_register_links(rtc_hwmod_ocp_ifs); 713 - } else if (!ret && soc_is_dra76x()) { 714 - if (!ret && soc_is_dra76x_abz()) 715 - ret = omap_hwmod_register_links(rtc_hwmod_ocp_ifs); 716 - } 717 - 718 - return ret; 719 - }