Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1450422
| From | Chen-Yu Tsai <wens@csie.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables |
| Date | 2016-07-26 09:10 +0200 |
| Message-ID | <rZ4F3-7pO-13@gated-at.bofh.it> (permalink) |
| References | <rZ4F3-7pO-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Some clock muxes have holes, i.e. invalid or unconnected inputs,
between parent mux values.
Add support for specifying a mux table to map clock parents to
mux values.
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
drivers/clk/sunxi-ng/ccu_mux.c | 12 ++++++++++++
drivers/clk/sunxi-ng/ccu_mux.h | 12 ++++++++++--
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/sunxi-ng/ccu_mux.c b/drivers/clk/sunxi-ng/ccu_mux.c
index 1329b9ab481e..68b32f168a74 100644
--- a/drivers/clk/sunxi-ng/ccu_mux.c
+++ b/drivers/clk/sunxi-ng/ccu_mux.c
@@ -107,6 +107,15 @@ u8 ccu_mux_helper_get_parent(struct ccu_common *common,
parent = reg >> cm->shift;
parent &= (1 << cm->width) - 1;
+ if (cm->table) {
+ int num_parents = clk_hw_get_num_parents(&common->hw);
+ int i;
+
+ for (i = 0; i < num_parents; i++)
+ if (cm->table[i] == parent)
+ return i;
+ }
+
return parent;
}
@@ -117,6 +126,9 @@ int ccu_mux_helper_set_parent(struct ccu_common *common,
unsigned long flags;
u32 reg;
+ if (cm->table)
+ index = cm->table[index];
+
spin_lock_irqsave(common->lock, flags);
reg = readl(common->base + common->reg);
diff --git a/drivers/clk/sunxi-ng/ccu_mux.h b/drivers/clk/sunxi-ng/ccu_mux.h
index d35ce5e93840..f0078de78712 100644
--- a/drivers/clk/sunxi-ng/ccu_mux.h
+++ b/drivers/clk/sunxi-ng/ccu_mux.h
@@ -6,8 +6,9 @@
#include "ccu_common.h"
struct ccu_mux_internal {
- u8 shift;
- u8 width;
+ u8 shift;
+ u8 width;
+ const u8 *table;
struct {
u8 index;
@@ -21,6 +22,13 @@ struct ccu_mux_internal {
} variable_prediv;
};
+#define SUNXI_CLK_MUX_TABLE(_shift, _width, _table) \
+ { \
+ .shift = _shift, \
+ .width = _width, \
+ .table = _table, \
+ }
+
#define SUNXI_CLK_MUX(_shift, _width) \
{ \
.shift = _shift, \
--
2.8.1
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Chen-Yu Tsai <wens@csie.org> - 2016-07-26 09:10 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Jean-Francois Moine <moinejf@free.fr> - 2016-07-26 19:50 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-07-27 09:00 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Jean-Francois Moine <moinejf@free.fr> - 2016-07-27 09:20 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Chen-Yu Tsai <wens@csie.org> - 2016-07-27 09:40 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-07-27 09:50 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Jean-Francois Moine <moinejf@free.fr> - 2016-07-27 10:40 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-07-28 15:30 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Jean-Francois Moine <moinejf@free.fr> - 2016-07-28 16:30 +0200
Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-07-27 08:50 +0200
csiph-web