summaryrefslogtreecommitdiff
path: root/drivers/clk
diff options
context:
space:
mode:
authorDong Aisheng <aisheng.dong@nxp.com>2017-09-07 15:10:50 +0800
committerJason Liu <jason.hui.liu@nxp.com>2019-02-12 10:30:34 +0800
commit369665ba7a6a3dd3a1da4ead69473778c1bcd073 (patch)
tree7a5e623a89e3e90d6c28a5a5a0125f7d643cd7e1 /drivers/clk
parente3a8852641dc6e2bda2aea7a317be1ec7cb027eb (diff)
MLK-17491-39 clk: imx: remove private clk-frac-divider
Kernel already supports fractional divider and we switched to it. See: drivers/clk/clk-fractional-divider.c So no need keep our private clk-frac-divider copy now which functions the same, delete it. Cc: Anson Huang <Anson.Huang@nxp.com> Reviewed-by: Bai Ping <ping.bai@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/imx/Makefile1
-rw-r--r--drivers/clk/imx/clk-frac-divider.c96
2 files changed, 0 insertions, 97 deletions
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 0970623a7e26..2b14c3d9a3c9 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -14,7 +14,6 @@ obj-$(CONFIG_ARM) += \
clk-pfd.o \
clk-gate-exclusive.o \
clk-composite.o \
- clk-frac-divider.o \
clk-pllv4.o \
clk-pllv5.o \
clk-pfdv2.o
diff --git a/drivers/clk/imx/clk-frac-divider.c b/drivers/clk/imx/clk-frac-divider.c
deleted file mode 100644
index 0850ba2e26e5..000000000000
--- a/drivers/clk/imx/clk-frac-divider.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * Based on driver/clk/clk-fractional-divider.c
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 or later at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-#include <linux/bitops.h>
-#include <linux/clk-provider.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/slab.h>
-#include <linux/rational.h>
-
-#include "clk.h"
-
-#define to_clk_frac_divider(_hw) container_of(_hw, struct clk_frac_divider, hw)
-
-static unsigned long clk_frac_divider_recalc_rate(struct clk_hw *hw,
- unsigned long parent_rate)
-{
- struct clk_frac_divider *fd = to_clk_frac_divider(hw);
- u32 val, m, n;
- u64 ret;
-
- val = readl_relaxed(fd->reg);
-
- m = (val & fd->mmask) >> fd->mshift;
- n = (val & fd->nmask) >> fd->nshift;
-
- ret = (u64)parent_rate * (m + 1);
- do_div(ret, n + 1);
-
- return ret;
-}
-
-static long clk_frac_divider_round_rate(struct clk_hw *hw, unsigned long rate,
- unsigned long *parent_rate)
-{
- struct clk_frac_divider *fd = to_clk_frac_divider(hw);
- unsigned long scale;
- unsigned long m, n;
- u64 ret;
-
- if (!rate || rate >= *parent_rate)
- return *parent_rate;
-
- scale = fls_long(*parent_rate / rate - 1);
- if (scale > 4)
- rate <<= scale - fd->nwidth;
-
- rational_best_approximation(rate, *parent_rate,
- GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0),
- &m, &n);
-
- ret = (u64)*parent_rate * m;
- do_div(ret, n);
-
- return ret;
-}
-
-static int clk_frac_divider_set_rate(struct clk_hw *hw, unsigned long rate,
- unsigned long parent_rate)
-{
- struct clk_frac_divider *fd = to_clk_frac_divider(hw);
- unsigned long m, n;
- u32 val;
-
- rational_best_approximation(rate, parent_rate,
- GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0),
- &m, &n);
- m = m - 1;
- n = n - 1;
- if (m && !n)
- return -EINVAL;
-
- val = readl_relaxed(fd->reg);
- val &= ~(fd->mmask | fd->nmask);
- val |= (m << fd->mshift) | (n << fd->nshift);
- writel_relaxed(val, fd->reg);
-
- return 0;
-}
-
-const struct clk_ops clk_frac_divider_ops = {
- .recalc_rate = clk_frac_divider_recalc_rate,
- .round_rate = clk_frac_divider_round_rate,
- .set_rate = clk_frac_divider_set_rate,
-};
-EXPORT_SYMBOL_GPL(clk_frac_divider_ops);