linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: wens@csie.org (Chen-Yu Tsai)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 15/16] clk: sunxi-ng: Add H3 clocks
Date: Fri, 3 Jun 2016 14:55:06 +0800	[thread overview]
Message-ID: <CAGb2v67cHYyxZBCnPBcAUBMn4+LM4JVmHy+dy9FPGsov4CAFpw@mail.gmail.com> (raw)
In-Reply-To: <CAGb2v66JDrEDLmTKS6CLojuKzd7W15GcPd7O+hKRkrdT7E7UQA@mail.gmail.com>

On Fri, Jun 3, 2016 at 2:42 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> Hi,
>
> On Thu, Jun 2, 2016 at 3:19 AM, Maxime Ripard
> <maxime.ripard@free-electrons.com> wrote:
>> Hi Chen-Yu,
>>
>> On Tue, May 31, 2016 at 12:15:28AM +0800, Chen-Yu Tsai wrote:
>>> On Mon, May 9, 2016 at 4:01 AM, Maxime Ripard
>>> <maxime.ripard@free-electrons.com> wrote:
>>> > Add the list of clocks and resets found in the H3 CCU.
>>> >
>>> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>>> > ---
>>> >  drivers/clk/sunxi-ng/Makefile        |   2 +
>>> >  drivers/clk/sunxi-ng/ccu-sun8i-h3.c  | 757 +++++++++++++++++++++++++++++++++++
>>> >  include/dt-bindings/clock/sun8i-h3.h | 162 ++++++++
>>> >  include/dt-bindings/reset/sun8i-h3.h | 103 +++++
>>> >  4 files changed, 1024 insertions(+)
>>> >  create mode 100644 drivers/clk/sunxi-ng/ccu-sun8i-h3.c
>>> >  create mode 100644 include/dt-bindings/clock/sun8i-h3.h
>>> >  create mode 100644 include/dt-bindings/reset/sun8i-h3.h
>>> >
>>> > diff --git a/drivers/clk/sunxi-ng/Makefile b/drivers/clk/sunxi-ng/Makefile
>>> > index c794f57b6fb1..67ff6a92f124 100644
>>> > --- a/drivers/clk/sunxi-ng/Makefile
>>> > +++ b/drivers/clk/sunxi-ng/Makefile
>>> > @@ -13,3 +13,5 @@ obj-y += ccu_nkmp.o
>>> >  obj-y += ccu_nm.o
>>> >  obj-y += ccu_p.o
>>> >  obj-y += ccu_phase.o
>>> > +
>>> > +obj-y += ccu-sun8i-h3.o
>>> > diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-h3.c b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
>>> > new file mode 100644
>>> > index 000000000000..5ce699e95c32
>>> > --- /dev/null
>>> > +++ b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c
>>> > @@ -0,0 +1,757 @@
>>> > +/*
>>> > + * Copyright (c) 2016 Maxime Ripard. All rights reserved.
>>> > + *
>>> > + * This software is licensed under the terms of the GNU General Public
>>> > + * License version 2, as published by the Free Software Foundation, and
>>> > + * may be copied, distributed, and modified under those terms.
>>> > + *
>>> > + * This program is distributed in the hope that it will be useful,
>>> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> > + * GNU General Public License for more details.
>>> > + */
>>> > +
>>> > +#include <linux/clk-provider.h>
>>> > +
>>> > +#include <dt-bindings/clock/sun8i-h3.h>
>>> > +#include <dt-bindings/reset/sun8i-h3.h>
>>> > +
>>> > +#include "ccu_common.h"
>>> > +#include "ccu_reset.h"
>>> > +
>>> > +#include "ccu_div_table.h"
>>> > +#include "ccu_factor.h"
>>> > +#include "ccu_fixed_factor.h"
>>> > +#include "ccu_gate.h"
>>> > +#include "ccu_m.h"
>>> > +#include "ccu_mp.h"
>>> > +#include "ccu_nk.h"
>>> > +#include "ccu_nkm.h"
>>> > +#include "ccu_nkmp.h"
>>> > +#include "ccu_nm.h"
>>> > +#include "ccu_p.h"
>>> > +#include "ccu_phase.h"
>>> > +
>>> > +static struct ccu_nkmp pll_cpux_clk = {
>>> > +       .enable         = BIT(31),
>>> > +       .lock           = BIT(28),
>>> > +
>>> > +       .m              = SUNXI_CLK_FACTOR(0, 2),
>>> > +       .k              = SUNXI_CLK_FACTOR(4, 2),
>>> > +       .n              = SUNXI_CLK_FACTOR(8, 5),
>>> > +       .p              = SUNXI_CLK_FACTOR(16, 2),
>>>
>>> We should find a way to specify a table for p.
>>
>> A table for P? Why?

Missed this one. The datasheet says P = 0x3 is not valid.

ChenYu

>>
>>> > +
>>> > +       .common         = {
>>> > +               .reg            = 0x000,
>>> > +               .features       = CCU_FEATURE_GATE | CCU_FEATURE_LOCK,
>>> > +               .hw.init        = SUNXI_HW_INIT("pll-cpux",
>>> > +                                               "osc24M",
>>>
>>> osc24M is an outside reference. Shouldn't we use put it in a "clocks"
>>> property in the DT, and use of_clk_get_parent_name()?
>>>
>>> osc24M can be controlled from the PRCM on other chips. I suspect the
>>> same with the H3. osc32k might also be from the PRCM.
>>
>> I was discussing exactly this the other day with Mike. He has a bunch
>> of patches to address exactly that issue. He plans on posting it and
>> merge it by 4.8. Until then, we should rely on the hardcoded clock
>> string like it's done there, and we should obviously add the clocks in
>> the DT node for when we will actually use them.
>
> OK. Let's wait and see.
>
>>
>>> > +                                               &ccu_nkmp_ops,
>>> > +                                               0),
>>> > +       },
>>> > +};
>>> > +
>
> [...]
>
>>> > +static struct ccu_nkm pll_ddr_clk = {
>>> > +       .enable         = BIT(31),
>>> > +       .lock           = BIT(28),
>>> > +
>>> > +       .n              = SUNXI_CLK_FACTOR(8, 5),
>>> > +       .k              = SUNXI_CLK_FACTOR(4, 2),
>>> > +       .m              = SUNXI_CLK_FACTOR(0, 2),
>>>
>>> We need a special "update" bit (bit 20) for this clock, otherwise changes
>>> don't really take effect.
>>
>> Yeah, I know, but I feel like it's a feature here, since Linux should
>> never modify that clock anyway.
>>
>> I can add a comment though.
>
> Maybe we should do a read-only variant, or a feature flag?
>
> [...]
>
> Thanks
> ChenYu

  reply	other threads:[~2016-06-03  6:55 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-08 20:01 [PATCH 00/16] clk: sunxi: introduce "modern" clock support Maxime Ripard
2016-05-08 20:01 ` [PATCH 01/16] clk: fix critical clock locking Maxime Ripard
2016-05-09 22:11   ` Stephen Boyd
2016-05-13  7:50     ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 02/16] clk: sunxi-ng: Add common infrastructure Maxime Ripard
2016-05-09 10:01   ` Chen-Yu Tsai
2016-05-15 18:31     ` Maxime Ripard
2016-05-16  7:02       ` Chen-Yu Tsai
2016-05-16  8:02       ` Jean-Francois Moine
2016-05-16 20:15         ` Maxime Ripard
2016-05-17  6:54           ` Jean-Francois Moine
2016-05-18 19:59             ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 03/16] clk: sunxi-ng: Add fixed factor clock support Maxime Ripard
2016-05-09 10:05   ` Chen-Yu Tsai
2016-05-16 13:15     ` Jean-Francois Moine
2016-05-16 21:08     ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 04/16] clk: sunxi-ng: Add gate " Maxime Ripard
2016-05-08 20:01 ` [PATCH 05/16] clk: sunxi-ng: Add mux " Maxime Ripard
2016-05-21 16:18   ` Chen-Yu Tsai
2016-05-22 19:20     ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 06/16] clk: sunxi-ng: Add divider table clock Maxime Ripard
2016-05-21 16:30   ` Chen-Yu Tsai
2016-05-08 20:01 ` [PATCH 07/16] clk: sunxi-ng: Add phase clock support Maxime Ripard
2016-05-21 16:43   ` Chen-Yu Tsai
2016-05-23 17:01     ` Maxime Ripard
2016-05-24  9:01       ` Chen-Yu Tsai
2016-05-08 20:01 ` [PATCH 08/16] clk: sunxi-ng: Add M-factor " Maxime Ripard
2016-05-11  6:46   ` Jean-Francois Moine
2016-05-15 18:51     ` Maxime Ripard
2016-05-21 17:09   ` Chen-Yu Tsai
2016-05-22 19:22     ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 09/16] clk: sunxi-ng: Add P-factor " Maxime Ripard
2016-05-08 20:01 ` [PATCH 10/16] clk: sunxi-ng: Add M-P factor " Maxime Ripard
2016-05-23 13:45   ` Chen-Yu Tsai
2016-05-23 17:18     ` Maxime Ripard
2016-05-24  4:14       ` Chen-Yu Tsai
2016-05-24 21:07         ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 11/16] clk: sunxi-ng: Add N-K-factor " Maxime Ripard
2016-05-23 13:58   ` Chen-Yu Tsai
2016-05-08 20:01 ` [PATCH 12/16] clk: sunxi-ng: Add N-M-factor " Maxime Ripard
2016-05-09  7:24   ` Jean-Francois Moine
2016-05-15 19:04     ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 13/16] clk: sunxi-ng: Add N-K-M Factor clock Maxime Ripard
2016-05-11  8:45   ` Jean-Francois Moine
2016-05-15 19:08     ` Maxime Ripard
2016-05-23 14:10   ` Chen-Yu Tsai
2016-05-08 20:01 ` [PATCH 14/16] clk: sunxi-ng: Add N-K-M-P factor clock Maxime Ripard
2016-05-11  8:49   ` Jean-Francois Moine
2016-05-23 14:36   ` Chen-Yu Tsai
2016-05-30  7:57     ` Maxime Ripard
2016-05-08 20:01 ` [PATCH 15/16] clk: sunxi-ng: Add H3 clocks Maxime Ripard
2016-05-09  7:39   ` Jean-Francois Moine
2016-05-15 19:18     ` Maxime Ripard
2016-05-13  9:45   ` Jean-Francois Moine
2016-05-18 14:02     ` Maxime Ripard
2016-05-18 16:23       ` Jean-Francois Moine
2016-05-18 16:27       ` Jean-Francois Moine
2016-05-16 13:47   ` Jean-Francois Moine
2016-05-18 21:20     ` Maxime Ripard
2016-05-30 16:15   ` Chen-Yu Tsai
2016-06-01 19:19     ` Maxime Ripard
2016-06-03  6:42       ` Chen-Yu Tsai
2016-06-03  6:55         ` Chen-Yu Tsai [this message]
2016-05-08 20:01 ` [PATCH 16/16] ARM: dt: sun8i: switch the H3 to the new CCU driver Maxime Ripard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGb2v67cHYyxZBCnPBcAUBMn4+LM4JVmHy+dy9FPGsov4CAFpw@mail.gmail.com \
    --to=wens@csie.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).