|  | @@ -944,3 +944,177 @@ static struct omap_hwmod_class am33xx_gpio_hwmod_class = {
 | 
	
		
			
				|  |  |  	.sysc		= &am33xx_gpio_sysc,
 | 
	
		
			
				|  |  |  	.rev		= 2,
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_gpio_dev_attr gpio_dev_attr = {
 | 
	
		
			
				|  |  | +	.bank_width	= 32,
 | 
	
		
			
				|  |  | +	.dbck_flag	= true,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpio0 */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_opt_clk gpio0_opt_clks[] = {
 | 
	
		
			
				|  |  | +	{ .role = "dbclk", .clk = "gpio0_dbclk" },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_irq_info am33xx_gpio0_irqs[] = {
 | 
	
		
			
				|  |  | +	{ .irq = 96 + OMAP_INTC_START, },
 | 
	
		
			
				|  |  | +	{ .irq = -1 },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod am33xx_gpio0_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "gpio1",
 | 
	
		
			
				|  |  | +	.class		= &am33xx_gpio_hwmod_class,
 | 
	
		
			
				|  |  | +	.clkdm_name	= "l4_wkup_clkdm",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= am33xx_gpio0_irqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "dpll_core_m4_div2_ck",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap4	= {
 | 
	
		
			
				|  |  | +			.clkctrl_offs	= AM33XX_CM_WKUP_GPIO0_CLKCTRL_OFFSET,
 | 
	
		
			
				|  |  | +			.modulemode	= MODULEMODE_SWCTRL,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.opt_clks	= gpio0_opt_clks,
 | 
	
		
			
				|  |  | +	.opt_clks_cnt	= ARRAY_SIZE(gpio0_opt_clks),
 | 
	
		
			
				|  |  | +	.dev_attr	= &gpio_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpio1 */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_irq_info am33xx_gpio1_irqs[] = {
 | 
	
		
			
				|  |  | +	{ .irq = 98 + OMAP_INTC_START, },
 | 
	
		
			
				|  |  | +	{ .irq = -1 },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
 | 
	
		
			
				|  |  | +	{ .role = "dbclk", .clk = "gpio1_dbclk" },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod am33xx_gpio1_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "gpio2",
 | 
	
		
			
				|  |  | +	.class		= &am33xx_gpio_hwmod_class,
 | 
	
		
			
				|  |  | +	.clkdm_name	= "l4ls_clkdm",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= am33xx_gpio1_irqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "l4ls_gclk",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap4	= {
 | 
	
		
			
				|  |  | +			.clkctrl_offs	= AM33XX_CM_PER_GPIO1_CLKCTRL_OFFSET,
 | 
	
		
			
				|  |  | +			.modulemode	= MODULEMODE_SWCTRL,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.opt_clks	= gpio1_opt_clks,
 | 
	
		
			
				|  |  | +	.opt_clks_cnt	= ARRAY_SIZE(gpio1_opt_clks),
 | 
	
		
			
				|  |  | +	.dev_attr	= &gpio_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpio2 */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_irq_info am33xx_gpio2_irqs[] = {
 | 
	
		
			
				|  |  | +	{ .irq = 32 + OMAP_INTC_START, },
 | 
	
		
			
				|  |  | +	{ .irq = -1 },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
 | 
	
		
			
				|  |  | +	{ .role = "dbclk", .clk = "gpio2_dbclk" },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod am33xx_gpio2_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "gpio3",
 | 
	
		
			
				|  |  | +	.class		= &am33xx_gpio_hwmod_class,
 | 
	
		
			
				|  |  | +	.clkdm_name	= "l4ls_clkdm",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= am33xx_gpio2_irqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "l4ls_gclk",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap4	= {
 | 
	
		
			
				|  |  | +			.clkctrl_offs	= AM33XX_CM_PER_GPIO2_CLKCTRL_OFFSET,
 | 
	
		
			
				|  |  | +			.modulemode	= MODULEMODE_SWCTRL,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.opt_clks	= gpio2_opt_clks,
 | 
	
		
			
				|  |  | +	.opt_clks_cnt	= ARRAY_SIZE(gpio2_opt_clks),
 | 
	
		
			
				|  |  | +	.dev_attr	= &gpio_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpio3 */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_irq_info am33xx_gpio3_irqs[] = {
 | 
	
		
			
				|  |  | +	{ .irq = 62 + OMAP_INTC_START, },
 | 
	
		
			
				|  |  | +	{ .irq = -1 },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
 | 
	
		
			
				|  |  | +	{ .role = "dbclk", .clk = "gpio3_dbclk" },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod am33xx_gpio3_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "gpio4",
 | 
	
		
			
				|  |  | +	.class		= &am33xx_gpio_hwmod_class,
 | 
	
		
			
				|  |  | +	.clkdm_name	= "l4ls_clkdm",
 | 
	
		
			
				|  |  | +	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 | 
	
		
			
				|  |  | +	.mpu_irqs	= am33xx_gpio3_irqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "l4ls_gclk",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap4	= {
 | 
	
		
			
				|  |  | +			.clkctrl_offs	= AM33XX_CM_PER_GPIO3_CLKCTRL_OFFSET,
 | 
	
		
			
				|  |  | +			.modulemode	= MODULEMODE_SWCTRL,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.opt_clks	= gpio3_opt_clks,
 | 
	
		
			
				|  |  | +	.opt_clks_cnt	= ARRAY_SIZE(gpio3_opt_clks),
 | 
	
		
			
				|  |  | +	.dev_attr	= &gpio_dev_attr,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* gpmc */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_class_sysconfig gpmc_sysc = {
 | 
	
		
			
				|  |  | +	.rev_offs	= 0x0,
 | 
	
		
			
				|  |  | +	.sysc_offs	= 0x10,
 | 
	
		
			
				|  |  | +	.syss_offs	= 0x14,
 | 
	
		
			
				|  |  | +	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
 | 
	
		
			
				|  |  | +			SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 | 
	
		
			
				|  |  | +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 | 
	
		
			
				|  |  | +	.sysc_fields	= &omap_hwmod_sysc_type1,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_class am33xx_gpmc_hwmod_class = {
 | 
	
		
			
				|  |  | +	.name		= "gpmc",
 | 
	
		
			
				|  |  | +	.sysc		= &gpmc_sysc,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_irq_info am33xx_gpmc_irqs[] = {
 | 
	
		
			
				|  |  | +	{ .irq = 100 + OMAP_INTC_START, },
 | 
	
		
			
				|  |  | +	{ .irq = -1 },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod am33xx_gpmc_hwmod = {
 | 
	
		
			
				|  |  | +	.name		= "gpmc",
 | 
	
		
			
				|  |  | +	.class		= &am33xx_gpmc_hwmod_class,
 | 
	
		
			
				|  |  | +	.clkdm_name	= "l3s_clkdm",
 | 
	
		
			
				|  |  | +	.flags		= (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
 | 
	
		
			
				|  |  | +	.mpu_irqs	= am33xx_gpmc_irqs,
 | 
	
		
			
				|  |  | +	.main_clk	= "l3s_gclk",
 | 
	
		
			
				|  |  | +	.prcm		= {
 | 
	
		
			
				|  |  | +		.omap4	= {
 | 
	
		
			
				|  |  | +			.clkctrl_offs	= AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET,
 | 
	
		
			
				|  |  | +			.modulemode	= MODULEMODE_SWCTRL,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* 'i2c' class */
 | 
	
		
			
				|  |  | +static struct omap_hwmod_class_sysconfig am33xx_i2c_sysc = {
 | 
	
		
			
				|  |  | +	.sysc_offs	= 0x0010,
 | 
	
		
			
				|  |  | +	.syss_offs	= 0x0090,
 | 
	
		
			
				|  |  | +	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
 | 
	
		
			
				|  |  | +			  SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
 | 
	
		
			
				|  |  | +			  SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
 | 
	
		
			
				|  |  | +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 | 
	
		
			
				|  |  | +			  SIDLE_SMART_WKUP),
 | 
	
		
			
				|  |  | +	.sysc_fields	= &omap_hwmod_sysc_type1,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_hwmod_class i2c_class = {
 | 
	
		
			
				|  |  | +	.name		= "i2c",
 | 
	
		
			
				|  |  | +	.sysc		= &am33xx_i2c_sysc,
 | 
	
		
			
				|  |  | +	.rev		= OMAP_I2C_IP_VERSION_2,
 | 
	
		
			
				|  |  | +	.reset		= &omap_i2c_reset,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_i2c_dev_attr i2c_dev_attr = {
 |