Linux Audio

Check our new training course

Linux BSP upgrade and security maintenance

Need help to get security updates for your Linux BSP?
Loading...
Note: File does not exist in v3.5.6.
   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/power/smartreflex.h>
  23#include <linux/i2c-omap.h>
  24
  25#include <linux/omap-dma.h>
  26#include <linux/platform_data/spi-omap2-mcspi.h>
  27#include <linux/platform_data/asoc-ti-mcbsp.h>
  28#include <plat/dmtimer.h>
  29
  30#include "omap_hwmod.h"
  31#include "omap_hwmod_common_data.h"
  32#include "cm1_7xx.h"
  33#include "cm2_7xx.h"
  34#include "prm7xx.h"
  35#include "i2c.h"
  36#include "mmc.h"
  37#include "wd_timer.h"
  38
  39/* Base offset for all DRA7XX interrupts external to MPUSS */
  40#define DRA7XX_IRQ_GIC_START	32
  41
  42/* Base offset for all DRA7XX dma requests */
  43#define DRA7XX_DMA_REQ_START	1
  44
  45
  46/*
  47 * IP blocks
  48 */
  49
  50/*
  51 * 'l3' class
  52 * instance(s): l3_instr, l3_main_1, l3_main_2
  53 */
  54static struct omap_hwmod_class dra7xx_l3_hwmod_class = {
  55	.name	= "l3",
  56};
  57
  58/* l3_instr */
  59static struct omap_hwmod dra7xx_l3_instr_hwmod = {
  60	.name		= "l3_instr",
  61	.class		= &dra7xx_l3_hwmod_class,
  62	.clkdm_name	= "l3instr_clkdm",
  63	.prcm = {
  64		.omap4 = {
  65			.clkctrl_offs = DRA7XX_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
  66			.context_offs = DRA7XX_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
  67			.modulemode   = MODULEMODE_HWCTRL,
  68		},
  69	},
  70};
  71
  72/* l3_main_1 */
  73static struct omap_hwmod dra7xx_l3_main_1_hwmod = {
  74	.name		= "l3_main_1",
  75	.class		= &dra7xx_l3_hwmod_class,
  76	.clkdm_name	= "l3main1_clkdm",
  77	.prcm = {
  78		.omap4 = {
  79			.clkctrl_offs = DRA7XX_CM_L3MAIN1_L3_MAIN_1_CLKCTRL_OFFSET,
  80			.context_offs = DRA7XX_RM_L3MAIN1_L3_MAIN_1_CONTEXT_OFFSET,
  81		},
  82	},
  83};
  84
  85/* l3_main_2 */
  86static struct omap_hwmod dra7xx_l3_main_2_hwmod = {
  87	.name		= "l3_main_2",
  88	.class		= &dra7xx_l3_hwmod_class,
  89	.clkdm_name	= "l3instr_clkdm",
  90	.prcm = {
  91		.omap4 = {
  92			.clkctrl_offs = DRA7XX_CM_L3INSTR_L3_MAIN_2_CLKCTRL_OFFSET,
  93			.context_offs = DRA7XX_RM_L3INSTR_L3_MAIN_2_CONTEXT_OFFSET,
  94			.modulemode   = MODULEMODE_HWCTRL,
  95		},
  96	},
  97};
  98
  99/*
 100 * 'l4' class
 101 * instance(s): l4_cfg, l4_per1, l4_per2, l4_per3, l4_wkup
 102 */
 103static struct omap_hwmod_class dra7xx_l4_hwmod_class = {
 104	.name	= "l4",
 105};
 106
 107/* l4_cfg */
 108static struct omap_hwmod dra7xx_l4_cfg_hwmod = {
 109	.name		= "l4_cfg",
 110	.class		= &dra7xx_l4_hwmod_class,
 111	.clkdm_name	= "l4cfg_clkdm",
 112	.prcm = {
 113		.omap4 = {
 114			.clkctrl_offs = DRA7XX_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
 115			.context_offs = DRA7XX_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
 116		},
 117	},
 118};
 119
 120/* l4_per1 */
 121static struct omap_hwmod dra7xx_l4_per1_hwmod = {
 122	.name		= "l4_per1",
 123	.class		= &dra7xx_l4_hwmod_class,
 124	.clkdm_name	= "l4per_clkdm",
 125	.prcm = {
 126		.omap4 = {
 127			.clkctrl_offs = DRA7XX_CM_L4PER_L4_PER1_CLKCTRL_OFFSET,
 128			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 129		},
 130	},
 131};
 132
 133/* l4_per2 */
 134static struct omap_hwmod dra7xx_l4_per2_hwmod = {
 135	.name		= "l4_per2",
 136	.class		= &dra7xx_l4_hwmod_class,
 137	.clkdm_name	= "l4per2_clkdm",
 138	.prcm = {
 139		.omap4 = {
 140			.clkctrl_offs = DRA7XX_CM_L4PER2_L4_PER2_CLKCTRL_OFFSET,
 141			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 142		},
 143	},
 144};
 145
 146/* l4_per3 */
 147static struct omap_hwmod dra7xx_l4_per3_hwmod = {
 148	.name		= "l4_per3",
 149	.class		= &dra7xx_l4_hwmod_class,
 150	.clkdm_name	= "l4per3_clkdm",
 151	.prcm = {
 152		.omap4 = {
 153			.clkctrl_offs = DRA7XX_CM_L4PER3_L4_PER3_CLKCTRL_OFFSET,
 154			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 155		},
 156	},
 157};
 158
 159/* l4_wkup */
 160static struct omap_hwmod dra7xx_l4_wkup_hwmod = {
 161	.name		= "l4_wkup",
 162	.class		= &dra7xx_l4_hwmod_class,
 163	.clkdm_name	= "wkupaon_clkdm",
 164	.prcm = {
 165		.omap4 = {
 166			.clkctrl_offs = DRA7XX_CM_WKUPAON_L4_WKUP_CLKCTRL_OFFSET,
 167			.context_offs = DRA7XX_RM_WKUPAON_L4_WKUP_CONTEXT_OFFSET,
 168		},
 169	},
 170};
 171
 172/*
 173 * 'atl' class
 174 *
 175 */
 176
 177static struct omap_hwmod_class dra7xx_atl_hwmod_class = {
 178	.name	= "atl",
 179};
 180
 181/* atl */
 182static struct omap_hwmod dra7xx_atl_hwmod = {
 183	.name		= "atl",
 184	.class		= &dra7xx_atl_hwmod_class,
 185	.clkdm_name	= "atl_clkdm",
 186	.main_clk	= "atl_gfclk_mux",
 187	.prcm = {
 188		.omap4 = {
 189			.clkctrl_offs = DRA7XX_CM_ATL_ATL_CLKCTRL_OFFSET,
 190			.context_offs = DRA7XX_RM_ATL_ATL_CONTEXT_OFFSET,
 191			.modulemode   = MODULEMODE_SWCTRL,
 192		},
 193	},
 194};
 195
 196/*
 197 * 'bb2d' class
 198 *
 199 */
 200
 201static struct omap_hwmod_class dra7xx_bb2d_hwmod_class = {
 202	.name	= "bb2d",
 203};
 204
 205/* bb2d */
 206static struct omap_hwmod dra7xx_bb2d_hwmod = {
 207	.name		= "bb2d",
 208	.class		= &dra7xx_bb2d_hwmod_class,
 209	.clkdm_name	= "dss_clkdm",
 210	.main_clk	= "dpll_core_h24x2_ck",
 211	.prcm = {
 212		.omap4 = {
 213			.clkctrl_offs = DRA7XX_CM_DSS_BB2D_CLKCTRL_OFFSET,
 214			.context_offs = DRA7XX_RM_DSS_BB2D_CONTEXT_OFFSET,
 215			.modulemode   = MODULEMODE_SWCTRL,
 216		},
 217	},
 218};
 219
 220/*
 221 * 'counter' class
 222 *
 223 */
 224
 225static struct omap_hwmod_class_sysconfig dra7xx_counter_sysc = {
 226	.rev_offs	= 0x0000,
 227	.sysc_offs	= 0x0010,
 228	.sysc_flags	= SYSC_HAS_SIDLEMODE,
 229	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 230			   SIDLE_SMART_WKUP),
 231	.sysc_fields	= &omap_hwmod_sysc_type1,
 232};
 233
 234static struct omap_hwmod_class dra7xx_counter_hwmod_class = {
 235	.name	= "counter",
 236	.sysc	= &dra7xx_counter_sysc,
 237};
 238
 239/* counter_32k */
 240static struct omap_hwmod dra7xx_counter_32k_hwmod = {
 241	.name		= "counter_32k",
 242	.class		= &dra7xx_counter_hwmod_class,
 243	.clkdm_name	= "wkupaon_clkdm",
 244	.flags		= HWMOD_SWSUP_SIDLE,
 245	.main_clk	= "wkupaon_iclk_mux",
 246	.prcm = {
 247		.omap4 = {
 248			.clkctrl_offs = DRA7XX_CM_WKUPAON_COUNTER_32K_CLKCTRL_OFFSET,
 249			.context_offs = DRA7XX_RM_WKUPAON_COUNTER_32K_CONTEXT_OFFSET,
 250		},
 251	},
 252};
 253
 254/*
 255 * 'ctrl_module' class
 256 *
 257 */
 258
 259static struct omap_hwmod_class dra7xx_ctrl_module_hwmod_class = {
 260	.name	= "ctrl_module",
 261};
 262
 263/* ctrl_module_wkup */
 264static struct omap_hwmod dra7xx_ctrl_module_wkup_hwmod = {
 265	.name		= "ctrl_module_wkup",
 266	.class		= &dra7xx_ctrl_module_hwmod_class,
 267	.clkdm_name	= "wkupaon_clkdm",
 268	.prcm = {
 269		.omap4 = {
 270			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 271		},
 272	},
 273};
 274
 275/*
 276 * 'dcan' class
 277 *
 278 */
 279
 280static struct omap_hwmod_class dra7xx_dcan_hwmod_class = {
 281	.name	= "dcan",
 282};
 283
 284/* dcan1 */
 285static struct omap_hwmod dra7xx_dcan1_hwmod = {
 286	.name		= "dcan1",
 287	.class		= &dra7xx_dcan_hwmod_class,
 288	.clkdm_name	= "wkupaon_clkdm",
 289	.main_clk	= "dcan1_sys_clk_mux",
 290	.prcm = {
 291		.omap4 = {
 292			.clkctrl_offs = DRA7XX_CM_WKUPAON_DCAN1_CLKCTRL_OFFSET,
 293			.context_offs = DRA7XX_RM_WKUPAON_DCAN1_CONTEXT_OFFSET,
 294			.modulemode   = MODULEMODE_SWCTRL,
 295		},
 296	},
 297};
 298
 299/* dcan2 */
 300static struct omap_hwmod dra7xx_dcan2_hwmod = {
 301	.name		= "dcan2",
 302	.class		= &dra7xx_dcan_hwmod_class,
 303	.clkdm_name	= "l4per2_clkdm",
 304	.main_clk	= "sys_clkin1",
 305	.prcm = {
 306		.omap4 = {
 307			.clkctrl_offs = DRA7XX_CM_L4PER2_DCAN2_CLKCTRL_OFFSET,
 308			.context_offs = DRA7XX_RM_L4PER2_DCAN2_CONTEXT_OFFSET,
 309			.modulemode   = MODULEMODE_SWCTRL,
 310		},
 311	},
 312};
 313
 314/*
 315 * 'dma' class
 316 *
 317 */
 318
 319static struct omap_hwmod_class_sysconfig dra7xx_dma_sysc = {
 320	.rev_offs	= 0x0000,
 321	.sysc_offs	= 0x002c,
 322	.syss_offs	= 0x0028,
 323	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 324			   SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
 325			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 326			   SYSS_HAS_RESET_STATUS),
 327	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 328			   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
 329			   MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
 330	.sysc_fields	= &omap_hwmod_sysc_type1,
 331};
 332
 333static struct omap_hwmod_class dra7xx_dma_hwmod_class = {
 334	.name	= "dma",
 335	.sysc	= &dra7xx_dma_sysc,
 336};
 337
 338/* dma dev_attr */
 339static struct omap_dma_dev_attr dma_dev_attr = {
 340	.dev_caps	= RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
 341			  IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
 342	.lch_count	= 32,
 343};
 344
 345/* dma_system */
 346static struct omap_hwmod_irq_info dra7xx_dma_system_irqs[] = {
 347	{ .name = "0", .irq = 12 + DRA7XX_IRQ_GIC_START },
 348	{ .name = "1", .irq = 13 + DRA7XX_IRQ_GIC_START },
 349	{ .name = "2", .irq = 14 + DRA7XX_IRQ_GIC_START },
 350	{ .name = "3", .irq = 15 + DRA7XX_IRQ_GIC_START },
 351	{ .irq = -1 }
 352};
 353
 354static struct omap_hwmod dra7xx_dma_system_hwmod = {
 355	.name		= "dma_system",
 356	.class		= &dra7xx_dma_hwmod_class,
 357	.clkdm_name	= "dma_clkdm",
 358	.mpu_irqs	= dra7xx_dma_system_irqs,
 359	.main_clk	= "l3_iclk_div",
 360	.prcm = {
 361		.omap4 = {
 362			.clkctrl_offs = DRA7XX_CM_DMA_DMA_SYSTEM_CLKCTRL_OFFSET,
 363			.context_offs = DRA7XX_RM_DMA_DMA_SYSTEM_CONTEXT_OFFSET,
 364		},
 365	},
 366	.dev_attr	= &dma_dev_attr,
 367};
 368
 369/*
 370 * 'dss' class
 371 *
 372 */
 373
 374static struct omap_hwmod_class_sysconfig dra7xx_dss_sysc = {
 375	.rev_offs	= 0x0000,
 376	.syss_offs	= 0x0014,
 377	.sysc_flags	= SYSS_HAS_RESET_STATUS,
 378};
 379
 380static struct omap_hwmod_class dra7xx_dss_hwmod_class = {
 381	.name	= "dss",
 382	.sysc	= &dra7xx_dss_sysc,
 383	.reset	= omap_dss_reset,
 384};
 385
 386/* dss */
 387static struct omap_hwmod_dma_info dra7xx_dss_sdma_reqs[] = {
 388	{ .dma_req = 75 + DRA7XX_DMA_REQ_START },
 389	{ .dma_req = -1 }
 390};
 391
 392static struct omap_hwmod_opt_clk dss_opt_clks[] = {
 393	{ .role = "dss_clk", .clk = "dss_dss_clk" },
 394	{ .role = "hdmi_phy_clk", .clk = "dss_48mhz_clk" },
 395	{ .role = "32khz_clk", .clk = "dss_32khz_clk" },
 396	{ .role = "video2_clk", .clk = "dss_video2_clk" },
 397	{ .role = "video1_clk", .clk = "dss_video1_clk" },
 398	{ .role = "hdmi_clk", .clk = "dss_hdmi_clk" },
 399};
 400
 401static struct omap_hwmod dra7xx_dss_hwmod = {
 402	.name		= "dss_core",
 403	.class		= &dra7xx_dss_hwmod_class,
 404	.clkdm_name	= "dss_clkdm",
 405	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 406	.sdma_reqs	= dra7xx_dss_sdma_reqs,
 407	.main_clk	= "dss_dss_clk",
 408	.prcm = {
 409		.omap4 = {
 410			.clkctrl_offs = DRA7XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 411			.context_offs = DRA7XX_RM_DSS_DSS_CONTEXT_OFFSET,
 412			.modulemode   = MODULEMODE_SWCTRL,
 413		},
 414	},
 415	.opt_clks	= dss_opt_clks,
 416	.opt_clks_cnt	= ARRAY_SIZE(dss_opt_clks),
 417};
 418
 419/*
 420 * 'dispc' class
 421 * display controller
 422 */
 423
 424static struct omap_hwmod_class_sysconfig dra7xx_dispc_sysc = {
 425	.rev_offs	= 0x0000,
 426	.sysc_offs	= 0x0010,
 427	.syss_offs	= 0x0014,
 428	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 429			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
 430			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 431			   SYSS_HAS_RESET_STATUS),
 432	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 433			   MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
 434	.sysc_fields	= &omap_hwmod_sysc_type1,
 435};
 436
 437static struct omap_hwmod_class dra7xx_dispc_hwmod_class = {
 438	.name	= "dispc",
 439	.sysc	= &dra7xx_dispc_sysc,
 440};
 441
 442/* dss_dispc */
 443/* dss_dispc dev_attr */
 444static struct omap_dss_dispc_dev_attr dss_dispc_dev_attr = {
 445	.has_framedonetv_irq	= 1,
 446	.manager_count		= 4,
 447};
 448
 449static struct omap_hwmod dra7xx_dss_dispc_hwmod = {
 450	.name		= "dss_dispc",
 451	.class		= &dra7xx_dispc_hwmod_class,
 452	.clkdm_name	= "dss_clkdm",
 453	.main_clk	= "dss_dss_clk",
 454	.prcm = {
 455		.omap4 = {
 456			.clkctrl_offs = DRA7XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 457			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 458		},
 459	},
 460	.dev_attr	= &dss_dispc_dev_attr,
 461};
 462
 463/*
 464 * 'hdmi' class
 465 * hdmi controller
 466 */
 467
 468static struct omap_hwmod_class_sysconfig dra7xx_hdmi_sysc = {
 469	.rev_offs	= 0x0000,
 470	.sysc_offs	= 0x0010,
 471	.sysc_flags	= (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
 472			   SYSC_HAS_SOFTRESET),
 473	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 474			   SIDLE_SMART_WKUP),
 475	.sysc_fields	= &omap_hwmod_sysc_type2,
 476};
 477
 478static struct omap_hwmod_class dra7xx_hdmi_hwmod_class = {
 479	.name	= "hdmi",
 480	.sysc	= &dra7xx_hdmi_sysc,
 481};
 482
 483/* dss_hdmi */
 484
 485static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
 486	{ .role = "sys_clk", .clk = "dss_hdmi_clk" },
 487};
 488
 489static struct omap_hwmod dra7xx_dss_hdmi_hwmod = {
 490	.name		= "dss_hdmi",
 491	.class		= &dra7xx_hdmi_hwmod_class,
 492	.clkdm_name	= "dss_clkdm",
 493	.main_clk	= "dss_48mhz_clk",
 494	.prcm = {
 495		.omap4 = {
 496			.clkctrl_offs = DRA7XX_CM_DSS_DSS_CLKCTRL_OFFSET,
 497			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
 498		},
 499	},
 500	.opt_clks	= dss_hdmi_opt_clks,
 501	.opt_clks_cnt	= ARRAY_SIZE(dss_hdmi_opt_clks),
 502};
 503
 504/*
 505 * 'elm' class
 506 *
 507 */
 508
 509static struct omap_hwmod_class_sysconfig dra7xx_elm_sysc = {
 510	.rev_offs	= 0x0000,
 511	.sysc_offs	= 0x0010,
 512	.syss_offs	= 0x0014,
 513	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 514			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 515			   SYSS_HAS_RESET_STATUS),
 516	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 517			   SIDLE_SMART_WKUP),
 518	.sysc_fields	= &omap_hwmod_sysc_type1,
 519};
 520
 521static struct omap_hwmod_class dra7xx_elm_hwmod_class = {
 522	.name	= "elm",
 523	.sysc	= &dra7xx_elm_sysc,
 524};
 525
 526/* elm */
 527
 528static struct omap_hwmod dra7xx_elm_hwmod = {
 529	.name		= "elm",
 530	.class		= &dra7xx_elm_hwmod_class,
 531	.clkdm_name	= "l4per_clkdm",
 532	.main_clk	= "l3_iclk_div",
 533	.prcm = {
 534		.omap4 = {
 535			.clkctrl_offs = DRA7XX_CM_L4PER_ELM_CLKCTRL_OFFSET,
 536			.context_offs = DRA7XX_RM_L4PER_ELM_CONTEXT_OFFSET,
 537		},
 538	},
 539};
 540
 541/*
 542 * 'gpio' class
 543 *
 544 */
 545
 546static struct omap_hwmod_class_sysconfig dra7xx_gpio_sysc = {
 547	.rev_offs	= 0x0000,
 548	.sysc_offs	= 0x0010,
 549	.syss_offs	= 0x0114,
 550	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
 551			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
 552			   SYSS_HAS_RESET_STATUS),
 553	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 554			   SIDLE_SMART_WKUP),
 555	.sysc_fields	= &omap_hwmod_sysc_type1,
 556};
 557
 558static struct omap_hwmod_class dra7xx_gpio_hwmod_class = {
 559	.name	= "gpio",
 560	.sysc	= &dra7xx_gpio_sysc,
 561	.rev	= 2,
 562};
 563
 564/* gpio dev_attr */
 565static struct omap_gpio_dev_attr gpio_dev_attr = {
 566	.bank_width	= 32,
 567	.dbck_flag	= true,
 568};
 569
 570/* gpio1 */
 571static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
 572	{ .role = "dbclk", .clk = "gpio1_dbclk" },
 573};
 574
 575static struct omap_hwmod dra7xx_gpio1_hwmod = {
 576	.name		= "gpio1",
 577	.class		= &dra7xx_gpio_hwmod_class,
 578	.clkdm_name	= "wkupaon_clkdm",
 579	.main_clk	= "wkupaon_iclk_mux",
 580	.prcm = {
 581		.omap4 = {
 582			.clkctrl_offs = DRA7XX_CM_WKUPAON_GPIO1_CLKCTRL_OFFSET,
 583			.context_offs = DRA7XX_RM_WKUPAON_GPIO1_CONTEXT_OFFSET,
 584			.modulemode   = MODULEMODE_HWCTRL,
 585		},
 586	},
 587	.opt_clks	= gpio1_opt_clks,
 588	.opt_clks_cnt	= ARRAY_SIZE(gpio1_opt_clks),
 589	.dev_attr	= &gpio_dev_attr,
 590};
 591
 592/* gpio2 */
 593static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
 594	{ .role = "dbclk", .clk = "gpio2_dbclk" },
 595};
 596
 597static struct omap_hwmod dra7xx_gpio2_hwmod = {
 598	.name		= "gpio2",
 599	.class		= &dra7xx_gpio_hwmod_class,
 600	.clkdm_name	= "l4per_clkdm",
 601	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 602	.main_clk	= "l3_iclk_div",
 603	.prcm = {
 604		.omap4 = {
 605			.clkctrl_offs = DRA7XX_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
 606			.context_offs = DRA7XX_RM_L4PER_GPIO2_CONTEXT_OFFSET,
 607			.modulemode   = MODULEMODE_HWCTRL,
 608		},
 609	},
 610	.opt_clks	= gpio2_opt_clks,
 611	.opt_clks_cnt	= ARRAY_SIZE(gpio2_opt_clks),
 612	.dev_attr	= &gpio_dev_attr,
 613};
 614
 615/* gpio3 */
 616static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
 617	{ .role = "dbclk", .clk = "gpio3_dbclk" },
 618};
 619
 620static struct omap_hwmod dra7xx_gpio3_hwmod = {
 621	.name		= "gpio3",
 622	.class		= &dra7xx_gpio_hwmod_class,
 623	.clkdm_name	= "l4per_clkdm",
 624	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 625	.main_clk	= "l3_iclk_div",
 626	.prcm = {
 627		.omap4 = {
 628			.clkctrl_offs = DRA7XX_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
 629			.context_offs = DRA7XX_RM_L4PER_GPIO3_CONTEXT_OFFSET,
 630			.modulemode   = MODULEMODE_HWCTRL,
 631		},
 632	},
 633	.opt_clks	= gpio3_opt_clks,
 634	.opt_clks_cnt	= ARRAY_SIZE(gpio3_opt_clks),
 635	.dev_attr	= &gpio_dev_attr,
 636};
 637
 638/* gpio4 */
 639static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
 640	{ .role = "dbclk", .clk = "gpio4_dbclk" },
 641};
 642
 643static struct omap_hwmod dra7xx_gpio4_hwmod = {
 644	.name		= "gpio4",
 645	.class		= &dra7xx_gpio_hwmod_class,
 646	.clkdm_name	= "l4per_clkdm",
 647	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 648	.main_clk	= "l3_iclk_div",
 649	.prcm = {
 650		.omap4 = {
 651			.clkctrl_offs = DRA7XX_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
 652			.context_offs = DRA7XX_RM_L4PER_GPIO4_CONTEXT_OFFSET,
 653			.modulemode   = MODULEMODE_HWCTRL,
 654		},
 655	},
 656	.opt_clks	= gpio4_opt_clks,
 657	.opt_clks_cnt	= ARRAY_SIZE(gpio4_opt_clks),
 658	.dev_attr	= &gpio_dev_attr,
 659};
 660
 661/* gpio5 */
 662static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
 663	{ .role = "dbclk", .clk = "gpio5_dbclk" },
 664};
 665
 666static struct omap_hwmod dra7xx_gpio5_hwmod = {
 667	.name		= "gpio5",
 668	.class		= &dra7xx_gpio_hwmod_class,
 669	.clkdm_name	= "l4per_clkdm",
 670	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 671	.main_clk	= "l3_iclk_div",
 672	.prcm = {
 673		.omap4 = {
 674			.clkctrl_offs = DRA7XX_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
 675			.context_offs = DRA7XX_RM_L4PER_GPIO5_CONTEXT_OFFSET,
 676			.modulemode   = MODULEMODE_HWCTRL,
 677		},
 678	},
 679	.opt_clks	= gpio5_opt_clks,
 680	.opt_clks_cnt	= ARRAY_SIZE(gpio5_opt_clks),
 681	.dev_attr	= &gpio_dev_attr,
 682};
 683
 684/* gpio6 */
 685static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
 686	{ .role = "dbclk", .clk = "gpio6_dbclk" },
 687};
 688
 689static struct omap_hwmod dra7xx_gpio6_hwmod = {
 690	.name		= "gpio6",
 691	.class		= &dra7xx_gpio_hwmod_class,
 692	.clkdm_name	= "l4per_clkdm",
 693	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 694	.main_clk	= "l3_iclk_div",
 695	.prcm = {
 696		.omap4 = {
 697			.clkctrl_offs = DRA7XX_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
 698			.context_offs = DRA7XX_RM_L4PER_GPIO6_CONTEXT_OFFSET,
 699			.modulemode   = MODULEMODE_HWCTRL,
 700		},
 701	},
 702	.opt_clks	= gpio6_opt_clks,
 703	.opt_clks_cnt	= ARRAY_SIZE(gpio6_opt_clks),
 704	.dev_attr	= &gpio_dev_attr,
 705};
 706
 707/* gpio7 */
 708static struct omap_hwmod_opt_clk gpio7_opt_clks[] = {
 709	{ .role = "dbclk", .clk = "gpio7_dbclk" },
 710};
 711
 712static struct omap_hwmod dra7xx_gpio7_hwmod = {
 713	.name		= "gpio7",
 714	.class		= &dra7xx_gpio_hwmod_class,
 715	.clkdm_name	= "l4per_clkdm",
 716	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 717	.main_clk	= "l3_iclk_div",
 718	.prcm = {
 719		.omap4 = {
 720			.clkctrl_offs = DRA7XX_CM_L4PER_GPIO7_CLKCTRL_OFFSET,
 721			.context_offs = DRA7XX_RM_L4PER_GPIO7_CONTEXT_OFFSET,
 722			.modulemode   = MODULEMODE_HWCTRL,
 723		},
 724	},
 725	.opt_clks	= gpio7_opt_clks,
 726	.opt_clks_cnt	= ARRAY_SIZE(gpio7_opt_clks),
 727	.dev_attr	= &gpio_dev_attr,
 728};
 729
 730/* gpio8 */
 731static struct omap_hwmod_opt_clk gpio8_opt_clks[] = {
 732	{ .role = "dbclk", .clk = "gpio8_dbclk" },
 733};
 734
 735static struct omap_hwmod dra7xx_gpio8_hwmod = {
 736	.name		= "gpio8",
 737	.class		= &dra7xx_gpio_hwmod_class,
 738	.clkdm_name	= "l4per_clkdm",
 739	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 740	.main_clk	= "l3_iclk_div",
 741	.prcm = {
 742		.omap4 = {
 743			.clkctrl_offs = DRA7XX_CM_L4PER_GPIO8_CLKCTRL_OFFSET,
 744			.context_offs = DRA7XX_RM_L4PER_GPIO8_CONTEXT_OFFSET,
 745			.modulemode   = MODULEMODE_HWCTRL,
 746		},
 747	},
 748	.opt_clks	= gpio8_opt_clks,
 749	.opt_clks_cnt	= ARRAY_SIZE(gpio8_opt_clks),
 750	.dev_attr	= &gpio_dev_attr,
 751};
 752
 753/*
 754 * 'gpmc' class
 755 *
 756 */
 757
 758static struct omap_hwmod_class_sysconfig dra7xx_gpmc_sysc = {
 759	.rev_offs	= 0x0000,
 760	.sysc_offs	= 0x0010,
 761	.syss_offs	= 0x0014,
 762	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
 763			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 764	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 765			   SIDLE_SMART_WKUP),
 766	.sysc_fields	= &omap_hwmod_sysc_type1,
 767};
 768
 769static struct omap_hwmod_class dra7xx_gpmc_hwmod_class = {
 770	.name	= "gpmc",
 771	.sysc	= &dra7xx_gpmc_sysc,
 772};
 773
 774/* gpmc */
 775
 776static struct omap_hwmod dra7xx_gpmc_hwmod = {
 777	.name		= "gpmc",
 778	.class		= &dra7xx_gpmc_hwmod_class,
 779	.clkdm_name	= "l3main1_clkdm",
 780	.flags		= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
 781	.main_clk	= "l3_iclk_div",
 782	.prcm = {
 783		.omap4 = {
 784			.clkctrl_offs = DRA7XX_CM_L3MAIN1_GPMC_CLKCTRL_OFFSET,
 785			.context_offs = DRA7XX_RM_L3MAIN1_GPMC_CONTEXT_OFFSET,
 786			.modulemode   = MODULEMODE_HWCTRL,
 787		},
 788	},
 789};
 790
 791/*
 792 * 'hdq1w' class
 793 *
 794 */
 795
 796static struct omap_hwmod_class_sysconfig dra7xx_hdq1w_sysc = {
 797	.rev_offs	= 0x0000,
 798	.sysc_offs	= 0x0014,
 799	.syss_offs	= 0x0018,
 800	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
 801			   SYSS_HAS_RESET_STATUS),
 802	.sysc_fields	= &omap_hwmod_sysc_type1,
 803};
 804
 805static struct omap_hwmod_class dra7xx_hdq1w_hwmod_class = {
 806	.name	= "hdq1w",
 807	.sysc	= &dra7xx_hdq1w_sysc,
 808};
 809
 810/* hdq1w */
 811
 812static struct omap_hwmod dra7xx_hdq1w_hwmod = {
 813	.name		= "hdq1w",
 814	.class		= &dra7xx_hdq1w_hwmod_class,
 815	.clkdm_name	= "l4per_clkdm",
 816	.flags		= HWMOD_INIT_NO_RESET,
 817	.main_clk	= "func_12m_fclk",
 818	.prcm = {
 819		.omap4 = {
 820			.clkctrl_offs = DRA7XX_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
 821			.context_offs = DRA7XX_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
 822			.modulemode   = MODULEMODE_SWCTRL,
 823		},
 824	},
 825};
 826
 827/*
 828 * 'i2c' class
 829 *
 830 */
 831
 832static struct omap_hwmod_class_sysconfig dra7xx_i2c_sysc = {
 833	.sysc_offs	= 0x0010,
 834	.syss_offs	= 0x0090,
 835	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 836			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
 837			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 838	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 839			   SIDLE_SMART_WKUP),
 840	.clockact	= CLOCKACT_TEST_ICLK,
 841	.sysc_fields	= &omap_hwmod_sysc_type1,
 842};
 843
 844static struct omap_hwmod_class dra7xx_i2c_hwmod_class = {
 845	.name	= "i2c",
 846	.sysc	= &dra7xx_i2c_sysc,
 847	.reset	= &omap_i2c_reset,
 848	.rev	= OMAP_I2C_IP_VERSION_2,
 849};
 850
 851/* i2c dev_attr */
 852static struct omap_i2c_dev_attr i2c_dev_attr = {
 853	.flags	= OMAP_I2C_FLAG_BUS_SHIFT_NONE,
 854};
 855
 856/* i2c1 */
 857static struct omap_hwmod dra7xx_i2c1_hwmod = {
 858	.name		= "i2c1",
 859	.class		= &dra7xx_i2c_hwmod_class,
 860	.clkdm_name	= "l4per_clkdm",
 861	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 862	.main_clk	= "func_96m_fclk",
 863	.prcm = {
 864		.omap4 = {
 865			.clkctrl_offs = DRA7XX_CM_L4PER_I2C1_CLKCTRL_OFFSET,
 866			.context_offs = DRA7XX_RM_L4PER_I2C1_CONTEXT_OFFSET,
 867			.modulemode   = MODULEMODE_SWCTRL,
 868		},
 869	},
 870	.dev_attr	= &i2c_dev_attr,
 871};
 872
 873/* i2c2 */
 874static struct omap_hwmod dra7xx_i2c2_hwmod = {
 875	.name		= "i2c2",
 876	.class		= &dra7xx_i2c_hwmod_class,
 877	.clkdm_name	= "l4per_clkdm",
 878	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 879	.main_clk	= "func_96m_fclk",
 880	.prcm = {
 881		.omap4 = {
 882			.clkctrl_offs = DRA7XX_CM_L4PER_I2C2_CLKCTRL_OFFSET,
 883			.context_offs = DRA7XX_RM_L4PER_I2C2_CONTEXT_OFFSET,
 884			.modulemode   = MODULEMODE_SWCTRL,
 885		},
 886	},
 887	.dev_attr	= &i2c_dev_attr,
 888};
 889
 890/* i2c3 */
 891static struct omap_hwmod dra7xx_i2c3_hwmod = {
 892	.name		= "i2c3",
 893	.class		= &dra7xx_i2c_hwmod_class,
 894	.clkdm_name	= "l4per_clkdm",
 895	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 896	.main_clk	= "func_96m_fclk",
 897	.prcm = {
 898		.omap4 = {
 899			.clkctrl_offs = DRA7XX_CM_L4PER_I2C3_CLKCTRL_OFFSET,
 900			.context_offs = DRA7XX_RM_L4PER_I2C3_CONTEXT_OFFSET,
 901			.modulemode   = MODULEMODE_SWCTRL,
 902		},
 903	},
 904	.dev_attr	= &i2c_dev_attr,
 905};
 906
 907/* i2c4 */
 908static struct omap_hwmod dra7xx_i2c4_hwmod = {
 909	.name		= "i2c4",
 910	.class		= &dra7xx_i2c_hwmod_class,
 911	.clkdm_name	= "l4per_clkdm",
 912	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 913	.main_clk	= "func_96m_fclk",
 914	.prcm = {
 915		.omap4 = {
 916			.clkctrl_offs = DRA7XX_CM_L4PER_I2C4_CLKCTRL_OFFSET,
 917			.context_offs = DRA7XX_RM_L4PER_I2C4_CONTEXT_OFFSET,
 918			.modulemode   = MODULEMODE_SWCTRL,
 919		},
 920	},
 921	.dev_attr	= &i2c_dev_attr,
 922};
 923
 924/* i2c5 */
 925static struct omap_hwmod dra7xx_i2c5_hwmod = {
 926	.name		= "i2c5",
 927	.class		= &dra7xx_i2c_hwmod_class,
 928	.clkdm_name	= "ipu_clkdm",
 929	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 930	.main_clk	= "func_96m_fclk",
 931	.prcm = {
 932		.omap4 = {
 933			.clkctrl_offs = DRA7XX_CM_IPU_I2C5_CLKCTRL_OFFSET,
 934			.context_offs = DRA7XX_RM_IPU_I2C5_CONTEXT_OFFSET,
 935			.modulemode   = MODULEMODE_SWCTRL,
 936		},
 937	},
 938	.dev_attr	= &i2c_dev_attr,
 939};
 940
 941/*
 942 * 'mcspi' class
 943 *
 944 */
 945
 946static struct omap_hwmod_class_sysconfig dra7xx_mcspi_sysc = {
 947	.rev_offs	= 0x0000,
 948	.sysc_offs	= 0x0010,
 949	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
 950			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
 951	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 952			   SIDLE_SMART_WKUP),
 953	.sysc_fields	= &omap_hwmod_sysc_type2,
 954};
 955
 956static struct omap_hwmod_class dra7xx_mcspi_hwmod_class = {
 957	.name	= "mcspi",
 958	.sysc	= &dra7xx_mcspi_sysc,
 959	.rev	= OMAP4_MCSPI_REV,
 960};
 961
 962/* mcspi1 */
 963/* mcspi1 dev_attr */
 964static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
 965	.num_chipselect	= 4,
 966};
 967
 968static struct omap_hwmod dra7xx_mcspi1_hwmod = {
 969	.name		= "mcspi1",
 970	.class		= &dra7xx_mcspi_hwmod_class,
 971	.clkdm_name	= "l4per_clkdm",
 972	.main_clk	= "func_48m_fclk",
 973	.prcm = {
 974		.omap4 = {
 975			.clkctrl_offs = DRA7XX_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
 976			.context_offs = DRA7XX_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
 977			.modulemode   = MODULEMODE_SWCTRL,
 978		},
 979	},
 980	.dev_attr	= &mcspi1_dev_attr,
 981};
 982
 983/* mcspi2 */
 984/* mcspi2 dev_attr */
 985static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
 986	.num_chipselect	= 2,
 987};
 988
 989static struct omap_hwmod dra7xx_mcspi2_hwmod = {
 990	.name		= "mcspi2",
 991	.class		= &dra7xx_mcspi_hwmod_class,
 992	.clkdm_name	= "l4per_clkdm",
 993	.main_clk	= "func_48m_fclk",
 994	.prcm = {
 995		.omap4 = {
 996			.clkctrl_offs = DRA7XX_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
 997			.context_offs = DRA7XX_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
 998			.modulemode   = MODULEMODE_SWCTRL,
 999		},
1000	},
1001	.dev_attr	= &mcspi2_dev_attr,
1002};
1003
1004/* mcspi3 */
1005/* mcspi3 dev_attr */
1006static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
1007	.num_chipselect	= 2,
1008};
1009
1010static struct omap_hwmod dra7xx_mcspi3_hwmod = {
1011	.name		= "mcspi3",
1012	.class		= &dra7xx_mcspi_hwmod_class,
1013	.clkdm_name	= "l4per_clkdm",
1014	.main_clk	= "func_48m_fclk",
1015	.prcm = {
1016		.omap4 = {
1017			.clkctrl_offs = DRA7XX_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
1018			.context_offs = DRA7XX_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
1019			.modulemode   = MODULEMODE_SWCTRL,
1020		},
1021	},
1022	.dev_attr	= &mcspi3_dev_attr,
1023};
1024
1025/* mcspi4 */
1026/* mcspi4 dev_attr */
1027static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
1028	.num_chipselect	= 1,
1029};
1030
1031static struct omap_hwmod dra7xx_mcspi4_hwmod = {
1032	.name		= "mcspi4",
1033	.class		= &dra7xx_mcspi_hwmod_class,
1034	.clkdm_name	= "l4per_clkdm",
1035	.main_clk	= "func_48m_fclk",
1036	.prcm = {
1037		.omap4 = {
1038			.clkctrl_offs = DRA7XX_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
1039			.context_offs = DRA7XX_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
1040			.modulemode   = MODULEMODE_SWCTRL,
1041		},
1042	},
1043	.dev_attr	= &mcspi4_dev_attr,
1044};
1045
1046/*
1047 * 'mmc' class
1048 *
1049 */
1050
1051static struct omap_hwmod_class_sysconfig dra7xx_mmc_sysc = {
1052	.rev_offs	= 0x0000,
1053	.sysc_offs	= 0x0010,
1054	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
1055			   SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1056			   SYSC_HAS_SOFTRESET),
1057	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1058			   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1059			   MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1060	.sysc_fields	= &omap_hwmod_sysc_type2,
1061};
1062
1063static struct omap_hwmod_class dra7xx_mmc_hwmod_class = {
1064	.name	= "mmc",
1065	.sysc	= &dra7xx_mmc_sysc,
1066};
1067
1068/* mmc1 */
1069static struct omap_hwmod_opt_clk mmc1_opt_clks[] = {
1070	{ .role = "clk32k", .clk = "mmc1_clk32k" },
1071};
1072
1073/* mmc1 dev_attr */
1074static struct omap_mmc_dev_attr mmc1_dev_attr = {
1075	.flags	= OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1076};
1077
1078static struct omap_hwmod dra7xx_mmc1_hwmod = {
1079	.name		= "mmc1",
1080	.class		= &dra7xx_mmc_hwmod_class,
1081	.clkdm_name	= "l3init_clkdm",
1082	.main_clk	= "mmc1_fclk_div",
1083	.prcm = {
1084		.omap4 = {
1085			.clkctrl_offs = DRA7XX_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
1086			.context_offs = DRA7XX_RM_L3INIT_MMC1_CONTEXT_OFFSET,
1087			.modulemode   = MODULEMODE_SWCTRL,
1088		},
1089	},
1090	.opt_clks	= mmc1_opt_clks,
1091	.opt_clks_cnt	= ARRAY_SIZE(mmc1_opt_clks),
1092	.dev_attr	= &mmc1_dev_attr,
1093};
1094
1095/* mmc2 */
1096static struct omap_hwmod_opt_clk mmc2_opt_clks[] = {
1097	{ .role = "clk32k", .clk = "mmc2_clk32k" },
1098};
1099
1100static struct omap_hwmod dra7xx_mmc2_hwmod = {
1101	.name		= "mmc2",
1102	.class		= &dra7xx_mmc_hwmod_class,
1103	.clkdm_name	= "l3init_clkdm",
1104	.main_clk	= "mmc2_fclk_div",
1105	.prcm = {
1106		.omap4 = {
1107			.clkctrl_offs = DRA7XX_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
1108			.context_offs = DRA7XX_RM_L3INIT_MMC2_CONTEXT_OFFSET,
1109			.modulemode   = MODULEMODE_SWCTRL,
1110		},
1111	},
1112	.opt_clks	= mmc2_opt_clks,
1113	.opt_clks_cnt	= ARRAY_SIZE(mmc2_opt_clks),
1114};
1115
1116/* mmc3 */
1117static struct omap_hwmod_opt_clk mmc3_opt_clks[] = {
1118	{ .role = "clk32k", .clk = "mmc3_clk32k" },
1119};
1120
1121static struct omap_hwmod dra7xx_mmc3_hwmod = {
1122	.name		= "mmc3",
1123	.class		= &dra7xx_mmc_hwmod_class,
1124	.clkdm_name	= "l4per_clkdm",
1125	.main_clk	= "mmc3_gfclk_div",
1126	.prcm = {
1127		.omap4 = {
1128			.clkctrl_offs = DRA7XX_CM_L4PER_MMC3_CLKCTRL_OFFSET,
1129			.context_offs = DRA7XX_RM_L4PER_MMC3_CONTEXT_OFFSET,
1130			.modulemode   = MODULEMODE_SWCTRL,
1131		},
1132	},
1133	.opt_clks	= mmc3_opt_clks,
1134	.opt_clks_cnt	= ARRAY_SIZE(mmc3_opt_clks),
1135};
1136
1137/* mmc4 */
1138static struct omap_hwmod_opt_clk mmc4_opt_clks[] = {
1139	{ .role = "clk32k", .clk = "mmc4_clk32k" },
1140};
1141
1142static struct omap_hwmod dra7xx_mmc4_hwmod = {
1143	.name		= "mmc4",
1144	.class		= &dra7xx_mmc_hwmod_class,
1145	.clkdm_name	= "l4per_clkdm",
1146	.main_clk	= "mmc4_gfclk_div",
1147	.prcm = {
1148		.omap4 = {
1149			.clkctrl_offs = DRA7XX_CM_L4PER_MMC4_CLKCTRL_OFFSET,
1150			.context_offs = DRA7XX_RM_L4PER_MMC4_CONTEXT_OFFSET,
1151			.modulemode   = MODULEMODE_SWCTRL,
1152		},
1153	},
1154	.opt_clks	= mmc4_opt_clks,
1155	.opt_clks_cnt	= ARRAY_SIZE(mmc4_opt_clks),
1156};
1157
1158/*
1159 * 'mpu' class
1160 *
1161 */
1162
1163static struct omap_hwmod_class dra7xx_mpu_hwmod_class = {
1164	.name	= "mpu",
1165};
1166
1167/* mpu */
1168static struct omap_hwmod dra7xx_mpu_hwmod = {
1169	.name		= "mpu",
1170	.class		= &dra7xx_mpu_hwmod_class,
1171	.clkdm_name	= "mpu_clkdm",
1172	.flags		= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1173	.main_clk	= "dpll_mpu_m2_ck",
1174	.prcm = {
1175		.omap4 = {
1176			.clkctrl_offs = DRA7XX_CM_MPU_MPU_CLKCTRL_OFFSET,
1177			.context_offs = DRA7XX_RM_MPU_MPU_CONTEXT_OFFSET,
1178		},
1179	},
1180};
1181
1182/*
1183 * 'ocp2scp' class
1184 *
1185 */
1186
1187static struct omap_hwmod_class_sysconfig dra7xx_ocp2scp_sysc = {
1188	.rev_offs	= 0x0000,
1189	.sysc_offs	= 0x0010,
1190	.syss_offs	= 0x0014,
1191	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1192			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1193	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1194			   SIDLE_SMART_WKUP),
1195	.sysc_fields	= &omap_hwmod_sysc_type1,
1196};
1197
1198static struct omap_hwmod_class dra7xx_ocp2scp_hwmod_class = {
1199	.name	= "ocp2scp",
1200	.sysc	= &dra7xx_ocp2scp_sysc,
1201};
1202
1203/* ocp2scp1 */
1204static struct omap_hwmod dra7xx_ocp2scp1_hwmod = {
1205	.name		= "ocp2scp1",
1206	.class		= &dra7xx_ocp2scp_hwmod_class,
1207	.clkdm_name	= "l3init_clkdm",
1208	.main_clk	= "l4_root_clk_div",
1209	.prcm = {
1210		.omap4 = {
1211			.clkctrl_offs = DRA7XX_CM_L3INIT_OCP2SCP1_CLKCTRL_OFFSET,
1212			.context_offs = DRA7XX_RM_L3INIT_OCP2SCP1_CONTEXT_OFFSET,
1213			.modulemode   = MODULEMODE_HWCTRL,
1214		},
1215	},
1216};
1217
1218/*
1219 * 'qspi' class
1220 *
1221 */
1222
1223static struct omap_hwmod_class_sysconfig dra7xx_qspi_sysc = {
1224	.sysc_offs	= 0x0010,
1225	.sysc_flags	= SYSC_HAS_SIDLEMODE,
1226	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1227			   SIDLE_SMART_WKUP),
1228	.sysc_fields	= &omap_hwmod_sysc_type2,
1229};
1230
1231static struct omap_hwmod_class dra7xx_qspi_hwmod_class = {
1232	.name	= "qspi",
1233	.sysc	= &dra7xx_qspi_sysc,
1234};
1235
1236/* qspi */
1237static struct omap_hwmod dra7xx_qspi_hwmod = {
1238	.name		= "qspi",
1239	.class		= &dra7xx_qspi_hwmod_class,
1240	.clkdm_name	= "l4per2_clkdm",
1241	.main_clk	= "qspi_gfclk_div",
1242	.prcm = {
1243		.omap4 = {
1244			.clkctrl_offs = DRA7XX_CM_L4PER2_QSPI_CLKCTRL_OFFSET,
1245			.context_offs = DRA7XX_RM_L4PER2_QSPI_CONTEXT_OFFSET,
1246			.modulemode   = MODULEMODE_SWCTRL,
1247		},
1248	},
1249};
1250
1251/*
1252 * 'sata' class
1253 *
1254 */
1255
1256static struct omap_hwmod_class_sysconfig dra7xx_sata_sysc = {
1257	.sysc_offs	= 0x0000,
1258	.sysc_flags	= (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1259	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1260			   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1261			   MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1262	.sysc_fields	= &omap_hwmod_sysc_type2,
1263};
1264
1265static struct omap_hwmod_class dra7xx_sata_hwmod_class = {
1266	.name	= "sata",
1267	.sysc	= &dra7xx_sata_sysc,
1268};
1269
1270/* sata */
1271static struct omap_hwmod_opt_clk sata_opt_clks[] = {
1272	{ .role = "ref_clk", .clk = "sata_ref_clk" },
1273};
1274
1275static struct omap_hwmod dra7xx_sata_hwmod = {
1276	.name		= "sata",
1277	.class		= &dra7xx_sata_hwmod_class,
1278	.clkdm_name	= "l3init_clkdm",
1279	.flags		= HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
1280	.main_clk	= "func_48m_fclk",
1281	.prcm = {
1282		.omap4 = {
1283			.clkctrl_offs = DRA7XX_CM_L3INIT_SATA_CLKCTRL_OFFSET,
1284			.context_offs = DRA7XX_RM_L3INIT_SATA_CONTEXT_OFFSET,
1285			.modulemode   = MODULEMODE_SWCTRL,
1286		},
1287	},
1288	.opt_clks	= sata_opt_clks,
1289	.opt_clks_cnt	= ARRAY_SIZE(sata_opt_clks),
1290};
1291
1292/*
1293 * 'smartreflex' class
1294 *
1295 */
1296
1297/* The IP is not compliant to type1 / type2 scheme */
1298static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
1299	.sidle_shift	= 24,
1300	.enwkup_shift	= 26,
1301};
1302
1303static struct omap_hwmod_class_sysconfig dra7xx_smartreflex_sysc = {
1304	.sysc_offs	= 0x0038,
1305	.sysc_flags	= (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
1306	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1307			   SIDLE_SMART_WKUP),
1308	.sysc_fields	= &omap_hwmod_sysc_type_smartreflex,
1309};
1310
1311static struct omap_hwmod_class dra7xx_smartreflex_hwmod_class = {
1312	.name	= "smartreflex",
1313	.sysc	= &dra7xx_smartreflex_sysc,
1314	.rev	= 2,
1315};
1316
1317/* smartreflex_core */
1318/* smartreflex_core dev_attr */
1319static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
1320	.sensor_voltdm_name	= "core",
1321};
1322
1323static struct omap_hwmod dra7xx_smartreflex_core_hwmod = {
1324	.name		= "smartreflex_core",
1325	.class		= &dra7xx_smartreflex_hwmod_class,
1326	.clkdm_name	= "coreaon_clkdm",
1327	.main_clk	= "wkupaon_iclk_mux",
1328	.prcm = {
1329		.omap4 = {
1330			.clkctrl_offs = DRA7XX_CM_COREAON_SMARTREFLEX_CORE_CLKCTRL_OFFSET,
1331			.context_offs = DRA7XX_RM_COREAON_SMARTREFLEX_CORE_CONTEXT_OFFSET,
1332			.modulemode   = MODULEMODE_SWCTRL,
1333		},
1334	},
1335	.dev_attr	= &smartreflex_core_dev_attr,
1336};
1337
1338/* smartreflex_mpu */
1339/* smartreflex_mpu dev_attr */
1340static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
1341	.sensor_voltdm_name	= "mpu",
1342};
1343
1344static struct omap_hwmod dra7xx_smartreflex_mpu_hwmod = {
1345	.name		= "smartreflex_mpu",
1346	.class		= &dra7xx_smartreflex_hwmod_class,
1347	.clkdm_name	= "coreaon_clkdm",
1348	.main_clk	= "wkupaon_iclk_mux",
1349	.prcm = {
1350		.omap4 = {
1351			.clkctrl_offs = DRA7XX_CM_COREAON_SMARTREFLEX_MPU_CLKCTRL_OFFSET,
1352			.context_offs = DRA7XX_RM_COREAON_SMARTREFLEX_MPU_CONTEXT_OFFSET,
1353			.modulemode   = MODULEMODE_SWCTRL,
1354		},
1355	},
1356	.dev_attr	= &smartreflex_mpu_dev_attr,
1357};
1358
1359/*
1360 * 'spinlock' class
1361 *
1362 */
1363
1364static struct omap_hwmod_class_sysconfig dra7xx_spinlock_sysc = {
1365	.rev_offs	= 0x0000,
1366	.sysc_offs	= 0x0010,
1367	.syss_offs	= 0x0014,
1368	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1369			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1370			   SYSS_HAS_RESET_STATUS),
1371	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1372	.sysc_fields	= &omap_hwmod_sysc_type1,
1373};
1374
1375static struct omap_hwmod_class dra7xx_spinlock_hwmod_class = {
1376	.name	= "spinlock",
1377	.sysc	= &dra7xx_spinlock_sysc,
1378};
1379
1380/* spinlock */
1381static struct omap_hwmod dra7xx_spinlock_hwmod = {
1382	.name		= "spinlock",
1383	.class		= &dra7xx_spinlock_hwmod_class,
1384	.clkdm_name	= "l4cfg_clkdm",
1385	.main_clk	= "l3_iclk_div",
1386	.prcm = {
1387		.omap4 = {
1388			.clkctrl_offs = DRA7XX_CM_L4CFG_SPINLOCK_CLKCTRL_OFFSET,
1389			.context_offs = DRA7XX_RM_L4CFG_SPINLOCK_CONTEXT_OFFSET,
1390		},
1391	},
1392};
1393
1394/*
1395 * 'timer' class
1396 *
1397 * This class contains several variants: ['timer_1ms', 'timer_secure',
1398 * 'timer']
1399 */
1400
1401static struct omap_hwmod_class_sysconfig dra7xx_timer_1ms_sysc = {
1402	.rev_offs	= 0x0000,
1403	.sysc_offs	= 0x0010,
1404	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1405			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1406	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1407			   SIDLE_SMART_WKUP),
1408	.sysc_fields	= &omap_hwmod_sysc_type2,
1409};
1410
1411static struct omap_hwmod_class dra7xx_timer_1ms_hwmod_class = {
1412	.name	= "timer",
1413	.sysc	= &dra7xx_timer_1ms_sysc,
1414};
1415
1416static struct omap_hwmod_class_sysconfig dra7xx_timer_secure_sysc = {
1417	.rev_offs	= 0x0000,
1418	.sysc_offs	= 0x0010,
1419	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1420			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1421	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1422			   SIDLE_SMART_WKUP),
1423	.sysc_fields	= &omap_hwmod_sysc_type2,
1424};
1425
1426static struct omap_hwmod_class dra7xx_timer_secure_hwmod_class = {
1427	.name	= "timer",
1428	.sysc	= &dra7xx_timer_secure_sysc,
1429};
1430
1431static struct omap_hwmod_class_sysconfig dra7xx_timer_sysc = {
1432	.rev_offs	= 0x0000,
1433	.sysc_offs	= 0x0010,
1434	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1435			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1436	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1437			   SIDLE_SMART_WKUP),
1438	.sysc_fields	= &omap_hwmod_sysc_type2,
1439};
1440
1441static struct omap_hwmod_class dra7xx_timer_hwmod_class = {
1442	.name	= "timer",
1443	.sysc	= &dra7xx_timer_sysc,
1444};
1445
1446/* timer1 */
1447static struct omap_hwmod dra7xx_timer1_hwmod = {
1448	.name		= "timer1",
1449	.class		= &dra7xx_timer_1ms_hwmod_class,
1450	.clkdm_name	= "wkupaon_clkdm",
1451	.main_clk	= "timer1_gfclk_mux",
1452	.prcm = {
1453		.omap4 = {
1454			.clkctrl_offs = DRA7XX_CM_WKUPAON_TIMER1_CLKCTRL_OFFSET,
1455			.context_offs = DRA7XX_RM_WKUPAON_TIMER1_CONTEXT_OFFSET,
1456			.modulemode   = MODULEMODE_SWCTRL,
1457		},
1458	},
1459};
1460
1461/* timer2 */
1462static struct omap_hwmod dra7xx_timer2_hwmod = {
1463	.name		= "timer2",
1464	.class		= &dra7xx_timer_1ms_hwmod_class,
1465	.clkdm_name	= "l4per_clkdm",
1466	.main_clk	= "timer2_gfclk_mux",
1467	.prcm = {
1468		.omap4 = {
1469			.clkctrl_offs = DRA7XX_CM_L4PER_TIMER2_CLKCTRL_OFFSET,
1470			.context_offs = DRA7XX_RM_L4PER_TIMER2_CONTEXT_OFFSET,
1471			.modulemode   = MODULEMODE_SWCTRL,
1472		},
1473	},
1474};
1475
1476/* timer3 */
1477static struct omap_hwmod dra7xx_timer3_hwmod = {
1478	.name		= "timer3",
1479	.class		= &dra7xx_timer_hwmod_class,
1480	.clkdm_name	= "l4per_clkdm",
1481	.main_clk	= "timer3_gfclk_mux",
1482	.prcm = {
1483		.omap4 = {
1484			.clkctrl_offs = DRA7XX_CM_L4PER_TIMER3_CLKCTRL_OFFSET,
1485			.context_offs = DRA7XX_RM_L4PER_TIMER3_CONTEXT_OFFSET,
1486			.modulemode   = MODULEMODE_SWCTRL,
1487		},
1488	},
1489};
1490
1491/* timer4 */
1492static struct omap_hwmod dra7xx_timer4_hwmod = {
1493	.name		= "timer4",
1494	.class		= &dra7xx_timer_secure_hwmod_class,
1495	.clkdm_name	= "l4per_clkdm",
1496	.main_clk	= "timer4_gfclk_mux",
1497	.prcm = {
1498		.omap4 = {
1499			.clkctrl_offs = DRA7XX_CM_L4PER_TIMER4_CLKCTRL_OFFSET,
1500			.context_offs = DRA7XX_RM_L4PER_TIMER4_CONTEXT_OFFSET,
1501			.modulemode   = MODULEMODE_SWCTRL,
1502		},
1503	},
1504};
1505
1506/* timer5 */
1507static struct omap_hwmod dra7xx_timer5_hwmod = {
1508	.name		= "timer5",
1509	.class		= &dra7xx_timer_hwmod_class,
1510	.clkdm_name	= "ipu_clkdm",
1511	.main_clk	= "timer5_gfclk_mux",
1512	.prcm = {
1513		.omap4 = {
1514			.clkctrl_offs = DRA7XX_CM_IPU_TIMER5_CLKCTRL_OFFSET,
1515			.context_offs = DRA7XX_RM_IPU_TIMER5_CONTEXT_OFFSET,
1516			.modulemode   = MODULEMODE_SWCTRL,
1517		},
1518	},
1519};
1520
1521/* timer6 */
1522static struct omap_hwmod dra7xx_timer6_hwmod = {
1523	.name		= "timer6",
1524	.class		= &dra7xx_timer_hwmod_class,
1525	.clkdm_name	= "ipu_clkdm",
1526	.main_clk	= "timer6_gfclk_mux",
1527	.prcm = {
1528		.omap4 = {
1529			.clkctrl_offs = DRA7XX_CM_IPU_TIMER6_CLKCTRL_OFFSET,
1530			.context_offs = DRA7XX_RM_IPU_TIMER6_CONTEXT_OFFSET,
1531			.modulemode   = MODULEMODE_SWCTRL,
1532		},
1533	},
1534};
1535
1536/* timer7 */
1537static struct omap_hwmod dra7xx_timer7_hwmod = {
1538	.name		= "timer7",
1539	.class		= &dra7xx_timer_hwmod_class,
1540	.clkdm_name	= "ipu_clkdm",
1541	.main_clk	= "timer7_gfclk_mux",
1542	.prcm = {
1543		.omap4 = {
1544			.clkctrl_offs = DRA7XX_CM_IPU_TIMER7_CLKCTRL_OFFSET,
1545			.context_offs = DRA7XX_RM_IPU_TIMER7_CONTEXT_OFFSET,
1546			.modulemode   = MODULEMODE_SWCTRL,
1547		},
1548	},
1549};
1550
1551/* timer8 */
1552static struct omap_hwmod dra7xx_timer8_hwmod = {
1553	.name		= "timer8",
1554	.class		= &dra7xx_timer_hwmod_class,
1555	.clkdm_name	= "ipu_clkdm",
1556	.main_clk	= "timer8_gfclk_mux",
1557	.prcm = {
1558		.omap4 = {
1559			.clkctrl_offs = DRA7XX_CM_IPU_TIMER8_CLKCTRL_OFFSET,
1560			.context_offs = DRA7XX_RM_IPU_TIMER8_CONTEXT_OFFSET,
1561			.modulemode   = MODULEMODE_SWCTRL,
1562		},
1563	},
1564};
1565
1566/* timer9 */
1567static struct omap_hwmod dra7xx_timer9_hwmod = {
1568	.name		= "timer9",
1569	.class		= &dra7xx_timer_hwmod_class,
1570	.clkdm_name	= "l4per_clkdm",
1571	.main_clk	= "timer9_gfclk_mux",
1572	.prcm = {
1573		.omap4 = {
1574			.clkctrl_offs = DRA7XX_CM_L4PER_TIMER9_CLKCTRL_OFFSET,
1575			.context_offs = DRA7XX_RM_L4PER_TIMER9_CONTEXT_OFFSET,
1576			.modulemode   = MODULEMODE_SWCTRL,
1577		},
1578	},
1579};
1580
1581/* timer10 */
1582static struct omap_hwmod dra7xx_timer10_hwmod = {
1583	.name		= "timer10",
1584	.class		= &dra7xx_timer_1ms_hwmod_class,
1585	.clkdm_name	= "l4per_clkdm",
1586	.main_clk	= "timer10_gfclk_mux",
1587	.prcm = {
1588		.omap4 = {
1589			.clkctrl_offs = DRA7XX_CM_L4PER_TIMER10_CLKCTRL_OFFSET,
1590			.context_offs = DRA7XX_RM_L4PER_TIMER10_CONTEXT_OFFSET,
1591			.modulemode   = MODULEMODE_SWCTRL,
1592		},
1593	},
1594};
1595
1596/* timer11 */
1597static struct omap_hwmod dra7xx_timer11_hwmod = {
1598	.name		= "timer11",
1599	.class		= &dra7xx_timer_hwmod_class,
1600	.clkdm_name	= "l4per_clkdm",
1601	.main_clk	= "timer11_gfclk_mux",
1602	.prcm = {
1603		.omap4 = {
1604			.clkctrl_offs = DRA7XX_CM_L4PER_TIMER11_CLKCTRL_OFFSET,
1605			.context_offs = DRA7XX_RM_L4PER_TIMER11_CONTEXT_OFFSET,
1606			.modulemode   = MODULEMODE_SWCTRL,
1607		},
1608	},
1609};
1610
1611/*
1612 * 'uart' class
1613 *
1614 */
1615
1616static struct omap_hwmod_class_sysconfig dra7xx_uart_sysc = {
1617	.rev_offs	= 0x0050,
1618	.sysc_offs	= 0x0054,
1619	.syss_offs	= 0x0058,
1620	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1621			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1622			   SYSS_HAS_RESET_STATUS),
1623	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1624			   SIDLE_SMART_WKUP),
1625	.sysc_fields	= &omap_hwmod_sysc_type1,
1626};
1627
1628static struct omap_hwmod_class dra7xx_uart_hwmod_class = {
1629	.name	= "uart",
1630	.sysc	= &dra7xx_uart_sysc,
1631};
1632
1633/* uart1 */
1634static struct omap_hwmod dra7xx_uart1_hwmod = {
1635	.name		= "uart1",
1636	.class		= &dra7xx_uart_hwmod_class,
1637	.clkdm_name	= "l4per_clkdm",
1638	.main_clk	= "uart1_gfclk_mux",
1639	.flags		= HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP2UART1_FLAGS,
1640	.prcm = {
1641		.omap4 = {
1642			.clkctrl_offs = DRA7XX_CM_L4PER_UART1_CLKCTRL_OFFSET,
1643			.context_offs = DRA7XX_RM_L4PER_UART1_CONTEXT_OFFSET,
1644			.modulemode   = MODULEMODE_SWCTRL,
1645		},
1646	},
1647};
1648
1649/* uart2 */
1650static struct omap_hwmod dra7xx_uart2_hwmod = {
1651	.name		= "uart2",
1652	.class		= &dra7xx_uart_hwmod_class,
1653	.clkdm_name	= "l4per_clkdm",
1654	.main_clk	= "uart2_gfclk_mux",
1655	.flags		= HWMOD_SWSUP_SIDLE_ACT,
1656	.prcm = {
1657		.omap4 = {
1658			.clkctrl_offs = DRA7XX_CM_L4PER_UART2_CLKCTRL_OFFSET,
1659			.context_offs = DRA7XX_RM_L4PER_UART2_CONTEXT_OFFSET,
1660			.modulemode   = MODULEMODE_SWCTRL,
1661		},
1662	},
1663};
1664
1665/* uart3 */
1666static struct omap_hwmod dra7xx_uart3_hwmod = {
1667	.name		= "uart3",
1668	.class		= &dra7xx_uart_hwmod_class,
1669	.clkdm_name	= "l4per_clkdm",
1670	.main_clk	= "uart3_gfclk_mux",
1671	.flags		= HWMOD_SWSUP_SIDLE_ACT,
1672	.prcm = {
1673		.omap4 = {
1674			.clkctrl_offs = DRA7XX_CM_L4PER_UART3_CLKCTRL_OFFSET,
1675			.context_offs = DRA7XX_RM_L4PER_UART3_CONTEXT_OFFSET,
1676			.modulemode   = MODULEMODE_SWCTRL,
1677		},
1678	},
1679};
1680
1681/* uart4 */
1682static struct omap_hwmod dra7xx_uart4_hwmod = {
1683	.name		= "uart4",
1684	.class		= &dra7xx_uart_hwmod_class,
1685	.clkdm_name	= "l4per_clkdm",
1686	.main_clk	= "uart4_gfclk_mux",
1687	.flags		= HWMOD_SWSUP_SIDLE_ACT,
1688	.prcm = {
1689		.omap4 = {
1690			.clkctrl_offs = DRA7XX_CM_L4PER_UART4_CLKCTRL_OFFSET,
1691			.context_offs = DRA7XX_RM_L4PER_UART4_CONTEXT_OFFSET,
1692			.modulemode   = MODULEMODE_SWCTRL,
1693		},
1694	},
1695};
1696
1697/* uart5 */
1698static struct omap_hwmod dra7xx_uart5_hwmod = {
1699	.name		= "uart5",
1700	.class		= &dra7xx_uart_hwmod_class,
1701	.clkdm_name	= "l4per_clkdm",
1702	.main_clk	= "uart5_gfclk_mux",
1703	.flags		= HWMOD_SWSUP_SIDLE_ACT,
1704	.prcm = {
1705		.omap4 = {
1706			.clkctrl_offs = DRA7XX_CM_L4PER_UART5_CLKCTRL_OFFSET,
1707			.context_offs = DRA7XX_RM_L4PER_UART5_CONTEXT_OFFSET,
1708			.modulemode   = MODULEMODE_SWCTRL,
1709		},
1710	},
1711};
1712
1713/* uart6 */
1714static struct omap_hwmod dra7xx_uart6_hwmod = {
1715	.name		= "uart6",
1716	.class		= &dra7xx_uart_hwmod_class,
1717	.clkdm_name	= "ipu_clkdm",
1718	.main_clk	= "uart6_gfclk_mux",
1719	.flags		= HWMOD_SWSUP_SIDLE_ACT,
1720	.prcm = {
1721		.omap4 = {
1722			.clkctrl_offs = DRA7XX_CM_IPU_UART6_CLKCTRL_OFFSET,
1723			.context_offs = DRA7XX_RM_IPU_UART6_CONTEXT_OFFSET,
1724			.modulemode   = MODULEMODE_SWCTRL,
1725		},
1726	},
1727};
1728
1729/*
1730 * 'usb_otg_ss' class
1731 *
1732 */
1733
1734static struct omap_hwmod_class dra7xx_usb_otg_ss_hwmod_class = {
1735	.name	= "usb_otg_ss",
1736};
1737
1738/* usb_otg_ss1 */
1739static struct omap_hwmod_opt_clk usb_otg_ss1_opt_clks[] = {
1740	{ .role = "refclk960m", .clk = "usb_otg_ss1_refclk960m" },
1741};
1742
1743static struct omap_hwmod dra7xx_usb_otg_ss1_hwmod = {
1744	.name		= "usb_otg_ss1",
1745	.class		= &dra7xx_usb_otg_ss_hwmod_class,
1746	.clkdm_name	= "l3init_clkdm",
1747	.main_clk	= "dpll_core_h13x2_ck",
1748	.prcm = {
1749		.omap4 = {
1750			.clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS1_CLKCTRL_OFFSET,
1751			.context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS1_CONTEXT_OFFSET,
1752			.modulemode   = MODULEMODE_HWCTRL,
1753		},
1754	},
1755	.opt_clks	= usb_otg_ss1_opt_clks,
1756	.opt_clks_cnt	= ARRAY_SIZE(usb_otg_ss1_opt_clks),
1757};
1758
1759/* usb_otg_ss2 */
1760static struct omap_hwmod_opt_clk usb_otg_ss2_opt_clks[] = {
1761	{ .role = "refclk960m", .clk = "usb_otg_ss2_refclk960m" },
1762};
1763
1764static struct omap_hwmod dra7xx_usb_otg_ss2_hwmod = {
1765	.name		= "usb_otg_ss2",
1766	.class		= &dra7xx_usb_otg_ss_hwmod_class,
1767	.clkdm_name	= "l3init_clkdm",
1768	.main_clk	= "dpll_core_h13x2_ck",
1769	.prcm = {
1770		.omap4 = {
1771			.clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS2_CLKCTRL_OFFSET,
1772			.context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS2_CONTEXT_OFFSET,
1773			.modulemode   = MODULEMODE_HWCTRL,
1774		},
1775	},
1776	.opt_clks	= usb_otg_ss2_opt_clks,
1777	.opt_clks_cnt	= ARRAY_SIZE(usb_otg_ss2_opt_clks),
1778};
1779
1780/* usb_otg_ss3 */
1781static struct omap_hwmod dra7xx_usb_otg_ss3_hwmod = {
1782	.name		= "usb_otg_ss3",
1783	.class		= &dra7xx_usb_otg_ss_hwmod_class,
1784	.clkdm_name	= "l3init_clkdm",
1785	.main_clk	= "dpll_core_h13x2_ck",
1786	.prcm = {
1787		.omap4 = {
1788			.clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS3_CLKCTRL_OFFSET,
1789			.context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS3_CONTEXT_OFFSET,
1790			.modulemode   = MODULEMODE_HWCTRL,
1791		},
1792	},
1793};
1794
1795/* usb_otg_ss4 */
1796static struct omap_hwmod dra7xx_usb_otg_ss4_hwmod = {
1797	.name		= "usb_otg_ss4",
1798	.class		= &dra7xx_usb_otg_ss_hwmod_class,
1799	.clkdm_name	= "l3init_clkdm",
1800	.main_clk	= "dpll_core_h13x2_ck",
1801	.prcm = {
1802		.omap4 = {
1803			.clkctrl_offs = DRA7XX_CM_L3INIT_USB_OTG_SS4_CLKCTRL_OFFSET,
1804			.context_offs = DRA7XX_RM_L3INIT_USB_OTG_SS4_CONTEXT_OFFSET,
1805			.modulemode   = MODULEMODE_HWCTRL,
1806		},
1807	},
1808};
1809
1810/*
1811 * 'vcp' class
1812 *
1813 */
1814
1815static struct omap_hwmod_class dra7xx_vcp_hwmod_class = {
1816	.name	= "vcp",
1817};
1818
1819/* vcp1 */
1820static struct omap_hwmod dra7xx_vcp1_hwmod = {
1821	.name		= "vcp1",
1822	.class		= &dra7xx_vcp_hwmod_class,
1823	.clkdm_name	= "l3main1_clkdm",
1824	.main_clk	= "l3_iclk_div",
1825	.prcm = {
1826		.omap4 = {
1827			.clkctrl_offs = DRA7XX_CM_L3MAIN1_VCP1_CLKCTRL_OFFSET,
1828			.context_offs = DRA7XX_RM_L3MAIN1_VCP1_CONTEXT_OFFSET,
1829		},
1830	},
1831};
1832
1833/* vcp2 */
1834static struct omap_hwmod dra7xx_vcp2_hwmod = {
1835	.name		= "vcp2",
1836	.class		= &dra7xx_vcp_hwmod_class,
1837	.clkdm_name	= "l3main1_clkdm",
1838	.main_clk	= "l3_iclk_div",
1839	.prcm = {
1840		.omap4 = {
1841			.clkctrl_offs = DRA7XX_CM_L3MAIN1_VCP2_CLKCTRL_OFFSET,
1842			.context_offs = DRA7XX_RM_L3MAIN1_VCP2_CONTEXT_OFFSET,
1843		},
1844	},
1845};
1846
1847/*
1848 * 'wd_timer' class
1849 *
1850 */
1851
1852static struct omap_hwmod_class_sysconfig dra7xx_wd_timer_sysc = {
1853	.rev_offs	= 0x0000,
1854	.sysc_offs	= 0x0010,
1855	.syss_offs	= 0x0014,
1856	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
1857			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1858	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1859			   SIDLE_SMART_WKUP),
1860	.sysc_fields	= &omap_hwmod_sysc_type1,
1861};
1862
1863static struct omap_hwmod_class dra7xx_wd_timer_hwmod_class = {
1864	.name		= "wd_timer",
1865	.sysc		= &dra7xx_wd_timer_sysc,
1866	.pre_shutdown	= &omap2_wd_timer_disable,
1867	.reset		= &omap2_wd_timer_reset,
1868};
1869
1870/* wd_timer2 */
1871static struct omap_hwmod dra7xx_wd_timer2_hwmod = {
1872	.name		= "wd_timer2",
1873	.class		= &dra7xx_wd_timer_hwmod_class,
1874	.clkdm_name	= "wkupaon_clkdm",
1875	.main_clk	= "sys_32k_ck",
1876	.prcm = {
1877		.omap4 = {
1878			.clkctrl_offs = DRA7XX_CM_WKUPAON_WD_TIMER2_CLKCTRL_OFFSET,
1879			.context_offs = DRA7XX_RM_WKUPAON_WD_TIMER2_CONTEXT_OFFSET,
1880			.modulemode   = MODULEMODE_SWCTRL,
1881		},
1882	},
1883};
1884
1885
1886/*
1887 * Interfaces
1888 */
1889
1890/* l3_main_2 -> l3_instr */
1891static struct omap_hwmod_ocp_if dra7xx_l3_main_2__l3_instr = {
1892	.master		= &dra7xx_l3_main_2_hwmod,
1893	.slave		= &dra7xx_l3_instr_hwmod,
1894	.clk		= "l3_iclk_div",
1895	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1896};
1897
1898/* l4_cfg -> l3_main_1 */
1899static struct omap_hwmod_ocp_if dra7xx_l4_cfg__l3_main_1 = {
1900	.master		= &dra7xx_l4_cfg_hwmod,
1901	.slave		= &dra7xx_l3_main_1_hwmod,
1902	.clk		= "l3_iclk_div",
1903	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1904};
1905
1906/* mpu -> l3_main_1 */
1907static struct omap_hwmod_ocp_if dra7xx_mpu__l3_main_1 = {
1908	.master		= &dra7xx_mpu_hwmod,
1909	.slave		= &dra7xx_l3_main_1_hwmod,
1910	.clk		= "l3_iclk_div",
1911	.user		= OCP_USER_MPU,
1912};
1913
1914/* l3_main_1 -> l3_main_2 */
1915static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l3_main_2 = {
1916	.master		= &dra7xx_l3_main_1_hwmod,
1917	.slave		= &dra7xx_l3_main_2_hwmod,
1918	.clk		= "l3_iclk_div",
1919	.user		= OCP_USER_MPU,
1920};
1921
1922/* l4_cfg -> l3_main_2 */
1923static struct omap_hwmod_ocp_if dra7xx_l4_cfg__l3_main_2 = {
1924	.master		= &dra7xx_l4_cfg_hwmod,
1925	.slave		= &dra7xx_l3_main_2_hwmod,
1926	.clk		= "l3_iclk_div",
1927	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1928};
1929
1930/* l3_main_1 -> l4_cfg */
1931static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_cfg = {
1932	.master		= &dra7xx_l3_main_1_hwmod,
1933	.slave		= &dra7xx_l4_cfg_hwmod,
1934	.clk		= "l3_iclk_div",
1935	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1936};
1937
1938/* l3_main_1 -> l4_per1 */
1939static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per1 = {
1940	.master		= &dra7xx_l3_main_1_hwmod,
1941	.slave		= &dra7xx_l4_per1_hwmod,
1942	.clk		= "l3_iclk_div",
1943	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1944};
1945
1946/* l3_main_1 -> l4_per2 */
1947static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per2 = {
1948	.master		= &dra7xx_l3_main_1_hwmod,
1949	.slave		= &dra7xx_l4_per2_hwmod,
1950	.clk		= "l3_iclk_div",
1951	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1952};
1953
1954/* l3_main_1 -> l4_per3 */
1955static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_per3 = {
1956	.master		= &dra7xx_l3_main_1_hwmod,
1957	.slave		= &dra7xx_l4_per3_hwmod,
1958	.clk		= "l3_iclk_div",
1959	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1960};
1961
1962/* l3_main_1 -> l4_wkup */
1963static struct omap_hwmod_ocp_if dra7xx_l3_main_1__l4_wkup = {
1964	.master		= &dra7xx_l3_main_1_hwmod,
1965	.slave		= &dra7xx_l4_wkup_hwmod,
1966	.clk		= "wkupaon_iclk_mux",
1967	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1968};
1969
1970/* l4_per2 -> atl */
1971static struct omap_hwmod_ocp_if dra7xx_l4_per2__atl = {
1972	.master		= &dra7xx_l4_per2_hwmod,
1973	.slave		= &dra7xx_atl_hwmod,
1974	.clk		= "l3_iclk_div",
1975	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1976};
1977
1978/* l3_main_1 -> bb2d */
1979static struct omap_hwmod_ocp_if dra7xx_l3_main_1__bb2d = {
1980	.master		= &dra7xx_l3_main_1_hwmod,
1981	.slave		= &dra7xx_bb2d_hwmod,
1982	.clk		= "l3_iclk_div",
1983	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1984};
1985
1986/* l4_wkup -> counter_32k */
1987static struct omap_hwmod_ocp_if dra7xx_l4_wkup__counter_32k = {
1988	.master		= &dra7xx_l4_wkup_hwmod,
1989	.slave		= &dra7xx_counter_32k_hwmod,
1990	.clk		= "wkupaon_iclk_mux",
1991	.user		= OCP_USER_MPU | OCP_USER_SDMA,
1992};
1993
1994/* l4_wkup -> ctrl_module_wkup */
1995static struct omap_hwmod_ocp_if dra7xx_l4_wkup__ctrl_module_wkup = {
1996	.master		= &dra7xx_l4_wkup_hwmod,
1997	.slave		= &dra7xx_ctrl_module_wkup_hwmod,
1998	.clk		= "wkupaon_iclk_mux",
1999	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2000};
2001
2002/* l4_wkup -> dcan1 */
2003static struct omap_hwmod_ocp_if dra7xx_l4_wkup__dcan1 = {
2004	.master		= &dra7xx_l4_wkup_hwmod,
2005	.slave		= &dra7xx_dcan1_hwmod,
2006	.clk		= "wkupaon_iclk_mux",
2007	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2008};
2009
2010/* l4_per2 -> dcan2 */
2011static struct omap_hwmod_ocp_if dra7xx_l4_per2__dcan2 = {
2012	.master		= &dra7xx_l4_per2_hwmod,
2013	.slave		= &dra7xx_dcan2_hwmod,
2014	.clk		= "l3_iclk_div",
2015	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2016};
2017
2018static struct omap_hwmod_addr_space dra7xx_dma_system_addrs[] = {
2019	{
2020		.pa_start	= 0x4a056000,
2021		.pa_end		= 0x4a056fff,
2022		.flags		= ADDR_TYPE_RT
2023	},
2024	{ }
2025};
2026
2027/* l4_cfg -> dma_system */
2028static struct omap_hwmod_ocp_if dra7xx_l4_cfg__dma_system = {
2029	.master		= &dra7xx_l4_cfg_hwmod,
2030	.slave		= &dra7xx_dma_system_hwmod,
2031	.clk		= "l3_iclk_div",
2032	.addr		= dra7xx_dma_system_addrs,
2033	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2034};
2035
2036static struct omap_hwmod_addr_space dra7xx_dss_addrs[] = {
2037	{
2038		.name		= "family",
2039		.pa_start	= 0x58000000,
2040		.pa_end		= 0x5800007f,
2041		.flags		= ADDR_TYPE_RT
2042	},
2043};
2044
2045/* l3_main_1 -> dss */
2046static struct omap_hwmod_ocp_if dra7xx_l3_main_1__dss = {
2047	.master		= &dra7xx_l3_main_1_hwmod,
2048	.slave		= &dra7xx_dss_hwmod,
2049	.clk		= "l3_iclk_div",
2050	.addr		= dra7xx_dss_addrs,
2051	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2052};
2053
2054static struct omap_hwmod_addr_space dra7xx_dss_dispc_addrs[] = {
2055	{
2056		.name		= "dispc",
2057		.pa_start	= 0x58001000,
2058		.pa_end		= 0x58001fff,
2059		.flags		= ADDR_TYPE_RT
2060	},
2061};
2062
2063/* l3_main_1 -> dispc */
2064static struct omap_hwmod_ocp_if dra7xx_l3_main_1__dispc = {
2065	.master		= &dra7xx_l3_main_1_hwmod,
2066	.slave		= &dra7xx_dss_dispc_hwmod,
2067	.clk		= "l3_iclk_div",
2068	.addr		= dra7xx_dss_dispc_addrs,
2069	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2070};
2071
2072static struct omap_hwmod_addr_space dra7xx_dss_hdmi_addrs[] = {
2073	{
2074		.name		= "hdmi_wp",
2075		.pa_start	= 0x58040000,
2076		.pa_end		= 0x580400ff,
2077		.flags		= ADDR_TYPE_RT
2078	},
2079	{ }
2080};
2081
2082/* l3_main_1 -> dispc */
2083static struct omap_hwmod_ocp_if dra7xx_l3_main_1__hdmi = {
2084	.master		= &dra7xx_l3_main_1_hwmod,
2085	.slave		= &dra7xx_dss_hdmi_hwmod,
2086	.clk		= "l3_iclk_div",
2087	.addr		= dra7xx_dss_hdmi_addrs,
2088	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2089};
2090
2091static struct omap_hwmod_addr_space dra7xx_elm_addrs[] = {
2092	{
2093		.pa_start	= 0x48078000,
2094		.pa_end		= 0x48078fff,
2095		.flags		= ADDR_TYPE_RT
2096	},
2097	{ }
2098};
2099
2100/* l4_per1 -> elm */
2101static struct omap_hwmod_ocp_if dra7xx_l4_per1__elm = {
2102	.master		= &dra7xx_l4_per1_hwmod,
2103	.slave		= &dra7xx_elm_hwmod,
2104	.clk		= "l3_iclk_div",
2105	.addr		= dra7xx_elm_addrs,
2106	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2107};
2108
2109/* l4_wkup -> gpio1 */
2110static struct omap_hwmod_ocp_if dra7xx_l4_wkup__gpio1 = {
2111	.master		= &dra7xx_l4_wkup_hwmod,
2112	.slave		= &dra7xx_gpio1_hwmod,
2113	.clk		= "wkupaon_iclk_mux",
2114	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2115};
2116
2117/* l4_per1 -> gpio2 */
2118static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio2 = {
2119	.master		= &dra7xx_l4_per1_hwmod,
2120	.slave		= &dra7xx_gpio2_hwmod,
2121	.clk		= "l3_iclk_div",
2122	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2123};
2124
2125/* l4_per1 -> gpio3 */
2126static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio3 = {
2127	.master		= &dra7xx_l4_per1_hwmod,
2128	.slave		= &dra7xx_gpio3_hwmod,
2129	.clk		= "l3_iclk_div",
2130	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2131};
2132
2133/* l4_per1 -> gpio4 */
2134static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio4 = {
2135	.master		= &dra7xx_l4_per1_hwmod,
2136	.slave		= &dra7xx_gpio4_hwmod,
2137	.clk		= "l3_iclk_div",
2138	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2139};
2140
2141/* l4_per1 -> gpio5 */
2142static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio5 = {
2143	.master		= &dra7xx_l4_per1_hwmod,
2144	.slave		= &dra7xx_gpio5_hwmod,
2145	.clk		= "l3_iclk_div",
2146	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2147};
2148
2149/* l4_per1 -> gpio6 */
2150static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio6 = {
2151	.master		= &dra7xx_l4_per1_hwmod,
2152	.slave		= &dra7xx_gpio6_hwmod,
2153	.clk		= "l3_iclk_div",
2154	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2155};
2156
2157/* l4_per1 -> gpio7 */
2158static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio7 = {
2159	.master		= &dra7xx_l4_per1_hwmod,
2160	.slave		= &dra7xx_gpio7_hwmod,
2161	.clk		= "l3_iclk_div",
2162	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2163};
2164
2165/* l4_per1 -> gpio8 */
2166static struct omap_hwmod_ocp_if dra7xx_l4_per1__gpio8 = {
2167	.master		= &dra7xx_l4_per1_hwmod,
2168	.slave		= &dra7xx_gpio8_hwmod,
2169	.clk		= "l3_iclk_div",
2170	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2171};
2172
2173static struct omap_hwmod_addr_space dra7xx_gpmc_addrs[] = {
2174	{
2175		.pa_start	= 0x50000000,
2176		.pa_end		= 0x500003ff,
2177		.flags		= ADDR_TYPE_RT
2178	},
2179	{ }
2180};
2181
2182/* l3_main_1 -> gpmc */
2183static struct omap_hwmod_ocp_if dra7xx_l3_main_1__gpmc = {
2184	.master		= &dra7xx_l3_main_1_hwmod,
2185	.slave		= &dra7xx_gpmc_hwmod,
2186	.clk		= "l3_iclk_div",
2187	.addr		= dra7xx_gpmc_addrs,
2188	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2189};
2190
2191static struct omap_hwmod_addr_space dra7xx_hdq1w_addrs[] = {
2192	{
2193		.pa_start	= 0x480b2000,
2194		.pa_end		= 0x480b201f,
2195		.flags		= ADDR_TYPE_RT
2196	},
2197	{ }
2198};
2199
2200/* l4_per1 -> hdq1w */
2201static struct omap_hwmod_ocp_if dra7xx_l4_per1__hdq1w = {
2202	.master		= &dra7xx_l4_per1_hwmod,
2203	.slave		= &dra7xx_hdq1w_hwmod,
2204	.clk		= "l3_iclk_div",
2205	.addr		= dra7xx_hdq1w_addrs,
2206	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2207};
2208
2209/* l4_per1 -> i2c1 */
2210static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c1 = {
2211	.master		= &dra7xx_l4_per1_hwmod,
2212	.slave		= &dra7xx_i2c1_hwmod,
2213	.clk		= "l3_iclk_div",
2214	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2215};
2216
2217/* l4_per1 -> i2c2 */
2218static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c2 = {
2219	.master		= &dra7xx_l4_per1_hwmod,
2220	.slave		= &dra7xx_i2c2_hwmod,
2221	.clk		= "l3_iclk_div",
2222	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2223};
2224
2225/* l4_per1 -> i2c3 */
2226static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c3 = {
2227	.master		= &dra7xx_l4_per1_hwmod,
2228	.slave		= &dra7xx_i2c3_hwmod,
2229	.clk		= "l3_iclk_div",
2230	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2231};
2232
2233/* l4_per1 -> i2c4 */
2234static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c4 = {
2235	.master		= &dra7xx_l4_per1_hwmod,
2236	.slave		= &dra7xx_i2c4_hwmod,
2237	.clk		= "l3_iclk_div",
2238	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2239};
2240
2241/* l4_per1 -> i2c5 */
2242static struct omap_hwmod_ocp_if dra7xx_l4_per1__i2c5 = {
2243	.master		= &dra7xx_l4_per1_hwmod,
2244	.slave		= &dra7xx_i2c5_hwmod,
2245	.clk		= "l3_iclk_div",
2246	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2247};
2248
2249/* l4_per1 -> mcspi1 */
2250static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi1 = {
2251	.master		= &dra7xx_l4_per1_hwmod,
2252	.slave		= &dra7xx_mcspi1_hwmod,
2253	.clk		= "l3_iclk_div",
2254	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2255};
2256
2257/* l4_per1 -> mcspi2 */
2258static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi2 = {
2259	.master		= &dra7xx_l4_per1_hwmod,
2260	.slave		= &dra7xx_mcspi2_hwmod,
2261	.clk		= "l3_iclk_div",
2262	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2263};
2264
2265/* l4_per1 -> mcspi3 */
2266static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi3 = {
2267	.master		= &dra7xx_l4_per1_hwmod,
2268	.slave		= &dra7xx_mcspi3_hwmod,
2269	.clk		= "l3_iclk_div",
2270	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2271};
2272
2273/* l4_per1 -> mcspi4 */
2274static struct omap_hwmod_ocp_if dra7xx_l4_per1__mcspi4 = {
2275	.master		= &dra7xx_l4_per1_hwmod,
2276	.slave		= &dra7xx_mcspi4_hwmod,
2277	.clk		= "l3_iclk_div",
2278	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2279};
2280
2281/* l4_per1 -> mmc1 */
2282static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc1 = {
2283	.master		= &dra7xx_l4_per1_hwmod,
2284	.slave		= &dra7xx_mmc1_hwmod,
2285	.clk		= "l3_iclk_div",
2286	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2287};
2288
2289/* l4_per1 -> mmc2 */
2290static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc2 = {
2291	.master		= &dra7xx_l4_per1_hwmod,
2292	.slave		= &dra7xx_mmc2_hwmod,
2293	.clk		= "l3_iclk_div",
2294	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2295};
2296
2297/* l4_per1 -> mmc3 */
2298static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc3 = {
2299	.master		= &dra7xx_l4_per1_hwmod,
2300	.slave		= &dra7xx_mmc3_hwmod,
2301	.clk		= "l3_iclk_div",
2302	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2303};
2304
2305/* l4_per1 -> mmc4 */
2306static struct omap_hwmod_ocp_if dra7xx_l4_per1__mmc4 = {
2307	.master		= &dra7xx_l4_per1_hwmod,
2308	.slave		= &dra7xx_mmc4_hwmod,
2309	.clk		= "l3_iclk_div",
2310	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2311};
2312
2313/* l4_cfg -> mpu */
2314static struct omap_hwmod_ocp_if dra7xx_l4_cfg__mpu = {
2315	.master		= &dra7xx_l4_cfg_hwmod,
2316	.slave		= &dra7xx_mpu_hwmod,
2317	.clk		= "l3_iclk_div",
2318	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2319};
2320
2321static struct omap_hwmod_addr_space dra7xx_ocp2scp1_addrs[] = {
2322	{
2323		.pa_start	= 0x4a080000,
2324		.pa_end		= 0x4a08001f,
2325		.flags		= ADDR_TYPE_RT
2326	},
2327	{ }
2328};
2329
2330/* l4_cfg -> ocp2scp1 */
2331static struct omap_hwmod_ocp_if dra7xx_l4_cfg__ocp2scp1 = {
2332	.master		= &dra7xx_l4_cfg_hwmod,
2333	.slave		= &dra7xx_ocp2scp1_hwmod,
2334	.clk		= "l4_root_clk_div",
2335	.addr		= dra7xx_ocp2scp1_addrs,
2336	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2337};
2338
2339static struct omap_hwmod_addr_space dra7xx_qspi_addrs[] = {
2340	{
2341		.pa_start	= 0x4b300000,
2342		.pa_end		= 0x4b30007f,
2343		.flags		= ADDR_TYPE_RT
2344	},
2345	{ }
2346};
2347
2348/* l3_main_1 -> qspi */
2349static struct omap_hwmod_ocp_if dra7xx_l3_main_1__qspi = {
2350	.master		= &dra7xx_l3_main_1_hwmod,
2351	.slave		= &dra7xx_qspi_hwmod,
2352	.clk		= "l3_iclk_div",
2353	.addr		= dra7xx_qspi_addrs,
2354	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2355};
2356
2357static struct omap_hwmod_addr_space dra7xx_sata_addrs[] = {
2358	{
2359		.name		= "sysc",
2360		.pa_start	= 0x4a141100,
2361		.pa_end		= 0x4a141107,
2362		.flags		= ADDR_TYPE_RT
2363	},
2364	{ }
2365};
2366
2367/* l4_cfg -> sata */
2368static struct omap_hwmod_ocp_if dra7xx_l4_cfg__sata = {
2369	.master		= &dra7xx_l4_cfg_hwmod,
2370	.slave		= &dra7xx_sata_hwmod,
2371	.clk		= "l3_iclk_div",
2372	.addr		= dra7xx_sata_addrs,
2373	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2374};
2375
2376static struct omap_hwmod_addr_space dra7xx_smartreflex_core_addrs[] = {
2377	{
2378		.pa_start	= 0x4a0dd000,
2379		.pa_end		= 0x4a0dd07f,
2380		.flags		= ADDR_TYPE_RT
2381	},
2382	{ }
2383};
2384
2385/* l4_cfg -> smartreflex_core */
2386static struct omap_hwmod_ocp_if dra7xx_l4_cfg__smartreflex_core = {
2387	.master		= &dra7xx_l4_cfg_hwmod,
2388	.slave		= &dra7xx_smartreflex_core_hwmod,
2389	.clk		= "l4_root_clk_div",
2390	.addr		= dra7xx_smartreflex_core_addrs,
2391	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2392};
2393
2394static struct omap_hwmod_addr_space dra7xx_smartreflex_mpu_addrs[] = {
2395	{
2396		.pa_start	= 0x4a0d9000,
2397		.pa_end		= 0x4a0d907f,
2398		.flags		= ADDR_TYPE_RT
2399	},
2400	{ }
2401};
2402
2403/* l4_cfg -> smartreflex_mpu */
2404static struct omap_hwmod_ocp_if dra7xx_l4_cfg__smartreflex_mpu = {
2405	.master		= &dra7xx_l4_cfg_hwmod,
2406	.slave		= &dra7xx_smartreflex_mpu_hwmod,
2407	.clk		= "l4_root_clk_div",
2408	.addr		= dra7xx_smartreflex_mpu_addrs,
2409	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2410};
2411
2412static struct omap_hwmod_addr_space dra7xx_spinlock_addrs[] = {
2413	{
2414		.pa_start	= 0x4a0f6000,
2415		.pa_end		= 0x4a0f6fff,
2416		.flags		= ADDR_TYPE_RT
2417	},
2418	{ }
2419};
2420
2421/* l4_cfg -> spinlock */
2422static struct omap_hwmod_ocp_if dra7xx_l4_cfg__spinlock = {
2423	.master		= &dra7xx_l4_cfg_hwmod,
2424	.slave		= &dra7xx_spinlock_hwmod,
2425	.clk		= "l3_iclk_div",
2426	.addr		= dra7xx_spinlock_addrs,
2427	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2428};
2429
2430/* l4_wkup -> timer1 */
2431static struct omap_hwmod_ocp_if dra7xx_l4_wkup__timer1 = {
2432	.master		= &dra7xx_l4_wkup_hwmod,
2433	.slave		= &dra7xx_timer1_hwmod,
2434	.clk		= "wkupaon_iclk_mux",
2435	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2436};
2437
2438/* l4_per1 -> timer2 */
2439static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer2 = {
2440	.master		= &dra7xx_l4_per1_hwmod,
2441	.slave		= &dra7xx_timer2_hwmod,
2442	.clk		= "l3_iclk_div",
2443	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2444};
2445
2446/* l4_per1 -> timer3 */
2447static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer3 = {
2448	.master		= &dra7xx_l4_per1_hwmod,
2449	.slave		= &dra7xx_timer3_hwmod,
2450	.clk		= "l3_iclk_div",
2451	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2452};
2453
2454/* l4_per1 -> timer4 */
2455static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer4 = {
2456	.master		= &dra7xx_l4_per1_hwmod,
2457	.slave		= &dra7xx_timer4_hwmod,
2458	.clk		= "l3_iclk_div",
2459	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2460};
2461
2462/* l4_per3 -> timer5 */
2463static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer5 = {
2464	.master		= &dra7xx_l4_per3_hwmod,
2465	.slave		= &dra7xx_timer5_hwmod,
2466	.clk		= "l3_iclk_div",
2467	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2468};
2469
2470/* l4_per3 -> timer6 */
2471static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer6 = {
2472	.master		= &dra7xx_l4_per3_hwmod,
2473	.slave		= &dra7xx_timer6_hwmod,
2474	.clk		= "l3_iclk_div",
2475	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2476};
2477
2478/* l4_per3 -> timer7 */
2479static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer7 = {
2480	.master		= &dra7xx_l4_per3_hwmod,
2481	.slave		= &dra7xx_timer7_hwmod,
2482	.clk		= "l3_iclk_div",
2483	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2484};
2485
2486/* l4_per3 -> timer8 */
2487static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer8 = {
2488	.master		= &dra7xx_l4_per3_hwmod,
2489	.slave		= &dra7xx_timer8_hwmod,
2490	.clk		= "l3_iclk_div",
2491	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2492};
2493
2494/* l4_per1 -> timer9 */
2495static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer9 = {
2496	.master		= &dra7xx_l4_per1_hwmod,
2497	.slave		= &dra7xx_timer9_hwmod,
2498	.clk		= "l3_iclk_div",
2499	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2500};
2501
2502/* l4_per1 -> timer10 */
2503static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer10 = {
2504	.master		= &dra7xx_l4_per1_hwmod,
2505	.slave		= &dra7xx_timer10_hwmod,
2506	.clk		= "l3_iclk_div",
2507	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2508};
2509
2510/* l4_per1 -> timer11 */
2511static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer11 = {
2512	.master		= &dra7xx_l4_per1_hwmod,
2513	.slave		= &dra7xx_timer11_hwmod,
2514	.clk		= "l3_iclk_div",
2515	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2516};
2517
2518/* l4_per1 -> uart1 */
2519static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart1 = {
2520	.master		= &dra7xx_l4_per1_hwmod,
2521	.slave		= &dra7xx_uart1_hwmod,
2522	.clk		= "l3_iclk_div",
2523	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2524};
2525
2526/* l4_per1 -> uart2 */
2527static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart2 = {
2528	.master		= &dra7xx_l4_per1_hwmod,
2529	.slave		= &dra7xx_uart2_hwmod,
2530	.clk		= "l3_iclk_div",
2531	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2532};
2533
2534/* l4_per1 -> uart3 */
2535static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart3 = {
2536	.master		= &dra7xx_l4_per1_hwmod,
2537	.slave		= &dra7xx_uart3_hwmod,
2538	.clk		= "l3_iclk_div",
2539	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2540};
2541
2542/* l4_per1 -> uart4 */
2543static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart4 = {
2544	.master		= &dra7xx_l4_per1_hwmod,
2545	.slave		= &dra7xx_uart4_hwmod,
2546	.clk		= "l3_iclk_div",
2547	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2548};
2549
2550/* l4_per1 -> uart5 */
2551static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart5 = {
2552	.master		= &dra7xx_l4_per1_hwmod,
2553	.slave		= &dra7xx_uart5_hwmod,
2554	.clk		= "l3_iclk_div",
2555	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2556};
2557
2558/* l4_per1 -> uart6 */
2559static struct omap_hwmod_ocp_if dra7xx_l4_per1__uart6 = {
2560	.master		= &dra7xx_l4_per1_hwmod,
2561	.slave		= &dra7xx_uart6_hwmod,
2562	.clk		= "l3_iclk_div",
2563	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2564};
2565
2566/* l4_per3 -> usb_otg_ss1 */
2567static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss1 = {
2568	.master		= &dra7xx_l4_per3_hwmod,
2569	.slave		= &dra7xx_usb_otg_ss1_hwmod,
2570	.clk		= "dpll_core_h13x2_ck",
2571	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2572};
2573
2574/* l4_per3 -> usb_otg_ss2 */
2575static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss2 = {
2576	.master		= &dra7xx_l4_per3_hwmod,
2577	.slave		= &dra7xx_usb_otg_ss2_hwmod,
2578	.clk		= "dpll_core_h13x2_ck",
2579	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2580};
2581
2582/* l4_per3 -> usb_otg_ss3 */
2583static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss3 = {
2584	.master		= &dra7xx_l4_per3_hwmod,
2585	.slave		= &dra7xx_usb_otg_ss3_hwmod,
2586	.clk		= "dpll_core_h13x2_ck",
2587	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2588};
2589
2590/* l4_per3 -> usb_otg_ss4 */
2591static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss4 = {
2592	.master		= &dra7xx_l4_per3_hwmod,
2593	.slave		= &dra7xx_usb_otg_ss4_hwmod,
2594	.clk		= "dpll_core_h13x2_ck",
2595	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2596};
2597
2598/* l3_main_1 -> vcp1 */
2599static struct omap_hwmod_ocp_if dra7xx_l3_main_1__vcp1 = {
2600	.master		= &dra7xx_l3_main_1_hwmod,
2601	.slave		= &dra7xx_vcp1_hwmod,
2602	.clk		= "l3_iclk_div",
2603	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2604};
2605
2606/* l4_per2 -> vcp1 */
2607static struct omap_hwmod_ocp_if dra7xx_l4_per2__vcp1 = {
2608	.master		= &dra7xx_l4_per2_hwmod,
2609	.slave		= &dra7xx_vcp1_hwmod,
2610	.clk		= "l3_iclk_div",
2611	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2612};
2613
2614/* l3_main_1 -> vcp2 */
2615static struct omap_hwmod_ocp_if dra7xx_l3_main_1__vcp2 = {
2616	.master		= &dra7xx_l3_main_1_hwmod,
2617	.slave		= &dra7xx_vcp2_hwmod,
2618	.clk		= "l3_iclk_div",
2619	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2620};
2621
2622/* l4_per2 -> vcp2 */
2623static struct omap_hwmod_ocp_if dra7xx_l4_per2__vcp2 = {
2624	.master		= &dra7xx_l4_per2_hwmod,
2625	.slave		= &dra7xx_vcp2_hwmod,
2626	.clk		= "l3_iclk_div",
2627	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2628};
2629
2630/* l4_wkup -> wd_timer2 */
2631static struct omap_hwmod_ocp_if dra7xx_l4_wkup__wd_timer2 = {
2632	.master		= &dra7xx_l4_wkup_hwmod,
2633	.slave		= &dra7xx_wd_timer2_hwmod,
2634	.clk		= "wkupaon_iclk_mux",
2635	.user		= OCP_USER_MPU | OCP_USER_SDMA,
2636};
2637
2638static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
2639	&dra7xx_l3_main_2__l3_instr,
2640	&dra7xx_l4_cfg__l3_main_1,
2641	&dra7xx_mpu__l3_main_1,
2642	&dra7xx_l3_main_1__l3_main_2,
2643	&dra7xx_l4_cfg__l3_main_2,
2644	&dra7xx_l3_main_1__l4_cfg,
2645	&dra7xx_l3_main_1__l4_per1,
2646	&dra7xx_l3_main_1__l4_per2,
2647	&dra7xx_l3_main_1__l4_per3,
2648	&dra7xx_l3_main_1__l4_wkup,
2649	&dra7xx_l4_per2__atl,
2650	&dra7xx_l3_main_1__bb2d,
2651	&dra7xx_l4_wkup__counter_32k,
2652	&dra7xx_l4_wkup__ctrl_module_wkup,
2653	&dra7xx_l4_wkup__dcan1,
2654	&dra7xx_l4_per2__dcan2,
2655	&dra7xx_l4_cfg__dma_system,
2656	&dra7xx_l3_main_1__dss,
2657	&dra7xx_l3_main_1__dispc,
2658	&dra7xx_l3_main_1__hdmi,
2659	&dra7xx_l4_per1__elm,
2660	&dra7xx_l4_wkup__gpio1,
2661	&dra7xx_l4_per1__gpio2,
2662	&dra7xx_l4_per1__gpio3,
2663	&dra7xx_l4_per1__gpio4,
2664	&dra7xx_l4_per1__gpio5,
2665	&dra7xx_l4_per1__gpio6,
2666	&dra7xx_l4_per1__gpio7,
2667	&dra7xx_l4_per1__gpio8,
2668	&dra7xx_l3_main_1__gpmc,
2669	&dra7xx_l4_per1__hdq1w,
2670	&dra7xx_l4_per1__i2c1,
2671	&dra7xx_l4_per1__i2c2,
2672	&dra7xx_l4_per1__i2c3,
2673	&dra7xx_l4_per1__i2c4,
2674	&dra7xx_l4_per1__i2c5,
2675	&dra7xx_l4_per1__mcspi1,
2676	&dra7xx_l4_per1__mcspi2,
2677	&dra7xx_l4_per1__mcspi3,
2678	&dra7xx_l4_per1__mcspi4,
2679	&dra7xx_l4_per1__mmc1,
2680	&dra7xx_l4_per1__mmc2,
2681	&dra7xx_l4_per1__mmc3,
2682	&dra7xx_l4_per1__mmc4,
2683	&dra7xx_l4_cfg__mpu,
2684	&dra7xx_l4_cfg__ocp2scp1,
2685	&dra7xx_l3_main_1__qspi,
2686	&dra7xx_l4_cfg__sata,
2687	&dra7xx_l4_cfg__smartreflex_core,
2688	&dra7xx_l4_cfg__smartreflex_mpu,
2689	&dra7xx_l4_cfg__spinlock,
2690	&dra7xx_l4_wkup__timer1,
2691	&dra7xx_l4_per1__timer2,
2692	&dra7xx_l4_per1__timer3,
2693	&dra7xx_l4_per1__timer4,
2694	&dra7xx_l4_per3__timer5,
2695	&dra7xx_l4_per3__timer6,
2696	&dra7xx_l4_per3__timer7,
2697	&dra7xx_l4_per3__timer8,
2698	&dra7xx_l4_per1__timer9,
2699	&dra7xx_l4_per1__timer10,
2700	&dra7xx_l4_per1__timer11,
2701	&dra7xx_l4_per1__uart1,
2702	&dra7xx_l4_per1__uart2,
2703	&dra7xx_l4_per1__uart3,
2704	&dra7xx_l4_per1__uart4,
2705	&dra7xx_l4_per1__uart5,
2706	&dra7xx_l4_per1__uart6,
2707	&dra7xx_l4_per3__usb_otg_ss1,
2708	&dra7xx_l4_per3__usb_otg_ss2,
2709	&dra7xx_l4_per3__usb_otg_ss3,
2710	&dra7xx_l4_per3__usb_otg_ss4,
2711	&dra7xx_l3_main_1__vcp1,
2712	&dra7xx_l4_per2__vcp1,
2713	&dra7xx_l3_main_1__vcp2,
2714	&dra7xx_l4_per2__vcp2,
2715	&dra7xx_l4_wkup__wd_timer2,
2716	NULL,
2717};
2718
2719int __init dra7xx_hwmod_init(void)
2720{
2721	omap_hwmod_init();
2722	return omap_hwmod_register_links(dra7xx_hwmod_ocp_ifs);
2723}