|
@@ -1513,3 +1513,156 @@ DEFINE_STRUCT_CLK(uart1_ick, aes_ick_parent_names, aes_ick_ops);
|
|
|
static struct clk uart2_fck;
|
|
|
|
|
|
static struct clk_hw_omap uart2_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart2_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART2_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart2_fck, mcspi1_fck_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static struct clk uart2_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart2_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart2_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART2_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart2_ick, aes_ick_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static struct clk uart3_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart3_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart3_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART3_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart3_fck, mcspi1_fck_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static struct clk uart3_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart3_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart3_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART3_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart3_ick, aes_ick_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static struct clk usb_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap usb_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &usb_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
|
|
|
+ .enable_bit = OMAP24XX_EN_USB_SHIFT,
|
|
|
+ .clkdm_name = "core_l3_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(usb_fck, mcspi1_fck_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static const struct clksel_rate usb_l4_ick_core_l3_rates[] = {
|
|
|
+ { .div = 1, .val = 1, .flags = RATE_IN_24XX },
|
|
|
+ { .div = 2, .val = 2, .flags = RATE_IN_24XX },
|
|
|
+ { .div = 4, .val = 4, .flags = RATE_IN_24XX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel usb_l4_ick_clksel[] = {
|
|
|
+ { .parent = &core_l3_ck, .rates = usb_l4_ick_core_l3_rates },
|
|
|
+ { .parent = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *usb_l4_ick_parent_names[] = {
|
|
|
+ "core_l3_ck",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(usb_l4_ick, "core_l4_clkdm", usb_l4_ick_clksel,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1),
|
|
|
+ OMAP24XX_CLKSEL_USB_MASK,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
|
|
|
+ OMAP24XX_EN_USB_SHIFT, &clkhwops_iclk_wait,
|
|
|
+ usb_l4_ick_parent_names, dsp_fck_ops);
|
|
|
+
|
|
|
+static struct clk virt_prcm_set;
|
|
|
+
|
|
|
+static const char *virt_prcm_set_parent_names[] = {
|
|
|
+ "mpu_ck",
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clk_ops virt_prcm_set_ops = {
|
|
|
+ .recalc_rate = &omap2_table_mpu_recalc,
|
|
|
+ .set_rate = &omap2_select_table_rate,
|
|
|
+ .round_rate = &omap2_round_to_table_rate,
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK_HW_OMAP(virt_prcm_set, NULL);
|
|
|
+DEFINE_STRUCT_CLK(virt_prcm_set, virt_prcm_set_parent_names, virt_prcm_set_ops);
|
|
|
+
|
|
|
+static const struct clksel_rate vlynq_fck_96m_rates[] = {
|
|
|
+ { .div = 1, .val = 0, .flags = RATE_IN_242X },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel_rate vlynq_fck_core_rates[] = {
|
|
|
+ { .div = 1, .val = 1, .flags = RATE_IN_242X },
|
|
|
+ { .div = 2, .val = 2, .flags = RATE_IN_242X },
|
|
|
+ { .div = 3, .val = 3, .flags = RATE_IN_242X },
|
|
|
+ { .div = 4, .val = 4, .flags = RATE_IN_242X },
|
|
|
+ { .div = 6, .val = 6, .flags = RATE_IN_242X },
|
|
|
+ { .div = 8, .val = 8, .flags = RATE_IN_242X },
|
|
|
+ { .div = 9, .val = 9, .flags = RATE_IN_242X },
|
|
|
+ { .div = 12, .val = 12, .flags = RATE_IN_242X },
|
|
|
+ { .div = 16, .val = 16, .flags = RATE_IN_242X },
|
|
|
+ { .div = 18, .val = 18, .flags = RATE_IN_242X },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel vlynq_fck_clksel[] = {
|
|
|
+ { .parent = &func_96m_ck, .rates = vlynq_fck_96m_rates },
|
|
|
+ { .parent = &core_ck, .rates = vlynq_fck_core_rates },
|
|
|
+ { .parent = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *vlynq_fck_parent_names[] = {
|
|
|
+ "func_96m_ck", "core_ck",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(vlynq_fck, "core_l3_clkdm", vlynq_fck_clksel,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1),
|
|
|
+ OMAP2420_CLKSEL_VLYNQ_MASK,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|
|
|
+ OMAP2420_EN_VLYNQ_SHIFT, &clkhwops_wait,
|
|
|
+ vlynq_fck_parent_names, dss1_fck_ops);
|
|
|
+
|
|
|
+static struct clk vlynq_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap vlynq_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &vlynq_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP2420_EN_VLYNQ_SHIFT,
|
|
|
+ .clkdm_name = "core_l3_clkdm",
|
|
|
+};
|
|
|
+
|