| 
					
				 | 
			
			
				@@ -142,3 +142,195 @@ static const struct clk_ops core_ck_ops = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 DEFINE_STRUCT_CLK_HW_OMAP(core_ck, "wkup_clkdm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 DEFINE_STRUCT_CLK(core_ck, core_ck_parent_names, core_ck_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_CLK_DIVIDER(core_l3_ck, "core_ck", &core_ck, 0x0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   OMAP24XX_CLKSEL_L3_SHIFT, OMAP24XX_CLKSEL_L3_WIDTH, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   CLK_DIVIDER_ONE_BASED, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_CLK_DIVIDER(l4_ck, "core_l3_ck", &core_l3_ck, 0x0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   OMAP24XX_CLKSEL_L4_SHIFT, OMAP24XX_CLKSEL_L4_WIDTH, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   CLK_DIVIDER_ONE_BASED, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk aes_ick; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const char *aes_ick_parent_names[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"l4_ck", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clk_ops aes_ick_ops = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.init		= &omap2_init_clk_clkdm, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable		= &omap2_dflt_clk_enable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.disable	= &omap2_dflt_clk_disable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.is_enabled	= &omap2_dflt_clk_is_enabled, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk_hw_omap aes_ick_hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.clk = &aes_ick, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ops		= &clkhwops_iclk_wait, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_reg	= OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_bit	= OMAP24XX_EN_AES_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clkdm_name	= "core_l4_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_STRUCT_CLK(aes_ick, aes_ick_parent_names, aes_ick_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk apll54_ck; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clk_ops apll54_ck_ops = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.init		= &omap2_init_clk_clkdm, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable		= &omap2_clk_apll54_enable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.disable	= &omap2_clk_apll54_disable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.recalc_rate	= &omap2_clk_apll54_recalc, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk_hw_omap apll54_ck_hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.clk = &apll54_ck, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ops		= &clkhwops_apll54, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_reg	= OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_bit	= OMAP24XX_EN_54M_PLL_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= ENABLE_ON_INIT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clkdm_name	= "wkup_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_STRUCT_CLK(apll54_ck, dpll_ck_parent_names, apll54_ck_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk apll96_ck; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clk_ops apll96_ck_ops = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.init		= &omap2_init_clk_clkdm, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable		= &omap2_clk_apll96_enable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.disable	= &omap2_clk_apll96_disable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.recalc_rate	= &omap2_clk_apll96_recalc, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk_hw_omap apll96_ck_hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.clk = &apll96_ck, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ops		= &clkhwops_apll96, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_reg	= OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_bit	= OMAP24XX_EN_96M_PLL_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= ENABLE_ON_INIT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clkdm_name	= "wkup_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_STRUCT_CLK(apll96_ck, dpll_ck_parent_names, apll96_ck_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const char *func_96m_ck_parent_names[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"apll96_ck", "alt_ck", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_CLK_MUX(func_96m_ck, func_96m_ck_parent_names, NULL, 0x0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), OMAP2430_96M_SOURCE_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       OMAP2430_96M_SOURCE_WIDTH, 0x0, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk cam_fck; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const char *cam_fck_parent_names[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"func_96m_ck", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk_hw_omap cam_fck_hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.clk = &cam_fck, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_reg	= OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_bit	= OMAP24XX_EN_CAM_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clkdm_name	= "core_l3_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_STRUCT_CLK(cam_fck, cam_fck_parent_names, aes_ick_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk cam_ick; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk_hw_omap cam_ick_hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.clk = &cam_ick, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ops		= &clkhwops_iclk, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_reg	= OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_bit	= OMAP24XX_EN_CAM_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clkdm_name	= "core_l4_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_STRUCT_CLK(cam_ick, aes_ick_parent_names, aes_ick_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk des_ick; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk_hw_omap des_ick_hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.hw = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.clk = &des_ick, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ops		= &clkhwops_iclk_wait, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_reg	= OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_bit	= OMAP24XX_EN_DES_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clkdm_name	= "core_l4_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_STRUCT_CLK(des_ick, aes_ick_parent_names, aes_ick_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clksel_rate dsp_fck_core_rates[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 1, .val = 1, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 2, .val = 2, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 3, .val = 3, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 4, .val = 4, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 0 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clksel dsp_fck_clksel[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .parent = &core_ck, .rates = dsp_fck_core_rates }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .parent = NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const char *dsp_fck_parent_names[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"core_ck", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk dsp_fck; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clk_ops dsp_fck_ops = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.init		= &omap2_init_clk_clkdm, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable		= &omap2_dflt_clk_enable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.disable	= &omap2_dflt_clk_disable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.is_enabled	= &omap2_dflt_clk_is_enabled, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.recalc_rate	= &omap2_clksel_recalc, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.set_rate	= &omap2_clksel_set_rate, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.round_rate	= &omap2_clksel_round_rate, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DEFINE_CLK_OMAP_MUX_GATE(dsp_fck, "dsp_clkdm", dsp_fck_clksel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 OMAP24XX_CLKSEL_DSP_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, &clkhwops_wait, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 dsp_fck_parent_names, dsp_fck_ops); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clksel_rate dss1_fck_sys_rates[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 1, .val = 0, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 0 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clksel_rate dss1_fck_core_rates[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 1, .val = 1, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 2, .val = 2, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 3, .val = 3, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 4, .val = 4, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 5, .val = 5, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 6, .val = 6, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 8, .val = 8, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 9, .val = 9, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 12, .val = 12, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 16, .val = 16, .flags = RATE_IN_24XX }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .div = 0 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static const struct clksel dss1_fck_clksel[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .parent = &sys_ck, .rates = dss1_fck_sys_rates }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .parent = &core_ck, .rates = dss1_fck_core_rates }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .parent = NULL }, 
			 |