|
@@ -66,17 +66,18 @@ static SUNXI_CCU_NM_WITH_GATE_LOCK(pll_audio_base_clk, "pll-audio-base",
|
|
|
CLK_SET_RATE_UNGATE);
|
|
|
|
|
|
/* TODO: The result of N/M is required to be in [8, 25] range. */
|
|
|
-static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_video0_clk, "pll-video0",
|
|
|
- "osc24M", 0x0010,
|
|
|
- 8, 7, /* N */
|
|
|
- 0, 4, /* M */
|
|
|
- BIT(24), /* frac enable */
|
|
|
- BIT(25), /* frac select */
|
|
|
- 270000000, /* frac rate 0 */
|
|
|
- 297000000, /* frac rate 1 */
|
|
|
- BIT(31), /* gate */
|
|
|
- BIT(28), /* lock */
|
|
|
- CLK_SET_RATE_UNGATE);
|
|
|
+static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN(pll_video0_clk, "pll-video0",
|
|
|
+ "osc24M", 0x0010,
|
|
|
+ 192000000, /* Minimum rate */
|
|
|
+ 8, 7, /* N */
|
|
|
+ 0, 4, /* M */
|
|
|
+ BIT(24), /* frac enable */
|
|
|
+ BIT(25), /* frac select */
|
|
|
+ 270000000, /* frac rate 0 */
|
|
|
+ 297000000, /* frac rate 1 */
|
|
|
+ BIT(31), /* gate */
|
|
|
+ BIT(28), /* lock */
|
|
|
+ CLK_SET_RATE_UNGATE);
|
|
|
|
|
|
/* TODO: The result of N/M is required to be in [8, 25] range. */
|
|
|
static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_ve_clk, "pll-ve",
|
|
@@ -152,17 +153,18 @@ static struct ccu_nk pll_periph1_clk = {
|
|
|
};
|
|
|
|
|
|
/* TODO: The result of N/M is required to be in [8, 25] range. */
|
|
|
-static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_video1_clk, "pll-video1",
|
|
|
- "osc24M", 0x030,
|
|
|
- 8, 7, /* N */
|
|
|
- 0, 4, /* M */
|
|
|
- BIT(24), /* frac enable */
|
|
|
- BIT(25), /* frac select */
|
|
|
- 270000000, /* frac rate 0 */
|
|
|
- 297000000, /* frac rate 1 */
|
|
|
- BIT(31), /* gate */
|
|
|
- BIT(28), /* lock */
|
|
|
- CLK_SET_RATE_UNGATE);
|
|
|
+static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN(pll_video1_clk, "pll-video1",
|
|
|
+ "osc24M", 0x030,
|
|
|
+ 192000000, /* Minimum rate */
|
|
|
+ 8, 7, /* N */
|
|
|
+ 0, 4, /* M */
|
|
|
+ BIT(24), /* frac enable */
|
|
|
+ BIT(25), /* frac select */
|
|
|
+ 270000000, /* frac rate 0 */
|
|
|
+ 297000000, /* frac rate 1 */
|
|
|
+ BIT(31), /* gate */
|
|
|
+ BIT(28), /* lock */
|
|
|
+ CLK_SET_RATE_UNGATE);
|
|
|
|
|
|
static struct ccu_nkm pll_sata_clk = {
|
|
|
.enable = BIT(31),
|
|
@@ -654,7 +656,8 @@ static SUNXI_CCU_GATE(dram_deinterlace_clk, "dram-deinterlace", "dram",
|
|
|
|
|
|
static const char * const de_parents[] = { "pll-periph0-2x", "pll-de" };
|
|
|
static SUNXI_CCU_M_WITH_MUX_GATE(de_clk, "de", de_parents,
|
|
|
- 0x104, 0, 4, 24, 3, BIT(31), 0);
|
|
|
+ 0x104, 0, 4, 24, 3, BIT(31),
|
|
|
+ CLK_SET_RATE_PARENT);
|
|
|
static SUNXI_CCU_M_WITH_MUX_GATE(mp_clk, "mp", de_parents,
|
|
|
0x108, 0, 4, 24, 3, BIT(31), 0);
|
|
|
|
|
@@ -666,9 +669,11 @@ static SUNXI_CCU_MUX_WITH_GATE(tcon_lcd0_clk, "tcon-lcd0", tcon_parents,
|
|
|
static SUNXI_CCU_MUX_WITH_GATE(tcon_lcd1_clk, "tcon-lcd1", tcon_parents,
|
|
|
0x114, 24, 3, BIT(31), CLK_SET_RATE_PARENT);
|
|
|
static SUNXI_CCU_M_WITH_MUX_GATE(tcon_tv0_clk, "tcon-tv0", tcon_parents,
|
|
|
- 0x118, 0, 4, 24, 3, BIT(31), 0);
|
|
|
+ 0x118, 0, 4, 24, 3, BIT(31),
|
|
|
+ CLK_SET_RATE_PARENT);
|
|
|
static SUNXI_CCU_M_WITH_MUX_GATE(tcon_tv1_clk, "tcon-tv1", tcon_parents,
|
|
|
- 0x11c, 0, 4, 24, 3, BIT(31), 0);
|
|
|
+ 0x11c, 0, 4, 24, 3, BIT(31),
|
|
|
+ CLK_SET_RATE_PARENT);
|
|
|
|
|
|
static const char * const deinterlace_parents[] = { "pll-periph0",
|
|
|
"pll-periph1" };
|
|
@@ -698,7 +703,8 @@ static SUNXI_CCU_GATE(avs_clk, "avs", "osc24M",
|
|
|
|
|
|
static const char * const hdmi_parents[] = { "pll-video0", "pll-video1" };
|
|
|
static SUNXI_CCU_M_WITH_MUX_GATE(hdmi_clk, "hdmi", hdmi_parents,
|
|
|
- 0x150, 0, 4, 24, 2, BIT(31), 0);
|
|
|
+ 0x150, 0, 4, 24, 2, BIT(31),
|
|
|
+ CLK_SET_RATE_PARENT);
|
|
|
|
|
|
static SUNXI_CCU_GATE(hdmi_slow_clk, "hdmi-slow", "osc24M",
|
|
|
0x154, BIT(31), 0);
|