|  | @@ -755,3 +755,185 @@ static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "dss_rfbi",
 | 
	
		
			
				|  |  | +	.class		= &omap2_rfbi_hwmod_class,
 | 
	
		
			
				|  |  | +	.main_clk	= "dss1_alwon_fck",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap2 = {
 | 
	
		
			
				|  |  | +			.prcm_reg_id = 1,
 | 
	
		
			
				|  |  | +			.module_bit = OMAP3430_EN_DSS1_SHIFT,
 | 
	
		
			
				|  |  | +			.module_offs = OMAP3430_DSS_MOD,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.opt_clks	= dss_rfbi_opt_clks,
 | 
	
		
			
				|  |  | +	.opt_clks_cnt	= ARRAY_SIZE(dss_rfbi_opt_clks),
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_NO_IDLEST,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
 | 
	
		
			
				|  |  | +	/* required only on OMAP3430 */
 | 
	
		
			
				|  |  | +	{ .role = "tv_dac_clk", .clk = "dss_96m_fck" },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "dss_venc",
 | 
	
		
			
				|  |  | +	.class		= &omap2_venc_hwmod_class,
 | 
	
		
			
				|  |  | +	.main_clk	= "dss_tv_fck",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap2 = {
 | 
	
		
			
				|  |  | +			.prcm_reg_id = 1,
 | 
	
		
			
				|  |  | +			.module_bit = OMAP3430_EN_DSS1_SHIFT,
 | 
	
		
			
				|  |  | +			.module_offs = OMAP3430_DSS_MOD,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.opt_clks	= dss_venc_opt_clks,
 | 
	
		
			
				|  |  | +	.opt_clks_cnt	= ARRAY_SIZE(dss_venc_opt_clks),
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_NO_IDLEST,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* I2C1 */
 | 
	
		
			
				|  |  | +static struct omap_i2c_dev_attr i2c1_dev_attr = {
 | 
	
		
			
				|  |  | +	.fifo_depth	= 8, /* bytes */
 | 
	
		
			
				|  |  | +	.flags		= OMAP_I2C_FLAG_BUS_SHIFT_2,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod omap3xxx_i2c1_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "i2c1",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= omap2_i2c1_mpu_irqs,
 | 
	
		
			
				|  |  | +	.sdma_reqs	= omap2_i2c1_sdma_reqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "i2c1_fck",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap2 = {
 | 
	
		
			
				|  |  | +			.module_offs = CORE_MOD,
 | 
	
		
			
				|  |  | +			.prcm_reg_id = 1,
 | 
	
		
			
				|  |  | +			.module_bit = OMAP3430_EN_I2C1_SHIFT,
 | 
	
		
			
				|  |  | +			.idlest_reg_id = 1,
 | 
	
		
			
				|  |  | +			.idlest_idle_bit = OMAP3430_ST_I2C1_SHIFT,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.class		= &i2c_class,
 | 
	
		
			
				|  |  | +	.dev_attr	= &i2c1_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* I2C2 */
 | 
	
		
			
				|  |  | +static struct omap_i2c_dev_attr i2c2_dev_attr = {
 | 
	
		
			
				|  |  | +	.fifo_depth	= 8, /* bytes */
 | 
	
		
			
				|  |  | +	.flags = OMAP_I2C_FLAG_BUS_SHIFT_2,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod omap3xxx_i2c2_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "i2c2",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= omap2_i2c2_mpu_irqs,
 | 
	
		
			
				|  |  | +	.sdma_reqs	= omap2_i2c2_sdma_reqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "i2c2_fck",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap2 = {
 | 
	
		
			
				|  |  | +			.module_offs = CORE_MOD,
 | 
	
		
			
				|  |  | +			.prcm_reg_id = 1,
 | 
	
		
			
				|  |  | +			.module_bit = OMAP3430_EN_I2C2_SHIFT,
 | 
	
		
			
				|  |  | +			.idlest_reg_id = 1,
 | 
	
		
			
				|  |  | +			.idlest_idle_bit = OMAP3430_ST_I2C2_SHIFT,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.class		= &i2c_class,
 | 
	
		
			
				|  |  | +	.dev_attr	= &i2c2_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* I2C3 */
 | 
	
		
			
				|  |  | +static struct omap_i2c_dev_attr i2c3_dev_attr = {
 | 
	
		
			
				|  |  | +	.fifo_depth	= 64, /* bytes */
 | 
	
		
			
				|  |  | +	.flags = OMAP_I2C_FLAG_BUS_SHIFT_2,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_irq_info i2c3_mpu_irqs[] = {
 | 
	
		
			
				|  |  | +	{ .irq = 61 + OMAP_INTC_START, },
 | 
	
		
			
				|  |  | +	{ .irq = -1 },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_dma_info i2c3_sdma_reqs[] = {
 | 
	
		
			
				|  |  | +	{ .name = "tx", .dma_req = OMAP34XX_DMA_I2C3_TX },
 | 
	
		
			
				|  |  | +	{ .name = "rx", .dma_req = OMAP34XX_DMA_I2C3_RX },
 | 
	
		
			
				|  |  | +	{ .dma_req = -1 }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod omap3xxx_i2c3_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "i2c3",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= i2c3_mpu_irqs,
 | 
	
		
			
				|  |  | +	.sdma_reqs	= i2c3_sdma_reqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "i2c3_fck",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap2 = {
 | 
	
		
			
				|  |  | +			.module_offs = CORE_MOD,
 | 
	
		
			
				|  |  | +			.prcm_reg_id = 1,
 | 
	
		
			
				|  |  | +			.module_bit = OMAP3430_EN_I2C3_SHIFT,
 | 
	
		
			
				|  |  | +			.idlest_reg_id = 1,
 | 
	
		
			
				|  |  | +			.idlest_idle_bit = OMAP3430_ST_I2C3_SHIFT,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.class		= &i2c_class,
 | 
	
		
			
				|  |  | +	.dev_attr	= &i2c3_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * 'gpio' class
 | 
	
		
			
				|  |  | + * general purpose io module
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_class_sysconfig omap3xxx_gpio_sysc = {
 | 
	
		
			
				|  |  | +	.rev_offs	= 0x0000,
 | 
	
		
			
				|  |  | +	.sysc_offs	= 0x0010,
 | 
	
		
			
				|  |  | +	.syss_offs	= 0x0014,
 | 
	
		
			
				|  |  | +	.sysc_flags	= (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
 | 
	
		
			
				|  |  | +			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
 | 
	
		
			
				|  |  | +			   SYSS_HAS_RESET_STATUS),
 | 
	
		
			
				|  |  | +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 | 
	
		
			
				|  |  | +	.sysc_fields    = &omap_hwmod_sysc_type1,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_class omap3xxx_gpio_hwmod_class = {
 | 
	
		
			
				|  |  | +	.name = "gpio",
 | 
	
		
			
				|  |  | +	.sysc = &omap3xxx_gpio_sysc,
 | 
	
		
			
				|  |  | +	.rev = 1,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpio_dev_attr */
 | 
	
		
			
				|  |  | +static struct omap_gpio_dev_attr gpio_dev_attr = {
 | 
	
		
			
				|  |  | +	.bank_width = 32,
 | 
	
		
			
				|  |  | +	.dbck_flag = true,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpio1 */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
 | 
	
		
			
				|  |  | +	{ .role = "dbclk", .clk = "gpio1_dbck", },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod omap3xxx_gpio1_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "gpio1",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= omap2_gpio1_irqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "gpio1_ick",
 | 
	
		
			
				|  |  | +	.opt_clks	= gpio1_opt_clks,
 | 
	
		
			
				|  |  | +	.opt_clks_cnt	= ARRAY_SIZE(gpio1_opt_clks),
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap2 = {
 | 
	
		
			
				|  |  | +			.prcm_reg_id = 1,
 | 
	
		
			
				|  |  | +			.module_bit = OMAP3430_EN_GPIO1_SHIFT,
 | 
	
		
			
				|  |  | +			.module_offs = WKUP_MOD,
 | 
	
		
			
				|  |  | +			.idlest_reg_id = 1,
 | 
	
		
			
				|  |  | +			.idlest_idle_bit = OMAP3430_ST_GPIO1_SHIFT,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.class		= &omap3xxx_gpio_hwmod_class,
 | 
	
		
			
				|  |  | +	.dev_attr	= &gpio_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpio2 */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
 | 
	
		
			
				|  |  | +	{ .role = "dbclk", .clk = "gpio2_dbck", },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod omap3xxx_gpio2_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "gpio2",
 |