linux/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
<<
>>
Prefs
   1/*
   2 * Hardware modules present on the DRA7xx chips
   3 *
   4 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com
   5 *
   6 * Paul Walmsley
   7 * Benoit Cousson
   8 *
   9 * This file is automatically generated from the OMAP hardware databases.
  10 * We respectfully ask that any modifications to this file be coordinated
  11 * with the public linux-omap@vger.kernel.org mailing list and the
  12 * authors above to ensure that the autogeneration scripts are kept
  13 * up-to-date with the file contents.
  14 *
  15 * This program is free software; you can redistribute it and/or modify
  16 * it under the terms of the GNU General Public License version 2 as
  17 * published by the Free Software Foundation.
  18 */
  19
  20#include <linux/io.h>
  21#include <linux/platform_data/gpio-omap.h>
  22#include <linux/platform_data/hsmmc-omap.h>
  23#include <linux/power/smartreflex.h>
  24#include <linux/i2c-omap.h>
  25
  26#include <linux/omap-dma.h>
  27#include <linux/platform_data/spi-omap2-mcspi.h>
  28#include <linux/platform_data/asoc-ti-mcbsp.h>
  29#include <plat/dmtimer.h>
  30
  31#include "omap_hwmod.h"
  32#include "omap_hwmod_common_data.h"
  33#include "cm1_7xx.h"
  34#include "cm2_7xx.h"
  35#include "prm7xx.h"
  36#include "i2c.h"
  37#include "wd_timer.h"
  38#include "soc.h"
  39
  40/* Base offset for all DRA7XX interrupts external to MPUSS */
  41#define DRA7XX_IRQ_GIC_START    32
  42
  43/* Base offset for all DRA7XX dma requests */
  44#define DRA7XX_DMA_REQ_START    1
  45
  46
  47/*
  48 * IP blocks
  49 */
  50
  51/*
  52 * 'l3' class
  53 * instance(s): l3_instr, l3_main_1, l3_main_2
  54 */
  55static struct omap_hwmod_class dra7xx_l3_hwmod_class = {
  56        .name   = "l3",
  57};
  58
  59/* l3_instr */
  60static struct omap_hwmod dra7xx_l3_instr_hwmod = {
  61        .name           = "l3_instr",
  62        .class          = &dra7xx_l3_hwmod_class,
  63        .clkdm_name     = "l3instr_clkdm",
  64        .prcm = {
  65                .omap4 = {
  66                        .clkctrl_offs = DRA7XX_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
  67                        .context_offs = DRA7XX_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
  68                        .modulemode   = MODULEMODE_HWCTRL,
  69                },
  70        },
  71};
  72
  73/* l3_main_1 */
  74static struct omap_hwmod dra7xx_l3_main_1_hwmod = {
  75        .name           = "l3_main_1",
  76        .class          = &dra7xx_l3_hwmod_class,
  77        .clkdm_name     = "l3main1_clkdm",
  78        .prcm = {
  79                .omap4 = {
  80                        .clkctrl_offs = DRA7XX_CM_L3MAIN1_L3_MAIN_1_CLKCTRL_OFFSET,
  81                        .context_offs = DRA7XX_RM_L3MAIN1_L3_MAIN_1_CONTEXT_OFFSET,
  82                },
  83        },
  84};
  85
  86/* l3_main_2 */
  87static struct omap_hwmod dra7xx_l3_main_2_hwmod = {
  88        .name           = "l3_main_2",
  89        .class          = &dra7xx_l3_hwmod_class,
  90        .clkdm_name     = "l3instr_clkdm",
  91        .prcm = {
  92                .omap4 = {
  93                        .clkctrl_offs = DRA7XX_CM_L3INSTR_L3_MAIN_2_CLKCTRL_OFFSET,
  94                        .context_offs = DRA7XX_RM_L3INSTR_L3_MAIN_2_CONTEXT_OFFSET,
  95                        .modulemode   = MODULEMODE_HWCTRL,
  96                },
  97        },
  98};
  99
 100/*
 101 * 'l4' class
 102 * instance(s): l4_cfg, l4_per1, l4_per2, l4_per3, l4_wkup
 103 */
 104static struct omap_hwmod_class dra7xx_l4_hwmod_class = {
 105        .name   = "l4",
 106};
 107
 108/* l4_cfg */
 109static struct omap_hwmod dra7xx_l4_cfg_hwmod = {
 110        .name           = "l4_cfg",
 111        .class          = &dra7xx_l4_hwmod_class,
 112        .clkdm_name     = "l4cfg_clkdm",
 113        .prcm = {
 114                .omap4 = {
 115                        .clkctrl_offs = DRA7XX_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
 116                        .context_offs = DRA7XX_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
 117                },
 118        },
 119};
 120
 121/* l4_per1 */
 122static struct omap_hwmod dra7xx_l4_per1_hwmod = {
 123        .name           = "l4_per1",
 124        .class          = &dra7xx_l4_hwmod_class,
 125        .clkdm_name     = "l4per_clkdm",
 126        .prcm = {
 127                .omap4 = {
 128                        .clkctrl_offs = DRA7XX_CM_L4PER_L4_PER1_CLKCTRL_OFFSET,
 129                        .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 130                },
 131        },
 132};
 133
 134/* l4_per2 */
 135static struct omap_hwmod dra7xx_l4_per2_hwmod = {
 136        .name           = "l4_per2",
 137        .class          = &dra7xx_l4_hwmod_class,
 138        .clkdm_name     = "l4per2_clkdm",
 139        .prcm = {
 140                .omap4 = {
 141                        .clkctrl_offs = DRA7XX_CM_L4PER2_L4_PER2_CLKCTRL_OFFSET,
 142                        .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 143                },
 144        },
 145};
 146
 147/* l4_per3 */
 148static struct omap_hwmod dra7xx_l4_per3_hwmod = {
 149        .name           = "l4_per3",
 150        .class          = &dra7xx_l4_hwmod_class,
 151        .clkdm_name     = "l4per3_clkdm",
 152        .prcm = {
 153                .omap4 = {
 154                        .clkctrl_offs = DRA7XX_CM_L4PER3_L4_PER3_CLKCTRL_OFFSET,
 155                        .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 156                },
 157        },
 158};
 159
 160/* l4_wkup */
 161static struct omap_hwmod dra7xx_l4_wkup_hwmod = {
 162        .name           = "l4_wkup",
 163        .class          = &dra7xx_l4_hwmod_class,
 164        .clkdm_name     = "wkupaon_clkdm",
 165        .prcm = {
 166                .omap4 = {
 167                        .clkctrl_offs = DRA7XX_CM_WKUPAON_L4_WKUP_CLKCTRL_OFFSET,
 168                        .context_offs = DRA7XX_RM_WKUPAON_L4_WKUP_CONTEXT_OFFSET,
 169                },
 170        },
 171};
 172
 173/*
 174 * 'atl' class
 175 *
 176 */
 177
 178static struct omap_hwmod_class dra7xx_atl_hwmod_class = {
 179        .name   = "atl",
 180};
 181
 182/* atl */
 183static struct omap_hwmod dra7xx_atl_hwmod = {
 184        .name           = "atl",
 185        .class          = &dra7xx_atl_hwmod_class,
 186        .clkdm_name     = "atl_clkdm",
 187        .main_clk       = "atl_gfclk_mux",
 188        .prcm = {
 189                .omap4 = {
 190                        .clkctrl_offs = DRA7XX_CM_ATL_ATL_CLKCTRL_OFFSET,
 191                        .context_offs = DRA7XX_RM_ATL_ATL_CONTEXT_OFFSET,
 192                        .modulemode   = MODULEMODE_SWCTRL,
 193                },
 194        },
 195};
 196
 197/*
 198 * 'bb2d' class
 199 *
 200 */
 201
 202static struct omap_hwmod_class dra7xx_bb2d_hwmod_class = {
 203        .name   = "bb2d",
 204};
 205
 206/* bb2d */
 207static struct omap_hwmod dra7xx_bb2d_hwmod = {
 208        .name           = "bb2d",
 209        .class          = &dra7xx_bb2d_hwmod_class,
 210        .clkdm_name     = "dss_clkdm",
 211        .main_clk       = "dpll_core_h24x2_ck",
 212        .prcm = {
 213                .omap4 = {
 214                        .clkctrl_offs = DRA7XX_CM_DSS_BB2D_CLKCTRL_OFFSET,
 215                        .context_offs = DRA7XX_RM_DSS_BB2D_CONTEXT_OFFSET,
 216                        .modulemode   = MODULEMODE_SWCTRL,
 217                },
 218        },
 219};
 220
 221/*
 222 * 'counter' class
 223 *
 224 */
 225
 226static struct omap_hwmod_class_sysconfig dra7xx_counter_sysc = {
 227        .rev_offs       = 0x0000,
 228        .sysc_offs      = 0x0010,
 229        .sysc_flags     = SYSC_HAS_SIDLEMODE,
 230        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 231                           SIDLE_SMART_WKUP),
 232        .sysc_fields    = &omap_hwmod_sysc_type1,
 233};
 234
 235static struct omap_hwmod_class dra7xx_counter_hwmod_class = {
 236        .name   = "counter",
 237        .sysc   = &dra7xx_counter_sysc,
 238};
 239
 240/* counter_32k */
 241static struct omap_hwmod dra7xx_counter_32k_hwmod = {
 242        .name           = "counter_32k",
 243        .class          = &dra7xx_counter_hwmod_class,
 244        .clkdm_name     = "wkupaon_clkdm",
 245        .flags          = HWMOD_SWSUP_SIDLE,
 246        .main_clk       = "wkupaon_iclk_mux",
 247        .prcm = {
 248                .omap4 = {
 249                        .clkctrl_offs = DRA7XX_CM_WKUPAON_COUNTER_32K_CLKCTRL_OFFSET,
 250                        .context_offs = DRA7XX_RM_WKUPAON_COUNTER_32K_CONTEXT_OFFSET,
 251                },
 252        },
 253};
 254
 255/*
 256 * 'ctrl_module' class
 257 *
 258 */
 259
 260static struct omap_hwmod_class dra7xx_ctrl_module_hwmod_class = {
 261        .name   = "ctrl_module",
 262};
 263
 264/* ctrl_module_wkup */
 265static struct omap_hwmod dra7xx_ctrl_module_wkup_hwmod = {
 266        .name           = "ctrl_module_wkup",
 267        .class          = &dra7xx_ctrl_module_hwmod_class,
 268        .clkdm_name     = "wkupaon_clkdm",
 269        .prcm = {
 270                .omap4 = {
 271                        .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 272                },
 273        },
 274};
 275
 276/*
 277 * 'gmac' class
 278 * cpsw/gmac sub system
 279 */
 280static struct omap_hwmod_class_sysconfig dra7xx_gmac_sysc = {
 281        .rev_offs       = 0x0,
 282        .sysc_offs      = 0x8,
 283        .syss_offs      = 0x4,
 284        .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
 285                           SYSS_HAS_RESET_STATUS),
 286        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | MSTANDBY_FORCE |
 287                           MSTANDBY_NO),
 288        .sysc_fields    = &omap_hwmod_sysc_type3,
 289};
 290
 291static struct omap_hwmod_class dra7xx_gmac_hwmod_class = {
 292        .name           = "gmac",
 293        .sysc           = &dra7xx_gmac_sysc,
 294};
 295
 296static struct omap_hwmod dra7xx_gmac_hwmod = {
 297        .name           = "gmac",
 298        .class          = &dra7xx_gmac_hwmod_class,
 299        .clkdm_name     = "gmac_clkdm",
 300        .flags          = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
 301        .main_clk       = "dpll_gmac_ck",
 302        .mpu_rt_idx     = 1,
 303        .prcm           = {
 304                .omap4  = {
 305                        .clkctrl_offs   = DRA7XX_CM_GMAC_GMAC_CLKCTRL_OFFSET,
 306                        .context_offs   = DRA7XX_RM_GMAC_GMAC_CONTEXT_OFFSET,
 307                        .modulemode     = MODULEMODE_SWCTRL,
 308                },
 309        },
 310};
 311
 312/*
 313 * 'mdio' class
 314 */
 315static struct omap_hwmod_class dra7xx_mdio_hwmod_class = {
 316        .name           = "davinci_mdio",
 317};
 318
 319static struct omap_hwmod dra7xx_mdio_hwmod = {
 320        .name           = "davinci_mdio",
 321        .class          = &dra7xx_mdio_hwmod_class,
 322        .clkdm_name     = "gmac_clkdm",
 323        .main_clk       = "dpll_gmac_ck",
 324};
 325
 326/*
 327 * 'dcan' class
 328 *
 329 */
 330
 331static struct omap_hwmod_class dra7xx_dcan_hwmod_class = {
 332        .name   = "dcan",
 333};
 334
 335/* dcan1 */
 336static struct omap_hwmod dra7xx_dcan1_hwmod = {
 337        .name           = "dcan1",
 338        .class          = &dra7xx_dcan_hwmod_class,
 339        .clkdm_name     = "wkupaon_clkdm",
 340        .main_clk       = "dcan1_sys_clk_mux",
 341        .prcm = {
 342                .omap4 = {
 343                        .clkctrl_offs = DRA7XX_CM_WKUPAON_DCAN1_CLKCTRL_OFFSET,
 344                        .context_offs = DRA7XX_RM_WKUPAON_DCAN1_CONTEXT_OFFSET,
 345                        .modulemode   = MODULEMODE_SWCTRL,
 346                },
 347        },
 348};
 349
 350/* dcan2 */
 351static struct omap_hwmod dra7xx_dcan2_hwmod = {
 352        .name           = "dcan2",
 353        .class          = &dra7xx_dcan_hwmod_class,
 354        .clkdm_name     = "l4per2_clkdm",
 355        .main_clk       = "sys_clkin1",
 356        .prcm = {
 357                .omap4 = {
 358                        .clkctrl_offs = DRA7XX_CM_L4PER2_DCAN2_CLKCTRL_OFFSET,
 359                        .context_offs = DRA7XX_RM_L4PER2_DCAN2_CONTEXT_OFFSET,
 360                        .modulemode   = MODULEMODE_SWCTRL,
 361                },
 362        },
 363};
 364
 365/*
 366 * 'dma' class
 367 *
 368 */
 369
 370static struct omap_hwmod_class_sysconfig dra7xx_dma_sysc = {
 371        .rev_offs       = 0x0000,
 372        .sysc_offs      = 0x002c,
 373        .syss_offs      = 0x0028,
 374        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 375                           SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
 376                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 377                           SYSS_HAS_RESET_STATUS),
 378        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 379                           SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
 380                           MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
 381        .sysc_fields    = &omap_hwmod_sysc_type1,
 382};
 383
 384static struct omap_hwmod_class dra7xx_dma_hwmod_class = {
 385        .name   = "dma",
 386        .sysc   = &dra7xx_dma_sysc,
 387};
 388
 389/* dma dev_attr */
 390static struct omap_dma_dev_attr dma_dev_attr = {
 391        .dev_caps       = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
 392                          IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
 393        .lch_count      = 32,
 394};
 395
 396/* dma_system */
 397static struct omap_hwmod dra7xx_dma_system_hwmod = {
 398        .name           = "dma_system",
 399        .class          = &dra7xx_dma_hwmod_class,
 400        .clkdm_name     = "dma_clkdm",
 401        .main_clk       = "l3_iclk_div",
 402        .prcm = {
 403                .omap4 = {
 404                        .clkctrl_offs = DRA7XX_CM_DMA_DMA_SYSTEM_CLKCTRL_OFFSET,
 405                        .context_offs = DRA7XX_RM_DMA_DMA_SYSTEM_CONTEXT_OFFSET,
 406                },
 407        },
 408        .dev_attr       = &dma_dev_attr,
 409};
 410
 411/*
 412 * 'dss' class
 413 *
 414 */
 415
 416static struct omap_hwmod_class_sysconfig dra7xx_dss_sysc = {
 417        .rev_offs       = 0x0000,
 418        .syss_offs      = 0x0014,
 419        .sysc_flags     = SYSS_HAS_RESET_STATUS,
 420};
 421
 422static struct omap_hwmod_class dra7xx_dss_hwmod_class = {
 423        .name   = "dss",
 424        .sysc   = &dra7xx_dss_sysc,
 425        .reset  = omap_dss_reset,
 426};
 427
 428/* dss */
 429static struct omap_hwmod_dma_info dra7xx_dss_sdma_reqs[] = {
 430        { .dma_req = 75 + DRA7XX_DMA_REQ_START },
 431        { .dma_req = -1 }
 432};
 433
 434static struct omap_hwmod_opt_clk dss_opt_clks[] = {
 435        { .role = "dss_clk", .clk = "dss_dss_clk" },
 436        { .role = "hdmi_phy_clk", .clk = "dss_48mhz_clk" },
 437        { .role = "32khz_clk", .clk = "dss_32khz_clk" },
 438        { .role = "video2_clk", .clk = "dss_video2_clk" },
 439        { .role = "video1_clk", .clk = "dss_video1_clk" },
 440        { .role = "hdmi_clk", .clk = "dss_hdmi_clk" },
 441};
 442
 443static struct omap_hwmod dra7xx_dss_hwmod = {
 444        .name           = "dss_core",
 445        .class          = &dra7xx_dss_hwmod_class,
 446        .clkdm_name     = "dss_clkdm",
 447        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 448        .sdma_reqs      = dra7xx_dss_sdma_reqs,
 449        .main_clk       = "dss_dss_clk",
 450        .prcm = {
 451                .omap4 = {
 452                        .clkctrl_offs = DRA7XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 453                        .context_offs = DRA7XX_RM_DSS_DSS_CONTEXT_OFFSET,
 454                        .modulemode   = MODULEMODE_SWCTRL,
 455                },
 456        },
 457        .opt_clks       = dss_opt_clks,
 458        .opt_clks_cnt   = ARRAY_SIZE(dss_opt_clks),
 459};
 460
 461/*
 462 * 'dispc' class
 463 * display controller
 464 */
 465
 466static struct omap_hwmod_class_sysconfig dra7xx_dispc_sysc = {
 467        .rev_offs       = 0x0000,
 468        .sysc_offs      = 0x0010,
 469        .syss_offs      = 0x0014,
 470        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 471                           SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
 472                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 473                           SYSS_HAS_RESET_STATUS),
 474        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 475                           MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
 476        .sysc_fields    = &omap_hwmod_sysc_type1,
 477};
 478
 479static struct omap_hwmod_class dra7xx_dispc_hwmod_class = {
 480        .name   = "dispc",
 481        .sysc   = &dra7xx_dispc_sysc,
 482};
 483
 484/* dss_dispc */
 485/* dss_dispc dev_attr */
 486static struct omap_dss_dispc_dev_attr dss_dispc_dev_attr = {
 487        .has_framedonetv_irq    = 1,
 488        .manager_count          = 4,
 489};
 490
 491static struct omap_hwmod dra7xx_dss_dispc_hwmod = {
 492        .name           = "dss_dispc",
 493        .class          = &dra7xx_dispc_hwmod_class,
 494        .clkdm_name     = "dss_clkdm",
 495        .main_clk       = "dss_dss_clk",
 496        .prcm = {
 497                .omap4 = {
 498                        .clkctrl_offs = DRA7XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 499                        .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 500                },
 501        },
 502        .dev_attr       = &dss_dispc_dev_attr,
 503};
 504
 505/*
 506 * 'hdmi' class
 507 * hdmi controller
 508 */
 509
 510static struct omap_hwmod_class_sysconfig dra7xx_hdmi_sysc = {
 511        .rev_offs       = 0x0000,
 512        .sysc_offs      = 0x0010,
 513        .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
 514                           SYSC_HAS_SOFTRESET),
 515        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 516                           SIDLE_SMART_WKUP),
 517        .sysc_fields    = &omap_hwmod_sysc_type2,
 518};
 519
 520static struct omap_hwmod_class dra7xx_hdmi_hwmod_class = {
 521        .name   = "hdmi",
 522        .sysc   = &dra7xx_hdmi_sysc,
 523};
 524
 525/* dss_hdmi */
 526
 527static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
 528        { .role = "sys_clk", .clk = "dss_hdmi_clk" },
 529};
 530
 531static struct omap_hwmod dra7xx_dss_hdmi_hwmod = {
 532        .name           = "dss_hdmi",
 533        .class          = &dra7xx_hdmi_hwmod_class,
 534        .clkdm_name     = "dss_clkdm",
 535        .main_clk       = "dss_48mhz_clk",
 536        .prcm = {
 537                .omap4 = {
 538                        .clkctrl_offs = DRA7XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 539                        .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 540                },
 541        },
 542        .opt_clks       = dss_hdmi_opt_clks,
 543        .opt_clks_cnt   = ARRAY_SIZE(dss_hdmi_opt_clks),
 544};
 545
 546/*
 547 * 'elm' class
 548 *
 549 */
 550
 551static struct omap_hwmod_class_sysconfig dra7xx_elm_sysc = {
 552        .rev_offs       = 0x0000,
 553        .sysc_offs      = 0x0010,
 554        .syss_offs      = 0x0014,
 555        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 556                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 557                           SYSS_HAS_RESET_STATUS),
 558        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 559                           SIDLE_SMART_WKUP),
 560        .sysc_fields    = &omap_hwmod_sysc_type1,
 561};
 562
 563static struct omap_hwmod_class dra7xx_elm_hwmod_class = {
 564        .name   = "elm",
 565        .sysc   = &dra7xx_elm_sysc,
 566};
 567
 568/* elm */
 569
 570static struct omap_hwmod dra7xx_elm_hwmod = {
 571        .name           = "elm",
 572        .class          = &dra7xx_elm_hwmod_class,
 573        .clkdm_name     = "l4per_clkdm",
 574        .main_clk       = "l3_iclk_div",
 575        .prcm = {
 576                .omap4 = {
 577                        .clkctrl_offs = DRA7XX_CM_L4PER_ELM_CLKCTRL_OFFSET,
 578                        .context_offs = DRA7XX_RM_L4PER_ELM_CONTEXT_OFFSET,
 579                },
 580        },
 581};
 582
 583/*
 584 * 'gpio' class
 585 *
 586 */
 587
 588static struct omap_hwmod_class_sysconfig dra7xx_gpio_sysc = {
 589        .rev_offs       = 0x0000,
 590        .sysc_offs      = 0x0010,
 591        .syss_offs      = 0x0114,
 592        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
 593                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 594                           SYSS_HAS_RESET_STATUS),
 595        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 596                           SIDLE_SMART_WKUP),
 597        .sysc_fields    = &omap_hwmod_sysc_type1,
 598};
 599
 600static struct omap_hwmod_class dra7xx_gpio_hwmod_class = {
 601        .name   = "gpio",
 602        .sysc   = &dra7xx_gpio_sysc,
 603        .rev    = 2,
 604};
 605
 606/* gpio dev_attr */
 607static struct omap_gpio_dev_attr gpio_dev_attr = {
 608        .bank_width     = 32,
 609        .dbck_flag      = true,
 610};
 611
 612/* gpio1 */
 613static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
 614        { .role = "dbclk", .clk = "gpio1_dbclk" },
 615};
 616
 617static struct omap_hwmod dra7xx_gpio1_hwmod = {
 618        .name           = "gpio1",
 619        .class          = &dra7xx_gpio_hwmod_class,
 620        .clkdm_name     = "wkupaon_clkdm",
 621        .main_clk       = "wkupaon_iclk_mux",
 622        .prcm = {
 623                .omap4 = {
 624                        .clkctrl_offs = DRA7XX_CM_WKUPAON_GPIO1_CLKCTRL_OFFSET,
 625                        .context_offs = DRA7XX_RM_WKUPAON_GPIO1_CONTEXT_OFFSET,
 626                        .modulemode   = MODULEMODE_HWCTRL,
 627                },
 628        },
 629        .opt_clks       = gpio1_opt_clks,
 630        .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
 631        .dev_attr       = &gpio_dev_attr,
 632};
 633
 634/* gpio2 */
 635static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
 636        { .role = "dbclk", .clk = "gpio2_dbclk" },
 637};
 638
 639static struct omap_hwmod dra7xx_gpio2_hwmod = {
 640        .name           = "gpio2",
 641        .class          = &dra7xx_gpio_hwmod_class,
 642        .clkdm_name     = "l4per_clkdm",
 643        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 644        .main_clk       = "l3_iclk_div",
 645        .prcm = {
 646                .omap4 = {
 647                        .clkctrl_offs = DRA7XX_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
 648                        .context_offs = DRA7XX_RM_L4PER_GPIO2_CONTEXT_OFFSET,
 649                        .modulemode   = MODULEMODE_HWCTRL,
 650                },
 651        },
 652        .opt_clks       = gpio2_opt_clks,
 653        .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
 654        .dev_attr       = &gpio_dev_attr,
 655};
 656
 657/* gpio3 */
 658static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
 659        { .role = "dbclk", .clk = "gpio3_dbclk" },
 660};
 661
 662static struct omap_hwmod dra7xx_gpio3_hwmod = {
 663        .name           = "gpio3",
 664        .class          = &dra7xx_gpio_hwmod_class,
 665        .clkdm_name     = "l4per_clkdm",
 666        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 667        .main_clk       = "l3_iclk_div",
 668        .prcm = {
 669                .omap4 = {
 670                        .clkctrl_offs = DRA7XX_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
 671                        .context_offs = DRA7XX_RM_L4PER_GPIO3_CONTEXT_OFFSET,
 672                        .modulemode   = MODULEMODE_HWCTRL,
 673                },
 674        },
 675        .opt_clks       = gpio3_opt_clks,
 676        .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
 677        .dev_attr       = &gpio_dev_attr,
 678};
 679
 680/* gpio4 */
 681static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
 682        { .role = "dbclk", .clk = "gpio4_dbclk" },
 683};
 684
 685static struct omap_hwmod dra7xx_gpio4_hwmod = {
 686        .name           = "gpio4",
 687        .class          = &dra7xx_gpio_hwmod_class,
 688        .clkdm_name     = "l4per_clkdm",
 689        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 690        .main_clk       = "l3_iclk_div",
 691        .prcm = {
 692                .omap4 = {
 693                        .clkctrl_offs = DRA7XX_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
 694                        .context_offs = DRA7XX_RM_L4PER_GPIO4_CONTEXT_OFFSET,
 695                        .modulemode   = MODULEMODE_HWCTRL,
 696                },
 697        },
 698        .opt_clks       = gpio4_opt_clks,
 699        .opt_clks_cnt   = ARRAY_SIZE(gpio4_opt_clks),
 700        .dev_attr       = &gpio_dev_attr,
 701};
 702
 703/* gpio5 */
 704static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
 705        { .role = "dbclk", .clk = "gpio5_dbclk" },
 706};
 707
 708static struct omap_hwmod dra7xx_gpio5_hwmod = {
 709        .name           = "gpio5",
 710        .class          = &dra7xx_gpio_hwmod_class,
 711        .clkdm_name     = "l4per_clkdm",
 712        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 713        .main_clk       = "l3_iclk_div",
 714        .prcm = {
 715                .omap4 = {
 716                        .clkctrl_offs = DRA7XX_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
 717                        .context_offs = DRA7XX_RM_L4PER_GPIO5_CONTEXT_OFFSET,
 718                        .modulemode   = MODULEMODE_HWCTRL,
 719                },
 720        },
 721        .opt_clks       = gpio5_opt_clks,
 722        .opt_clks_cnt   = ARRAY_SIZE(gpio5_opt_clks),
 723        .dev_attr       = &gpio_dev_attr,
 724};
 725
 726/* gpio6 */
 727static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
 728        { .role = "dbclk", .clk = "gpio6_dbclk" },
 729};
 730
 731static struct omap_hwmod dra7xx_gpio6_hwmod = {
 732        .name           = "gpio6",
 733        .class          = &dra7xx_gpio_hwmod_class,
 734        .clkdm_name     = "l4per_clkdm",
 735        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 736        .main_clk       = "l3_iclk_div",
 737        .prcm = {
 738                .omap4 = {
 739                        .clkctrl_offs = DRA7XX_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
 740                        .context_offs = DRA7XX_RM_L4PER_GPIO6_CONTEXT_OFFSET,
 741                        .modulemode   = MODULEMODE_HWCTRL,
 742                },
 743        },
 744        .opt_clks       = gpio6_opt_clks,
 745        .opt_clks_cnt   = ARRAY_SIZE(gpio6_opt_clks),
 746        .dev_attr       = &gpio_dev_attr,
 747};
 748
 749/* gpio7 */
 750static struct omap_hwmod_opt_clk gpio7_opt_clks[] = {
 751        { .role = "dbclk", .clk = "gpio7_dbclk" },
 752};
 753
 754static struct omap_hwmod dra7xx_gpio7_hwmod = {
 755        .name           = "gpio7",
 756        .class          = &dra7xx_gpio_hwmod_class,
 757        .clkdm_name     = "l4per_clkdm",
 758        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 759        .main_clk       = "l3_iclk_div",
 760        .prcm = {
 761                .omap4 = {
 762                        .clkctrl_offs = DRA7XX_CM_L4PER_GPIO7_CLKCTRL_OFFSET,
 763                        .context_offs = DRA7XX_RM_L4PER_GPIO7_CONTEXT_OFFSET,
 764                        .modulemode   = MODULEMODE_HWCTRL,
 765                },
 766        },
 767        .opt_clks       = gpio7_opt_clks,
 768        .opt_clks_cnt   = ARRAY_SIZE(gpio7_opt_clks),
 769        .dev_attr       = &gpio_dev_attr,
 770};
 771
 772/* gpio8 */
 773static struct omap_hwmod_opt_clk gpio8_opt_clks[] = {
 774        { .role = "dbclk", .clk = "gpio8_dbclk" },
 775};
 776
 777static struct omap_hwmod dra7xx_gpio8_hwmod = {
 778        .name           = "gpio8",
 779        .class          = &dra7xx_gpio_hwmod_class,
 780        .clkdm_name     = "l4per_clkdm",
 781        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 782        .main_clk       = "l3_iclk_div",
 783        .prcm = {
 784                .omap4 = {
 785                        .clkctrl_offs = DRA7XX_CM_L4PER_GPIO8_CLKCTRL_OFFSET,
 786                        .context_offs = DRA7XX_RM_L4PER_GPIO8_CONTEXT_OFFSET,
 787                        .modulemode   = MODULEMODE_HWCTRL,
 788                },
 789        },
 790        .opt_clks       = gpio8_opt_clks,
 791        .opt_clks_cnt   = ARRAY_SIZE(gpio8_opt_clks),
 792        .dev_attr       = &gpio_dev_attr,
 793};
 794
 795/*
 796 * 'gpmc' class
 797 *
 798 */
 799
 800static struct omap_hwmod_class_sysconfig dra7xx_gpmc_sysc = {
 801        .rev_offs       = 0x0000,
 802        .sysc_offs      = 0x0010,
 803        .syss_offs      = 0x0014,
 804        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
 805                           SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 806        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 807                           SIDLE_SMART_WKUP),
 808        .sysc_fields    = &omap_hwmod_sysc_type1,
 809};
 810
 811static struct omap_hwmod_class dra7xx_gpmc_hwmod_class = {
 812        .name   = "gpmc",
 813        .sysc   = &dra7xx_gpmc_sysc,
 814};
 815
 816/* gpmc */
 817
 818static struct omap_hwmod dra7xx_gpmc_hwmod = {
 819        .name           = "gpmc",
 820        .class          = &dra7xx_gpmc_hwmod_class,
 821        .clkdm_name     = "l3main1_clkdm",
 822        .flags          = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET |
 823                           HWMOD_SWSUP_SIDLE),
 824        .main_clk       = "l3_iclk_div",
 825        .prcm = {
 826                .omap4 = {
 827                        .clkctrl_offs = DRA7XX_CM_L3MAIN1_GPMC_CLKCTRL_OFFSET,
 828                        .context_offs = DRA7XX_RM_L3MAIN1_GPMC_CONTEXT_OFFSET,
 829                        .modulemode   = MODULEMODE_HWCTRL,
 830                },
 831        },
 832};
 833
 834/*
 835 * 'hdq1w' class
 836 *
 837 */
 838
 839static struct omap_hwmod_class_sysconfig dra7xx_hdq1w_sysc = {
 840        .rev_offs       = 0x0000,
 841        .sysc_offs      = 0x0014,
 842        .syss_offs      = 0x0018,
 843        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
 844                           SYSS_HAS_RESET_STATUS),
 845        .sysc_fields    = &omap_hwmod_sysc_type1,
 846};
 847
 848static struct omap_hwmod_class dra7xx_hdq1w_hwmod_class = {
 849        .name   = "hdq1w",
 850        .sysc   = &dra7xx_hdq1w_sysc,
 851};
 852
 853/* hdq1w */
 854
 855static struct omap_hwmod dra7xx_hdq1w_hwmod = {
 856        .name           = "hdq1w",
 857        .class          = &dra7xx_hdq1w_hwmod_class,
 858        .clkdm_name     = "l4per_clkdm",
 859        .flags          = HWMOD_INIT_NO_RESET,
 860        .main_clk       = "func_12m_fclk",
 861        .prcm = {
 862                .omap4 = {
 863                        .clkctrl_offs = DRA7XX_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
 864                        .context_offs = DRA7XX_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
 865                        .modulemode   = MODULEMODE_SWCTRL,
 866                },
 867        },
 868};
 869
 870/*
 871 * 'i2c' class
 872 *
 873 */
 874
 875static struct omap_hwmod_class_sysconfig dra7xx_i2c_sysc = {
 876        .sysc_offs      = 0x0010,
 877        .syss_offs      = 0x0090,
 878        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 879                           SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
 880                           SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 881        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 882                           SIDLE_SMART_WKUP),
 883        .clockact       = CLOCKACT_TEST_ICLK,
 884        .sysc_fields    = &omap_hwmod_sysc_type1,
 885};
 886
 887static struct omap_hwmod_class dra7xx_i2c_hwmod_class = {
 888        .name   = "i2c",
 889        .sysc   = &dra7xx_i2c_sysc,
 890        .reset  = &omap_i2c_reset,
 891        .rev    = OMAP_I2C_IP_VERSION_2,
 892};
 893
 894/* i2c dev_attr */
 895static struct omap_i2c_dev_attr i2c_dev_attr = {
 896        .flags  = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
 897};
 898
 899/* i2c1 */
 900static struct omap_hwmod dra7xx_i2c1_hwmod = {
 901        .name           = "i2c1",
 902        .class          = &dra7xx_i2c_hwmod_class,
 903        .clkdm_name     = "l4per_clkdm",
 904        .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 905        .main_clk       = "func_96m_fclk",
 906        .prcm = {
 907                .omap4 = {
 908                        .clkctrl_offs = DRA7XX_CM_L4PER_I2C1_CLKCTRL_OFFSET,
 909                        .context_offs = DRA7XX_RM_L4PER_I2C1_CONTEXT_OFFSET,
 910                        .modulemode   = MODULEMODE_SWCTRL,
 911                },
 912        },
 913        .dev_attr       = &i2c_dev_attr,
 914};
 915
 916/* i2c2 */
 917static struct omap_hwmod dra7xx_i2c2_hwmod = {
 918        .name           = "i2c2",
 919        .class          = &dra7xx_i2c_hwmod_class,
 920        .clkdm_name     = "l4per_clkdm",
 921        .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 922        .main_clk       = "func_96m_fclk",
 923        .prcm = {
 924                .omap4 = {
 925                        .clkctrl_offs = DRA7XX_CM_L4PER_I2C2_CLKCTRL_OFFSET,
 926                        .context_offs = DRA7XX_RM_L4PER_I2C2_CONTEXT_OFFSET,
 927                        .modulemode   = MODULEMODE_SWCTRL,
 928                },
 929        },
 930        .dev_attr       = &i2c_dev_attr,
 931};
 932
 933/* i2c3 */
 934static struct omap_hwmod dra7xx_i2c3_hwmod = {
 935        .name           = "i2c3",
 936        .class          = &dra7xx_i2c_hwmod_class,
 937        .clkdm_name     = "l4per_clkdm",
 938        .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 939        .main_clk       = "func_96m_fclk",
 940        .prcm = {
 941                .omap4 = {
 942                        .clkctrl_offs = DRA7XX_CM_L4PER_I2C3_CLKCTRL_OFFSET,
 943                        .context_offs = DRA7XX_RM_L4PER_I2C3_CONTEXT_OFFSET,
 944                        .modulemode   = MODULEMODE_SWCTRL,
 945                },
 946        },
 947        .dev_attr       = &i2c_dev_attr,
 948};
 949
 950/* i2c4 */
 951static struct omap_hwmod dra7xx_i2c4_hwmod = {
 952        .name           = "i2c4",
 953        .class          = &dra7xx_i2c_hwmod_class,
 954        .clkdm_name     = "l4per_clkdm",
 955        .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 956        .main_clk       = "func_96m_fclk",
 957        .prcm = {
 958                .omap4 = {
 959                        .clkctrl_offs = DRA7XX_CM_L4PER_I2C4_CLKCTRL_OFFSET,
 960                        .context_offs = DRA7XX_RM_L4PER_I2C4_CONTEXT_OFFSET,
 961                        .modulemode   = MODULEMODE_SWCTRL,
 962                },
 963        },
 964        .dev_attr       = &i2c_dev_attr,
 965};
 966
 967/* i2c5 */
 968static struct omap_hwmod dra7xx_i2c5_hwmod = {
 969        .name           = "i2c5",
 970        .class          = &dra7xx_i2c_hwmod_class,
 971        .clkdm_name     = "ipu_clkdm",
 972        .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 973        .main_clk       = "func_96m_fclk",
 974        .prcm = {
 975                .omap4 = {
 976                        .clkctrl_offs = DRA7XX_CM_IPU_I2C5_CLKCTRL_OFFSET,
 977                        .context_offs = DRA7XX_RM_IPU_I2C5_CONTEXT_OFFSET,
 978                        .modulemode   = MODULEMODE_SWCTRL,
 979                },
 980        },
 981        .dev_attr       = &i2c_dev_attr,
 982};
 983
 984/*
 985 * 'mailbox' class
 986 *
 987 */
 988
 989static struct omap_hwmod_class_sysconfig dra7xx_mailbox_sysc = {
 990        .rev_offs       = 0x0000,
 991        .sysc_offs      = 0x0010,
 992        .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
 993                           SYSC_HAS_SOFTRESET),
 994        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 995        .sysc_fields    = &omap_hwmod_sysc_type2,
 996};
 997
 998static struct omap_hwmod_class dra7xx_mailbox_hwmod_class = {
 999        .name   = "mailbox",
1000        .sysc   = &dra7xx_mailbox_sysc,
1001};
1002
1003/* mailbox1 */
1004static struct omap_hwmod dra7xx_mailbox1_hwmod = {
1005        .name           = "mailbox1",
1006        .class          = &dra7xx_mailbox_hwmod_class,
1007        .clkdm_name     = "l4cfg_clkdm",
1008        .prcm = {
1009                .omap4 = {
1010                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX1_CLKCTRL_OFFSET,
1011                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX1_CONTEXT_OFFSET,
1012                },
1013        },
1014};
1015
1016/* mailbox2 */
1017static struct omap_hwmod dra7xx_mailbox2_hwmod = {
1018        .name           = "mailbox2",
1019        .class          = &dra7xx_mailbox_hwmod_class,
1020        .clkdm_name     = "l4cfg_clkdm",
1021        .prcm = {
1022                .omap4 = {
1023                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX2_CLKCTRL_OFFSET,
1024                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX2_CONTEXT_OFFSET,
1025                },
1026        },
1027};
1028
1029/* mailbox3 */
1030static struct omap_hwmod dra7xx_mailbox3_hwmod = {
1031        .name           = "mailbox3",
1032        .class          = &dra7xx_mailbox_hwmod_class,
1033        .clkdm_name     = "l4cfg_clkdm",
1034        .prcm = {
1035                .omap4 = {
1036                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX3_CLKCTRL_OFFSET,
1037                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX3_CONTEXT_OFFSET,
1038                },
1039        },
1040};
1041
1042/* mailbox4 */
1043static struct omap_hwmod dra7xx_mailbox4_hwmod = {
1044        .name           = "mailbox4",
1045        .class          = &dra7xx_mailbox_hwmod_class,
1046        .clkdm_name     = "l4cfg_clkdm",
1047        .prcm = {
1048                .omap4 = {
1049                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX4_CLKCTRL_OFFSET,
1050                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX4_CONTEXT_OFFSET,
1051                },
1052        },
1053};
1054
1055/* mailbox5 */
1056static struct omap_hwmod dra7xx_mailbox5_hwmod = {
1057        .name           = "mailbox5",
1058        .class          = &dra7xx_mailbox_hwmod_class,
1059        .clkdm_name     = "l4cfg_clkdm",
1060        .prcm = {
1061                .omap4 = {
1062                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX5_CLKCTRL_OFFSET,
1063                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX5_CONTEXT_OFFSET,
1064                },
1065        },
1066};
1067
1068/* mailbox6 */
1069static struct omap_hwmod dra7xx_mailbox6_hwmod = {
1070        .name           = "mailbox6",
1071        .class          = &dra7xx_mailbox_hwmod_class,
1072        .clkdm_name     = "l4cfg_clkdm",
1073        .prcm = {
1074                .omap4 = {
1075                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX6_CLKCTRL_OFFSET,
1076                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX6_CONTEXT_OFFSET,
1077                },
1078        },
1079};
1080
1081/* mailbox7 */
1082static struct omap_hwmod dra7xx_mailbox7_hwmod = {
1083        .name           = "mailbox7",
1084        .class          = &dra7xx_mailbox_hwmod_class,
1085        .clkdm_name     = "l4cfg_clkdm",
1086        .prcm = {
1087                .omap4 = {
1088                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX7_CLKCTRL_OFFSET,
1089                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX7_CONTEXT_OFFSET,
1090                },
1091        },
1092};
1093
1094/* mailbox8 */
1095static struct omap_hwmod dra7xx_mailbox8_hwmod = {
1096        .name           = "mailbox8",
1097        .class          = &dra7xx_mailbox_hwmod_class,
1098        .clkdm_name     = "l4cfg_clkdm",
1099        .prcm = {
1100                .omap4 = {
1101                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX8_CLKCTRL_OFFSET,
1102                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX8_CONTEXT_OFFSET,
1103                },
1104        },
1105};
1106
1107/* mailbox9 */
1108static struct omap_hwmod dra7xx_mailbox9_hwmod = {
1109        .name           = "mailbox9",
1110        .class          = &dra7xx_mailbox_hwmod_class,
1111        .clkdm_name     = "l4cfg_clkdm",
1112        .prcm = {
1113                .omap4 = {
1114                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX9_CLKCTRL_OFFSET,
1115                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX9_CONTEXT_OFFSET,
1116                },
1117        },
1118};
1119
1120/* mailbox10 */
1121static struct omap_hwmod dra7xx_mailbox10_hwmod = {
1122        .name           = "mailbox10",
1123        .class          = &dra7xx_mailbox_hwmod_class,
1124        .clkdm_name     = "l4cfg_clkdm",
1125        .prcm = {
1126                .omap4 = {
1127                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX10_CLKCTRL_OFFSET,
1128                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX10_CONTEXT_OFFSET,
1129                },
1130        },
1131};
1132
1133/* mailbox11 */
1134static struct omap_hwmod dra7xx_mailbox11_hwmod = {
1135        .name           = "mailbox11",
1136        .class          = &dra7xx_mailbox_hwmod_class,
1137        .clkdm_name     = "l4cfg_clkdm",
1138        .prcm = {
1139                .omap4 = {
1140                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX11_CLKCTRL_OFFSET,
1141                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX11_CONTEXT_OFFSET,
1142                },
1143        },
1144};
1145
1146/* mailbox12 */
1147static struct omap_hwmod dra7xx_mailbox12_hwmod = {
1148        .name           = "mailbox12",
1149        .class          = &dra7xx_mailbox_hwmod_class,
1150        .clkdm_name     = "l4cfg_clkdm",
1151        .prcm = {
1152                .omap4 = {
1153                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX12_CLKCTRL_OFFSET,
1154                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX12_CONTEXT_OFFSET,
1155                },
1156        },
1157};
1158
1159/* mailbox13 */
1160static struct omap_hwmod dra7xx_mailbox13_hwmod = {
1161        .name           = "mailbox13",
1162        .class          = &dra7xx_mailbox_hwmod_class,
1163        .clkdm_name     = "l4cfg_clkdm",
1164        .prcm = {
1165                .omap4 = {
1166                        .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX13_CLKCTRL_OFFSET,
1167                        .context_offs = DRA7XX_RM_L4CFG_MAILBOX13_CONTEXT_OFFSET,
1168                },
1169        },
1170};
1171
1172/*
1173 * 'mcspi' class
1174 *
1175 */
1176
1177static struct omap_hwmod_class_sysconfig dra7xx_mcspi_sysc = {
1178        .rev_offs       = 0x0000,
1179        .sysc_offs      = 0x0010,
1180        .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1181                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1182        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1183                           SIDLE_SMART_WKUP),
1184        .sysc_fields    = &omap_hwmod_sysc_type2,
1185};
1186
1187static struct omap_hwmod_class dra7xx_mcspi_hwmod_class = {
1188        .name   = "mcspi",
1189        .sysc   = &dra7xx_mcspi_sysc,
1190        .rev    = OMAP4_MCSPI_REV,
1191};
1192
1193/* mcspi1 */
1194/* mcspi1 dev_attr */
1195static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
1196        .num_chipselect = 4,
1197};
1198
1199static struct omap_hwmod dra7xx_mcspi1_hwmod = {
1200        .name           = "mcspi1",
1201        .class          = &dra7xx_mcspi_hwmod_class,
1202        .clkdm_name     = "l4per_clkdm",
1203        .main_clk       = "func_48m_fclk",
1204        .prcm = {
1205                .omap4 = {
1206                        .clkctrl_offs = DRA7XX_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
1207                        .context_offs = DRA7XX_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
1208                        .modulemode   = MODULEMODE_SWCTRL,
1209                },
1210        },
1211        .dev_attr       = &mcspi1_dev_attr,
1212};
1213
1214/* mcspi2 */
1215/* mcspi2 dev_attr */
1216static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
1217        .num_chipselect = 2,
1218};
1219
1220static struct omap_hwmod dra7xx_mcspi2_hwmod = {
1221        .name           = "mcspi2",
1222        .class          = &dra7xx_mcspi_hwmod_class,
1223        .clkdm_name     = "l4per_clkdm",
1224        .main_clk       = "func_48m_fclk",
1225        .prcm = {
1226                .omap4 = {
1227                        .clkctrl_offs = DRA7XX_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
1228                        .context_offs = DRA7XX_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
1229                        .modulemode   = MODULEMODE_SWCTRL,
1230                },
1231        },
1232        .dev_attr       = &mcspi2_dev_attr,
1233};
1234
1235/* mcspi3 */
1236/* mcspi3 dev_attr */
1237static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
1238        .num_chipselect = 2,
1239};
1240
1241static struct omap_hwmod dra7xx_mcspi3_hwmod = {
1242        .name           = "mcspi3",
1243        .class          = &dra7xx_mcspi_hwmod_class,
1244        .clkdm_name     = "l4per_clkdm",
1245        .main_clk       = "func_48m_fclk",
1246        .prcm = {
1247                .omap4 = {
1248                        .clkctrl_offs = DRA7XX_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
1249                        .context_offs = DRA7XX_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
1250                        .modulemode   = MODULEMODE_SWCTRL,
1251                },
1252        },
1253        .dev_attr       = &mcspi3_dev_attr,
1254};
1255
1256/* mcspi4 */
1257/* mcspi4 dev_attr */
1258static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
1259        .num_chipselect = 1,
1260};
1261
1262static struct omap_hwmod dra7xx_mcspi4_hwmod = {
1263        .name           = "mcspi4",
1264        .class          = &dra7xx_mcspi_hwmod_class,
1265        .clkdm_name     = "l4per_clkdm",
1266        .main_clk       = "func_48m_fclk",
1267        .prcm = {
1268                .omap4 = {
1269                        .clkctrl_offs = DRA7XX_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
1270                        .context_offs = DRA7XX_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
1271                        .modulemode   = MODULEMODE_SWCTRL,
1272                },
1273        },
1274        .dev_attr       = &mcspi4_dev_attr,
1275};
1276
1277/*
1278 * 'mmc' class
1279 *
1280 */
1281
1282static struct omap_hwmod_class_sysconfig dra7xx_mmc_sysc = {
1283        .rev_offs       = 0x0000,
1284        .sysc_offs      = 0x0010,
1285        .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
1286                           SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1287                           SYSC_HAS_SOFTRESET),
1288        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1289                           SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1290                           MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1291        .sysc_fields    = &omap_hwmod_sysc_type2,
1292};
1293
1294static struct omap_hwmod_class dra7xx_mmc_hwmod_class = {
1295        .name   = "mmc",
1296        .sysc   = &dra7xx_mmc_sysc,
1297};
1298
1299/* mmc1 */
1300static struct omap_hwmod_opt_clk mmc1_opt_clks[] = {
1301        { .role = "clk32k", .clk = "mmc1_clk32k" },
1302};
1303
1304/* mmc1 dev_attr */
1305static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
1306        .flags  = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1307};
1308
1309static struct omap_hwmod dra7xx_mmc1_hwmod = {
1310        .name           = "mmc1",
1311        .class          = &dra7xx_mmc_hwmod_class,
1312        .clkdm_name     = "l3init_clkdm",
1313        .main_clk       = "mmc1_fclk_div",
1314        .prcm = {
1315                .omap4 = {
1316                        .clkctrl_offs = DRA7XX_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
1317                        .context_offs = DRA7XX_RM_L3INIT_MMC1_CONTEXT_OFFSET,
1318                        .modulemode   = MODULEMODE_SWCTRL,
1319                },
1320        },
1321        .opt_clks       = mmc1_opt_clks,
1322        .opt_clks_cnt   = ARRAY_SIZE(mmc1_opt_clks),
1323        .dev_attr       = &mmc1_dev_attr,
1324};
1325
1326/* mmc2 */
1327static struct omap_hwmod_opt_clk mmc2_opt_clks[] = {
1328        { .role = "clk32k", .clk = "mmc2_clk32k" },
1329};
1330
1331static struct omap_hwmod dra7xx_mmc2_hwmod = {
1332        .name           = "mmc2",
1333        .class          = &dra7xx_mmc_hwmod_class,
1334        .clkdm_name     = "l3init_clkdm",
1335        .main_clk       = "mmc2_fclk_div",
1336        .prcm = {
1337                .omap4 = {
1338                        .clkctrl_offs = DRA7XX_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
1339                        .context_offs = DRA7XX_RM_L3INIT_MMC2_CONTEXT_OFFSET,
1340                        .modulemode   = MODULEMODE_SWCTRL,
1341                },
1342        },
1343        .opt_clks       = mmc2_opt_clks,
1344        .opt_clks_cnt   = ARRAY_SIZE(mmc2_opt_clks),
1345};
1346
1347/* mmc3 */
1348static struct omap_hwmod_opt_clk mmc3_opt_clks[] = {
1349        { .role = "clk32k", .clk = "mmc3_clk32k" },
1350};
1351
1352static struct omap_hwmod dra7xx_mmc3_hwmod = {
1353        .name           = "mmc3",
1354        .class          = &dra7xx_mmc_hwmod_class,
1355        .clkdm_name     = "l4per_clkdm",
1356        .main_clk       = "mmc3_gfclk_div",
1357        .prcm = {
1358                .omap4 = {
1359                        .clkctrl_offs = DRA7XX_CM_L4PER_MMC3_CLKCTRL_OFFSET,
1360                        .context_offs = DRA7XX_RM_L4PER_MMC3_CONTEXT_OFFSET,
1361                        .modulemode   = MODULEMODE_SWCTRL,
1362                },
1363        },
1364        .opt_clks       = mmc3_opt_clks,
1365        .opt_clks_cnt   = ARRAY_SIZE(mmc3_opt_clks),
1366};
1367
1368/* mmc4 */
1369static struct omap_hwmod_opt_clk mmc4_opt_clks[] = {
1370        { .role = "clk32k", .clk = "mmc4_clk32k" },
1371};
1372
1373static struct omap_hwmod dra7xx_mmc4_hwmod = {
1374        .name           = "mmc4",
1375        .class          = &dra7xx_mmc_hwmod_class,
1376        .clkdm_name     = "l4per_clkdm",
1377        .main_clk       = "mmc4_gfclk_div",
1378        .prcm = {
1379                .omap4 = {
1380                        .clkctrl_offs = DRA7XX_CM_L4PER_MMC4_CLKCTRL_OFFSET,
1381                        .context_offs = DRA7XX_RM_L4PER_MMC4_CONTEXT_OFFSET,
1382                        .modulemode   = MODULEMODE_SWCTRL,
1383                },
1384        },
1385        .opt_clks       = mmc4_opt_clks,
1386        .opt_clks_cnt   = ARRAY_SIZE(mmc4_opt_clks),
1387};
1388
1389/*
1390 * 'mpu' class
1391 *
1392 */
1393
1394static struct omap_hwmod_class dra7xx_mpu_hwmod_class = {
1395        .name   = "mpu",
1396};
1397
1398/* mpu */
1399static struct omap_hwmod dra7xx_mpu_hwmod = {
1400        .name           = "mpu",
1401        .class          = &dra7xx_mpu_hwmod_class,
1402        .clkdm_name     = "mpu_clkdm",
1403        .flags          = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1404        .main_clk       = "dpll_mpu_m2_ck",
1405        .prcm = {
1406                .omap4 = {
1407                        .clkctrl_offs = DRA7XX_CM_MPU_MPU_CLKCTRL_OFFSET,
1408                        .context_offs = DRA7XX_RM_MPU_MPU_CONTEXT_OFFSET,
1409                },
1410        },
1411};
1412
1413/*
1414 * 'ocp2scp' class
1415 *
1416 */
1417
1418static struct omap_hwmod_class_sysconfig dra7xx_ocp2scp_sysc = {
1419        .rev_offs       = 0x0000,
1420        .sysc_offs      = 0x0010,
1421        .syss_offs      = 0x0014,
1422        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1423                           SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1424        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1425                           SIDLE_SMART_WKUP),
1426        .sysc_fields    = &omap_hwmod_sysc_type1,
1427};
1428
1429static struct omap_hwmod_class dra7xx_ocp2scp_hwmod_class = {
1430        .name   = "ocp2scp",
1431        .sysc   = &dra7xx_ocp2scp_sysc,
1432};
1433
1434/* ocp2scp1 */
1435static struct omap_hwmod dra7xx_ocp2scp1_hwmod = {
1436        .name           = "ocp2scp1",
1437        .class          = &dra7xx_ocp2scp_hwmod_class,
1438        .clkdm_name     = "l3init_clkdm",
1439        .main_clk       = "l4_root_clk_div",
1440        .prcm = {
1441                .omap4 = {
1442                        .clkctrl_offs = DRA7XX_CM_L3INIT_OCP2SCP1_CLKCTRL_OFFSET,
1443                        .context_offs = DRA7XX_RM_L3INIT_OCP2SCP1_CONTEXT_OFFSET,
1444                        .modulemode   = MODULEMODE_HWCTRL,
1445                },
1446        },
1447};
1448
1449/* ocp2scp3 */
1450static struct omap_hwmod dra7xx_ocp2scp3_hwmod = {
1451        .name           = "ocp2scp3",
1452        .class          = &dra7xx_ocp2scp_hwmod_class,
1453        .clkdm_name     = "l3init_clkdm",
1454        .main_clk       = "l4_root_clk_div",
1455        .prcm = {
1456                .omap4 = {
1457                        .clkctrl_offs = DRA7XX_CM_L3INIT_OCP2SCP3_CLKCTRL_OFFSET,
1458                        .context_offs = DRA7XX_RM_L3INIT_OCP2SCP3_CONTEXT_OFFSET,
1459                        .modulemode   = MODULEMODE_HWCTRL,
1460                },
1461        },
1462};
1463
1464/*
1465 * 'PCIE' class
1466 *
1467 */
1468
1469static struct omap_hwmod_class dra7xx_pciess_hwmod_class = {
1470        .name   = "pcie",
1471};
1472
1473/* pcie1 */
1474static struct omap_hwmod dra7xx_pciess1_hwmod = {
1475        .name           = "pcie1",
1476        .class          = &dra7xx_pciess_hwmod_class,
1477        .clkdm_name     = "pcie_clkdm",
1478        .main_clk       = "l4_root_clk_div",
1479        .prcm = {
1480                .omap4 = {
1481                        .clkctrl_offs = DRA7XX_CM_L3INIT_PCIESS1_CLKCTRL_OFFSET,
1482                        .context_offs = DRA7XX_RM_L3INIT_PCIESS1_CONTEXT_OFFSET,
1483                        .modulemode   = MODULEMODE_SWCTRL,
1484                },
1485        },
1486};
1487
1488/* pcie2 */
1489static struct omap_hwmod dra7xx_pciess2_hwmod = {
1490        .name           = "pcie2",
1491        .class          = &dra7xx_pciess_hwmod_class,
1492        .clkdm_name     = "pcie_clkdm",
1493        .main_clk       = "l4_root_clk_div",
1494        .prcm = {
1495                .omap4 = {
1496                        .clkctrl_offs = DRA7XX_CM_L3INIT_PCIESS2_CLKCTRL_OFFSET,
1497                        .context_offs = DRA7XX_RM_L3INIT_PCIESS2_CONTEXT_OFFSET,
1498                        .modulemode   = MODULEMODE_SWCTRL,
1499                },
1500        },
1501};
1502
1503/*
1504 * 'qspi' class
1505 *
1506 */
1507
1508static struct omap_hwmod_class_sysconfig dra7xx_qspi_sysc = {
1509        .sysc_offs      = 0x0010,
1510        .sysc_flags     = SYSC_HAS_SIDLEMODE,
1511        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1512                           SIDLE_SMART_WKUP),
1513        .sysc_fields    = &omap_hwmod_sysc_type2,
1514};
1515
1516static struct omap_hwmod_class dra7xx_qspi_hwmod_class = {
1517        .name   = "qspi",
1518        .sysc   = &dra7xx_qspi_sysc,
1519};
1520
1521/* qspi */
1522static struct omap_hwmod dra7xx_qspi_hwmod = {
1523        .name           = "qspi",
1524        .class          = &dra7xx_qspi_hwmod_class,
1525        .clkdm_name     = "l4per2_clkdm",
1526        .main_clk       = "qspi_gfclk_div",
1527        .prcm = {
1528                .omap4 = {
1529                        .clkctrl_offs = DRA7XX_CM_L4PER2_QSPI_CLKCTRL_OFFSET,
1530                        .context_offs = DRA7XX_RM_L4PER2_QSPI_CONTEXT_OFFSET,
1531                        .modulemode   = MODULEMODE_SWCTRL,
1532                },
1533        },
1534};
1535
1536/*
1537 * 'rtcss' class
1538 *
1539 */
1540static struct omap_hwmod_class_sysconfig dra7xx_rtcss_sysc = {
1541        .sysc_offs      = 0x0078,
1542        .sysc_flags     = SYSC_HAS_SIDLEMODE,
1543        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1544                           SIDLE_SMART_WKUP),
1545        .sysc_fields    = &omap_hwmod_sysc_type3,
1546};
1547
1548static struct omap_hwmod_class dra7xx_rtcss_hwmod_class = {
1549        .name   = "rtcss",
1550        .sysc   = &dra7xx_rtcss_sysc,
1551};
1552
1553/* rtcss */
1554static struct omap_hwmod dra7xx_rtcss_hwmod = {
1555        .name           = "rtcss",
1556        .class          = &dra7xx_rtcss_hwmod_class,
1557        .clkdm_name     = "rtc_clkdm",
1558        .main_clk       = "sys_32k_ck",
1559        .prcm = {
1560                .omap4 = {
1561                        .clkctrl_offs = DRA7XX_CM_RTC_RTCSS_CLKCTRL_OFFSET,
1562                        .context_offs = DRA7XX_RM_RTC_RTCSS_CONTEXT_OFFSET,
1563                        .modulemode   = MODULEMODE_SWCTRL,
1564                },
1565        },
1566};
1567
1568/*
1569 * 'sata' class
1570 *
1571 */
1572
1573static struct omap_hwmod_class_sysconfig dra7xx_sata_sysc = {
1574        .sysc_offs      = 0x0000,
1575        .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1576        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1577                           SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1578                           MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1579        .sysc_fields    = &omap_hwmod_sysc_type2,
1580};
1581
1582static struct omap_hwmod_class dra7xx_sata_hwmod_class = {
1583        .name   = "sata",
1584        .sysc   = &dra7xx_sata_sysc,
1585};
1586
1587/* sata */
1588
1589static struct omap_hwmod dra7xx_sata_hwmod = {
1590        .name           = "sata",
1591        .class          = &dra7xx_sata_hwmod_class,
1592        .clkdm_name     = "l3init_clkdm",
1593        .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
1594        .main_clk       = "func_48m_fclk",
1595        .mpu_rt_idx     = 1,
1596        .prcm = {
1597                .omap4 = {
1598                        .clkctrl_offs = DRA7XX_CM_L3INIT_SATA_CLKCTRL_OFFSET,
1599                        .context_offs = DRA7XX_RM_L3INIT_SATA_CONTEXT_OFFSET,
1600                        .modulemode   = MODULEMODE_SWCTRL,
1601                },
1602        },
1603};
1604
1605/*
1606 * 'smartreflex' class
1607 *
1608 */
1609
1610/* The IP is not compliant to type1 / type2 scheme */
1611static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
1612        .sidle_shift    = 24,
1613        .enwkup_shift   = 26,
1614};
1615
1616static struct omap_hwmod_class_sysconfig dra7xx_smartreflex_sysc = {
1617        .sysc_offs      = 0x0038,
1618        .sysc_flags     = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
1619        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1620                           SIDLE_SMART_WKUP),
1621        .sysc_fields    = &omap_hwmod_sysc_type_smartreflex,
1622};
1623
1624static struct omap_hwmod_class dra7xx_smartreflex_hwmod_class = {
1625        .name   = "smartreflex",
1626        .sysc   = &dra7xx_smartreflex_sysc,
1627        .rev    = 2,
1628};
1629
1630/* smartreflex_core */
1631/* smartreflex_core dev_attr */
1632static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
1633        .sensor_voltdm_name     = "core",
1634};
1635
1636static struct omap_hwmod dra7xx_smartreflex_core_hwmod = {
1637        .name           = "smartreflex_core",
1638        .class          = &dra7xx_smartreflex_hwmod_class,
1639        .clkdm_name     = "coreaon_clkdm",
1640        .main_clk       = "wkupaon_iclk_mux",
1641        .prcm = {
1642                .omap4 = {
1643                        .clkctrl_offs = DRA7XX_CM_COREAON_SMARTREFLEX_CORE_CLKCTRL_OFFSET,
1644                        .context_offs = DRA7XX_RM_COREAON_SMARTREFLEX_CORE_CONTEXT_OFFSET,
1645                        .modulemode   = MODULEMODE_SWCTRL,
1646                },
1647        },
1648        .dev_attr       = &smartreflex_core_dev_attr,
1649};
1650
1651/* smartreflex_mpu */
1652/* smartreflex_mpu dev_attr */
1653static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
1654        .sensor_voltdm_name     = "mpu",
1655};
1656
1657static struct omap_hwmod dra7xx_smartreflex_mpu_hwmod = {
1658        .name           = "smartreflex_mpu",
1659        .class          = &dra7xx_smartreflex_hwmod_class,
1660        .clkdm_name     = "coreaon_clkdm",
1661        .main_clk       = "wkupaon_iclk_mux",
1662        .prcm = {
1663                .omap4 = {
1664                        .clkctrl_offs = DRA7XX_CM_COREAON_SMARTREFLEX_MPU_CLKCTRL_OFFSET,
1665                        .context_offs = DRA7XX_RM_COREAON_SMARTREFLEX_MPU_CONTEXT_OFFSET,
1666                        .modulemode   = MODULEMODE_SWCTRL,
1667                },
1668        },
1669        .dev_attr       = &smartreflex_mpu_dev_attr,
1670};
1671
1672/*
1673 * 'spinlock' class
1674 *
1675 */
1676
1677static struct omap_hwmod_class_sysconfig dra7xx_spinlock_sysc = {
1678        .rev_offs       = 0x0000,
1679        .sysc_offs      = 0x0010,
1680        .syss_offs      = 0x0014,
1681        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1682                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1683                           SYSS_HAS_RESET_STATUS),
1684        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1685        .sysc_fields    = &omap_hwmod_sysc_type1,
1686};
1687
1688static struct omap_hwmod_class dra7xx_spinlock_hwmod_class = {
1689        .name   = "spinlock",
1690        .sysc   = &dra7xx_spinlock_sysc,
1691};
1692
1693/* spinlock */
1694static struct omap_hwmod dra7xx_spinlock_hwmod = {
1695        .name           = "spinlock",
1696        .class          = &dra7xx_spinlock_hwmod_class,
1697        .clkdm_name     = "l4cfg_clkdm",
1698        .main_clk       = "l3_iclk_div",
1699        .prcm = {
1700                .omap4 = {
1701                        .clkctrl_offs = DRA7XX_CM_L4CFG_SPINLOCK_CLKCTRL_OFFSET,
1702                        .context_offs = DRA7XX_RM_L4CFG_SPINLOCK_CONTEXT_OFFSET,
1703                },
1704        },
1705};
1706
1707/*
1708 * 'timer' class
1709 *
1710 * This class contains several variants: ['timer_1ms', 'timer_secure',
1711 * 'timer']
1712 */
1713
1714static struct omap_hwmod_class_sysconfig dra7xx_timer_1ms_sysc = {
1715        .rev_offs       = 0x0000,
1716        .sysc_offs      = 0x0010,
1717        .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1718                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1719        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1720                           SIDLE_SMART_WKUP),
1721        .sysc_fields    = &omap_hwmod_sysc_type2,
1722};
1723
1724static struct omap_hwmod_class dra7xx_timer_1ms_hwmod_class = {
1725        .name   = "timer",
1726        .sysc   = &dra7xx_timer_1ms_sysc,
1727};
1728
1729static struct omap_hwmod_class_sysconfig dra7xx_timer_sysc = {
1730        .rev_offs       = 0x0000,
1731        .sysc_offs      = 0x0010,
1732        .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1733                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1734        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1735                           SIDLE_SMART_WKUP),
1736        .sysc_fields    = &omap_hwmod_sysc_type2,
1737};
1738
1739static struct omap_hwmod_class dra7xx_timer_hwmod_class = {
1740        .name   = "timer",
1741        .sysc   = &dra7xx_timer_sysc,
1742};
1743
1744/* timer1 */
1745static struct omap_hwmod dra7xx_timer1_hwmod = {
1746        .name           = "timer1",
1747        .class          = &dra7xx_timer_1ms_hwmod_class,
1748        .clkdm_name     = "wkupaon_clkdm",
1749        .main_clk       = "timer1_gfclk_mux",
1750        .prcm = {
1751                .omap4 = {
1752                        .clkctrl_offs = DRA7XX_CM_WKUPAON_TIMER1_CLKCTRL_OFFSET,
1753                        .context_offs = DRA7XX_RM_WKUPAON_TIMER1_CONTEXT_OFFSET,
1754                        .modulemode   = MODULEMODE_SWCTRL,
1755                },
1756        },
1757};
1758
1759/* timer2 */
1760static struct omap_hwmod dra7xx_timer2_hwmod = {
1761        .name           = "timer2",
1762        .class          = &dra7xx_timer_1ms_hwmod_class,
1763        .clkdm_name     = "l4per_clkdm",
1764        .main_clk       = "timer2_gfclk_mux",
1765        .prcm = {
1766                .omap4 = {
1767                        .clkctrl_offs = DRA7XX_CM_L4PER_TIMER2_CLKCTRL_OFFSET,
1768                        .context_offs = DRA7XX_RM_L4PER_TIMER2_CONTEXT_OFFSET,
1769                        .modulemode   = MODULEMODE_SWCTRL,
1770                },
1771        },
1772};
1773
1774/* timer3 */
1775static struct omap_hwmod dra7xx_timer3_hwmod = {
1776        .name           = "timer3",
1777        .class          = &dra7xx_timer_hwmod_class,
1778        .clkdm_name     = "l4per_clkdm",
1779        .main_clk       = "timer3_gfclk_mux",
1780        .prcm = {
1781                .omap4 = {
1782                        .clkctrl_offs = DRA7XX_CM_L4PER_TIMER3_CLKCTRL_OFFSET,
1783                        .context_offs = DRA7XX_RM_L4PER_TIMER3_CONTEXT_OFFSET,
1784                        .modulemode   = MODULEMODE_SWCTRL,
1785                },
1786        },
1787};
1788
1789/* timer4 */
1790static struct omap_hwmod dra7xx_timer4_hwmod = {
1791        .name           = "timer4",
1792        .class          = &dra7xx_timer_hwmod_class,
1793        .clkdm_name     = "l4per_clkdm",
1794        .main_clk       = "timer4_gfclk_mux",
1795        .prcm = {
1796                .omap4 = {
1797                        .clkctrl_offs = DRA7XX_CM_L4PER_TIMER4_CLKCTRL_OFFSET,
1798                        .context_offs = DRA7XX_RM_L4PER_TIMER4_CONTEXT_OFFSET,
1799                        .modulemode   = MODULEMODE_SWCTRL,
1800                },
1801        },
1802};
1803
1804/* timer5 */
1805static struct omap_hwmod dra7xx_timer5_hwmod = {
1806        .name           = "timer5",
1807        .class          = &dra7xx_timer_hwmod_class,
1808        .clkdm_name     = "ipu_clkdm",
1809        .main_clk       = "timer5_gfclk_mux",
1810        .prcm = {
1811                .omap4 = {
1812                        .clkctrl_offs = DRA7XX_CM_IPU_TIMER5_CLKCTRL_OFFSET,
1813                        .context_offs = DRA7XX_RM_IPU_TIMER5_CONTEXT_OFFSET,
1814                        .modulemode   = MODULEMODE_SWCTRL,
1815                },
1816        },
1817};
1818
1819/* timer6 */
1820static struct omap_hwmod dra7xx_timer6_hwmod = {
1821        .name           = "timer6",
1822        .class          = &dra7xx_timer_hwmod_class,
1823        .clkdm_name     = "ipu_clkdm",
1824        .main_clk       = "timer6_gfclk_mux",
1825        .prcm = {
1826                .omap4 = {
1827                        .clkctrl_offs = DRA7XX_CM_IPU_TIMER6_CLKCTRL_OFFSET,
1828                        .context_offs = DRA7XX_RM_IPU_TIMER6_CONTEXT_OFFSET,
1829                        .modulemode   = MODULEMODE_SWCTRL,
1830                },
1831        },
1832};
1833
1834/* timer7 */
1835static struct omap_hwmod dra7xx_timer7_hwmod = {
1836        .name           = "timer7",
1837        .class          = &dra7xx_timer_hwmod_class,
1838        .clkdm_name     = "ipu_clkdm",
1839        .main_clk       = "timer7_gfclk_mux",
1840        .prcm = {
1841                .omap4 = {
1842                        .clkctrl_offs = DRA7XX_CM_IPU_TIMER7_CLKCTRL_OFFSET,
1843                        .context_offs = DRA7XX_RM_IPU_TIMER7_CONTEXT_OFFSET,
1844                        .modulemode   = MODULEMODE_SWCTRL,
1845                },
1846        },
1847};
1848
1849/* timer8 */
1850static struct omap_hwmod dra7xx_timer8_hwmod = {
1851        .name           = "timer8",
1852        .class          = &dra7xx_timer_hwmod_class,
1853        .clkdm_name     = "ipu_clkdm",
1854        .main_clk       = "timer8_gfclk_mux",
1855        .prcm = {
1856                .omap4 = {
1857                        .clkctrl_offs = DRA7XX_CM_IPU_TIMER8_CLKCTRL_OFFSET,
1858                        .context_offs = DRA7XX_RM_IPU_TIMER8_CONTEXT_OFFSET,
1859                        .modulemode   = MODULEMODE_SWCTRL,
1860                },
1861        },
1862};
1863
1864/* timer9 */
1865static struct omap_hwmod dra7xx_timer9_hwmod = {
1866        .name           = "timer9",
1867        .class          = &dra7xx_timer_hwmod_class,
1868        .clkdm_name     = "l4per_clkdm",
1869        .main_clk       = "timer9_gfclk_mux",
1870        .prcm = {
1871                .omap4 = {
1872                        .clkctrl_offs = DRA7XX_CM_L4PER_TIMER9_CLKCTRL_OFFSET,
1873                        .context_offs = DRA7XX_RM_L4PER_TIMER9_CONTEXT_OFFSET,
1874                        .modulemode   = MODULEMODE_SWCTRL,
1875                },
1876        },
1877};
1878
1879/* timer10 */
1880static struct omap_hwmod dra7xx_timer10_hwmod = {
1881        .name           = "timer10",
1882        .class          = &dra7xx_timer_1ms_hwmod_class,
1883        .clkdm_name     = "l4per_clkdm",
1884        .main_clk       = "timer10_gfclk_mux",
1885        .prcm = {
1886                .omap4 = {
1887                        .clkctrl_offs = DRA7XX_CM_L4PER_TIMER10_CLKCTRL_OFFSET,
1888                        .context_offs = DRA7XX_RM_L4PER_TIMER10_CONTEXT_OFFSET,
1889                        .modulemode   = MODULEMODE_SWCTRL,
1890                },
1891        },
1892};
1893
1894/* timer11 */
1895static struct omap_hwmod dra7xx_timer11_hwmod = {
1896        .name           = "timer11",
1897        .class          = &dra7xx_timer_hwmod_class,
1898        .clkdm_name     = "l4per_clkdm",
1899        .main_clk       = "timer11_gfclk_mux",
1900        .prcm = {
1901                .omap4 = {
1902                        .clkctrl_offs = DRA7XX_CM_L4PER_TIMER11_CLKCTRL_OFFSET,
1903                        .context_offs = DRA7XX_RM_L4PER_TIMER11_CONTEXT_OFFSET,
1904                        .modulemode   = MODULEMODE_SWCTRL,
1905                },
1906        },
1907};
1908
1909/* timer13 */
1910static struct omap_hwmod dra7xx_timer13_hwmod = {
1911        .name           = "timer13",
1912        .class          = &dra7xx_timer_hwmod_class,
1913        .clkdm_name     = "l4per3_clkdm",
1914        .main_clk       = "timer13_gfclk_mux",
1915        .prcm = {
1916                .omap4 = {
1917                        .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER13_CLKCTRL_OFFSET,
1918                        .context_offs = DRA7XX_RM_L4PER3_TIMER13_CONTEXT_OFFSET,
1919                        .modulemode   = MODULEMODE_SWCTRL,
1920                },
1921        },
1922};
1923
1924/* timer14 */
1925static struct omap_hwmod dra7xx_timer14_hwmod = {
1926        .name           = "timer14",
1927        .class          = &dra7xx_timer_hwmod_class,
1928        .clkdm_name     = "l4per3_clkdm",
1929        .main_clk       = "timer14_gfclk_mux",
1930        .prcm = {
1931                .omap4 = {
1932                        .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER14_CLKCTRL_OFFSET,
1933                        .context_offs = DRA7XX_RM_L4PER3_TIMER14_CONTEXT_OFFSET,
1934                        .modulemode   = MODULEMODE_SWCTRL,
1935                },
1936        },
1937};
1938
1939/* timer15 */
1940static struct omap_hwmod dra7xx_timer15_hwmod = {
1941        .name           = "timer15",
1942        .class          = &dra7xx_timer_hwmod_class,
1943        .clkdm_name     = "l4per3_clkdm",
1944        .main_clk       = "timer15_gfclk_mux",
1945        .prcm = {
1946                .omap4 = {
1947                        .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER15_CLKCTRL_OFFSET,
1948                        .context_offs = DRA7XX_RM_L4PER3_TIMER15_CONTEXT_OFFSET,
1949                        .modulemode   = MODULEMODE_SWCTRL,
1950                },
1951        },
1952};
1953
1954/* timer16 */
1955static struct omap_hwmod dra7xx_timer16_hwmod = {
1956        .name           = "timer16",
1957        .class          = &dra7xx_timer_hwmod_class,
1958        .clkdm_name     = "l4per3_clkdm",
1959        .main_clk       = "timer16_gfclk_mux",
1960        .prcm = {
1961                .omap4 = {
1962                        .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER16_CLKCTRL_OFFSET,
1963                        .context_offs = DRA7XX_RM_L4PER3_TIMER16_CONTEXT_OFFSET,
1964                        .modulemode   = MODULEMODE_SWCTRL,
1965                },
1966        },
1967};
1968
1969/*
1970 * 'uart' class
1971 *
1972 */
1973
1974static struct omap_hwmod_class_sysconfig dra7xx_uart_sysc = {
1975        .rev_offs       = 0x0050,
1976        .sysc_offs      = 0x0054,
1977        .syss_offs      = 0x0058,
1978        .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1979                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1980                           SYSS_HAS_RESET_STATUS),
1981        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1982                           SIDLE_SMART_WKUP),
1983        .sysc_fields    = &omap_hwmod_sysc_type1,
1984};
1985
1986static struct omap_hwmod_class dra7xx_uart_hwmod_class = {
1987        .name   = "uart",
1988        .sysc   = &dra7xx_uart_sysc,
1989};
1990
1991/* uart1 */
1992static struct omap_hwmod dra7xx_uart1_hwmod = {
1993        .name           = "uart1",
1994        .class          = &dra7xx_uart_hwmod_class,
1995        .clkdm_name     = "l4per_clkdm",
1996        .main_clk       = "uart1_gfclk_mux",
1997        .flags          = HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP2UART1_FLAGS,
1998        .prcm = {
1999                .omap4 = {
2000                        .clkctrl_offs = DRA7XX_CM_L4PER_UART1_CLKCTRL_OFFSET,
2001                        .context_offs = DRA7XX_RM_L4PER_UART1_CONTEXT_OFFSET,
2002                        .modulemode   = MODULEMODE_SWCTRL,
2003                },
2004        },
2005};
2006
2007/* uart2 */
2008static struct omap_hwmod dra7xx_uart2_hwmod = {
2009        .name           = "uart2",
2010        .class          = &dra7xx_uart_hwmod_class,
2011        .clkdm_name     = "l4per_clkdm",
2012        .main_clk       = "uart2_gfclk_mux",
2013        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2014        .prcm = {
2015                .omap4 = {
2016                        .clkctrl_offs = DRA7XX_CM_L4PER_UART2_CLKCTRL_OFFSET,
2017                        .context_offs = DRA7XX_RM_L4PER_UART2_CONTEXT_OFFSET,
2018                        .modulemode   = MODULEMODE_SWCTRL,
2019                },
2020        },
2021};
2022
2023/* uart3 */
2024static struct omap_hwmod dra7xx_uart3_hwmod = {
2025        .name           = "uart3",
2026        .class          = &dra7xx_uart_hwmod_class,
2027        .clkdm_name     = "l4per_clkdm",
2028        .main_clk       = "uart3_gfclk_mux",
2029        .flags          = HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP4UART3_FLAGS,
2030        .prcm = {
2031                .omap4 = {
2032                        .clkctrl_offs = DRA7XX_CM_L4PER_UART3_CLKCTRL_OFFSET,
2033                        .context_offs = DRA7XX_RM_L4PER_UART3_CONTEXT_OFFSET,
2034                        .modulemode   = MODULEMODE_SWCTRL,
2035                },
2036        },
2037};
2038
2039/* uart4 */
2040static struct omap_hwmod dra7xx_uart4_hwmod = {
2041        .name           = "uart4",
2042        .class          = &dra7xx_uart_hwmod_class,
2043        .clkdm_name     = "l4per_clkdm",
2044        .main_clk       = "uart4_gfclk_mux",
2045        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2046        .prcm = {
2047                .omap4 = {
2048                        .clkctrl_offs = DRA7XX_CM_L4PER_UART4_CLKCTRL_OFFSET,
2049                        .context_offs = DRA7XX_RM_L4PER_UART4_CONTEXT_OFFSET,
2050                        .modulemode   = MODULEMODE_SWCTRL,
2051                },
2052        },
2053};
2054
2055/* uart5 */
2056static struct omap_hwmod dra7xx_uart5_hwmod = {
2057        .name           = "uart5",
2058        .class          = &dra7xx_uart_hwmod_class,
2059        .clkdm_name     = "l4per_clkdm",
2060        .main_clk       = "uart5_gfclk_mux",
2061        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2062        .prcm = {
2063                .omap4 = {
2064                        .clkctrl_offs = DRA7XX_CM_L4PER_UART5_CLKCTRL_OFFSET,
2065                        .context_offs = DRA7XX_RM_L4PER_UART5_CONTEXT_OFFSET,
2066                        .modulemode   = MODULEMODE_SWCTRL,
2067                },
2068        },
2069};
2070
2071/* uart6 */
2072static struct omap_hwmod dra7xx_uart6_hwmod = {
2073        .name           = "uart6",
2074        .class          = &dra7xx_uart_hwmod_class,
2075        .clkdm_name     = "ipu_clkdm",
2076        .main_clk       = "uart6_gfclk_mux",
2077        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2078        .prcm = {
2079                .omap4 = {
2080                        .clkctrl_offs = DRA7XX_CM_IPU_UART6_CLKCTRL_OFFSET,
2081                        .context_offs = DRA7XX_RM_IPU_UART6_CONTEXT_OFFSET,
2082                        .modulemode   = MODULEMODE_SWCTRL,
2083                },
2084        },
2085};
2086
2087/* uart7 */
2088static struct omap_hwmod dra7xx_uart7_hwmod = {
2089        .name           = "uart7",
2090        .class          = &dra7xx_uart_hwmod_class,
2091        .clkdm_name     = "l4per2_clkdm",
2092        .main_clk       = "uart7_gfclk_mux",
2093        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2094        .prcm = {
2095                .omap4 = {
2096                        .clkctrl_offs = DRA7XX_CM_L4PER2_UART7_CLKCTRL_OFFSET,
2097                        .context_offs = DRA7XX_RM_L4PER2_UART7_CONTEXT_OFFSET,
2098                        .modulemode   = MODULEMODE_SWCTRL,
2099                },
2100        },
2101};
2102
2103/* uart8 */
2104static struct omap_hwmod dra7xx_uart8_hwmod = {
2105        .name           = "uart8",
2106        .class          = &dra7xx_uart_hwmod_class,
2107        .clkdm_name     = "l4per2_clkdm",
2108        .main_clk       = "uart8_gfclk_mux",
2109        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2110        .prcm = {
2111                .omap4 = {
2112                        .clkctrl_offs = DRA7XX_CM_L4PER2_UART8_CLKCTRL_OFFSET,
2113                        .context_offs = DRA7XX_RM_L4PER2_UART8_CONTEXT_OFFSET,
2114                        .modulemode   = MODULEMODE_SWCTRL,
2115                },
2116        },
2117};
2118
2119/* uart9 */
2120static struct omap_hwmod dra7xx_uart9_hwmod = {
2121        .name           = "uart9",
2122        .class          = &dra7xx_uart_hwmod_class,
2123        .clkdm_name     = "l4per2_clkdm",
2124        .main_clk       = "uart9_gfclk_mux",
2125        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2126        .prcm = {
2127                .omap4 = {
2128                        .clkctrl_offs = DRA7XX_CM_L4PER2_UART9_CLKCTRL_OFFSET,
2129                        .context_offs = DRA7XX_RM_L4PER2_UART9_CONTEXT_OFFSET,
2130                        .modulemode   = MODULEMODE_SWCTRL,
2131                },
2132        },
2133};
2134
2135/* uart10 */
2136static struct omap_hwmod dra7xx_uart10_hwmod = {
2137        .name           = "uart10",
2138        .class          = &dra7xx_uart_hwmod_class,
2139        .clkdm_name     = "wkupaon_clkdm",
2140        .main_clk       = "uart10_gfclk_mux",
2141        .flags          = HWMOD_SWSUP_SIDLE_ACT,
2142        .prcm = {
2143                .omap4 = {
2144                        .clkctrl_offs = DRA7XX_CM_WKUPAON_UART10_CLKCTRL_OFFSET,
2145                        .context_offs = DRA7XX_RM_WKUPAON_UART10_CONTEXT_OFFSET,
2146                        .modulemode   = MODULEMODE_SWCTRL,
2147                },
2148        },
2149};
2150
2151/*
2152 * 'usb_otg_ss' class
2153 *
2154 */
2155
2156static struct omap_hwmod_class_sysconfig dra7xx_usb_otg_ss_sysc = {
2157        .rev_offs       = 0x0000,
2158        .sysc_offs      = 0x0010,
2159        .sysc_flags     = (SYSC_HAS_DMADISABLE | SYSC_HAS_MIDLEMODE |
2160                           SYSC_HAS_SIDLEMODE),
2161        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2162                           SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2163                           MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
2164        .sysc_fields    = &omap_hwmod_sysc_type2,
2165};
2166
2167static struct omap_hwmod_class dra7xx_usb_otg_ss_hwmod_class = {
2168        .name   = "usb_otg_ss",
2169        .sysc   = &dra7xx_usb_otg_ss_sysc,
2170};
2171
2172/* usb_otg_ss1 */
2173static struct omap_hwmod_opt_clk usb_otg_ss1_opt_clks[] = {
2174        { .role = "refclk960m", .clk = "usb_otg_ss1_refclk960m" },
2175};
2176
2177static struct omap_hwmod dra7xx_usb_otg_ss1_hwmod = {
2178        .name           = "usb_otg_ss1",
2179        .class          = &dra7xx_usb_otg_ss_hwmod_class,
2180        .clkdm_name     = "l3init_clkdm",
2181        .main_clk       = "dpll_core_h13x2_ck",
2182        .prcm = {
2183                .omap4 = {
2184                        .clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS1_CLKCTRL_OFFSET,
2185                        .context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS1_CONTEXT_OFFSET,
2186                        .modulemode   = MODULEMODE_HWCTRL,
2187                },
2188        },
2189        .opt_clks       = usb_otg_ss1_opt_clks,
2190        .opt_clks_cnt   = ARRAY_SIZE(usb_otg_ss1_opt_clks),
2191};
2192
2193/* usb_otg_ss2 */
2194static struct omap_hwmod_opt_clk usb_otg_ss2_opt_clks[] = {
2195        { .role = "refclk960m", .clk = "usb_otg_ss2_refclk960m" },
2196};
2197
2198static struct omap_hwmod dra7xx_usb_otg_ss2_hwmod = {
2199        .name           = "usb_otg_ss2",
2200        .class          = &dra7xx_usb_otg_ss_hwmod_class,
2201        .clkdm_name     = "l3init_clkdm",
2202        .main_clk       = "dpll_core_h13x2_ck",
2203        .prcm = {
2204                .omap4 = {
2205                        .clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS2_CLKCTRL_OFFSET,
2206                        .context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS2_CONTEXT_OFFSET,
2207                        .modulemode   = MODULEMODE_HWCTRL,
2208                },
2209        },
2210        .opt_clks       = usb_otg_ss2_opt_clks,
2211        .opt_clks_cnt   = ARRAY_SIZE(usb_otg_ss2_opt_clks),
2212};
2213
2214/* usb_otg_ss3 */
2215static struct omap_hwmod dra7xx_usb_otg_ss3_hwmod = {
2216        .name           = "usb_otg_ss3",
2217        .class          = &dra7xx_usb_otg_ss_hwmod_class,
2218        .clkdm_name     = "l3init_clkdm",
2219        .main_clk       = "dpll_core_h13x2_ck",
2220        .prcm = {
2221                .omap4 = {
2222                        .clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS3_CLKCTRL_OFFSET,
2223                        .context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS3_CONTEXT_OFFSET,
2224                        .modulemode   = MODULEMODE_HWCTRL,
2225                },
2226        },
2227};
2228
2229/* usb_otg_ss4 */
2230static struct omap_hwmod dra7xx_usb_otg_ss4_hwmod = {
2231        .name           = "usb_otg_ss4",
2232        .class          = &dra7xx_usb_otg_ss_hwmod_class,
2233        .clkdm_name     = "l3init_clkdm",
2234        .main_clk       = "dpll_core_h13x2_ck",
2235        .prcm = {
2236                .omap4 = {
2237                        .clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS4_CLKCTRL_OFFSET,
2238                        .context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS4_CONTEXT_OFFSET,
2239                        .modulemode   = MODULEMODE_HWCTRL,
2240                },
2241        },
2242};
2243
2244/*
2245 * 'vcp' class
2246 *
2247 */
2248
2249static struct omap_hwmod_class dra7xx_vcp_hwmod_class = {
2250        .name   = "vcp",
2251};
2252
2253/* vcp1 */
2254static struct omap_hwmod dra7xx_vcp1_hwmod = {
2255        .name           = "vcp1",
2256        .class          = &dra7xx_vcp_hwmod_class,
2257        .clkdm_name     = "l3main1_clkdm",
2258        .main_clk       = "l3_iclk_div",
2259        .prcm = {
2260                .omap4 = {
2261                        .clkctrl_offs = DRA7XX_CM_L3MAIN1_VCP1_CLKCTRL_OFFSET,
2262                        .context_offs = DRA7XX_RM_L3MAIN1_VCP1_CONTEXT_OFFSET,
2263                },
2264        },
2265};
2266
2267/* vcp2 */
2268static struct omap_hwmod dra7xx_vcp2_hwmod = {
2269        .name           = "vcp2",
2270        .class          = &dra7xx_vcp_hwmod_class,
2271        .clkdm_name     = "l3main1_clkdm",
2272        .main_clk       = "l3_iclk_div",
2273        .prcm = {
2274                .omap4 = {
2275                        .clkctrl_offs = DRA7XX_CM_L3MAIN1_VCP2_CLKCTRL_OFFSET,
2276                        .context_offs = DRA7XX_RM_L3MAIN1_VCP2_CONTEXT_OFFSET,
2277                },
2278        },
2279};
2280
2281/*
2282 * 'wd_timer' class
2283 *
2284 */
2285
2286static struct omap_hwmod_class_sysconfig dra7xx_wd_timer_sysc = {
2287        .rev_offs       = 0x0000,
2288        .sysc_offs      = 0x0010,
2289        .syss_offs      = 0x0014,
2290        .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
2291                           SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2292        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2293                           SIDLE_SMART_WKUP),
2294        .sysc_fields    = &omap_hwmod_sysc_type1,
2295};
2296
2297static struct omap_hwmod_class dra7xx_wd_timer_hwmod_class = {
2298        .name           = "wd_timer",
2299        .sysc           = &dra7xx_wd_timer_sysc,
2300        .pre_shutdown   = &omap2_wd_timer_disable,
2301        .reset          = &omap2_wd_timer_reset,
2302};
2303
2304/* wd_timer2 */
2305static struct omap_hwmod dra7xx_wd_timer2_hwmod = {
2306        .name           = "wd_timer2",
2307        .class          = &dra7xx_wd_timer_hwmod_class,
2308        .clkdm_name     = "wkupaon_clkdm",
2309        .main_clk       = "sys_32k_ck",
2310        .prcm = {
2311                .omap4 = {
2312                        .clkctrl_offs = DRA7XX_CM_WKUPAON_WD_TIMER2_CLKCTRL_OFFSET,
2313                        .context_offs = DRA7XX_RM_WKUPAON_WD_TIMER2_CONTEXT_OFFSET,
2314                        .modulemode   = MODULEMODE_SWCTRL,
2315                },
2316        },
2317};
2318
2319
2320/*
2321 * Interfaces
2322 */
2323
2324/* l3_main_2 -> l3_instr */
2325static struct omap_hwmod_ocp_if dra7xx_l3_main_2__l3_instr = {
2326        .master         = &dra7xx_l3_main_2_hwmod,
2327        .slave          = &dra7xx_l3_instr_hwmod,
2328        .clk            = "l3_iclk_div",
2329        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2330};
2331
2332/* l4_cfg -> l3_main_1 */
2333static struct omap_hwmod_ocp_if dra7xx_l4_cfg__l3_main_1 = {
2334        .master         = &dra7xx_l4_cfg_hwmod,
2335        .slave          = &dra7xx_l3_main_1_hwmod,
2336        .clk            = "l3_iclk_div",
2337        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2338};
2339
2340/* mpu -> l3_main_1 */
2341static struct omap_hwmod_ocp_if dra7xx_mpu__l3_main_1 = {
2342        .master         = &dra7xx_mpu_hwmod,
2343        .slave          = &dra7xx_l3_main_1_hwmod,
2344        .clk            = "l3_iclk_div",
2345        .user           = OCP_USER_MPU,
2346};
2347
2348/* l3_main_1 -> l3_main_2 */
2349static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l3_main_2 = {
2350        .master         = &dra7xx_l3_main_1_hwmod,
2351        .slave          = &dra7xx_l3_main_2_hwmod,
2352        .clk            = "l3_iclk_div",
2353        .user           = OCP_USER_MPU,
2354};
2355
2356/* l4_cfg -> l3_main_2 */
2357static struct omap_hwmod_ocp_if dra7xx_l4_cfg__l3_main_2 = {
2358        .master         = &dra7xx_l4_cfg_hwmod,
2359        .slave          = &dra7xx_l3_main_2_hwmod,
2360        .clk            = "l3_iclk_div",
2361        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2362};
2363
2364/* l3_main_1 -> l4_cfg */
2365static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_cfg = {
2366        .master         = &dra7xx_l3_main_1_hwmod,
2367        .slave          = &dra7xx_l4_cfg_hwmod,
2368        .clk            = "l3_iclk_div",
2369        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2370};
2371
2372/* l3_main_1 -> l4_per1 */
2373static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per1 = {
2374        .master         = &dra7xx_l3_main_1_hwmod,
2375        .slave          = &dra7xx_l4_per1_hwmod,
2376        .clk            = "l3_iclk_div",
2377        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2378};
2379
2380/* l3_main_1 -> l4_per2 */
2381static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per2 = {
2382        .master         = &dra7xx_l3_main_1_hwmod,
2383        .slave          = &dra7xx_l4_per2_hwmod,
2384        .clk            = "l3_iclk_div",
2385        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2386};
2387
2388/* l3_main_1 -> l4_per3 */
2389static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per3 = {
2390        .master         = &dra7xx_l3_main_1_hwmod,
2391        .slave          = &dra7xx_l4_per3_hwmod,
2392        .clk            = "l3_iclk_div",
2393        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2394};
2395
2396/* l3_main_1 -> l4_wkup */
2397static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_wkup = {
2398        .master         = &dra7xx_l3_main_1_hwmod,
2399        .slave          = &dra7xx_l4_wkup_hwmod,
2400        .clk            = "wkupaon_iclk_mux",
2401        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2402};
2403
2404/* l4_per2 -> atl */
2405static struct omap_hwmod_ocp_if dra7xx_l4_per2__atl = {
2406        .master         = &dra7xx_l4_per2_hwmod,
2407        .slave          = &dra7xx_atl_hwmod,
2408        .clk            = "l3_iclk_div",
2409        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2410};
2411
2412/* l3_main_1 -> bb2d */
2413static struct omap_hwmod_ocp_if dra7xx_l3_main_1__bb2d = {
2414        .master         = &dra7xx_l3_main_1_hwmod,
2415        .slave          = &dra7xx_bb2d_hwmod,
2416        .clk            = "l3_iclk_div",
2417        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2418};
2419
2420/* l4_wkup -> counter_32k */
2421static struct omap_hwmod_ocp_if dra7xx_l4_wkup__counter_32k = {
2422        .master         = &dra7xx_l4_wkup_hwmod,
2423        .slave          = &dra7xx_counter_32k_hwmod,
2424        .clk            = "wkupaon_iclk_mux",
2425        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2426};
2427
2428/* l4_wkup -> ctrl_module_wkup */
2429static struct omap_hwmod_ocp_if dra7xx_l4_wkup__ctrl_module_wkup = {
2430        .master         = &dra7xx_l4_wkup_hwmod,
2431        .slave          = &dra7xx_ctrl_module_wkup_hwmod,
2432        .clk            = "wkupaon_iclk_mux",
2433        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2434};
2435
2436static struct omap_hwmod_ocp_if dra7xx_l4_per2__cpgmac0 = {
2437        .master         = &dra7xx_l4_per2_hwmod,
2438        .slave          = &dra7xx_gmac_hwmod,
2439        .clk            = "dpll_gmac_ck",
2440        .user           = OCP_USER_MPU,
2441};
2442
2443static struct omap_hwmod_ocp_if dra7xx_gmac__mdio = {
2444        .master         = &dra7xx_gmac_hwmod,
2445        .slave          = &dra7xx_mdio_hwmod,
2446        .user           = OCP_USER_MPU,
2447};
2448
2449/* l4_wkup -> dcan1 */
2450static struct omap_hwmod_ocp_if dra7xx_l4_wkup__dcan1 = {
2451        .master         = &dra7xx_l4_wkup_hwmod,
2452        .slave          = &dra7xx_dcan1_hwmod,
2453        .clk            = "wkupaon_iclk_mux",
2454        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2455};
2456
2457/* l4_per2 -> dcan2 */
2458static struct omap_hwmod_ocp_if dra7xx_l4_per2__dcan2 = {
2459        .master         = &dra7xx_l4_per2_hwmod,
2460        .slave          = &dra7xx_dcan2_hwmod,
2461        .clk            = "l3_iclk_div",
2462        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2463};
2464
2465static struct omap_hwmod_addr_space dra7xx_dma_system_addrs[] = {
2466        {
2467                .pa_start       = 0x4a056000,
2468                .pa_end         = 0x4a056fff,
2469                .flags          = ADDR_TYPE_RT
2470        },
2471        { }
2472};
2473
2474/* l4_cfg -> dma_system */
2475static struct omap_hwmod_ocp_if dra7xx_l4_cfg__dma_system = {
2476        .master         = &dra7xx_l4_cfg_hwmod,
2477        .slave          = &dra7xx_dma_system_hwmod,
2478        .clk            = "l3_iclk_div",
2479        .addr           = dra7xx_dma_system_addrs,
2480        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2481};
2482
2483static struct omap_hwmod_addr_space dra7xx_dss_addrs[] = {
2484        {
2485                .name           = "family",
2486                .pa_start       = 0x58000000,
2487                .pa_end         = 0x5800007f,
2488                .flags          = ADDR_TYPE_RT
2489        },
2490};
2491
2492/* l3_main_1 -> dss */
2493static struct omap_hwmod_ocp_if dra7xx_l3_main_1__dss = {
2494        .master         = &dra7xx_l3_main_1_hwmod,
2495        .slave          = &dra7xx_dss_hwmod,
2496        .clk            = "l3_iclk_div",
2497        .addr           = dra7xx_dss_addrs,
2498        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2499};
2500
2501static struct omap_hwmod_addr_space dra7xx_dss_dispc_addrs[] = {
2502        {
2503                .name           = "dispc",
2504                .pa_start       = 0x58001000,
2505                .pa_end         = 0x58001fff,
2506                .flags          = ADDR_TYPE_RT
2507        },
2508};
2509
2510/* l3_main_1 -> dispc */
2511static struct omap_hwmod_ocp_if dra7xx_l3_main_1__dispc = {
2512        .master         = &dra7xx_l3_main_1_hwmod,
2513        .slave          = &dra7xx_dss_dispc_hwmod,
2514        .clk            = "l3_iclk_div",
2515        .addr           = dra7xx_dss_dispc_addrs,
2516        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2517};
2518
2519static struct omap_hwmod_addr_space dra7xx_dss_hdmi_addrs[] = {
2520        {
2521                .name           = "hdmi_wp",
2522                .pa_start       = 0x58040000,
2523                .pa_end         = 0x580400ff,
2524                .flags          = ADDR_TYPE_RT
2525        },
2526        { }
2527};
2528
2529/* l3_main_1 -> dispc */
2530static struct omap_hwmod_ocp_if dra7xx_l3_main_1__hdmi = {
2531        .master         = &dra7xx_l3_main_1_hwmod,
2532        .slave          = &dra7xx_dss_hdmi_hwmod,
2533        .clk            = "l3_iclk_div",
2534        .addr           = dra7xx_dss_hdmi_addrs,
2535        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2536};
2537
2538static struct omap_hwmod_addr_space dra7xx_elm_addrs[] = {
2539        {
2540                .pa_start       = 0x48078000,
2541                .pa_end         = 0x48078fff,
2542                .flags          = ADDR_TYPE_RT
2543        },
2544        { }
2545};
2546
2547/* l4_per1 -> elm */
2548static struct omap_hwmod_ocp_if dra7xx_l4_per1__elm = {
2549        .master         = &dra7xx_l4_per1_hwmod,
2550        .slave          = &dra7xx_elm_hwmod,
2551        .clk            = "l3_iclk_div",
2552        .addr           = dra7xx_elm_addrs,
2553        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2554};
2555
2556/* l4_wkup -> gpio1 */
2557static struct omap_hwmod_ocp_if dra7xx_l4_wkup__gpio1 = {
2558        .master         = &dra7xx_l4_wkup_hwmod,
2559        .slave          = &dra7xx_gpio1_hwmod,
2560        .clk            = "wkupaon_iclk_mux",
2561        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2562};
2563
2564/* l4_per1 -> gpio2 */
2565static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio2 = {
2566        .master         = &dra7xx_l4_per1_hwmod,
2567        .slave          = &dra7xx_gpio2_hwmod,
2568        .clk            = "l3_iclk_div",
2569        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2570};
2571
2572/* l4_per1 -> gpio3 */
2573static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio3 = {
2574        .master         = &dra7xx_l4_per1_hwmod,
2575        .slave          = &dra7xx_gpio3_hwmod,
2576        .clk            = "l3_iclk_div",
2577        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2578};
2579
2580/* l4_per1 -> gpio4 */
2581static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio4 = {
2582        .master         = &dra7xx_l4_per1_hwmod,
2583        .slave          = &dra7xx_gpio4_hwmod,
2584        .clk            = "l3_iclk_div",
2585        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2586};
2587
2588/* l4_per1 -> gpio5 */
2589static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio5 = {
2590        .master         = &dra7xx_l4_per1_hwmod,
2591        .slave          = &dra7xx_gpio5_hwmod,
2592        .clk            = "l3_iclk_div",
2593        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2594};
2595
2596/* l4_per1 -> gpio6 */
2597static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio6 = {
2598        .master         = &dra7xx_l4_per1_hwmod,
2599        .slave          = &dra7xx_gpio6_hwmod,
2600        .clk            = "l3_iclk_div",
2601        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2602};
2603
2604/* l4_per1 -> gpio7 */
2605static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio7 = {
2606        .master         = &dra7xx_l4_per1_hwmod,
2607        .slave          = &dra7xx_gpio7_hwmod,
2608        .clk            = "l3_iclk_div",
2609        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2610};
2611
2612/* l4_per1 -> gpio8 */
2613static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio8 = {
2614        .master         = &dra7xx_l4_per1_hwmod,
2615        .slave          = &dra7xx_gpio8_hwmod,
2616        .clk            = "l3_iclk_div",
2617        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2618};
2619
2620static struct omap_hwmod_addr_space dra7xx_gpmc_addrs[] = {
2621        {
2622                .pa_start       = 0x50000000,
2623                .pa_end         = 0x500003ff,
2624                .flags          = ADDR_TYPE_RT
2625        },
2626        { }
2627};
2628
2629/* l3_main_1 -> gpmc */
2630static struct omap_hwmod_ocp_if dra7xx_l3_main_1__gpmc = {
2631        .master         = &dra7xx_l3_main_1_hwmod,
2632        .slave          = &dra7xx_gpmc_hwmod,
2633        .clk            = "l3_iclk_div",
2634        .addr           = dra7xx_gpmc_addrs,
2635        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2636};
2637
2638static struct omap_hwmod_addr_space dra7xx_hdq1w_addrs[] = {
2639        {
2640                .pa_start       = 0x480b2000,
2641                .pa_end         = 0x480b201f,
2642                .flags          = ADDR_TYPE_RT
2643        },
2644        { }
2645};
2646
2647/* l4_per1 -> hdq1w */
2648static struct omap_hwmod_ocp_if dra7xx_l4_per1__hdq1w = {
2649        .master         = &dra7xx_l4_per1_hwmod,
2650        .slave          = &dra7xx_hdq1w_hwmod,
2651        .clk            = "l3_iclk_div",
2652        .addr           = dra7xx_hdq1w_addrs,
2653        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2654};
2655
2656/* l4_per1 -> i2c1 */
2657static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c1 = {
2658        .master         = &dra7xx_l4_per1_hwmod,
2659        .slave          = &dra7xx_i2c1_hwmod,
2660        .clk            = "l3_iclk_div",
2661        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2662};
2663
2664/* l4_per1 -> i2c2 */
2665static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c2 = {
2666        .master         = &dra7xx_l4_per1_hwmod,
2667        .slave          = &dra7xx_i2c2_hwmod,
2668        .clk            = "l3_iclk_div",
2669        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2670};
2671
2672/* l4_per1 -> i2c3 */
2673static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c3 = {
2674        .master         = &dra7xx_l4_per1_hwmod,
2675        .slave          = &dra7xx_i2c3_hwmod,
2676        .clk            = "l3_iclk_div",
2677        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2678};
2679
2680/* l4_per1 -> i2c4 */
2681static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c4 = {
2682        .master         = &dra7xx_l4_per1_hwmod,
2683        .slave          = &dra7xx_i2c4_hwmod,
2684        .clk            = "l3_iclk_div",
2685        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2686};
2687
2688/* l4_per1 -> i2c5 */
2689static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c5 = {
2690        .master         = &dra7xx_l4_per1_hwmod,
2691        .slave          = &dra7xx_i2c5_hwmod,
2692        .clk            = "l3_iclk_div",
2693        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2694};
2695
2696/* l4_cfg -> mailbox1 */
2697static struct omap_hwmod_ocp_if dra7xx_l4_cfg__mailbox1 = {
2698        .master         = &dra7xx_l4_cfg_hwmod,
2699        .slave          = &dra7xx_mailbox1_hwmod,
2700        .clk            = "l3_iclk_div",
2701        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2702};
2703
2704/* l4_per3 -> mailbox2 */
2705static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox2 = {
2706        .master         = &dra7xx_l4_per3_hwmod,
2707        .slave          = &dra7xx_mailbox2_hwmod,
2708        .clk            = "l3_iclk_div",
2709        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2710};
2711
2712/* l4_per3 -> mailbox3 */
2713static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox3 = {
2714        .master         = &dra7xx_l4_per3_hwmod,
2715        .slave          = &dra7xx_mailbox3_hwmod,
2716        .clk            = "l3_iclk_div",
2717        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2718};
2719
2720/* l4_per3 -> mailbox4 */
2721static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox4 = {
2722        .master         = &dra7xx_l4_per3_hwmod,
2723        .slave          = &dra7xx_mailbox4_hwmod,
2724        .clk            = "l3_iclk_div",
2725        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2726};
2727
2728/* l4_per3 -> mailbox5 */
2729static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox5 = {
2730        .master         = &dra7xx_l4_per3_hwmod,
2731        .slave          = &dra7xx_mailbox5_hwmod,
2732        .clk            = "l3_iclk_div",
2733        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2734};
2735
2736/* l4_per3 -> mailbox6 */
2737static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox6 = {
2738        .master         = &dra7xx_l4_per3_hwmod,
2739        .slave          = &dra7xx_mailbox6_hwmod,
2740        .clk            = "l3_iclk_div",
2741        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2742};
2743
2744/* l4_per3 -> mailbox7 */
2745static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox7 = {
2746        .master         = &dra7xx_l4_per3_hwmod,
2747        .slave          = &dra7xx_mailbox7_hwmod,
2748        .clk            = "l3_iclk_div",
2749        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2750};
2751
2752/* l4_per3 -> mailbox8 */
2753static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox8 = {
2754        .master         = &dra7xx_l4_per3_hwmod,
2755        .slave          = &dra7xx_mailbox8_hwmod,
2756        .clk            = "l3_iclk_div",
2757        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2758};
2759
2760/* l4_per3 -> mailbox9 */
2761static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox9 = {
2762        .master         = &dra7xx_l4_per3_hwmod,
2763        .slave          = &dra7xx_mailbox9_hwmod,
2764        .clk            = "l3_iclk_div",
2765        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2766};
2767
2768/* l4_per3 -> mailbox10 */
2769static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox10 = {
2770        .master         = &dra7xx_l4_per3_hwmod,
2771        .slave          = &dra7xx_mailbox10_hwmod,
2772        .clk            = "l3_iclk_div",
2773        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2774};
2775
2776/* l4_per3 -> mailbox11 */
2777static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox11 = {
2778        .master         = &dra7xx_l4_per3_hwmod,
2779        .slave          = &dra7xx_mailbox11_hwmod,
2780        .clk            = "l3_iclk_div",
2781        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2782};
2783
2784/* l4_per3 -> mailbox12 */
2785static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox12 = {
2786        .master         = &dra7xx_l4_per3_hwmod,
2787        .slave          = &dra7xx_mailbox12_hwmod,
2788        .clk            = "l3_iclk_div",
2789        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2790};
2791
2792/* l4_per3 -> mailbox13 */
2793static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox13 = {
2794        .master         = &dra7xx_l4_per3_hwmod,
2795        .slave          = &dra7xx_mailbox13_hwmod,
2796        .clk            = "l3_iclk_div",
2797        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2798};
2799
2800/* l4_per1 -> mcspi1 */
2801static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi1 = {
2802        .master         = &dra7xx_l4_per1_hwmod,
2803        .slave          = &dra7xx_mcspi1_hwmod,
2804        .clk            = "l3_iclk_div",
2805        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2806};
2807
2808/* l4_per1 -> mcspi2 */
2809static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi2 = {
2810        .master         = &dra7xx_l4_per1_hwmod,
2811        .slave          = &dra7xx_mcspi2_hwmod,
2812        .clk            = "l3_iclk_div",
2813        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2814};
2815
2816/* l4_per1 -> mcspi3 */
2817static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi3 = {
2818        .master         = &dra7xx_l4_per1_hwmod,
2819        .slave          = &dra7xx_mcspi3_hwmod,
2820        .clk            = "l3_iclk_div",
2821        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2822};
2823
2824/* l4_per1 -> mcspi4 */
2825static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi4 = {
2826        .master         = &dra7xx_l4_per1_hwmod,
2827        .slave          = &dra7xx_mcspi4_hwmod,
2828        .clk            = "l3_iclk_div",
2829        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2830};
2831
2832/* l4_per1 -> mmc1 */
2833static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc1 = {
2834        .master         = &dra7xx_l4_per1_hwmod,
2835        .slave          = &dra7xx_mmc1_hwmod,
2836        .clk            = "l3_iclk_div",
2837        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2838};
2839
2840/* l4_per1 -> mmc2 */
2841static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc2 = {
2842        .master         = &dra7xx_l4_per1_hwmod,
2843        .slave          = &dra7xx_mmc2_hwmod,
2844        .clk            = "l3_iclk_div",
2845        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2846};
2847
2848/* l4_per1 -> mmc3 */
2849static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc3 = {
2850        .master         = &dra7xx_l4_per1_hwmod,
2851        .slave          = &dra7xx_mmc3_hwmod,
2852        .clk            = "l3_iclk_div",
2853        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2854};
2855
2856/* l4_per1 -> mmc4 */
2857static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc4 = {
2858        .master         = &dra7xx_l4_per1_hwmod,
2859        .slave          = &dra7xx_mmc4_hwmod,
2860        .clk            = "l3_iclk_div",
2861        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2862};
2863
2864/* l4_cfg -> mpu */
2865static struct omap_hwmod_ocp_if dra7xx_l4_cfg__mpu = {
2866        .master         = &dra7xx_l4_cfg_hwmod,
2867        .slave          = &dra7xx_mpu_hwmod,
2868        .clk            = "l3_iclk_div",
2869        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2870};
2871
2872/* l4_cfg -> ocp2scp1 */
2873static struct omap_hwmod_ocp_if dra7xx_l4_cfg__ocp2scp1 = {
2874        .master         = &dra7xx_l4_cfg_hwmod,
2875        .slave          = &dra7xx_ocp2scp1_hwmod,
2876        .clk            = "l4_root_clk_div",
2877        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2878};
2879
2880/* l4_cfg -> ocp2scp3 */
2881static struct omap_hwmod_ocp_if dra7xx_l4_cfg__ocp2scp3 = {
2882        .master         = &dra7xx_l4_cfg_hwmod,
2883        .slave          = &dra7xx_ocp2scp3_hwmod,
2884        .clk            = "l4_root_clk_div",
2885        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2886};
2887
2888/* l3_main_1 -> pciess1 */
2889static struct omap_hwmod_ocp_if dra7xx_l3_main_1__pciess1 = {
2890        .master         = &dra7xx_l3_main_1_hwmod,
2891        .slave          = &dra7xx_pciess1_hwmod,
2892        .clk            = "l3_iclk_div",
2893        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2894};
2895
2896/* l4_cfg -> pciess1 */
2897static struct omap_hwmod_ocp_if dra7xx_l4_cfg__pciess1 = {
2898        .master         = &dra7xx_l4_cfg_hwmod,
2899        .slave          = &dra7xx_pciess1_hwmod,
2900        .clk            = "l4_root_clk_div",
2901        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2902};
2903
2904/* l3_main_1 -> pciess2 */
2905static struct omap_hwmod_ocp_if dra7xx_l3_main_1__pciess2 = {
2906        .master         = &dra7xx_l3_main_1_hwmod,
2907        .slave          = &dra7xx_pciess2_hwmod,
2908        .clk            = "l3_iclk_div",
2909        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2910};
2911
2912/* l4_cfg -> pciess2 */
2913static struct omap_hwmod_ocp_if dra7xx_l4_cfg__pciess2 = {
2914        .master         = &dra7xx_l4_cfg_hwmod,
2915        .slave          = &dra7xx_pciess2_hwmod,
2916        .clk            = "l4_root_clk_div",
2917        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2918};
2919
2920static struct omap_hwmod_addr_space dra7xx_qspi_addrs[] = {
2921        {
2922                .pa_start       = 0x4b300000,
2923                .pa_end         = 0x4b30007f,
2924                .flags          = ADDR_TYPE_RT
2925        },
2926        { }
2927};
2928
2929/* l3_main_1 -> qspi */
2930static struct omap_hwmod_ocp_if dra7xx_l3_main_1__qspi = {
2931        .master         = &dra7xx_l3_main_1_hwmod,
2932        .slave          = &dra7xx_qspi_hwmod,
2933        .clk            = "l3_iclk_div",
2934        .addr           = dra7xx_qspi_addrs,
2935        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2936};
2937
2938/* l4_per3 -> rtcss */
2939static struct omap_hwmod_ocp_if dra7xx_l4_per3__rtcss = {
2940        .master         = &dra7xx_l4_per3_hwmod,
2941        .slave          = &dra7xx_rtcss_hwmod,
2942        .clk            = "l4_root_clk_div",
2943        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2944};
2945
2946static struct omap_hwmod_addr_space dra7xx_sata_addrs[] = {
2947        {
2948                .name           = "sysc",
2949                .pa_start       = 0x4a141100,
2950                .pa_end         = 0x4a141107,
2951                .flags          = ADDR_TYPE_RT
2952        },
2953        { }
2954};
2955
2956/* l4_cfg -> sata */
2957static struct omap_hwmod_ocp_if dra7xx_l4_cfg__sata = {
2958        .master         = &dra7xx_l4_cfg_hwmod,
2959        .slave          = &dra7xx_sata_hwmod,
2960        .clk            = "l3_iclk_div",
2961        .addr           = dra7xx_sata_addrs,
2962        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2963};
2964
2965static struct omap_hwmod_addr_space dra7xx_smartreflex_core_addrs[] = {
2966        {
2967                .pa_start       = 0x4a0dd000,
2968                .pa_end         = 0x4a0dd07f,
2969                .flags          = ADDR_TYPE_RT
2970        },
2971        { }
2972};
2973
2974/* l4_cfg -> smartreflex_core */
2975static struct omap_hwmod_ocp_if dra7xx_l4_cfg__smartreflex_core = {
2976        .master         = &dra7xx_l4_cfg_hwmod,
2977        .slave          = &dra7xx_smartreflex_core_hwmod,
2978        .clk            = "l4_root_clk_div",
2979        .addr           = dra7xx_smartreflex_core_addrs,
2980        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2981};
2982
2983static struct omap_hwmod_addr_space dra7xx_smartreflex_mpu_addrs[] = {
2984        {
2985                .pa_start       = 0x4a0d9000,
2986                .pa_end         = 0x4a0d907f,
2987                .flags          = ADDR_TYPE_RT
2988        },
2989        { }
2990};
2991
2992/* l4_cfg -> smartreflex_mpu */
2993static struct omap_hwmod_ocp_if dra7xx_l4_cfg__smartreflex_mpu = {
2994        .master         = &dra7xx_l4_cfg_hwmod,
2995        .slave          = &dra7xx_smartreflex_mpu_hwmod,
2996        .clk            = "l4_root_clk_div",
2997        .addr           = dra7xx_smartreflex_mpu_addrs,
2998        .user           = OCP_USER_MPU | OCP_USER_SDMA,
2999};
3000
3001static struct omap_hwmod_addr_space dra7xx_spinlock_addrs[] = {
3002        {
3003                .pa_start       = 0x4a0f6000,
3004                .pa_end         = 0x4a0f6fff,
3005                .flags          = ADDR_TYPE_RT
3006        },
3007        { }
3008};
3009
3010/* l4_cfg -> spinlock */
3011static struct omap_hwmod_ocp_if dra7xx_l4_cfg__spinlock = {
3012        .master         = &dra7xx_l4_cfg_hwmod,
3013        .slave          = &dra7xx_spinlock_hwmod,
3014        .clk            = "l3_iclk_div",
3015        .addr           = dra7xx_spinlock_addrs,
3016        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3017};
3018
3019/* l4_wkup -> timer1 */
3020static struct omap_hwmod_ocp_if dra7xx_l4_wkup__timer1 = {
3021        .master         = &dra7xx_l4_wkup_hwmod,
3022        .slave          = &dra7xx_timer1_hwmod,
3023        .clk            = "wkupaon_iclk_mux",
3024        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3025};
3026
3027/* l4_per1 -> timer2 */
3028static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer2 = {
3029        .master         = &dra7xx_l4_per1_hwmod,
3030        .slave          = &dra7xx_timer2_hwmod,
3031        .clk            = "l3_iclk_div",
3032        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3033};
3034
3035/* l4_per1 -> timer3 */
3036static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer3 = {
3037        .master         = &dra7xx_l4_per1_hwmod,
3038        .slave          = &dra7xx_timer3_hwmod,
3039        .clk            = "l3_iclk_div",
3040        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3041};
3042
3043/* l4_per1 -> timer4 */
3044static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer4 = {
3045        .master         = &dra7xx_l4_per1_hwmod,
3046        .slave          = &dra7xx_timer4_hwmod,
3047        .clk            = "l3_iclk_div",
3048        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3049};
3050
3051/* l4_per3 -> timer5 */
3052static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer5 = {
3053        .master         = &dra7xx_l4_per3_hwmod,
3054        .slave          = &dra7xx_timer5_hwmod,
3055        .clk            = "l3_iclk_div",
3056        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3057};
3058
3059/* l4_per3 -> timer6 */
3060static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer6 = {
3061        .master         = &dra7xx_l4_per3_hwmod,
3062        .slave          = &dra7xx_timer6_hwmod,
3063        .clk            = "l3_iclk_div",
3064        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3065};
3066
3067/* l4_per3 -> timer7 */
3068static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer7 = {
3069        .master         = &dra7xx_l4_per3_hwmod,
3070        .slave          = &dra7xx_timer7_hwmod,
3071        .clk            = "l3_iclk_div",
3072        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3073};
3074
3075/* l4_per3 -> timer8 */
3076static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer8 = {
3077        .master         = &dra7xx_l4_per3_hwmod,
3078        .slave          = &dra7xx_timer8_hwmod,
3079        .clk            = "l3_iclk_div",
3080        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3081};
3082
3083/* l4_per1 -> timer9 */
3084static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer9 = {
3085        .master         = &dra7xx_l4_per1_hwmod,
3086        .slave          = &dra7xx_timer9_hwmod,
3087        .clk            = "l3_iclk_div",
3088        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3089};
3090
3091/* l4_per1 -> timer10 */
3092static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer10 = {
3093        .master         = &dra7xx_l4_per1_hwmod,
3094        .slave          = &dra7xx_timer10_hwmod,
3095        .clk            = "l3_iclk_div",
3096        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3097};
3098
3099/* l4_per1 -> timer11 */
3100static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer11 = {
3101        .master         = &dra7xx_l4_per1_hwmod,
3102        .slave          = &dra7xx_timer11_hwmod,
3103        .clk            = "l3_iclk_div",
3104        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3105};
3106
3107/* l4_per3 -> timer13 */
3108static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer13 = {
3109        .master         = &dra7xx_l4_per3_hwmod,
3110        .slave          = &dra7xx_timer13_hwmod,
3111        .clk            = "l3_iclk_div",
3112        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3113};
3114
3115/* l4_per3 -> timer14 */
3116static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer14 = {
3117        .master         = &dra7xx_l4_per3_hwmod,
3118        .slave          = &dra7xx_timer14_hwmod,
3119        .clk            = "l3_iclk_div",
3120        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3121};
3122
3123/* l4_per3 -> timer15 */
3124static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer15 = {
3125        .master         = &dra7xx_l4_per3_hwmod,
3126        .slave          = &dra7xx_timer15_hwmod,
3127        .clk            = "l3_iclk_div",
3128        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3129};
3130
3131/* l4_per3 -> timer16 */
3132static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer16 = {
3133        .master         = &dra7xx_l4_per3_hwmod,
3134        .slave          = &dra7xx_timer16_hwmod,
3135        .clk            = "l3_iclk_div",
3136        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3137};
3138
3139/* l4_per1 -> uart1 */
3140static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart1 = {
3141        .master         = &dra7xx_l4_per1_hwmod,
3142        .slave          = &dra7xx_uart1_hwmod,
3143        .clk            = "l3_iclk_div",
3144        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3145};
3146
3147/* l4_per1 -> uart2 */
3148static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart2 = {
3149        .master         = &dra7xx_l4_per1_hwmod,
3150        .slave          = &dra7xx_uart2_hwmod,
3151        .clk            = "l3_iclk_div",
3152        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3153};
3154
3155/* l4_per1 -> uart3 */
3156static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart3 = {
3157        .master         = &dra7xx_l4_per1_hwmod,
3158        .slave          = &dra7xx_uart3_hwmod,
3159        .clk            = "l3_iclk_div",
3160        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3161};
3162
3163/* l4_per1 -> uart4 */
3164static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart4 = {
3165        .master         = &dra7xx_l4_per1_hwmod,
3166        .slave          = &dra7xx_uart4_hwmod,
3167        .clk            = "l3_iclk_div",
3168        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3169};
3170
3171/* l4_per1 -> uart5 */
3172static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart5 = {
3173        .master         = &dra7xx_l4_per1_hwmod,
3174        .slave          = &dra7xx_uart5_hwmod,
3175        .clk            = "l3_iclk_div",
3176        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3177};
3178
3179/* l4_per1 -> uart6 */
3180static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart6 = {
3181        .master         = &dra7xx_l4_per1_hwmod,
3182        .slave          = &dra7xx_uart6_hwmod,
3183        .clk            = "l3_iclk_div",
3184        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3185};
3186
3187/* l4_per2 -> uart7 */
3188static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart7 = {
3189        .master         = &dra7xx_l4_per2_hwmod,
3190        .slave          = &dra7xx_uart7_hwmod,
3191        .clk            = "l3_iclk_div",
3192        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3193};
3194
3195/* l4_per2 -> uart8 */
3196static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart8 = {
3197        .master         = &dra7xx_l4_per2_hwmod,
3198        .slave          = &dra7xx_uart8_hwmod,
3199        .clk            = "l3_iclk_div",
3200        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3201};
3202
3203/* l4_per2 -> uart9 */
3204static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart9 = {
3205        .master         = &dra7xx_l4_per2_hwmod,
3206        .slave          = &dra7xx_uart9_hwmod,
3207        .clk            = "l3_iclk_div",
3208        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3209};
3210
3211/* l4_wkup -> uart10 */
3212static struct omap_hwmod_ocp_if dra7xx_l4_wkup__uart10 = {
3213        .master         = &dra7xx_l4_wkup_hwmod,
3214        .slave          = &dra7xx_uart10_hwmod,
3215        .clk            = "wkupaon_iclk_mux",
3216        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3217};
3218
3219/* l4_per3 -> usb_otg_ss1 */
3220static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss1 = {
3221        .master         = &dra7xx_l4_per3_hwmod,
3222        .slave          = &dra7xx_usb_otg_ss1_hwmod,
3223        .clk            = "dpll_core_h13x2_ck",
3224        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3225};
3226
3227/* l4_per3 -> usb_otg_ss2 */
3228static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss2 = {
3229        .master         = &dra7xx_l4_per3_hwmod,
3230        .slave          = &dra7xx_usb_otg_ss2_hwmod,
3231        .clk            = "dpll_core_h13x2_ck",
3232        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3233};
3234
3235/* l4_per3 -> usb_otg_ss3 */
3236static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss3 = {
3237        .master         = &dra7xx_l4_per3_hwmod,
3238        .slave          = &dra7xx_usb_otg_ss3_hwmod,
3239        .clk            = "dpll_core_h13x2_ck",
3240        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3241};
3242
3243/* l4_per3 -> usb_otg_ss4 */
3244static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss4 = {
3245        .master         = &dra7xx_l4_per3_hwmod,
3246        .slave          = &dra7xx_usb_otg_ss4_hwmod,
3247        .clk            = "dpll_core_h13x2_ck",
3248        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3249};
3250
3251/* l3_main_1 -> vcp1 */
3252static struct omap_hwmod_ocp_if dra7xx_l3_main_1__vcp1 = {
3253        .master         = &dra7xx_l3_main_1_hwmod,
3254        .slave          = &dra7xx_vcp1_hwmod,
3255        .clk            = "l3_iclk_div",
3256        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3257};
3258
3259/* l4_per2 -> vcp1 */
3260static struct omap_hwmod_ocp_if dra7xx_l4_per2__vcp1 = {
3261        .master         = &dra7xx_l4_per2_hwmod,
3262        .slave          = &dra7xx_vcp1_hwmod,
3263        .clk            = "l3_iclk_div",
3264        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3265};
3266
3267/* l3_main_1 -> vcp2 */
3268static struct omap_hwmod_ocp_if dra7xx_l3_main_1__vcp2 = {
3269        .master         = &dra7xx_l3_main_1_hwmod,
3270        .slave          = &dra7xx_vcp2_hwmod,
3271        .clk            = "l3_iclk_div",
3272        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3273};
3274
3275/* l4_per2 -> vcp2 */
3276static struct omap_hwmod_ocp_if dra7xx_l4_per2__vcp2 = {
3277        .master         = &dra7xx_l4_per2_hwmod,
3278        .slave          = &dra7xx_vcp2_hwmod,
3279        .clk            = "l3_iclk_div",
3280        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3281};
3282
3283/* l4_wkup -> wd_timer2 */
3284static struct omap_hwmod_ocp_if dra7xx_l4_wkup__wd_timer2 = {
3285        .master         = &dra7xx_l4_wkup_hwmod,
3286        .slave          = &dra7xx_wd_timer2_hwmod,
3287        .clk            = "wkupaon_iclk_mux",
3288        .user           = OCP_USER_MPU | OCP_USER_SDMA,
3289};
3290
3291static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
3292        &dra7xx_l3_main_2__l3_instr,
3293        &dra7xx_l4_cfg__l3_main_1,
3294        &dra7xx_mpu__l3_main_1,
3295        &dra7xx_l3_main_1__l3_main_2,
3296        &dra7xx_l4_cfg__l3_main_2,
3297        &dra7xx_l3_main_1__l4_cfg,
3298        &dra7xx_l3_main_1__l4_per1,
3299        &dra7xx_l3_main_1__l4_per2,
3300        &dra7xx_l3_main_1__l4_per3,
3301        &dra7xx_l3_main_1__l4_wkup,
3302        &dra7xx_l4_per2__atl,
3303        &dra7xx_l3_main_1__bb2d,
3304        &dra7xx_l4_wkup__counter_32k,
3305        &dra7xx_l4_wkup__ctrl_module_wkup,
3306        &dra7xx_l4_wkup__dcan1,
3307        &dra7xx_l4_per2__dcan2,
3308        &dra7xx_l4_per2__cpgmac0,
3309        &dra7xx_gmac__mdio,
3310        &dra7xx_l4_cfg__dma_system,
3311        &dra7xx_l3_main_1__dss,
3312        &dra7xx_l3_main_1__dispc,
3313        &dra7xx_l3_main_1__hdmi,
3314        &dra7xx_l4_per1__elm,
3315        &dra7xx_l4_wkup__gpio1,
3316        &dra7xx_l4_per1__gpio2,
3317        &dra7xx_l4_per1__gpio3,
3318        &dra7xx_l4_per1__gpio4,
3319        &dra7xx_l4_per1__gpio5,
3320        &dra7xx_l4_per1__gpio6,
3321        &dra7xx_l4_per1__gpio7,
3322        &dra7xx_l4_per1__gpio8,
3323        &dra7xx_l3_main_1__gpmc,
3324        &dra7xx_l4_per1__hdq1w,
3325        &dra7xx_l4_per1__i2c1,
3326        &dra7xx_l4_per1__i2c2,
3327        &dra7xx_l4_per1__i2c3,
3328        &dra7xx_l4_per1__i2c4,
3329        &dra7xx_l4_per1__i2c5,
3330        &dra7xx_l4_cfg__mailbox1,
3331        &dra7xx_l4_per3__mailbox2,
3332        &dra7xx_l4_per3__mailbox3,
3333        &dra7xx_l4_per3__mailbox4,
3334        &dra7xx_l4_per3__mailbox5,
3335        &dra7xx_l4_per3__mailbox6,
3336        &dra7xx_l4_per3__mailbox7,
3337        &dra7xx_l4_per3__mailbox8,
3338        &dra7xx_l4_per3__mailbox9,
3339        &dra7xx_l4_per3__mailbox10,
3340        &dra7xx_l4_per3__mailbox11,
3341        &dra7xx_l4_per3__mailbox12,
3342        &dra7xx_l4_per3__mailbox13,
3343        &dra7xx_l4_per1__mcspi1,
3344        &dra7xx_l4_per1__mcspi2,
3345        &dra7xx_l4_per1__mcspi3,
3346        &dra7xx_l4_per1__mcspi4,
3347        &dra7xx_l4_per1__mmc1,
3348        &dra7xx_l4_per1__mmc2,
3349        &dra7xx_l4_per1__mmc3,
3350        &dra7xx_l4_per1__mmc4,
3351        &dra7xx_l4_cfg__mpu,
3352        &dra7xx_l4_cfg__ocp2scp1,
3353        &dra7xx_l4_cfg__ocp2scp3,
3354        &dra7xx_l3_main_1__pciess1,
3355        &dra7xx_l4_cfg__pciess1,
3356        &dra7xx_l3_main_1__pciess2,
3357        &dra7xx_l4_cfg__pciess2,
3358        &dra7xx_l3_main_1__qspi,
3359        &dra7xx_l4_per3__rtcss,
3360        &dra7xx_l4_cfg__sata,
3361        &dra7xx_l4_cfg__smartreflex_core,
3362        &dra7xx_l4_cfg__smartreflex_mpu,
3363        &dra7xx_l4_cfg__spinlock,
3364        &dra7xx_l4_wkup__timer1,
3365        &dra7xx_l4_per1__timer2,
3366        &dra7xx_l4_per1__timer3,
3367        &dra7xx_l4_per1__timer4,
3368        &dra7xx_l4_per3__timer5,
3369        &dra7xx_l4_per3__timer6,
3370        &dra7xx_l4_per3__timer7,
3371        &dra7xx_l4_per3__timer8,
3372        &dra7xx_l4_per1__timer9,
3373        &dra7xx_l4_per1__timer10,
3374        &dra7xx_l4_per1__timer11,
3375        &dra7xx_l4_per3__timer13,
3376        &dra7xx_l4_per3__timer14,
3377        &dra7xx_l4_per3__timer15,
3378        &dra7xx_l4_per3__timer16,
3379        &dra7xx_l4_per1__uart1,
3380        &dra7xx_l4_per1__uart2,
3381        &dra7xx_l4_per1__uart3,
3382        &dra7xx_l4_per1__uart4,
3383        &dra7xx_l4_per1__uart5,
3384        &dra7xx_l4_per1__uart6,
3385        &dra7xx_l4_per2__uart7,
3386        &dra7xx_l4_per2__uart8,
3387        &dra7xx_l4_per2__uart9,
3388        &dra7xx_l4_wkup__uart10,
3389        &dra7xx_l4_per3__usb_otg_ss1,
3390        &dra7xx_l4_per3__usb_otg_ss2,
3391        &dra7xx_l4_per3__usb_otg_ss3,
3392        &dra7xx_l3_main_1__vcp1,
3393        &dra7xx_l4_per2__vcp1,
3394        &dra7xx_l3_main_1__vcp2,
3395        &dra7xx_l4_per2__vcp2,
3396        &dra7xx_l4_wkup__wd_timer2,
3397        NULL,
3398};
3399
3400static struct omap_hwmod_ocp_if *dra74x_hwmod_ocp_ifs[] __initdata = {
3401        &dra7xx_l4_per3__usb_otg_ss4,
3402        NULL,
3403};
3404
3405static struct omap_hwmod_ocp_if *dra72x_hwmod_ocp_ifs[] __initdata = {
3406        NULL,
3407};
3408
3409int __init dra7xx_hwmod_init(void)
3410{
3411        int ret;
3412
3413        omap_hwmod_init();
3414        ret = omap_hwmod_register_links(dra7xx_hwmod_ocp_ifs);
3415
3416        if (!ret && soc_is_dra74x())
3417                return omap_hwmod_register_links(dra74x_hwmod_ocp_ifs);
3418        else if (!ret && soc_is_dra72x())
3419                return omap_hwmod_register_links(dra72x_hwmod_ocp_ifs);
3420
3421        return ret;
3422}
3423