|
@@ -2923,3 +2923,188 @@ DEFINE_STRUCT_CLK(uart4_fck_am35xx, fshostusb_fck_parent_names, aes2_ick_ops);
|
|
|
|
|
|
static struct clk uart4_ick;
|
|
|
|
|
|
+static struct clk_hw_omap uart4_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart4_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
|
|
|
+ .enable_bit = OMAP3630_EN_UART4_SHIFT,
|
|
|
+ .clkdm_name = "per_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart4_ick, gpio2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk uart4_ick_am35xx;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart4_ick_am35xx_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart4_ick_am35xx,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = AM35XX_EN_UART4_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart4_ick_am35xx, aes2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static const struct clksel_rate div2_rates[] = {
|
|
|
+ { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel usb_l4_clksel[] = {
|
|
|
+ { .parent = &l4_ick, .rates = div2_rates },
|
|
|
+ { .parent = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *usb_l4_ick_parent_names[] = {
|
|
|
+ "l4_ick",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(usb_l4_ick, "core_l4_clkdm", usb_l4_clksel,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL),
|
|
|
+ OMAP3430ES1_CLKSEL_FSHOSTUSB_MASK,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ OMAP3430ES1_EN_FSHOSTUSB_SHIFT,
|
|
|
+ &clkhwops_iclk_wait, usb_l4_ick_parent_names,
|
|
|
+ ssi_ssr_fck_3430es1_ops);
|
|
|
+
|
|
|
+static struct clk usbhost_120m_fck;
|
|
|
+
|
|
|
+static const char *usbhost_120m_fck_parent_names[] = {
|
|
|
+ "dpll5_m2_ck",
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_hw_omap usbhost_120m_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &usbhost_120m_fck,
|
|
|
+ },
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN),
|
|
|
+ .enable_bit = OMAP3430ES2_EN_USBHOST2_SHIFT,
|
|
|
+ .clkdm_name = "usbhost_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(usbhost_120m_fck, usbhost_120m_fck_parent_names,
|
|
|
+ aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk usbhost_48m_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap usbhost_48m_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &usbhost_48m_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_omap3430es2_dss_usbhost_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN),
|
|
|
+ .enable_bit = OMAP3430ES2_EN_USBHOST1_SHIFT,
|
|
|
+ .clkdm_name = "usbhost_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(usbhost_48m_fck, core_48m_fck_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk usbhost_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap usbhost_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &usbhost_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_omap3430es2_iclk_dss_usbhost_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN),
|
|
|
+ .enable_bit = OMAP3430ES2_EN_USBHOST_SHIFT,
|
|
|
+ .clkdm_name = "usbhost_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(usbhost_ick, security_l4_ick2_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk usbtll_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap usbtll_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &usbtll_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3),
|
|
|
+ .enable_bit = OMAP3430ES2_EN_USBTLL_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(usbtll_fck, usbhost_120m_fck_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk usbtll_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap usbtll_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &usbtll_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3),
|
|
|
+ .enable_bit = OMAP3430ES2_EN_USBTLL_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(usbtll_ick, aes2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static const struct clksel_rate usim_96m_rates[] = {
|
|
|
+ { .div = 2, .val = 3, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 8, .val = 5, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 10, .val = 6, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel_rate usim_120m_rates[] = {
|
|
|
+ { .div = 4, .val = 7, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 8, .val = 8, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 16, .val = 9, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 20, .val = 10, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel usim_clksel[] = {
|
|
|
+ { .parent = &omap_96m_fck, .rates = usim_96m_rates },
|
|
|
+ { .parent = &dpll5_m2_ck, .rates = usim_120m_rates },
|
|
|
+ { .parent = &sys_ck, .rates = div2_rates },
|
|
|
+ { .parent = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *usim_fck_parent_names[] = {
|
|
|
+ "omap_96m_fck", "dpll5_m2_ck", "sys_ck",
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk usim_fck;
|
|
|
+
|
|
|
+static const struct clk_ops usim_fck_ops = {
|
|
|
+ .enable = &omap2_dflt_clk_enable,
|
|
|
+ .disable = &omap2_dflt_clk_disable,
|
|
|
+ .is_enabled = &omap2_dflt_clk_is_enabled,
|
|
|
+ .recalc_rate = &omap2_clksel_recalc,
|
|
|
+ .get_parent = &omap2_clksel_find_parent_index,
|
|
|
+ .set_parent = &omap2_clksel_set_parent,
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(usim_fck, NULL, usim_clksel,
|
|
|
+ OMAP_CM_REGADDR(WKUP_MOD, CM_CLKSEL),
|
|
|
+ OMAP3430ES2_CLKSEL_USIMOCP_MASK,
|
|
|
+ OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
|
|
|
+ OMAP3430ES2_EN_USIMOCP_SHIFT, &clkhwops_wait,
|
|
|
+ usim_fck_parent_names, usim_fck_ops);
|
|
|
+
|
|
|
+static struct clk usim_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap usim_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &usim_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
|
|
|
+ .enable_bit = OMAP3430ES2_EN_USIMOCP_SHIFT,
|
|
|
+ .clkdm_name = "wkup_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(usim_ick, gpio1_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk vpfe_fck;
|
|
|
+
|
|
|
+static const char *vpfe_fck_parent_names[] = {
|