root/arch/arm/mach-omap2/omap_hwmod_54xx_data.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. omap54xx_hwmod_init

   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 - http://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 <linux/omap-dma.h>
  21 
  22 #include "omap_hwmod.h"
  23 #include "omap_hwmod_common_data.h"
  24 #include "cm1_54xx.h"
  25 #include "cm2_54xx.h"
  26 #include "prm54xx.h"
  27 #include "wd_timer.h"
  28 
  29 /* Base offset for all OMAP5 interrupts external to MPUSS */
  30 #define OMAP54XX_IRQ_GIC_START  32
  31 
  32 /* Base offset for all OMAP5 dma requests */
  33 #define OMAP54XX_DMA_REQ_START  1
  34 
  35 
  36 /*
  37  * IP blocks
  38  */
  39 
  40 /*
  41  * 'dmm' class
  42  * instance(s): dmm
  43  */
  44 static struct omap_hwmod_class omap54xx_dmm_hwmod_class = {
  45         .name   = "dmm",
  46 };
  47 
  48 /* dmm */
  49 static struct omap_hwmod omap54xx_dmm_hwmod = {
  50         .name           = "dmm",
  51         .class          = &omap54xx_dmm_hwmod_class,
  52         .clkdm_name     = "emif_clkdm",
  53         .prcm = {
  54                 .omap4 = {
  55                         .clkctrl_offs = OMAP54XX_CM_EMIF_DMM_CLKCTRL_OFFSET,
  56                         .context_offs = OMAP54XX_RM_EMIF_DMM_CONTEXT_OFFSET,
  57                 },
  58         },
  59 };
  60 
  61 /*
  62  * 'l3' class
  63  * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
  64  */
  65 static struct omap_hwmod_class omap54xx_l3_hwmod_class = {
  66         .name   = "l3",
  67 };
  68 
  69 /* l3_instr */
  70 static struct omap_hwmod omap54xx_l3_instr_hwmod = {
  71         .name           = "l3_instr",
  72         .class          = &omap54xx_l3_hwmod_class,
  73         .clkdm_name     = "l3instr_clkdm",
  74         .prcm = {
  75                 .omap4 = {
  76                         .clkctrl_offs = OMAP54XX_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
  77                         .context_offs = OMAP54XX_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
  78                         .modulemode   = MODULEMODE_HWCTRL,
  79                 },
  80         },
  81 };
  82 
  83 /* l3_main_1 */
  84 static struct omap_hwmod omap54xx_l3_main_1_hwmod = {
  85         .name           = "l3_main_1",
  86         .class          = &omap54xx_l3_hwmod_class,
  87         .clkdm_name     = "l3main1_clkdm",
  88         .prcm = {
  89                 .omap4 = {
  90                         .clkctrl_offs = OMAP54XX_CM_L3MAIN1_L3_MAIN_1_CLKCTRL_OFFSET,
  91                         .context_offs = OMAP54XX_RM_L3MAIN1_L3_MAIN_1_CONTEXT_OFFSET,
  92                 },
  93         },
  94 };
  95 
  96 /* l3_main_2 */
  97 static struct omap_hwmod omap54xx_l3_main_2_hwmod = {
  98         .name           = "l3_main_2",
  99         .class          = &omap54xx_l3_hwmod_class,
 100         .clkdm_name     = "l3main2_clkdm",
 101         .prcm = {
 102                 .omap4 = {
 103                         .clkctrl_offs = OMAP54XX_CM_L3MAIN2_L3_MAIN_2_CLKCTRL_OFFSET,
 104                         .context_offs = OMAP54XX_RM_L3MAIN2_L3_MAIN_2_CONTEXT_OFFSET,
 105                 },
 106         },
 107 };
 108 
 109 /* l3_main_3 */
 110 static struct omap_hwmod omap54xx_l3_main_3_hwmod = {
 111         .name           = "l3_main_3",
 112         .class          = &omap54xx_l3_hwmod_class,
 113         .clkdm_name     = "l3instr_clkdm",
 114         .prcm = {
 115                 .omap4 = {
 116                         .clkctrl_offs = OMAP54XX_CM_L3INSTR_L3_MAIN_3_CLKCTRL_OFFSET,
 117                         .context_offs = OMAP54XX_RM_L3INSTR_L3_MAIN_3_CONTEXT_OFFSET,
 118                         .modulemode   = MODULEMODE_HWCTRL,
 119                 },
 120         },
 121 };
 122 
 123 /*
 124  * 'l4' class
 125  * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
 126  */
 127 static struct omap_hwmod_class omap54xx_l4_hwmod_class = {
 128         .name   = "l4",
 129 };
 130 
 131 /* l4_abe */
 132 static struct omap_hwmod omap54xx_l4_abe_hwmod = {
 133         .name           = "l4_abe",
 134         .class          = &omap54xx_l4_hwmod_class,
 135         .clkdm_name     = "abe_clkdm",
 136         .prcm = {
 137                 .omap4 = {
 138                         .clkctrl_offs = OMAP54XX_CM_ABE_L4_ABE_CLKCTRL_OFFSET,
 139                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 140                 },
 141         },
 142 };
 143 
 144 /* l4_cfg */
 145 static struct omap_hwmod omap54xx_l4_cfg_hwmod = {
 146         .name           = "l4_cfg",
 147         .class          = &omap54xx_l4_hwmod_class,
 148         .clkdm_name     = "l4cfg_clkdm",
 149         .prcm = {
 150                 .omap4 = {
 151                         .clkctrl_offs = OMAP54XX_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
 152                         .context_offs = OMAP54XX_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
 153                 },
 154         },
 155 };
 156 
 157 /* l4_per */
 158 static struct omap_hwmod omap54xx_l4_per_hwmod = {
 159         .name           = "l4_per",
 160         .class          = &omap54xx_l4_hwmod_class,
 161         .clkdm_name     = "l4per_clkdm",
 162         .prcm = {
 163                 .omap4 = {
 164                         .clkctrl_offs = OMAP54XX_CM_L4PER_L4_PER_CLKCTRL_OFFSET,
 165                         .context_offs = OMAP54XX_RM_L4PER_L4_PER_CONTEXT_OFFSET,
 166                 },
 167         },
 168 };
 169 
 170 /* l4_wkup */
 171 static struct omap_hwmod omap54xx_l4_wkup_hwmod = {
 172         .name           = "l4_wkup",
 173         .class          = &omap54xx_l4_hwmod_class,
 174         .clkdm_name     = "wkupaon_clkdm",
 175         .prcm = {
 176                 .omap4 = {
 177                         .clkctrl_offs = OMAP54XX_CM_WKUPAON_L4_WKUP_CLKCTRL_OFFSET,
 178                         .context_offs = OMAP54XX_RM_WKUPAON_L4_WKUP_CONTEXT_OFFSET,
 179                 },
 180         },
 181 };
 182 
 183 /*
 184  * 'mpu_bus' class
 185  * instance(s): mpu_private
 186  */
 187 static struct omap_hwmod_class omap54xx_mpu_bus_hwmod_class = {
 188         .name   = "mpu_bus",
 189 };
 190 
 191 /* mpu_private */
 192 static struct omap_hwmod omap54xx_mpu_private_hwmod = {
 193         .name           = "mpu_private",
 194         .class          = &omap54xx_mpu_bus_hwmod_class,
 195         .clkdm_name     = "mpu_clkdm",
 196         .prcm = {
 197                 .omap4 = {
 198                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 199                 },
 200         },
 201 };
 202 
 203 /*
 204  * 'counter' class
 205  * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
 206  */
 207 
 208 static struct omap_hwmod_class_sysconfig omap54xx_counter_sysc = {
 209         .rev_offs       = 0x0000,
 210         .sysc_offs      = 0x0010,
 211         .sysc_flags     = SYSC_HAS_SIDLEMODE,
 212         .idlemodes      = (SIDLE_FORCE | SIDLE_NO),
 213         .sysc_fields    = &omap_hwmod_sysc_type1,
 214 };
 215 
 216 static struct omap_hwmod_class omap54xx_counter_hwmod_class = {
 217         .name   = "counter",
 218         .sysc   = &omap54xx_counter_sysc,
 219 };
 220 
 221 /* counter_32k */
 222 static struct omap_hwmod omap54xx_counter_32k_hwmod = {
 223         .name           = "counter_32k",
 224         .class          = &omap54xx_counter_hwmod_class,
 225         .clkdm_name     = "wkupaon_clkdm",
 226         .flags          = HWMOD_SWSUP_SIDLE,
 227         .main_clk       = "wkupaon_iclk_mux",
 228         .prcm = {
 229                 .omap4 = {
 230                         .clkctrl_offs = OMAP54XX_CM_WKUPAON_COUNTER_32K_CLKCTRL_OFFSET,
 231                         .context_offs = OMAP54XX_RM_WKUPAON_COUNTER_32K_CONTEXT_OFFSET,
 232                 },
 233         },
 234 };
 235 
 236 /*
 237  * 'dma' class
 238  * dma controller for data exchange between memory to memory (i.e. internal or
 239  * external memory) and gp peripherals to memory or memory to gp peripherals
 240  */
 241 
 242 static struct omap_hwmod_class_sysconfig omap54xx_dma_sysc = {
 243         .rev_offs       = 0x0000,
 244         .sysc_offs      = 0x002c,
 245         .syss_offs      = 0x0028,
 246         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 247                            SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
 248                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 249                            SYSS_HAS_RESET_STATUS),
 250         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 251                            MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
 252         .sysc_fields    = &omap_hwmod_sysc_type1,
 253 };
 254 
 255 static struct omap_hwmod_class omap54xx_dma_hwmod_class = {
 256         .name   = "dma",
 257         .sysc   = &omap54xx_dma_sysc,
 258 };
 259 
 260 /* dma dev_attr */
 261 static struct omap_dma_dev_attr dma_dev_attr = {
 262         .dev_caps       = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
 263                           IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
 264         .lch_count      = 32,
 265 };
 266 
 267 /* dma_system */
 268 static struct omap_hwmod omap54xx_dma_system_hwmod = {
 269         .name           = "dma_system",
 270         .class          = &omap54xx_dma_hwmod_class,
 271         .clkdm_name     = "dma_clkdm",
 272         .main_clk       = "l3_iclk_div",
 273         .prcm = {
 274                 .omap4 = {
 275                         .clkctrl_offs = OMAP54XX_CM_DMA_DMA_SYSTEM_CLKCTRL_OFFSET,
 276                         .context_offs = OMAP54XX_RM_DMA_DMA_SYSTEM_CONTEXT_OFFSET,
 277                 },
 278         },
 279         .dev_attr       = &dma_dev_attr,
 280 };
 281 
 282 /*
 283  * 'dmic' class
 284  * digital microphone controller
 285  */
 286 
 287 static struct omap_hwmod_class_sysconfig omap54xx_dmic_sysc = {
 288         .rev_offs       = 0x0000,
 289         .sysc_offs      = 0x0010,
 290         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
 291                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
 292         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 293                            SIDLE_SMART_WKUP),
 294         .sysc_fields    = &omap_hwmod_sysc_type2,
 295 };
 296 
 297 static struct omap_hwmod_class omap54xx_dmic_hwmod_class = {
 298         .name   = "dmic",
 299         .sysc   = &omap54xx_dmic_sysc,
 300 };
 301 
 302 /* dmic */
 303 static struct omap_hwmod omap54xx_dmic_hwmod = {
 304         .name           = "dmic",
 305         .class          = &omap54xx_dmic_hwmod_class,
 306         .clkdm_name     = "abe_clkdm",
 307         .main_clk       = "dmic_gfclk",
 308         .prcm = {
 309                 .omap4 = {
 310                         .clkctrl_offs = OMAP54XX_CM_ABE_DMIC_CLKCTRL_OFFSET,
 311                         .context_offs = OMAP54XX_RM_ABE_DMIC_CONTEXT_OFFSET,
 312                         .modulemode   = MODULEMODE_SWCTRL,
 313                 },
 314         },
 315 };
 316 
 317 /*
 318  * 'dss' class
 319  * display sub-system
 320  */
 321 static struct omap_hwmod_class_sysconfig omap54xx_dss_sysc = {
 322         .rev_offs       = 0x0000,
 323         .syss_offs      = 0x0014,
 324         .sysc_flags     = SYSS_HAS_RESET_STATUS,
 325 };
 326 
 327 static struct omap_hwmod_class omap54xx_dss_hwmod_class = {
 328         .name   = "dss",
 329         .sysc   = &omap54xx_dss_sysc,
 330         .reset  = omap_dss_reset,
 331 };
 332 
 333 /* dss */
 334 static struct omap_hwmod_opt_clk dss_opt_clks[] = {
 335         { .role = "32khz_clk", .clk = "dss_32khz_clk" },
 336         { .role = "sys_clk", .clk = "dss_sys_clk" },
 337         { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
 338 };
 339 
 340 static struct omap_hwmod omap54xx_dss_hwmod = {
 341         .name           = "dss_core",
 342         .class          = &omap54xx_dss_hwmod_class,
 343         .clkdm_name     = "dss_clkdm",
 344         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 345         .main_clk       = "dss_dss_clk",
 346         .prcm = {
 347                 .omap4 = {
 348                         .clkctrl_offs = OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 349                         .context_offs = OMAP54XX_RM_DSS_DSS_CONTEXT_OFFSET,
 350                         .modulemode   = MODULEMODE_SWCTRL,
 351                 },
 352         },
 353         .opt_clks       = dss_opt_clks,
 354         .opt_clks_cnt   = ARRAY_SIZE(dss_opt_clks),
 355 };
 356 
 357 /*
 358  * 'dispc' class
 359  * display controller
 360  */
 361 
 362 static struct omap_hwmod_class_sysconfig omap54xx_dispc_sysc = {
 363         .rev_offs       = 0x0000,
 364         .sysc_offs      = 0x0010,
 365         .syss_offs      = 0x0014,
 366         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 367                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
 368                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 369                            SYSS_HAS_RESET_STATUS),
 370         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 371                            MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
 372         .sysc_fields    = &omap_hwmod_sysc_type1,
 373 };
 374 
 375 static struct omap_hwmod_class omap54xx_dispc_hwmod_class = {
 376         .name   = "dispc",
 377         .sysc   = &omap54xx_dispc_sysc,
 378 };
 379 
 380 /* dss_dispc */
 381 static struct omap_hwmod_opt_clk dss_dispc_opt_clks[] = {
 382         { .role = "sys_clk", .clk = "dss_sys_clk" },
 383 };
 384 
 385 /* dss_dispc dev_attr */
 386 static struct omap_dss_dispc_dev_attr dss_dispc_dev_attr = {
 387         .has_framedonetv_irq    = 1,
 388         .manager_count          = 4,
 389 };
 390 
 391 static struct omap_hwmod omap54xx_dss_dispc_hwmod = {
 392         .name           = "dss_dispc",
 393         .class          = &omap54xx_dispc_hwmod_class,
 394         .clkdm_name     = "dss_clkdm",
 395         .main_clk       = "dss_dss_clk",
 396         .prcm = {
 397                 .omap4 = {
 398                         .clkctrl_offs = OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 399                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 400                 },
 401         },
 402         .opt_clks       = dss_dispc_opt_clks,
 403         .opt_clks_cnt   = ARRAY_SIZE(dss_dispc_opt_clks),
 404         .dev_attr       = &dss_dispc_dev_attr,
 405         .parent_hwmod   = &omap54xx_dss_hwmod,
 406 };
 407 
 408 /*
 409  * 'dsi1' class
 410  * display serial interface controller
 411  */
 412 
 413 static struct omap_hwmod_class_sysconfig omap54xx_dsi1_sysc = {
 414         .rev_offs       = 0x0000,
 415         .sysc_offs      = 0x0010,
 416         .syss_offs      = 0x0014,
 417         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 418                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
 419                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 420         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 421         .sysc_fields    = &omap_hwmod_sysc_type1,
 422 };
 423 
 424 static struct omap_hwmod_class omap54xx_dsi1_hwmod_class = {
 425         .name   = "dsi1",
 426         .sysc   = &omap54xx_dsi1_sysc,
 427 };
 428 
 429 /* dss_dsi1_a */
 430 static struct omap_hwmod_opt_clk dss_dsi1_a_opt_clks[] = {
 431         { .role = "sys_clk", .clk = "dss_sys_clk" },
 432 };
 433 
 434 static struct omap_hwmod omap54xx_dss_dsi1_a_hwmod = {
 435         .name           = "dss_dsi1",
 436         .class          = &omap54xx_dsi1_hwmod_class,
 437         .clkdm_name     = "dss_clkdm",
 438         .main_clk       = "dss_dss_clk",
 439         .prcm = {
 440                 .omap4 = {
 441                         .clkctrl_offs = OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 442                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 443                 },
 444         },
 445         .opt_clks       = dss_dsi1_a_opt_clks,
 446         .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_a_opt_clks),
 447         .parent_hwmod   = &omap54xx_dss_hwmod,
 448 };
 449 
 450 /* dss_dsi1_c */
 451 static struct omap_hwmod_opt_clk dss_dsi1_c_opt_clks[] = {
 452         { .role = "sys_clk", .clk = "dss_sys_clk" },
 453 };
 454 
 455 static struct omap_hwmod omap54xx_dss_dsi1_c_hwmod = {
 456         .name           = "dss_dsi2",
 457         .class          = &omap54xx_dsi1_hwmod_class,
 458         .clkdm_name     = "dss_clkdm",
 459         .main_clk       = "dss_dss_clk",
 460         .prcm = {
 461                 .omap4 = {
 462                         .clkctrl_offs = OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 463                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 464                 },
 465         },
 466         .opt_clks       = dss_dsi1_c_opt_clks,
 467         .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_c_opt_clks),
 468         .parent_hwmod   = &omap54xx_dss_hwmod,
 469 };
 470 
 471 /*
 472  * 'hdmi' class
 473  * hdmi controller
 474  */
 475 
 476 static struct omap_hwmod_class_sysconfig omap54xx_hdmi_sysc = {
 477         .rev_offs       = 0x0000,
 478         .sysc_offs      = 0x0010,
 479         .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
 480                            SYSC_HAS_SOFTRESET),
 481         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 482                            SIDLE_SMART_WKUP),
 483         .sysc_fields    = &omap_hwmod_sysc_type2,
 484 };
 485 
 486 static struct omap_hwmod_class omap54xx_hdmi_hwmod_class = {
 487         .name   = "hdmi",
 488         .sysc   = &omap54xx_hdmi_sysc,
 489 };
 490 
 491 static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
 492         { .role = "sys_clk", .clk = "dss_sys_clk" },
 493 };
 494 
 495 static struct omap_hwmod omap54xx_dss_hdmi_hwmod = {
 496         .name           = "dss_hdmi",
 497         .class          = &omap54xx_hdmi_hwmod_class,
 498         .clkdm_name     = "dss_clkdm",
 499         .main_clk       = "dss_48mhz_clk",
 500         .prcm = {
 501                 .omap4 = {
 502                         .clkctrl_offs = OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 503                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 504                 },
 505         },
 506         .opt_clks       = dss_hdmi_opt_clks,
 507         .opt_clks_cnt   = ARRAY_SIZE(dss_hdmi_opt_clks),
 508         .parent_hwmod   = &omap54xx_dss_hwmod,
 509 };
 510 
 511 /*
 512  * 'rfbi' class
 513  * remote frame buffer interface
 514  */
 515 
 516 static struct omap_hwmod_class_sysconfig omap54xx_rfbi_sysc = {
 517         .rev_offs       = 0x0000,
 518         .sysc_offs      = 0x0010,
 519         .syss_offs      = 0x0014,
 520         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
 521                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 522         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 523         .sysc_fields    = &omap_hwmod_sysc_type1,
 524 };
 525 
 526 static struct omap_hwmod_class omap54xx_rfbi_hwmod_class = {
 527         .name   = "rfbi",
 528         .sysc   = &omap54xx_rfbi_sysc,
 529 };
 530 
 531 /* dss_rfbi */
 532 static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
 533         { .role = "ick", .clk = "l3_iclk_div" },
 534 };
 535 
 536 static struct omap_hwmod omap54xx_dss_rfbi_hwmod = {
 537         .name           = "dss_rfbi",
 538         .class          = &omap54xx_rfbi_hwmod_class,
 539         .clkdm_name     = "dss_clkdm",
 540         .prcm = {
 541                 .omap4 = {
 542                         .clkctrl_offs = OMAP54XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 543                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 544                 },
 545         },
 546         .opt_clks       = dss_rfbi_opt_clks,
 547         .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
 548         .parent_hwmod   = &omap54xx_dss_hwmod,
 549 };
 550 
 551 /*
 552  * 'emif' class
 553  * external memory interface no1 (wrapper)
 554  */
 555 
 556 static struct omap_hwmod_class_sysconfig omap54xx_emif_sysc = {
 557         .rev_offs       = 0x0000,
 558 };
 559 
 560 static struct omap_hwmod_class omap54xx_emif_hwmod_class = {
 561         .name   = "emif",
 562         .sysc   = &omap54xx_emif_sysc,
 563 };
 564 
 565 /* emif1 */
 566 static struct omap_hwmod omap54xx_emif1_hwmod = {
 567         .name           = "emif1",
 568         .class          = &omap54xx_emif_hwmod_class,
 569         .clkdm_name     = "emif_clkdm",
 570         .flags          = HWMOD_INIT_NO_IDLE,
 571         .main_clk       = "dpll_core_h11x2_ck",
 572         .prcm = {
 573                 .omap4 = {
 574                         .clkctrl_offs = OMAP54XX_CM_EMIF_EMIF1_CLKCTRL_OFFSET,
 575                         .context_offs = OMAP54XX_RM_EMIF_EMIF1_CONTEXT_OFFSET,
 576                         .modulemode   = MODULEMODE_HWCTRL,
 577                 },
 578         },
 579 };
 580 
 581 /* emif2 */
 582 static struct omap_hwmod omap54xx_emif2_hwmod = {
 583         .name           = "emif2",
 584         .class          = &omap54xx_emif_hwmod_class,
 585         .clkdm_name     = "emif_clkdm",
 586         .flags          = HWMOD_INIT_NO_IDLE,
 587         .main_clk       = "dpll_core_h11x2_ck",
 588         .prcm = {
 589                 .omap4 = {
 590                         .clkctrl_offs = OMAP54XX_CM_EMIF_EMIF2_CLKCTRL_OFFSET,
 591                         .context_offs = OMAP54XX_RM_EMIF_EMIF2_CONTEXT_OFFSET,
 592                         .modulemode   = MODULEMODE_HWCTRL,
 593                 },
 594         },
 595 };
 596 
 597 /*
 598  * 'kbd' class
 599  * keyboard controller
 600  */
 601 
 602 static struct omap_hwmod_class_sysconfig omap54xx_kbd_sysc = {
 603         .rev_offs       = 0x0000,
 604         .sysc_offs      = 0x0010,
 605         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
 606                            SYSC_HAS_SOFTRESET),
 607         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 608         .sysc_fields    = &omap_hwmod_sysc_type1,
 609 };
 610 
 611 static struct omap_hwmod_class omap54xx_kbd_hwmod_class = {
 612         .name   = "kbd",
 613         .sysc   = &omap54xx_kbd_sysc,
 614 };
 615 
 616 /* kbd */
 617 static struct omap_hwmod omap54xx_kbd_hwmod = {
 618         .name           = "kbd",
 619         .class          = &omap54xx_kbd_hwmod_class,
 620         .clkdm_name     = "wkupaon_clkdm",
 621         .main_clk       = "sys_32k_ck",
 622         .prcm = {
 623                 .omap4 = {
 624                         .clkctrl_offs = OMAP54XX_CM_WKUPAON_KBD_CLKCTRL_OFFSET,
 625                         .context_offs = OMAP54XX_RM_WKUPAON_KBD_CONTEXT_OFFSET,
 626                         .modulemode   = MODULEMODE_SWCTRL,
 627                 },
 628         },
 629 };
 630 
 631 /*
 632  * 'mailbox' class
 633  * mailbox module allowing communication between the on-chip processors using a
 634  * queued mailbox-interrupt mechanism.
 635  */
 636 
 637 static struct omap_hwmod_class_sysconfig omap54xx_mailbox_sysc = {
 638         .rev_offs       = 0x0000,
 639         .sysc_offs      = 0x0010,
 640         .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
 641                            SYSC_HAS_SOFTRESET),
 642         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 643         .sysc_fields    = &omap_hwmod_sysc_type2,
 644 };
 645 
 646 static struct omap_hwmod_class omap54xx_mailbox_hwmod_class = {
 647         .name   = "mailbox",
 648         .sysc   = &omap54xx_mailbox_sysc,
 649 };
 650 
 651 /* mailbox */
 652 static struct omap_hwmod omap54xx_mailbox_hwmod = {
 653         .name           = "mailbox",
 654         .class          = &omap54xx_mailbox_hwmod_class,
 655         .clkdm_name     = "l4cfg_clkdm",
 656         .prcm = {
 657                 .omap4 = {
 658                         .clkctrl_offs = OMAP54XX_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
 659                         .context_offs = OMAP54XX_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
 660                 },
 661         },
 662 };
 663 
 664 /*
 665  * 'mcbsp' class
 666  * multi channel buffered serial port controller
 667  */
 668 
 669 static struct omap_hwmod_class_sysconfig omap54xx_mcbsp_sysc = {
 670         .rev_offs       = -ENODEV,
 671         .sysc_offs      = 0x008c,
 672         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
 673                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
 674         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 675         .sysc_fields    = &omap_hwmod_sysc_type1,
 676 };
 677 
 678 static struct omap_hwmod_class omap54xx_mcbsp_hwmod_class = {
 679         .name   = "mcbsp",
 680         .sysc   = &omap54xx_mcbsp_sysc,
 681 };
 682 
 683 /* mcbsp1 */
 684 static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
 685         { .role = "pad_fck", .clk = "pad_clks_ck" },
 686         { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
 687 };
 688 
 689 static struct omap_hwmod omap54xx_mcbsp1_hwmod = {
 690         .name           = "mcbsp1",
 691         .class          = &omap54xx_mcbsp_hwmod_class,
 692         .clkdm_name     = "abe_clkdm",
 693         .main_clk       = "mcbsp1_gfclk",
 694         .prcm = {
 695                 .omap4 = {
 696                         .clkctrl_offs = OMAP54XX_CM_ABE_MCBSP1_CLKCTRL_OFFSET,
 697                         .context_offs = OMAP54XX_RM_ABE_MCBSP1_CONTEXT_OFFSET,
 698                         .modulemode   = MODULEMODE_SWCTRL,
 699                 },
 700         },
 701         .opt_clks       = mcbsp1_opt_clks,
 702         .opt_clks_cnt   = ARRAY_SIZE(mcbsp1_opt_clks),
 703 };
 704 
 705 /* mcbsp2 */
 706 static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
 707         { .role = "pad_fck", .clk = "pad_clks_ck" },
 708         { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
 709 };
 710 
 711 static struct omap_hwmod omap54xx_mcbsp2_hwmod = {
 712         .name           = "mcbsp2",
 713         .class          = &omap54xx_mcbsp_hwmod_class,
 714         .clkdm_name     = "abe_clkdm",
 715         .main_clk       = "mcbsp2_gfclk",
 716         .prcm = {
 717                 .omap4 = {
 718                         .clkctrl_offs = OMAP54XX_CM_ABE_MCBSP2_CLKCTRL_OFFSET,
 719                         .context_offs = OMAP54XX_RM_ABE_MCBSP2_CONTEXT_OFFSET,
 720                         .modulemode   = MODULEMODE_SWCTRL,
 721                 },
 722         },
 723         .opt_clks       = mcbsp2_opt_clks,
 724         .opt_clks_cnt   = ARRAY_SIZE(mcbsp2_opt_clks),
 725 };
 726 
 727 /* mcbsp3 */
 728 static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
 729         { .role = "pad_fck", .clk = "pad_clks_ck" },
 730         { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
 731 };
 732 
 733 static struct omap_hwmod omap54xx_mcbsp3_hwmod = {
 734         .name           = "mcbsp3",
 735         .class          = &omap54xx_mcbsp_hwmod_class,
 736         .clkdm_name     = "abe_clkdm",
 737         .main_clk       = "mcbsp3_gfclk",
 738         .prcm = {
 739                 .omap4 = {
 740                         .clkctrl_offs = OMAP54XX_CM_ABE_MCBSP3_CLKCTRL_OFFSET,
 741                         .context_offs = OMAP54XX_RM_ABE_MCBSP3_CONTEXT_OFFSET,
 742                         .modulemode   = MODULEMODE_SWCTRL,
 743                 },
 744         },
 745         .opt_clks       = mcbsp3_opt_clks,
 746         .opt_clks_cnt   = ARRAY_SIZE(mcbsp3_opt_clks),
 747 };
 748 
 749 /*
 750  * 'mcpdm' class
 751  * multi channel pdm controller (proprietary interface with phoenix power
 752  * ic)
 753  */
 754 
 755 static struct omap_hwmod_class_sysconfig omap54xx_mcpdm_sysc = {
 756         .rev_offs       = 0x0000,
 757         .sysc_offs      = 0x0010,
 758         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
 759                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
 760         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 761                            SIDLE_SMART_WKUP),
 762         .sysc_fields    = &omap_hwmod_sysc_type2,
 763 };
 764 
 765 static struct omap_hwmod_class omap54xx_mcpdm_hwmod_class = {
 766         .name   = "mcpdm",
 767         .sysc   = &omap54xx_mcpdm_sysc,
 768 };
 769 
 770 /* mcpdm */
 771 static struct omap_hwmod omap54xx_mcpdm_hwmod = {
 772         .name           = "mcpdm",
 773         .class          = &omap54xx_mcpdm_hwmod_class,
 774         .clkdm_name     = "abe_clkdm",
 775         /*
 776          * It's suspected that the McPDM requires an off-chip main
 777          * functional clock, controlled via I2C.  This IP block is
 778          * currently reset very early during boot, before I2C is
 779          * available, so it doesn't seem that we have any choice in
 780          * the kernel other than to avoid resetting it.  XXX This is
 781          * really a hardware issue workaround: every IP block should
 782          * be able to source its main functional clock from either
 783          * on-chip or off-chip sources.  McPDM seems to be the only
 784          * current exception.
 785          */
 786 
 787         .flags          = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE,
 788         .main_clk       = "pad_clks_ck",
 789         .prcm = {
 790                 .omap4 = {
 791                         .clkctrl_offs = OMAP54XX_CM_ABE_MCPDM_CLKCTRL_OFFSET,
 792                         .context_offs = OMAP54XX_RM_ABE_MCPDM_CONTEXT_OFFSET,
 793                         .modulemode   = MODULEMODE_SWCTRL,
 794                 },
 795         },
 796 };
 797 
 798 /*
 799  * 'mcspi' class
 800  * multichannel serial port interface (mcspi) / master/slave synchronous serial
 801  * bus
 802  */
 803 
 804 static struct omap_hwmod_class_sysconfig omap54xx_mcspi_sysc = {
 805         .rev_offs       = 0x0000,
 806         .sysc_offs      = 0x0010,
 807         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
 808                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
 809         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 810                            SIDLE_SMART_WKUP),
 811         .sysc_fields    = &omap_hwmod_sysc_type2,
 812 };
 813 
 814 static struct omap_hwmod_class omap54xx_mcspi_hwmod_class = {
 815         .name   = "mcspi",
 816         .sysc   = &omap54xx_mcspi_sysc,
 817 };
 818 
 819 /* mcspi1 */
 820 static struct omap_hwmod omap54xx_mcspi1_hwmod = {
 821         .name           = "mcspi1",
 822         .class          = &omap54xx_mcspi_hwmod_class,
 823         .clkdm_name     = "l4per_clkdm",
 824         .main_clk       = "func_48m_fclk",
 825         .prcm = {
 826                 .omap4 = {
 827                         .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
 828                         .context_offs = OMAP54XX_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
 829                         .modulemode   = MODULEMODE_SWCTRL,
 830                 },
 831         },
 832 };
 833 
 834 /* mcspi2 */
 835 static struct omap_hwmod omap54xx_mcspi2_hwmod = {
 836         .name           = "mcspi2",
 837         .class          = &omap54xx_mcspi_hwmod_class,
 838         .clkdm_name     = "l4per_clkdm",
 839         .main_clk       = "func_48m_fclk",
 840         .prcm = {
 841                 .omap4 = {
 842                         .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
 843                         .context_offs = OMAP54XX_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
 844                         .modulemode   = MODULEMODE_SWCTRL,
 845                 },
 846         },
 847 };
 848 
 849 /* mcspi3 */
 850 static struct omap_hwmod omap54xx_mcspi3_hwmod = {
 851         .name           = "mcspi3",
 852         .class          = &omap54xx_mcspi_hwmod_class,
 853         .clkdm_name     = "l4per_clkdm",
 854         .main_clk       = "func_48m_fclk",
 855         .prcm = {
 856                 .omap4 = {
 857                         .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
 858                         .context_offs = OMAP54XX_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
 859                         .modulemode   = MODULEMODE_SWCTRL,
 860                 },
 861         },
 862 };
 863 
 864 /* mcspi4 */
 865 static struct omap_hwmod omap54xx_mcspi4_hwmod = {
 866         .name           = "mcspi4",
 867         .class          = &omap54xx_mcspi_hwmod_class,
 868         .clkdm_name     = "l4per_clkdm",
 869         .main_clk       = "func_48m_fclk",
 870         .prcm = {
 871                 .omap4 = {
 872                         .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
 873                         .context_offs = OMAP54XX_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
 874                         .modulemode   = MODULEMODE_SWCTRL,
 875                 },
 876         },
 877 };
 878 
 879 /*
 880  * 'mmu' class
 881  * The memory management unit performs virtual to physical address translation
 882  * for its requestors.
 883  */
 884 
 885 static struct omap_hwmod_class_sysconfig omap54xx_mmu_sysc = {
 886         .rev_offs       = 0x0000,
 887         .sysc_offs      = 0x0010,
 888         .syss_offs      = 0x0014,
 889         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 890                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 891                            SYSS_HAS_RESET_STATUS),
 892         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 893         .sysc_fields    = &omap_hwmod_sysc_type1,
 894 };
 895 
 896 static struct omap_hwmod_class omap54xx_mmu_hwmod_class = {
 897         .name = "mmu",
 898         .sysc = &omap54xx_mmu_sysc,
 899 };
 900 
 901 static struct omap_hwmod_rst_info omap54xx_mmu_dsp_resets[] = {
 902         { .name = "mmu_cache", .rst_shift = 1 },
 903 };
 904 
 905 static struct omap_hwmod omap54xx_mmu_dsp_hwmod = {
 906         .name           = "mmu_dsp",
 907         .class          = &omap54xx_mmu_hwmod_class,
 908         .clkdm_name     = "dsp_clkdm",
 909         .rst_lines      = omap54xx_mmu_dsp_resets,
 910         .rst_lines_cnt  = ARRAY_SIZE(omap54xx_mmu_dsp_resets),
 911         .main_clk       = "dpll_iva_h11x2_ck",
 912         .prcm = {
 913                 .omap4 = {
 914                         .clkctrl_offs = OMAP54XX_CM_DSP_DSP_CLKCTRL_OFFSET,
 915                         .rstctrl_offs = OMAP54XX_RM_DSP_RSTCTRL_OFFSET,
 916                         .context_offs = OMAP54XX_RM_DSP_DSP_CONTEXT_OFFSET,
 917                         .modulemode   = MODULEMODE_HWCTRL,
 918                 },
 919         },
 920 };
 921 
 922 /* mmu ipu */
 923 static struct omap_hwmod_rst_info omap54xx_mmu_ipu_resets[] = {
 924         { .name = "mmu_cache", .rst_shift = 2 },
 925 };
 926 
 927 static struct omap_hwmod omap54xx_mmu_ipu_hwmod = {
 928         .name           = "mmu_ipu",
 929         .class          = &omap54xx_mmu_hwmod_class,
 930         .clkdm_name     = "ipu_clkdm",
 931         .rst_lines      = omap54xx_mmu_ipu_resets,
 932         .rst_lines_cnt  = ARRAY_SIZE(omap54xx_mmu_ipu_resets),
 933         .main_clk       = "dpll_core_h22x2_ck",
 934         .prcm = {
 935                 .omap4 = {
 936                         .clkctrl_offs = OMAP54XX_CM_IPU_IPU_CLKCTRL_OFFSET,
 937                         .rstctrl_offs = OMAP54XX_RM_IPU_RSTCTRL_OFFSET,
 938                         .context_offs = OMAP54XX_RM_IPU_IPU_CONTEXT_OFFSET,
 939                         .modulemode   = MODULEMODE_HWCTRL,
 940                 },
 941         },
 942 };
 943 
 944 /*
 945  * 'mpu' class
 946  * mpu sub-system
 947  */
 948 
 949 static struct omap_hwmod_class omap54xx_mpu_hwmod_class = {
 950         .name   = "mpu",
 951 };
 952 
 953 /* mpu */
 954 static struct omap_hwmod omap54xx_mpu_hwmod = {
 955         .name           = "mpu",
 956         .class          = &omap54xx_mpu_hwmod_class,
 957         .clkdm_name     = "mpu_clkdm",
 958         .flags          = HWMOD_INIT_NO_IDLE,
 959         .main_clk       = "dpll_mpu_m2_ck",
 960         .prcm = {
 961                 .omap4 = {
 962                         .clkctrl_offs = OMAP54XX_CM_MPU_MPU_CLKCTRL_OFFSET,
 963                         .context_offs = OMAP54XX_RM_MPU_MPU_CONTEXT_OFFSET,
 964                 },
 965         },
 966 };
 967 
 968 /*
 969  * 'spinlock' class
 970  * spinlock provides hardware assistance for synchronizing the processes
 971  * running on multiple processors
 972  */
 973 
 974 static struct omap_hwmod_class_sysconfig omap54xx_spinlock_sysc = {
 975         .rev_offs       = 0x0000,
 976         .sysc_offs      = 0x0010,
 977         .syss_offs      = 0x0014,
 978         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 979                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
 980                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 981         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 982         .sysc_fields    = &omap_hwmod_sysc_type1,
 983 };
 984 
 985 static struct omap_hwmod_class omap54xx_spinlock_hwmod_class = {
 986         .name   = "spinlock",
 987         .sysc   = &omap54xx_spinlock_sysc,
 988 };
 989 
 990 /* spinlock */
 991 static struct omap_hwmod omap54xx_spinlock_hwmod = {
 992         .name           = "spinlock",
 993         .class          = &omap54xx_spinlock_hwmod_class,
 994         .clkdm_name     = "l4cfg_clkdm",
 995         .prcm = {
 996                 .omap4 = {
 997                         .clkctrl_offs = OMAP54XX_CM_L4CFG_SPINLOCK_CLKCTRL_OFFSET,
 998                         .context_offs = OMAP54XX_RM_L4CFG_SPINLOCK_CONTEXT_OFFSET,
 999                 },
1000         },
1001 };
1002 
1003 /*
1004  * 'ocp2scp' class
1005  * bridge to transform ocp interface protocol to scp (serial control port)
1006  * protocol
1007  */
1008 
1009 static struct omap_hwmod_class_sysconfig omap54xx_ocp2scp_sysc = {
1010         .rev_offs       = 0x0000,
1011         .sysc_offs      = 0x0010,
1012         .syss_offs      = 0x0014,
1013         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1014                         SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1015         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1016         .sysc_fields    = &omap_hwmod_sysc_type1,
1017 };
1018 
1019 static struct omap_hwmod_class omap54xx_ocp2scp_hwmod_class = {
1020         .name   = "ocp2scp",
1021         .sysc   = &omap54xx_ocp2scp_sysc,
1022 };
1023 
1024 /* ocp2scp1 */
1025 static struct omap_hwmod omap54xx_ocp2scp1_hwmod = {
1026         .name           = "ocp2scp1",
1027         .class          = &omap54xx_ocp2scp_hwmod_class,
1028         .clkdm_name     = "l3init_clkdm",
1029         .main_clk       = "l4_root_clk_div",
1030         .prcm = {
1031                 .omap4 = {
1032                         .clkctrl_offs = OMAP54XX_CM_L3INIT_OCP2SCP1_CLKCTRL_OFFSET,
1033                         .context_offs = OMAP54XX_RM_L3INIT_OCP2SCP1_CONTEXT_OFFSET,
1034                         .modulemode   = MODULEMODE_HWCTRL,
1035                 },
1036         },
1037 };
1038 
1039 /*
1040  * 'timer' class
1041  * general purpose timer module with accurate 1ms tick
1042  * This class contains several variants: ['timer_1ms', 'timer']
1043  */
1044 
1045 static struct omap_hwmod_class_sysconfig omap54xx_timer_1ms_sysc = {
1046         .rev_offs       = 0x0000,
1047         .sysc_offs      = 0x0010,
1048         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1049                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1050         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1051                            SIDLE_SMART_WKUP),
1052         .sysc_fields    = &omap_hwmod_sysc_type2,
1053 };
1054 
1055 static struct omap_hwmod_class omap54xx_timer_1ms_hwmod_class = {
1056         .name   = "timer",
1057         .sysc   = &omap54xx_timer_1ms_sysc,
1058 };
1059 
1060 static struct omap_hwmod_class_sysconfig omap54xx_timer_sysc = {
1061         .rev_offs       = 0x0000,
1062         .sysc_offs      = 0x0010,
1063         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1064                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1065         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1066                            SIDLE_SMART_WKUP),
1067         .sysc_fields    = &omap_hwmod_sysc_type2,
1068 };
1069 
1070 static struct omap_hwmod_class omap54xx_timer_hwmod_class = {
1071         .name   = "timer",
1072         .sysc   = &omap54xx_timer_sysc,
1073 };
1074 
1075 /* timer1 */
1076 static struct omap_hwmod omap54xx_timer1_hwmod = {
1077         .name           = "timer1",
1078         .class          = &omap54xx_timer_1ms_hwmod_class,
1079         .clkdm_name     = "wkupaon_clkdm",
1080         .main_clk       = "timer1_gfclk_mux",
1081         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
1082         .prcm = {
1083                 .omap4 = {
1084                         .clkctrl_offs = OMAP54XX_CM_WKUPAON_TIMER1_CLKCTRL_OFFSET,
1085                         .context_offs = OMAP54XX_RM_WKUPAON_TIMER1_CONTEXT_OFFSET,
1086                         .modulemode   = MODULEMODE_SWCTRL,
1087                 },
1088         },
1089 };
1090 
1091 /* timer2 */
1092 static struct omap_hwmod omap54xx_timer2_hwmod = {
1093         .name           = "timer2",
1094         .class          = &omap54xx_timer_1ms_hwmod_class,
1095         .clkdm_name     = "l4per_clkdm",
1096         .main_clk       = "timer2_gfclk_mux",
1097         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
1098         .prcm = {
1099                 .omap4 = {
1100                         .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER2_CLKCTRL_OFFSET,
1101                         .context_offs = OMAP54XX_RM_L4PER_TIMER2_CONTEXT_OFFSET,
1102                         .modulemode   = MODULEMODE_SWCTRL,
1103                 },
1104         },
1105 };
1106 
1107 /* timer3 */
1108 static struct omap_hwmod omap54xx_timer3_hwmod = {
1109         .name           = "timer3",
1110         .class          = &omap54xx_timer_hwmod_class,
1111         .clkdm_name     = "l4per_clkdm",
1112         .main_clk       = "timer3_gfclk_mux",
1113         .prcm = {
1114                 .omap4 = {
1115                         .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER3_CLKCTRL_OFFSET,
1116                         .context_offs = OMAP54XX_RM_L4PER_TIMER3_CONTEXT_OFFSET,
1117                         .modulemode   = MODULEMODE_SWCTRL,
1118                 },
1119         },
1120 };
1121 
1122 /* timer4 */
1123 static struct omap_hwmod omap54xx_timer4_hwmod = {
1124         .name           = "timer4",
1125         .class          = &omap54xx_timer_hwmod_class,
1126         .clkdm_name     = "l4per_clkdm",
1127         .main_clk       = "timer4_gfclk_mux",
1128         .prcm = {
1129                 .omap4 = {
1130                         .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER4_CLKCTRL_OFFSET,
1131                         .context_offs = OMAP54XX_RM_L4PER_TIMER4_CONTEXT_OFFSET,
1132                         .modulemode   = MODULEMODE_SWCTRL,
1133                 },
1134         },
1135 };
1136 
1137 /* timer5 */
1138 static struct omap_hwmod omap54xx_timer5_hwmod = {
1139         .name           = "timer5",
1140         .class          = &omap54xx_timer_hwmod_class,
1141         .clkdm_name     = "abe_clkdm",
1142         .main_clk       = "timer5_gfclk_mux",
1143         .prcm = {
1144                 .omap4 = {
1145                         .clkctrl_offs = OMAP54XX_CM_ABE_TIMER5_CLKCTRL_OFFSET,
1146                         .context_offs = OMAP54XX_RM_ABE_TIMER5_CONTEXT_OFFSET,
1147                         .modulemode   = MODULEMODE_SWCTRL,
1148                 },
1149         },
1150 };
1151 
1152 /* timer6 */
1153 static struct omap_hwmod omap54xx_timer6_hwmod = {
1154         .name           = "timer6",
1155         .class          = &omap54xx_timer_hwmod_class,
1156         .clkdm_name     = "abe_clkdm",
1157         .main_clk       = "timer6_gfclk_mux",
1158         .prcm = {
1159                 .omap4 = {
1160                         .clkctrl_offs = OMAP54XX_CM_ABE_TIMER6_CLKCTRL_OFFSET,
1161                         .context_offs = OMAP54XX_RM_ABE_TIMER6_CONTEXT_OFFSET,
1162                         .modulemode   = MODULEMODE_SWCTRL,
1163                 },
1164         },
1165 };
1166 
1167 /* timer7 */
1168 static struct omap_hwmod omap54xx_timer7_hwmod = {
1169         .name           = "timer7",
1170         .class          = &omap54xx_timer_hwmod_class,
1171         .clkdm_name     = "abe_clkdm",
1172         .main_clk       = "timer7_gfclk_mux",
1173         .prcm = {
1174                 .omap4 = {
1175                         .clkctrl_offs = OMAP54XX_CM_ABE_TIMER7_CLKCTRL_OFFSET,
1176                         .context_offs = OMAP54XX_RM_ABE_TIMER7_CONTEXT_OFFSET,
1177                         .modulemode   = MODULEMODE_SWCTRL,
1178                 },
1179         },
1180 };
1181 
1182 /* timer8 */
1183 static struct omap_hwmod omap54xx_timer8_hwmod = {
1184         .name           = "timer8",
1185         .class          = &omap54xx_timer_hwmod_class,
1186         .clkdm_name     = "abe_clkdm",
1187         .main_clk       = "timer8_gfclk_mux",
1188         .prcm = {
1189                 .omap4 = {
1190                         .clkctrl_offs = OMAP54XX_CM_ABE_TIMER8_CLKCTRL_OFFSET,
1191                         .context_offs = OMAP54XX_RM_ABE_TIMER8_CONTEXT_OFFSET,
1192                         .modulemode   = MODULEMODE_SWCTRL,
1193                 },
1194         },
1195 };
1196 
1197 /* timer9 */
1198 static struct omap_hwmod omap54xx_timer9_hwmod = {
1199         .name           = "timer9",
1200         .class          = &omap54xx_timer_hwmod_class,
1201         .clkdm_name     = "l4per_clkdm",
1202         .main_clk       = "timer9_gfclk_mux",
1203         .prcm = {
1204                 .omap4 = {
1205                         .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER9_CLKCTRL_OFFSET,
1206                         .context_offs = OMAP54XX_RM_L4PER_TIMER9_CONTEXT_OFFSET,
1207                         .modulemode   = MODULEMODE_SWCTRL,
1208                 },
1209         },
1210 };
1211 
1212 /* timer10 */
1213 static struct omap_hwmod omap54xx_timer10_hwmod = {
1214         .name           = "timer10",
1215         .class          = &omap54xx_timer_1ms_hwmod_class,
1216         .clkdm_name     = "l4per_clkdm",
1217         .main_clk       = "timer10_gfclk_mux",
1218         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
1219         .prcm = {
1220                 .omap4 = {
1221                         .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER10_CLKCTRL_OFFSET,
1222                         .context_offs = OMAP54XX_RM_L4PER_TIMER10_CONTEXT_OFFSET,
1223                         .modulemode   = MODULEMODE_SWCTRL,
1224                 },
1225         },
1226 };
1227 
1228 /* timer11 */
1229 static struct omap_hwmod omap54xx_timer11_hwmod = {
1230         .name           = "timer11",
1231         .class          = &omap54xx_timer_hwmod_class,
1232         .clkdm_name     = "l4per_clkdm",
1233         .main_clk       = "timer11_gfclk_mux",
1234         .prcm = {
1235                 .omap4 = {
1236                         .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER11_CLKCTRL_OFFSET,
1237                         .context_offs = OMAP54XX_RM_L4PER_TIMER11_CONTEXT_OFFSET,
1238                         .modulemode   = MODULEMODE_SWCTRL,
1239                 },
1240         },
1241 };
1242 
1243 /*
1244  * 'usb_host_hs' class
1245  * high-speed multi-port usb host controller
1246  */
1247 
1248 static struct omap_hwmod_class_sysconfig omap54xx_usb_host_hs_sysc = {
1249         .rev_offs       = 0x0000,
1250         .sysc_offs      = 0x0010,
1251         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1252                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1253         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1254                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1255                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1256         .sysc_fields    = &omap_hwmod_sysc_type2,
1257 };
1258 
1259 static struct omap_hwmod_class omap54xx_usb_host_hs_hwmod_class = {
1260         .name   = "usb_host_hs",
1261         .sysc   = &omap54xx_usb_host_hs_sysc,
1262 };
1263 
1264 static struct omap_hwmod omap54xx_usb_host_hs_hwmod = {
1265         .name           = "usb_host_hs",
1266         .class          = &omap54xx_usb_host_hs_hwmod_class,
1267         .clkdm_name     = "l3init_clkdm",
1268         /*
1269          * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
1270          * id: i660
1271          *
1272          * Description:
1273          * In the following configuration :
1274          * - USBHOST module is set to smart-idle mode
1275          * - PRCM asserts idle_req to the USBHOST module ( This typically
1276          *   happens when the system is going to a low power mode : all ports
1277          *   have been suspended, the master part of the USBHOST module has
1278          *   entered the standby state, and SW has cut the functional clocks)
1279          * - an USBHOST interrupt occurs before the module is able to answer
1280          *   idle_ack, typically a remote wakeup IRQ.
1281          * Then the USB HOST module will enter a deadlock situation where it
1282          * is no more accessible nor functional.
1283          *
1284          * Workaround:
1285          * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
1286          */
1287 
1288         /*
1289          * Errata: USB host EHCI may stall when entering smart-standby mode
1290          * Id: i571
1291          *
1292          * Description:
1293          * When the USBHOST module is set to smart-standby mode, and when it is
1294          * ready to enter the standby state (i.e. all ports are suspended and
1295          * all attached devices are in suspend mode), then it can wrongly assert
1296          * the Mstandby signal too early while there are still some residual OCP
1297          * transactions ongoing. If this condition occurs, the internal state
1298          * machine may go to an undefined state and the USB link may be stuck
1299          * upon the next resume.
1300          *
1301          * Workaround:
1302          * Don't use smart standby; use only force standby,
1303          * hence HWMOD_SWSUP_MSTANDBY
1304          */
1305 
1306         .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
1307         .main_clk       = "l3init_60m_fclk",
1308         .prcm = {
1309                 .omap4 = {
1310                         .clkctrl_offs = OMAP54XX_CM_L3INIT_USB_HOST_HS_CLKCTRL_OFFSET,
1311                         .context_offs = OMAP54XX_RM_L3INIT_USB_HOST_HS_CONTEXT_OFFSET,
1312                         .modulemode   = MODULEMODE_SWCTRL,
1313                 },
1314         },
1315 };
1316 
1317 /*
1318  * 'usb_tll_hs' class
1319  * usb_tll_hs module is the adapter on the usb_host_hs ports
1320  */
1321 
1322 static struct omap_hwmod_class_sysconfig omap54xx_usb_tll_hs_sysc = {
1323         .rev_offs       = 0x0000,
1324         .sysc_offs      = 0x0010,
1325         .syss_offs      = 0x0014,
1326         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1327                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
1328                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1329         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1330         .sysc_fields    = &omap_hwmod_sysc_type1,
1331 };
1332 
1333 static struct omap_hwmod_class omap54xx_usb_tll_hs_hwmod_class = {
1334         .name   = "usb_tll_hs",
1335         .sysc   = &omap54xx_usb_tll_hs_sysc,
1336 };
1337 
1338 static struct omap_hwmod omap54xx_usb_tll_hs_hwmod = {
1339         .name           = "usb_tll_hs",
1340         .class          = &omap54xx_usb_tll_hs_hwmod_class,
1341         .clkdm_name     = "l3init_clkdm",
1342         .main_clk       = "l4_root_clk_div",
1343         .prcm = {
1344                 .omap4 = {
1345                         .clkctrl_offs = OMAP54XX_CM_L3INIT_USB_TLL_HS_CLKCTRL_OFFSET,
1346                         .context_offs = OMAP54XX_RM_L3INIT_USB_TLL_HS_CONTEXT_OFFSET,
1347                         .modulemode   = MODULEMODE_HWCTRL,
1348                 },
1349         },
1350 };
1351 
1352 /*
1353  * 'usb_otg_ss' class
1354  * 2.0 super speed (usb_otg_ss) controller
1355  */
1356 
1357 static struct omap_hwmod_class_sysconfig omap54xx_usb_otg_ss_sysc = {
1358         .rev_offs       = 0x0000,
1359         .sysc_offs      = 0x0010,
1360         .sysc_flags     = (SYSC_HAS_DMADISABLE | SYSC_HAS_MIDLEMODE |
1361                            SYSC_HAS_SIDLEMODE),
1362         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1363                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1364                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1365         .sysc_fields    = &omap_hwmod_sysc_type2,
1366 };
1367 
1368 static struct omap_hwmod_class omap54xx_usb_otg_ss_hwmod_class = {
1369         .name   = "usb_otg_ss",
1370         .sysc   = &omap54xx_usb_otg_ss_sysc,
1371 };
1372 
1373 /* usb_otg_ss */
1374 static struct omap_hwmod_opt_clk usb_otg_ss_opt_clks[] = {
1375         { .role = "refclk960m", .clk = "usb_otg_ss_refclk960m" },
1376 };
1377 
1378 static struct omap_hwmod omap54xx_usb_otg_ss_hwmod = {
1379         .name           = "usb_otg_ss",
1380         .class          = &omap54xx_usb_otg_ss_hwmod_class,
1381         .clkdm_name     = "l3init_clkdm",
1382         .flags          = HWMOD_SWSUP_SIDLE,
1383         .main_clk       = "dpll_core_h13x2_ck",
1384         .prcm = {
1385                 .omap4 = {
1386                         .clkctrl_offs = OMAP54XX_CM_L3INIT_USB_OTG_SS_CLKCTRL_OFFSET,
1387                         .context_offs = OMAP54XX_RM_L3INIT_USB_OTG_SS_CONTEXT_OFFSET,
1388                         .modulemode   = MODULEMODE_HWCTRL,
1389                 },
1390         },
1391         .opt_clks       = usb_otg_ss_opt_clks,
1392         .opt_clks_cnt   = ARRAY_SIZE(usb_otg_ss_opt_clks),
1393 };
1394 
1395 /*
1396  * 'wd_timer' class
1397  * 32-bit watchdog upward counter that generates a pulse on the reset pin on
1398  * overflow condition
1399  */
1400 
1401 static struct omap_hwmod_class_sysconfig omap54xx_wd_timer_sysc = {
1402         .rev_offs       = 0x0000,
1403         .sysc_offs      = 0x0010,
1404         .syss_offs      = 0x0014,
1405         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
1406                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1407         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1408                            SIDLE_SMART_WKUP),
1409         .sysc_fields    = &omap_hwmod_sysc_type1,
1410 };
1411 
1412 static struct omap_hwmod_class omap54xx_wd_timer_hwmod_class = {
1413         .name           = "wd_timer",
1414         .sysc           = &omap54xx_wd_timer_sysc,
1415         .pre_shutdown   = &omap2_wd_timer_disable,
1416 };
1417 
1418 /* wd_timer2 */
1419 static struct omap_hwmod omap54xx_wd_timer2_hwmod = {
1420         .name           = "wd_timer2",
1421         .class          = &omap54xx_wd_timer_hwmod_class,
1422         .clkdm_name     = "wkupaon_clkdm",
1423         .main_clk       = "sys_32k_ck",
1424         .prcm = {
1425                 .omap4 = {
1426                         .clkctrl_offs = OMAP54XX_CM_WKUPAON_WD_TIMER2_CLKCTRL_OFFSET,
1427                         .context_offs = OMAP54XX_RM_WKUPAON_WD_TIMER2_CONTEXT_OFFSET,
1428                         .modulemode   = MODULEMODE_SWCTRL,
1429                 },
1430         },
1431 };
1432 
1433 /*
1434  * 'ocp2scp' class
1435  * bridge to transform ocp interface protocol to scp (serial control port)
1436  * protocol
1437  */
1438 /* ocp2scp3 */
1439 static struct omap_hwmod omap54xx_ocp2scp3_hwmod;
1440 /* l4_cfg -> ocp2scp3 */
1441 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__ocp2scp3 = {
1442         .master         = &omap54xx_l4_cfg_hwmod,
1443         .slave          = &omap54xx_ocp2scp3_hwmod,
1444         .clk            = "l4_root_clk_div",
1445         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1446 };
1447 
1448 static struct omap_hwmod omap54xx_ocp2scp3_hwmod = {
1449         .name           = "ocp2scp3",
1450         .class          = &omap54xx_ocp2scp_hwmod_class,
1451         .clkdm_name     = "l3init_clkdm",
1452         .prcm = {
1453                 .omap4 = {
1454                         .clkctrl_offs = OMAP54XX_CM_L3INIT_OCP2SCP3_CLKCTRL_OFFSET,
1455                         .context_offs = OMAP54XX_RM_L3INIT_OCP2SCP3_CONTEXT_OFFSET,
1456                         .modulemode   = MODULEMODE_HWCTRL,
1457                 },
1458         },
1459 };
1460 
1461 /*
1462  * 'sata' class
1463  * sata:  serial ata interface  gen2 compliant   ( 1 rx/ 1 tx)
1464  */
1465 
1466 static struct omap_hwmod_class_sysconfig omap54xx_sata_sysc = {
1467         .rev_offs       = 0x00fc,
1468         .sysc_offs      = 0x0000,
1469         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1470         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1471                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1472                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1473         .sysc_fields    = &omap_hwmod_sysc_type2,
1474 };
1475 
1476 static struct omap_hwmod_class omap54xx_sata_hwmod_class = {
1477         .name   = "sata",
1478         .sysc   = &omap54xx_sata_sysc,
1479 };
1480 
1481 /* sata */
1482 static struct omap_hwmod omap54xx_sata_hwmod = {
1483         .name           = "sata",
1484         .class          = &omap54xx_sata_hwmod_class,
1485         .clkdm_name     = "l3init_clkdm",
1486         .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
1487         .main_clk       = "func_48m_fclk",
1488         .mpu_rt_idx     = 1,
1489         .prcm = {
1490                 .omap4 = {
1491                         .clkctrl_offs = OMAP54XX_CM_L3INIT_SATA_CLKCTRL_OFFSET,
1492                         .context_offs = OMAP54XX_RM_L3INIT_SATA_CONTEXT_OFFSET,
1493                         .modulemode   = MODULEMODE_SWCTRL,
1494                 },
1495         },
1496 };
1497 
1498 /* l4_cfg -> sata */
1499 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__sata = {
1500         .master         = &omap54xx_l4_cfg_hwmod,
1501         .slave          = &omap54xx_sata_hwmod,
1502         .clk            = "l3_iclk_div",
1503         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1504 };
1505 
1506 /*
1507  * Interfaces
1508  */
1509 
1510 /* l3_main_1 -> dmm */
1511 static struct omap_hwmod_ocp_if omap54xx_l3_main_1__dmm = {
1512         .master         = &omap54xx_l3_main_1_hwmod,
1513         .slave          = &omap54xx_dmm_hwmod,
1514         .clk            = "l3_iclk_div",
1515         .user           = OCP_USER_SDMA,
1516 };
1517 
1518 /* l3_main_3 -> l3_instr */
1519 static struct omap_hwmod_ocp_if omap54xx_l3_main_3__l3_instr = {
1520         .master         = &omap54xx_l3_main_3_hwmod,
1521         .slave          = &omap54xx_l3_instr_hwmod,
1522         .clk            = "l3_iclk_div",
1523         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1524 };
1525 
1526 /* l3_main_2 -> l3_main_1 */
1527 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__l3_main_1 = {
1528         .master         = &omap54xx_l3_main_2_hwmod,
1529         .slave          = &omap54xx_l3_main_1_hwmod,
1530         .clk            = "l3_iclk_div",
1531         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1532 };
1533 
1534 /* l4_cfg -> l3_main_1 */
1535 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_1 = {
1536         .master         = &omap54xx_l4_cfg_hwmod,
1537         .slave          = &omap54xx_l3_main_1_hwmod,
1538         .clk            = "l3_iclk_div",
1539         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1540 };
1541 
1542 /* l4_cfg -> mmu_dsp */
1543 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mmu_dsp = {
1544         .master         = &omap54xx_l4_cfg_hwmod,
1545         .slave          = &omap54xx_mmu_dsp_hwmod,
1546         .clk            = "l4_root_clk_div",
1547         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1548 };
1549 
1550 /* mpu -> l3_main_1 */
1551 static struct omap_hwmod_ocp_if omap54xx_mpu__l3_main_1 = {
1552         .master         = &omap54xx_mpu_hwmod,
1553         .slave          = &omap54xx_l3_main_1_hwmod,
1554         .clk            = "l3_iclk_div",
1555         .user           = OCP_USER_MPU,
1556 };
1557 
1558 /* l3_main_1 -> l3_main_2 */
1559 static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l3_main_2 = {
1560         .master         = &omap54xx_l3_main_1_hwmod,
1561         .slave          = &omap54xx_l3_main_2_hwmod,
1562         .clk            = "l3_iclk_div",
1563         .user           = OCP_USER_MPU,
1564 };
1565 
1566 /* l4_cfg -> l3_main_2 */
1567 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_2 = {
1568         .master         = &omap54xx_l4_cfg_hwmod,
1569         .slave          = &omap54xx_l3_main_2_hwmod,
1570         .clk            = "l3_iclk_div",
1571         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1572 };
1573 
1574 /* l3_main_2 -> mmu_ipu */
1575 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__mmu_ipu = {
1576         .master         = &omap54xx_l3_main_2_hwmod,
1577         .slave          = &omap54xx_mmu_ipu_hwmod,
1578         .clk            = "l3_iclk_div",
1579         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1580 };
1581 
1582 /* l3_main_1 -> l3_main_3 */
1583 static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l3_main_3 = {
1584         .master         = &omap54xx_l3_main_1_hwmod,
1585         .slave          = &omap54xx_l3_main_3_hwmod,
1586         .clk            = "l3_iclk_div",
1587         .user           = OCP_USER_MPU,
1588 };
1589 
1590 /* l3_main_2 -> l3_main_3 */
1591 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__l3_main_3 = {
1592         .master         = &omap54xx_l3_main_2_hwmod,
1593         .slave          = &omap54xx_l3_main_3_hwmod,
1594         .clk            = "l3_iclk_div",
1595         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1596 };
1597 
1598 /* l4_cfg -> l3_main_3 */
1599 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_3 = {
1600         .master         = &omap54xx_l4_cfg_hwmod,
1601         .slave          = &omap54xx_l3_main_3_hwmod,
1602         .clk            = "l3_iclk_div",
1603         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1604 };
1605 
1606 /* l3_main_1 -> l4_abe */
1607 static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l4_abe = {
1608         .master         = &omap54xx_l3_main_1_hwmod,
1609         .slave          = &omap54xx_l4_abe_hwmod,
1610         .clk            = "abe_iclk",
1611         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1612 };
1613 
1614 /* mpu -> l4_abe */
1615 static struct omap_hwmod_ocp_if omap54xx_mpu__l4_abe = {
1616         .master         = &omap54xx_mpu_hwmod,
1617         .slave          = &omap54xx_l4_abe_hwmod,
1618         .clk            = "abe_iclk",
1619         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1620 };
1621 
1622 /* l3_main_1 -> l4_cfg */
1623 static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l4_cfg = {
1624         .master         = &omap54xx_l3_main_1_hwmod,
1625         .slave          = &omap54xx_l4_cfg_hwmod,
1626         .clk            = "l4_root_clk_div",
1627         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1628 };
1629 
1630 /* l3_main_2 -> l4_per */
1631 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__l4_per = {
1632         .master         = &omap54xx_l3_main_2_hwmod,
1633         .slave          = &omap54xx_l4_per_hwmod,
1634         .clk            = "l4_root_clk_div",
1635         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1636 };
1637 
1638 /* l3_main_1 -> l4_wkup */
1639 static struct omap_hwmod_ocp_if omap54xx_l3_main_1__l4_wkup = {
1640         .master         = &omap54xx_l3_main_1_hwmod,
1641         .slave          = &omap54xx_l4_wkup_hwmod,
1642         .clk            = "wkupaon_iclk_mux",
1643         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1644 };
1645 
1646 /* mpu -> mpu_private */
1647 static struct omap_hwmod_ocp_if omap54xx_mpu__mpu_private = {
1648         .master         = &omap54xx_mpu_hwmod,
1649         .slave          = &omap54xx_mpu_private_hwmod,
1650         .clk            = "l3_iclk_div",
1651         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1652 };
1653 
1654 /* l4_wkup -> counter_32k */
1655 static struct omap_hwmod_ocp_if omap54xx_l4_wkup__counter_32k = {
1656         .master         = &omap54xx_l4_wkup_hwmod,
1657         .slave          = &omap54xx_counter_32k_hwmod,
1658         .clk            = "wkupaon_iclk_mux",
1659         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1660 };
1661 
1662 /* l4_cfg -> dma_system */
1663 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__dma_system = {
1664         .master         = &omap54xx_l4_cfg_hwmod,
1665         .slave          = &omap54xx_dma_system_hwmod,
1666         .clk            = "l4_root_clk_div",
1667         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1668 };
1669 
1670 /* l4_abe -> dmic */
1671 static struct omap_hwmod_ocp_if omap54xx_l4_abe__dmic = {
1672         .master         = &omap54xx_l4_abe_hwmod,
1673         .slave          = &omap54xx_dmic_hwmod,
1674         .clk            = "abe_iclk",
1675         .user           = OCP_USER_MPU,
1676 };
1677 
1678 /* l3_main_2 -> dss */
1679 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss = {
1680         .master         = &omap54xx_l3_main_2_hwmod,
1681         .slave          = &omap54xx_dss_hwmod,
1682         .clk            = "l3_iclk_div",
1683         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1684 };
1685 
1686 /* l3_main_2 -> dss_dispc */
1687 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_dispc = {
1688         .master         = &omap54xx_l3_main_2_hwmod,
1689         .slave          = &omap54xx_dss_dispc_hwmod,
1690         .clk            = "l3_iclk_div",
1691         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1692 };
1693 
1694 /* l3_main_2 -> dss_dsi1_a */
1695 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_dsi1_a = {
1696         .master         = &omap54xx_l3_main_2_hwmod,
1697         .slave          = &omap54xx_dss_dsi1_a_hwmod,
1698         .clk            = "l3_iclk_div",
1699         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1700 };
1701 
1702 /* l3_main_2 -> dss_dsi1_c */
1703 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_dsi1_c = {
1704         .master         = &omap54xx_l3_main_2_hwmod,
1705         .slave          = &omap54xx_dss_dsi1_c_hwmod,
1706         .clk            = "l3_iclk_div",
1707         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1708 };
1709 
1710 /* l3_main_2 -> dss_hdmi */
1711 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_hdmi = {
1712         .master         = &omap54xx_l3_main_2_hwmod,
1713         .slave          = &omap54xx_dss_hdmi_hwmod,
1714         .clk            = "l3_iclk_div",
1715         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1716 };
1717 
1718 /* l3_main_2 -> dss_rfbi */
1719 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss_rfbi = {
1720         .master         = &omap54xx_l3_main_2_hwmod,
1721         .slave          = &omap54xx_dss_rfbi_hwmod,
1722         .clk            = "l3_iclk_div",
1723         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1724 };
1725 
1726 /* mpu -> emif1 */
1727 static struct omap_hwmod_ocp_if omap54xx_mpu__emif1 = {
1728         .master         = &omap54xx_mpu_hwmod,
1729         .slave          = &omap54xx_emif1_hwmod,
1730         .clk            = "dpll_core_h11x2_ck",
1731         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1732 };
1733 
1734 /* mpu -> emif2 */
1735 static struct omap_hwmod_ocp_if omap54xx_mpu__emif2 = {
1736         .master         = &omap54xx_mpu_hwmod,
1737         .slave          = &omap54xx_emif2_hwmod,
1738         .clk            = "dpll_core_h11x2_ck",
1739         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1740 };
1741 
1742 /* l4_wkup -> kbd */
1743 static struct omap_hwmod_ocp_if omap54xx_l4_wkup__kbd = {
1744         .master         = &omap54xx_l4_wkup_hwmod,
1745         .slave          = &omap54xx_kbd_hwmod,
1746         .clk            = "wkupaon_iclk_mux",
1747         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1748 };
1749 
1750 /* l4_cfg -> mailbox */
1751 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mailbox = {
1752         .master         = &omap54xx_l4_cfg_hwmod,
1753         .slave          = &omap54xx_mailbox_hwmod,
1754         .clk            = "l4_root_clk_div",
1755         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1756 };
1757 
1758 /* l4_abe -> mcbsp1 */
1759 static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcbsp1 = {
1760         .master         = &omap54xx_l4_abe_hwmod,
1761         .slave          = &omap54xx_mcbsp1_hwmod,
1762         .clk            = "abe_iclk",
1763         .user           = OCP_USER_MPU,
1764 };
1765 
1766 /* l4_abe -> mcbsp2 */
1767 static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcbsp2 = {
1768         .master         = &omap54xx_l4_abe_hwmod,
1769         .slave          = &omap54xx_mcbsp2_hwmod,
1770         .clk            = "abe_iclk",
1771         .user           = OCP_USER_MPU,
1772 };
1773 
1774 /* l4_abe -> mcbsp3 */
1775 static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcbsp3 = {
1776         .master         = &omap54xx_l4_abe_hwmod,
1777         .slave          = &omap54xx_mcbsp3_hwmod,
1778         .clk            = "abe_iclk",
1779         .user           = OCP_USER_MPU,
1780 };
1781 
1782 /* l4_abe -> mcpdm */
1783 static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcpdm = {
1784         .master         = &omap54xx_l4_abe_hwmod,
1785         .slave          = &omap54xx_mcpdm_hwmod,
1786         .clk            = "abe_iclk",
1787         .user           = OCP_USER_MPU,
1788 };
1789 
1790 /* l4_per -> mcspi1 */
1791 static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi1 = {
1792         .master         = &omap54xx_l4_per_hwmod,
1793         .slave          = &omap54xx_mcspi1_hwmod,
1794         .clk            = "l4_root_clk_div",
1795         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1796 };
1797 
1798 /* l4_per -> mcspi2 */
1799 static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi2 = {
1800         .master         = &omap54xx_l4_per_hwmod,
1801         .slave          = &omap54xx_mcspi2_hwmod,
1802         .clk            = "l4_root_clk_div",
1803         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1804 };
1805 
1806 /* l4_per -> mcspi3 */
1807 static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi3 = {
1808         .master         = &omap54xx_l4_per_hwmod,
1809         .slave          = &omap54xx_mcspi3_hwmod,
1810         .clk            = "l4_root_clk_div",
1811         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1812 };
1813 
1814 /* l4_per -> mcspi4 */
1815 static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi4 = {
1816         .master         = &omap54xx_l4_per_hwmod,
1817         .slave          = &omap54xx_mcspi4_hwmod,
1818         .clk            = "l4_root_clk_div",
1819         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1820 };
1821 
1822 /* l4_cfg -> mpu */
1823 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mpu = {
1824         .master         = &omap54xx_l4_cfg_hwmod,
1825         .slave          = &omap54xx_mpu_hwmod,
1826         .clk            = "l4_root_clk_div",
1827         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1828 };
1829 
1830 /* l4_cfg -> spinlock */
1831 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__spinlock = {
1832         .master         = &omap54xx_l4_cfg_hwmod,
1833         .slave          = &omap54xx_spinlock_hwmod,
1834         .clk            = "l4_root_clk_div",
1835         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1836 };
1837 
1838 /* l4_cfg -> ocp2scp1 */
1839 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__ocp2scp1 = {
1840         .master         = &omap54xx_l4_cfg_hwmod,
1841         .slave          = &omap54xx_ocp2scp1_hwmod,
1842         .clk            = "l4_root_clk_div",
1843         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1844 };
1845 
1846 /* l4_wkup -> timer1 */
1847 static struct omap_hwmod_ocp_if omap54xx_l4_wkup__timer1 = {
1848         .master         = &omap54xx_l4_wkup_hwmod,
1849         .slave          = &omap54xx_timer1_hwmod,
1850         .clk            = "wkupaon_iclk_mux",
1851         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1852 };
1853 
1854 /* l4_per -> timer2 */
1855 static struct omap_hwmod_ocp_if omap54xx_l4_per__timer2 = {
1856         .master         = &omap54xx_l4_per_hwmod,
1857         .slave          = &omap54xx_timer2_hwmod,
1858         .clk            = "l4_root_clk_div",
1859         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1860 };
1861 
1862 /* l4_per -> timer3 */
1863 static struct omap_hwmod_ocp_if omap54xx_l4_per__timer3 = {
1864         .master         = &omap54xx_l4_per_hwmod,
1865         .slave          = &omap54xx_timer3_hwmod,
1866         .clk            = "l4_root_clk_div",
1867         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1868 };
1869 
1870 /* l4_per -> timer4 */
1871 static struct omap_hwmod_ocp_if omap54xx_l4_per__timer4 = {
1872         .master         = &omap54xx_l4_per_hwmod,
1873         .slave          = &omap54xx_timer4_hwmod,
1874         .clk            = "l4_root_clk_div",
1875         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1876 };
1877 
1878 /* l4_abe -> timer5 */
1879 static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer5 = {
1880         .master         = &omap54xx_l4_abe_hwmod,
1881         .slave          = &omap54xx_timer5_hwmod,
1882         .clk            = "abe_iclk",
1883         .user           = OCP_USER_MPU,
1884 };
1885 
1886 /* l4_abe -> timer6 */
1887 static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer6 = {
1888         .master         = &omap54xx_l4_abe_hwmod,
1889         .slave          = &omap54xx_timer6_hwmod,
1890         .clk            = "abe_iclk",
1891         .user           = OCP_USER_MPU,
1892 };
1893 
1894 /* l4_abe -> timer7 */
1895 static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer7 = {
1896         .master         = &omap54xx_l4_abe_hwmod,
1897         .slave          = &omap54xx_timer7_hwmod,
1898         .clk            = "abe_iclk",
1899         .user           = OCP_USER_MPU,
1900 };
1901 
1902 /* l4_abe -> timer8 */
1903 static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer8 = {
1904         .master         = &omap54xx_l4_abe_hwmod,
1905         .slave          = &omap54xx_timer8_hwmod,
1906         .clk            = "abe_iclk",
1907         .user           = OCP_USER_MPU,
1908 };
1909 
1910 /* l4_per -> timer9 */
1911 static struct omap_hwmod_ocp_if omap54xx_l4_per__timer9 = {
1912         .master         = &omap54xx_l4_per_hwmod,
1913         .slave          = &omap54xx_timer9_hwmod,
1914         .clk            = "l4_root_clk_div",
1915         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1916 };
1917 
1918 /* l4_per -> timer10 */
1919 static struct omap_hwmod_ocp_if omap54xx_l4_per__timer10 = {
1920         .master         = &omap54xx_l4_per_hwmod,
1921         .slave          = &omap54xx_timer10_hwmod,
1922         .clk            = "l4_root_clk_div",
1923         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1924 };
1925 
1926 /* l4_per -> timer11 */
1927 static struct omap_hwmod_ocp_if omap54xx_l4_per__timer11 = {
1928         .master         = &omap54xx_l4_per_hwmod,
1929         .slave          = &omap54xx_timer11_hwmod,
1930         .clk            = "l4_root_clk_div",
1931         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1932 };
1933 
1934 /* l4_cfg -> usb_host_hs */
1935 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__usb_host_hs = {
1936         .master         = &omap54xx_l4_cfg_hwmod,
1937         .slave          = &omap54xx_usb_host_hs_hwmod,
1938         .clk            = "l3_iclk_div",
1939         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1940 };
1941 
1942 /* l4_cfg -> usb_tll_hs */
1943 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__usb_tll_hs = {
1944         .master         = &omap54xx_l4_cfg_hwmod,
1945         .slave          = &omap54xx_usb_tll_hs_hwmod,
1946         .clk            = "l4_root_clk_div",
1947         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1948 };
1949 
1950 /* l4_cfg -> usb_otg_ss */
1951 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__usb_otg_ss = {
1952         .master         = &omap54xx_l4_cfg_hwmod,
1953         .slave          = &omap54xx_usb_otg_ss_hwmod,
1954         .clk            = "dpll_core_h13x2_ck",
1955         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1956 };
1957 
1958 /* l4_wkup -> wd_timer2 */
1959 static struct omap_hwmod_ocp_if omap54xx_l4_wkup__wd_timer2 = {
1960         .master         = &omap54xx_l4_wkup_hwmod,
1961         .slave          = &omap54xx_wd_timer2_hwmod,
1962         .clk            = "wkupaon_iclk_mux",
1963         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1964 };
1965 
1966 static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = {
1967         &omap54xx_l3_main_1__dmm,
1968         &omap54xx_l3_main_3__l3_instr,
1969         &omap54xx_l3_main_2__l3_main_1,
1970         &omap54xx_l4_cfg__l3_main_1,
1971         &omap54xx_mpu__l3_main_1,
1972         &omap54xx_l3_main_1__l3_main_2,
1973         &omap54xx_l4_cfg__l3_main_2,
1974         &omap54xx_l3_main_1__l3_main_3,
1975         &omap54xx_l3_main_2__l3_main_3,
1976         &omap54xx_l4_cfg__l3_main_3,
1977         &omap54xx_l3_main_1__l4_abe,
1978         &omap54xx_mpu__l4_abe,
1979         &omap54xx_l3_main_1__l4_cfg,
1980         &omap54xx_l3_main_2__l4_per,
1981         &omap54xx_l3_main_1__l4_wkup,
1982         &omap54xx_mpu__mpu_private,
1983         &omap54xx_l4_wkup__counter_32k,
1984         &omap54xx_l4_cfg__dma_system,
1985         &omap54xx_l4_abe__dmic,
1986         &omap54xx_l4_cfg__mmu_dsp,
1987         &omap54xx_l3_main_2__dss,
1988         &omap54xx_l3_main_2__dss_dispc,
1989         &omap54xx_l3_main_2__dss_dsi1_a,
1990         &omap54xx_l3_main_2__dss_dsi1_c,
1991         &omap54xx_l3_main_2__dss_hdmi,
1992         &omap54xx_l3_main_2__dss_rfbi,
1993         &omap54xx_mpu__emif1,
1994         &omap54xx_mpu__emif2,
1995         &omap54xx_l3_main_2__mmu_ipu,
1996         &omap54xx_l4_wkup__kbd,
1997         &omap54xx_l4_cfg__mailbox,
1998         &omap54xx_l4_abe__mcbsp1,
1999         &omap54xx_l4_abe__mcbsp2,
2000         &omap54xx_l4_abe__mcbsp3,
2001         &omap54xx_l4_abe__mcpdm,
2002         &omap54xx_l4_per__mcspi1,
2003         &omap54xx_l4_per__mcspi2,
2004         &omap54xx_l4_per__mcspi3,
2005         &omap54xx_l4_per__mcspi4,
2006         &omap54xx_l4_cfg__mpu,
2007         &omap54xx_l4_cfg__spinlock,
2008         &omap54xx_l4_cfg__ocp2scp1,
2009         &omap54xx_l4_wkup__timer1,
2010         &omap54xx_l4_per__timer2,
2011         &omap54xx_l4_per__timer3,
2012         &omap54xx_l4_per__timer4,
2013         &omap54xx_l4_abe__timer5,
2014         &omap54xx_l4_abe__timer6,
2015         &omap54xx_l4_abe__timer7,
2016         &omap54xx_l4_abe__timer8,
2017         &omap54xx_l4_per__timer9,
2018         &omap54xx_l4_per__timer10,
2019         &omap54xx_l4_per__timer11,
2020         &omap54xx_l4_cfg__usb_host_hs,
2021         &omap54xx_l4_cfg__usb_tll_hs,
2022         &omap54xx_l4_cfg__usb_otg_ss,
2023         &omap54xx_l4_wkup__wd_timer2,
2024         &omap54xx_l4_cfg__ocp2scp3,
2025         &omap54xx_l4_cfg__sata,
2026         NULL,
2027 };
2028 
2029 int __init omap54xx_hwmod_init(void)
2030 {
2031         omap_hwmod_init();
2032         return omap_hwmod_register_links(omap54xx_hwmod_ocp_ifs);
2033 }

/* [<][>][^][v][top][bottom][index][help] */