|
@@ -2606,3 +2606,176 @@ static struct clk_hw_omap sgx_ick_hw = {
|
|
|
.hw = {
|
|
|
.clk = &sgx_ick,
|
|
|
},
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_SGX_MOD, CM_ICLKEN),
|
|
|
+ .enable_bit = OMAP3430ES2_CM_ICLKEN_SGX_EN_SGX_SHIFT,
|
|
|
+ .clkdm_name = "sgx_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(sgx_ick, core_l3_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk sha11_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap sha11_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &sha11_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
|
|
|
+ .enable_bit = OMAP3430_EN_SHA11_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(sha11_ick, aes1_ick_parent_names, aes1_ick_ops);
|
|
|
+
|
|
|
+static struct clk sha12_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap sha12_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &sha12_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP3430_EN_SHA12_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(sha12_ick, aes2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk sr1_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap sr1_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &sr1_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
|
|
|
+ .enable_bit = OMAP3430_EN_SR1_SHIFT,
|
|
|
+ .clkdm_name = "wkup_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(sr1_fck, dpll3_ck_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk sr2_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap sr2_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &sr2_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
|
|
|
+ .enable_bit = OMAP3430_EN_SR2_SHIFT,
|
|
|
+ .clkdm_name = "wkup_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(sr2_fck, dpll3_ck_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk sr_l4_ick;
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK_HW_OMAP(sr_l4_ick, "core_l4_clkdm");
|
|
|
+DEFINE_STRUCT_CLK(sr_l4_ick, security_l4_ick2_parent_names, core_l4_ick_ops);
|
|
|
+
|
|
|
+static struct clk ssi_l4_ick;
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK_HW_OMAP(ssi_l4_ick, "core_l4_clkdm");
|
|
|
+DEFINE_STRUCT_CLK(ssi_l4_ick, security_l4_ick2_parent_names, core_l4_ick_ops);
|
|
|
+
|
|
|
+static struct clk ssi_ick_3430es1;
|
|
|
+
|
|
|
+static const char *ssi_ick_3430es1_parent_names[] = {
|
|
|
+ "ssi_l4_ick",
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_hw_omap ssi_ick_3430es1_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &ssi_ick_3430es1,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP3430_EN_SSI_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(ssi_ick_3430es1, ssi_ick_3430es1_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk ssi_ick_3430es2;
|
|
|
+
|
|
|
+static struct clk_hw_omap ssi_ick_3430es2_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &ssi_ick_3430es2,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_omap3430es2_iclk_ssi_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP3430_EN_SSI_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(ssi_ick_3430es2, ssi_ick_3430es1_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static const struct clksel_rate ssi_ssr_corex2_rates[] = {
|
|
|
+ { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 3, .val = 3, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 6, .val = 6, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 8, .val = 8, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel ssi_ssr_clksel[] = {
|
|
|
+ { .parent = &corex2_fck, .rates = ssi_ssr_corex2_rates },
|
|
|
+ { .parent = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *ssi_ssr_fck_3430es1_parent_names[] = {
|
|
|
+ "corex2_fck",
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clk_ops ssi_ssr_fck_3430es1_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(ssi_ssr_fck_3430es1, "core_l4_clkdm",
|
|
|
+ ssi_ssr_clksel, OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL),
|
|
|
+ OMAP3430_CLKSEL_SSI_MASK,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|
|
|
+ OMAP3430_EN_SSI_SHIFT,
|
|
|
+ NULL, ssi_ssr_fck_3430es1_parent_names,
|
|
|
+ ssi_ssr_fck_3430es1_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(ssi_ssr_fck_3430es2, "core_l4_clkdm",
|
|
|
+ ssi_ssr_clksel, OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL),
|
|
|
+ OMAP3430_CLKSEL_SSI_MASK,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|
|
|
+ OMAP3430_EN_SSI_SHIFT,
|
|
|
+ NULL, ssi_ssr_fck_3430es1_parent_names,
|
|
|
+ ssi_ssr_fck_3430es1_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_FIXED_FACTOR(ssi_sst_fck_3430es1, "ssi_ssr_fck_3430es1",
|
|
|
+ &ssi_ssr_fck_3430es1, 0x0, 1, 2);
|
|
|
+
|
|
|
+DEFINE_CLK_FIXED_FACTOR(ssi_sst_fck_3430es2, "ssi_ssr_fck_3430es2",
|
|
|
+ &ssi_ssr_fck_3430es2, 0x0, 1, 2);
|
|
|
+
|
|
|
+static struct clk sys_clkout1;
|
|
|
+
|
|
|
+static const char *sys_clkout1_parent_names[] = {
|
|
|
+ "osc_sys_ck",
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_hw_omap sys_clkout1_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &sys_clkout1,
|
|
|
+ },
|
|
|
+ .enable_reg = OMAP3430_PRM_CLKOUT_CTRL,
|
|
|
+ .enable_bit = OMAP3430_CLKOUT_EN_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(sys_clkout1, sys_clkout1_parent_names, aes1_ick_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_DIVIDER(sys_clkout2, "clkout2_src_ck", &clkout2_src_ck, 0x0,
|