clk: sunxi-ng: a64: Add max. rate constraint to video PLLs
authorIcenowy Zheng <icenowy@aosc.io>
Tue, 4 Sep 2018 04:40:44 +0000 (12:40 +0800)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Wed, 5 Sep 2018 07:16:10 +0000 (09:16 +0200)
Video PLLs on A64 can be set to higher rate that it is actually
supported by HW.

Limit maximum rate to 1008 MHz. This is the maximum allowed rate by BSP
clock driver. Interestengly, user manual specifies maximum frequency to
be 600 MHz. Historically, this data was wrong in some user manuals for
other SoCs, so more faith is put in BSP clock driver.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
drivers/clk/sunxi-ng/ccu-sun50i-a64.c

index d0e3019..5f80eb0 100644 (file)
@@ -64,18 +64,19 @@ static SUNXI_CCU_NM_WITH_GATE_LOCK(pll_audio_base_clk, "pll-audio-base",
                                   BIT(28),     /* lock */
                                   CLK_SET_RATE_UNGATE);
 
-static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN(pll_video0_clk, "pll-video0",
-                                           "osc24M", 0x010,
-                                           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 SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(pll_video0_clk, "pll-video0",
+                                               "osc24M", 0x010,
+                                               192000000,      /* Minimum rate */
+                                               1008000000,     /* Maximum 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 SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_ve_clk, "pll-ve",
                                        "osc24M", 0x018,
@@ -126,18 +127,19 @@ static struct ccu_nk pll_periph1_clk = {
        },
 };
 
-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 SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(pll_video1_clk, "pll-video1",
+                                               "osc24M", 0x030,
+                                               192000000,      /* Minimum rate */
+                                               1008000000,     /* Maximum 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 SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_gpu_clk, "pll-gpu",
                                        "osc24M", 0x038,