|
@@ -126,3 +126,161 @@ static struct clk arm_ck = {
|
|
|
.set_rate = omap1_clk_set_rate_ckctl_arm,
|
|
|
};
|
|
|
|
|
|
+static struct arm_idlect1_clk armper_ck = {
|
|
|
+ .clk = {
|
|
|
+ .name = "armper_ck",
|
|
|
+ .ops = &clkops_generic,
|
|
|
+ .parent = &ck_dpll1,
|
|
|
+ .flags = CLOCK_IDLE_CONTROL,
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
|
|
|
+ .enable_bit = EN_PERCK,
|
|
|
+ .rate_offset = CKCTL_PERDIV_OFFSET,
|
|
|
+ .recalc = &omap1_ckctl_recalc,
|
|
|
+ .round_rate = omap1_clk_round_rate_ckctl_arm,
|
|
|
+ .set_rate = omap1_clk_set_rate_ckctl_arm,
|
|
|
+ },
|
|
|
+ .idlect_shift = IDLPER_ARM_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * FIXME: This clock seems to be necessary but no-one has asked for its
|
|
|
+ * activation. [ GPIO code for 1510 ]
|
|
|
+ */
|
|
|
+static struct clk arm_gpio_ck = {
|
|
|
+ .name = "ick",
|
|
|
+ .ops = &clkops_generic,
|
|
|
+ .parent = &ck_dpll1,
|
|
|
+ .flags = ENABLE_ON_INIT,
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
|
|
|
+ .enable_bit = EN_GPIOCK,
|
|
|
+ .recalc = &followparent_recalc,
|
|
|
+};
|
|
|
+
|
|
|
+static struct arm_idlect1_clk armxor_ck = {
|
|
|
+ .clk = {
|
|
|
+ .name = "armxor_ck",
|
|
|
+ .ops = &clkops_generic,
|
|
|
+ .parent = &ck_ref,
|
|
|
+ .flags = CLOCK_IDLE_CONTROL,
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
|
|
|
+ .enable_bit = EN_XORPCK,
|
|
|
+ .recalc = &followparent_recalc,
|
|
|
+ },
|
|
|
+ .idlect_shift = IDLXORP_ARM_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+static struct arm_idlect1_clk armtim_ck = {
|
|
|
+ .clk = {
|
|
|
+ .name = "armtim_ck",
|
|
|
+ .ops = &clkops_generic,
|
|
|
+ .parent = &ck_ref,
|
|
|
+ .flags = CLOCK_IDLE_CONTROL,
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
|
|
|
+ .enable_bit = EN_TIMCK,
|
|
|
+ .recalc = &followparent_recalc,
|
|
|
+ },
|
|
|
+ .idlect_shift = IDLTIM_ARM_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+static struct arm_idlect1_clk armwdt_ck = {
|
|
|
+ .clk = {
|
|
|
+ .name = "armwdt_ck",
|
|
|
+ .ops = &clkops_generic,
|
|
|
+ .parent = &ck_ref,
|
|
|
+ .flags = CLOCK_IDLE_CONTROL,
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
|
|
|
+ .enable_bit = EN_WDTCK,
|
|
|
+ .fixed_div = 14,
|
|
|
+ .recalc = &omap_fixed_divisor_recalc,
|
|
|
+ },
|
|
|
+ .idlect_shift = IDLWDT_ARM_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk arminth_ck16xx = {
|
|
|
+ .name = "arminth_ck",
|
|
|
+ .ops = &clkops_null,
|
|
|
+ .parent = &arm_ck,
|
|
|
+ .recalc = &followparent_recalc,
|
|
|
+ /* Note: On 16xx the frequency can be divided by 2 by programming
|
|
|
+ * ARM_CKCTL:ARM_INTHCK_SEL(14) to 1
|
|
|
+ *
|
|
|
+ * 1510 version is in TC clocks.
|
|
|
+ */
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk dsp_ck = {
|
|
|
+ .name = "dsp_ck",
|
|
|
+ .ops = &clkops_generic,
|
|
|
+ .parent = &ck_dpll1,
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_CKCTL),
|
|
|
+ .enable_bit = EN_DSPCK,
|
|
|
+ .rate_offset = CKCTL_DSPDIV_OFFSET,
|
|
|
+ .recalc = &omap1_ckctl_recalc,
|
|
|
+ .round_rate = omap1_clk_round_rate_ckctl_arm,
|
|
|
+ .set_rate = omap1_clk_set_rate_ckctl_arm,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk dspmmu_ck = {
|
|
|
+ .name = "dspmmu_ck",
|
|
|
+ .ops = &clkops_null,
|
|
|
+ .parent = &ck_dpll1,
|
|
|
+ .rate_offset = CKCTL_DSPMMUDIV_OFFSET,
|
|
|
+ .recalc = &omap1_ckctl_recalc,
|
|
|
+ .round_rate = omap1_clk_round_rate_ckctl_arm,
|
|
|
+ .set_rate = omap1_clk_set_rate_ckctl_arm,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk dspper_ck = {
|
|
|
+ .name = "dspper_ck",
|
|
|
+ .ops = &clkops_dspck,
|
|
|
+ .parent = &ck_dpll1,
|
|
|
+ .enable_reg = DSP_IDLECT2,
|
|
|
+ .enable_bit = EN_PERCK,
|
|
|
+ .rate_offset = CKCTL_PERDIV_OFFSET,
|
|
|
+ .recalc = &omap1_ckctl_recalc_dsp_domain,
|
|
|
+ .round_rate = omap1_clk_round_rate_ckctl_arm,
|
|
|
+ .set_rate = &omap1_clk_set_rate_dsp_domain,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk dspxor_ck = {
|
|
|
+ .name = "dspxor_ck",
|
|
|
+ .ops = &clkops_dspck,
|
|
|
+ .parent = &ck_ref,
|
|
|
+ .enable_reg = DSP_IDLECT2,
|
|
|
+ .enable_bit = EN_XORPCK,
|
|
|
+ .recalc = &followparent_recalc,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk dsptim_ck = {
|
|
|
+ .name = "dsptim_ck",
|
|
|
+ .ops = &clkops_dspck,
|
|
|
+ .parent = &ck_ref,
|
|
|
+ .enable_reg = DSP_IDLECT2,
|
|
|
+ .enable_bit = EN_DSPTIMCK,
|
|
|
+ .recalc = &followparent_recalc,
|
|
|
+};
|
|
|
+
|
|
|
+static struct arm_idlect1_clk tc_ck = {
|
|
|
+ .clk = {
|
|
|
+ .name = "tc_ck",
|
|
|
+ .ops = &clkops_null,
|
|
|
+ .parent = &ck_dpll1,
|
|
|
+ .flags = CLOCK_IDLE_CONTROL,
|
|
|
+ .rate_offset = CKCTL_TCDIV_OFFSET,
|
|
|
+ .recalc = &omap1_ckctl_recalc,
|
|
|
+ .round_rate = omap1_clk_round_rate_ckctl_arm,
|
|
|
+ .set_rate = omap1_clk_set_rate_ckctl_arm,
|
|
|
+ },
|
|
|
+ .idlect_shift = IDLIF_ARM_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk arminth_ck1510 = {
|
|
|
+ .name = "arminth_ck",
|
|
|
+ .ops = &clkops_null,
|
|
|
+ .parent = &tc_ck.clk,
|
|
|
+ .recalc = &followparent_recalc,
|
|
|
+ /* Note: On 1510 the frequency follows TC_CK
|
|
|
+ *
|
|
|
+ * 16xx version is in MPU clocks.
|
|
|
+ */
|
|
|
+};
|