summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch')
-rw-r--r--target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch188
1 files changed, 0 insertions, 188 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch b/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
deleted file mode 100644
index b73624566a..0000000000
--- a/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From 480388d3fa7727888533e9a745f05fb363f527f9 Mon Sep 17 00:00:00 2001
-From: Martin Sperl <kernel@martin.sperl.org>
-Date: Mon, 29 Feb 2016 14:20:15 +0000
-Subject: [PATCH] clk: bcm2835: expose raw clock-registers via debugfs
-
-For debugging purposes under some circumstance
-it helps to be able to see the actual clock registers.
-
-E.g: when looking at the clock divider it is helpful to
-see what the actual clock divider is.
-
-This patch exposes all the clock registers specific to each
-clock/pll/pll-divider via debugfs.
-
-Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Acked-by: Eric Anholt <eric@anholt.net>
-(cherry picked from commit 96bf9c69d5729781018a00f08e2ae395ec3346b4)
----
- drivers/clk/bcm/clk-bcm2835.c | 101 ++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 101 insertions(+)
-
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -37,6 +37,7 @@
- #include <linux/clk-provider.h>
- #include <linux/clkdev.h>
- #include <linux/clk/bcm2835.h>
-+#include <linux/debugfs.h>
- #include <linux/module.h>
- #include <linux/of.h>
- #include <linux/platform_device.h>
-@@ -313,6 +314,27 @@ static inline u32 cprman_read(struct bcm
- return readl(cprman->regs + reg);
- }
-
-+static int bcm2835_debugfs_regset(struct bcm2835_cprman *cprman, u32 base,
-+ struct debugfs_reg32 *regs, size_t nregs,
-+ struct dentry *dentry)
-+{
-+ struct dentry *regdump;
-+ struct debugfs_regset32 *regset;
-+
-+ regset = devm_kzalloc(cprman->dev, sizeof(*regset), GFP_KERNEL);
-+ if (!regset)
-+ return -ENOMEM;
-+
-+ regset->regs = regs;
-+ regset->nregs = nregs;
-+ regset->base = cprman->regs + base;
-+
-+ regdump = debugfs_create_regset32("regdump", S_IRUGO, dentry,
-+ regset);
-+
-+ return regdump ? 0 : -ENOMEM;
-+}
-+
- /*
- * These are fixed clocks. They're probably not all root clocks and it may
- * be possible to turn them on and off but until this is mapped out better
-@@ -1044,6 +1066,36 @@ static int bcm2835_pll_set_rate(struct c
- return 0;
- }
-
-+static int bcm2835_pll_debug_init(struct clk_hw *hw,
-+ struct dentry *dentry)
-+{
-+ struct bcm2835_pll *pll = container_of(hw, struct bcm2835_pll, hw);
-+ struct bcm2835_cprman *cprman = pll->cprman;
-+ const struct bcm2835_pll_data *data = pll->data;
-+ struct debugfs_reg32 *regs;
-+
-+ regs = devm_kzalloc(cprman->dev, 7 * sizeof(*regs), GFP_KERNEL);
-+ if (!regs)
-+ return -ENOMEM;
-+
-+ regs[0].name = "cm_ctrl";
-+ regs[0].offset = data->cm_ctrl_reg;
-+ regs[1].name = "a2w_ctrl";
-+ regs[1].offset = data->a2w_ctrl_reg;
-+ regs[2].name = "frac";
-+ regs[2].offset = data->frac_reg;
-+ regs[3].name = "ana0";
-+ regs[3].offset = data->ana_reg_base + 0 * 4;
-+ regs[4].name = "ana1";
-+ regs[4].offset = data->ana_reg_base + 1 * 4;
-+ regs[5].name = "ana2";
-+ regs[5].offset = data->ana_reg_base + 2 * 4;
-+ regs[6].name = "ana3";
-+ regs[6].offset = data->ana_reg_base + 3 * 4;
-+
-+ return bcm2835_debugfs_regset(cprman, 0, regs, 7, dentry);
-+}
-+
- static const struct clk_ops bcm2835_pll_clk_ops = {
- .is_prepared = bcm2835_pll_is_on,
- .prepare = bcm2835_pll_on,
-@@ -1051,6 +1103,7 @@ static const struct clk_ops bcm2835_pll_
- .recalc_rate = bcm2835_pll_get_rate,
- .set_rate = bcm2835_pll_set_rate,
- .round_rate = bcm2835_pll_round_rate,
-+ .debug_init = bcm2835_pll_debug_init,
- };
-
- struct bcm2835_pll_divider {
-@@ -1153,6 +1206,26 @@ static int bcm2835_pll_divider_set_rate(
- return 0;
- }
-
-+static int bcm2835_pll_divider_debug_init(struct clk_hw *hw,
-+ struct dentry *dentry)
-+{
-+ struct bcm2835_pll_divider *divider = bcm2835_pll_divider_from_hw(hw);
-+ struct bcm2835_cprman *cprman = divider->cprman;
-+ const struct bcm2835_pll_divider_data *data = divider->data;
-+ struct debugfs_reg32 *regs;
-+
-+ regs = devm_kzalloc(cprman->dev, 7 * sizeof(*regs), GFP_KERNEL);
-+ if (!regs)
-+ return -ENOMEM;
-+
-+ regs[0].name = "cm";
-+ regs[0].offset = data->cm_reg;
-+ regs[1].name = "a2w";
-+ regs[1].offset = data->a2w_reg;
-+
-+ return bcm2835_debugfs_regset(cprman, 0, regs, 2, dentry);
-+}
-+
- static const struct clk_ops bcm2835_pll_divider_clk_ops = {
- .is_prepared = bcm2835_pll_divider_is_on,
- .prepare = bcm2835_pll_divider_on,
-@@ -1160,6 +1233,7 @@ static const struct clk_ops bcm2835_pll_
- .recalc_rate = bcm2835_pll_divider_get_rate,
- .set_rate = bcm2835_pll_divider_set_rate,
- .round_rate = bcm2835_pll_divider_round_rate,
-+ .debug_init = bcm2835_pll_divider_debug_init,
- };
-
- /*
-@@ -1401,6 +1475,31 @@ static u8 bcm2835_clock_get_parent(struc
- return (src & CM_SRC_MASK) >> CM_SRC_SHIFT;
- }
-
-+static struct debugfs_reg32 bcm2835_debugfs_clock_reg32[] = {
-+ {
-+ .name = "ctl",
-+ .offset = 0,
-+ },
-+ {
-+ .name = "div",
-+ .offset = 4,
-+ },
-+};
-+
-+static int bcm2835_clock_debug_init(struct clk_hw *hw,
-+ struct dentry *dentry)
-+{
-+ struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
-+ struct bcm2835_cprman *cprman = clock->cprman;
-+ const struct bcm2835_clock_data *data = clock->data;
-+
-+ return bcm2835_debugfs_regset(
-+ cprman, data->ctl_reg,
-+ bcm2835_debugfs_clock_reg32,
-+ ARRAY_SIZE(bcm2835_debugfs_clock_reg32),
-+ dentry);
-+}
-+
- static const struct clk_ops bcm2835_clock_clk_ops = {
- .is_prepared = bcm2835_clock_is_on,
- .prepare = bcm2835_clock_on,
-@@ -1410,6 +1509,7 @@ static const struct clk_ops bcm2835_cloc
- .determine_rate = bcm2835_clock_determine_rate,
- .set_parent = bcm2835_clock_set_parent,
- .get_parent = bcm2835_clock_get_parent,
-+ .debug_init = bcm2835_clock_debug_init,
- };
-
- static int bcm2835_vpu_clock_is_on(struct clk_hw *hw)
-@@ -1428,6 +1528,7 @@ static const struct clk_ops bcm2835_vpu_
- .determine_rate = bcm2835_clock_determine_rate,
- .set_parent = bcm2835_clock_set_parent,
- .get_parent = bcm2835_clock_get_parent,
-+ .debug_init = bcm2835_clock_debug_init,
- };
-
- static struct clk *bcm2835_register_pll(struct bcm2835_cprman *cprman,