From 683870dc1c9378649e6337b7b374716a180d79c9 Mon Sep 17 00:00:00 2001
From: Vasily Khoruzhick <anarsoul@gmail.com>
Date: Tue, 24 Jul 2018 10:17:55 -0700
Subject: [PATCH 042/170] drv:clk:sunxi-ng: ccu: add min/max rate sun50i-a64

---
 drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 2 ++
 drivers/clk/sunxi-ng/ccu_nkm.c        | 5 +++++
 drivers/clk/sunxi-ng/ccu_nkm.h        | 3 +++
 3 files changed, 10 insertions(+)

diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
index 761d50597..9833ab1a1 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
@@ -196,6 +196,8 @@ static struct ccu_nkm pll_mipi_clk = {
 	.n		= _SUNXI_CCU_MULT(8, 4),
 	.k		= _SUNXI_CCU_MULT_MIN(4, 2, 2),
 	.m		= _SUNXI_CCU_DIV(0, 4),
+	.min_rate	= 300000000,
+	.max_rate	= 1400000000,
 	.common		= {
 		.reg		= 0x040,
 		.hw.init	= CLK_HW_INIT("pll-mipi", "pll-video0",
diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c
index 67da2c189..83d969db0 100644
--- a/drivers/clk/sunxi-ng/ccu_nkm.c
+++ b/drivers/clk/sunxi-ng/ccu_nkm.c
@@ -119,6 +119,11 @@ static unsigned long ccu_nkm_round_rate(struct ccu_mux_internal *mux,
 	_nkm.min_m = 1;
 	_nkm.max_m = nkm->m.max ?: 1 << nkm->m.width;
 
+	if (rate < nkm->min_rate)
+		rate = nkm->min_rate;
+	if (nkm->max_rate && (rate > nkm->max_rate))
+		rate = nkm->max_rate;
+
 	if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV)
 		rate *= nkm->fixed_post_div;
 
diff --git a/drivers/clk/sunxi-ng/ccu_nkm.h b/drivers/clk/sunxi-ng/ccu_nkm.h
index 6601defb3..57aa8087c 100644
--- a/drivers/clk/sunxi-ng/ccu_nkm.h
+++ b/drivers/clk/sunxi-ng/ccu_nkm.h
@@ -28,6 +28,9 @@ struct ccu_nkm {
 
 	unsigned int		fixed_post_div;
 
+	unsigned int		min_rate;
+	unsigned int		max_rate;
+
 	struct ccu_common	common;
 };
 
-- 
2.35.3

