[PATCH] clk: sunxi: allow PLL6 clock to be reused
Chen-Yu Tsai
wens at csie.org
Mon Feb 22 00:08:10 PST 2016
On Sun, Feb 21, 2016 at 5:39 PM, Andre Przywara <andre.przywara at arm.com> wrote:
> Currently we hard-code the base name for the PLL6 clock for both the
> sun4i and sun6i variants in the driver (pll6 and pll6x2, respectively).
> This unfortunately denies reusing this clock for the H3 and A64 PLL8
> clock, which is the same otherwise.
> Remove the hard-coded name in the source code and replace it with an
> appropriate index into the clock-output-names array in the DT.
> This is compatible with all current device trees, since they all carry
> the hard-coded base name in there.
>
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
> ---
> Salut Maxime,
>
> does that patch make sense?
> It fixes the re-usability problem while still keeping compatibility
> with existing DTs and also is pretty small.
> If you agree with this, I'll send out a v3 of the A64 series including
> this patch and the H3 PLL8 enablement later.
> I tested this on my BananaPi, the clk_summary output was identical
> with and without this patch.
This look OK to me, except one minor detail below.
> Cheers,
> Andre.
>
> drivers/clk/sunxi/clk-factors.c | 3 ++-
> drivers/clk/sunxi/clk-factors.h | 1 +
> drivers/clk/sunxi/clk-sunxi.c | 4 ++--
> 3 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/clk/sunxi/clk-factors.c b/drivers/clk/sunxi/clk-factors.c
> index ddefe96..7daf01d 100644
> --- a/drivers/clk/sunxi/clk-factors.c
> +++ b/drivers/clk/sunxi/clk-factors.c
> @@ -202,7 +202,8 @@ struct clk *sunxi_factors_register(struct device_node *node,
> if (data->name)
> clk_name = data->name;
> else
> - of_property_read_string(node, "clock-output-names", &clk_name);
> + of_property_read_string_index(node, "clock-output-names",
> + data->name_idx, &clk_name);
>
> factors = kzalloc(sizeof(struct clk_factors), GFP_KERNEL);
> if (!factors)
> diff --git a/drivers/clk/sunxi/clk-factors.h b/drivers/clk/sunxi/clk-factors.h
> index 1e63c5b..3a7da86 100644
> --- a/drivers/clk/sunxi/clk-factors.h
> +++ b/drivers/clk/sunxi/clk-factors.h
> @@ -36,6 +36,7 @@ struct factors_data {
> void (*getter)(struct factors_request *req);
> void (*recalc)(struct factors_request *req);
> const char *name;
> + int name_idx;
I would drop the .name field. It was a bad workaround
due to limitations of the factors clk code at the time
by me. We really shouldn't hard-code the name if we want
to reuse the driver.
Thanks
ChenYu
> };
>
> struct clk_factors {
> diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
> index 99f60ef..53f5927 100644
> --- a/drivers/clk/sunxi/clk-sunxi.c
> +++ b/drivers/clk/sunxi/clk-sunxi.c
> @@ -530,14 +530,14 @@ static const struct factors_data sun4i_pll6_data __initconst = {
> .enable = 31,
> .table = &sun4i_pll5_config,
> .getter = sun4i_get_pll5_factors,
> - .name = "pll6",
> + .name_idx = 2,
> };
>
> static const struct factors_data sun6i_a31_pll6_data __initconst = {
> .enable = 31,
> .table = &sun6i_a31_pll6_config,
> .getter = sun6i_a31_get_pll6_factors,
> - .name = "pll6x2",
> + .name_idx = 1,
> };
>
> static const struct factors_data sun5i_a13_ahb_data __initconst = {
> --
> 1.8.4
>
More information about the linux-arm-kernel
mailing list