Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1451068
| From | Maxime Ripard <maxime.ripard@free-electrons.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 4/9] clk: sunxi-ng: mux: Add support for mux tables |
| Date | 2016-07-27 08:50 +0200 |
| Message-ID | <rZqPg-4jh-3@gated-at.bofh.it> (permalink) |
| References | <rZ4F3-7pO-5@gated-at.bofh.it> <rZ4F3-7pO-13@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
[Multipart message — attachments visible in raw view] - view raw
On Tue, Jul 26, 2016 at 03:04:26PM +0800, Chen-Yu Tsai wrote:
> 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, \
> + }
> +
I basically had the exact same patch done a few days ago :)
This is in my A64 serie, together with some cleanup on that macro that
is not consistent with the other internal structures.
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
Back to linux.kernel | Previous | Next — Previous 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