linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@kernel.org>
To: Tomer Maimon <tmaimon77@gmail.com>
Cc: "Arnd Bergmann" <arnd@arndb.de>,
	"Avi Fishman" <avifishman70@gmail.com>,
	"Benjamin Fair" <benjaminfair@google.com>,
	"Biju Das" <biju.das.jz@bp.renesas.com>,
	"Bjorn Andersson" <bjorn.andersson@linaro.org>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Daniel Lezcano" <daniel.lezcano@linaro.org>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Greg KH" <gregkh@linuxfoundation.org>,
	"Jonathan Neuschäfer" <j.neuschaefer@gmx.net>,
	"Jiri Slaby" <jirislaby@kernel.org>,
	"Joel Stanley" <joel@jms.id.au>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Guenter Roeck" <linux@roeck-us.net>,
	"Lubomir Rintel" <lkundrak@v3.sk>,
	"Marcel Ziswiler" <marcel.ziswiler@toradex.com>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Nobuhiro Iwamatsu" <nobuhiro1.iwamatsu@toshiba.co.jp>,
	"Olof Johansson" <olof@lixom.net>,
	"Philipp Zabel" <p.zabel@pengutronix.de>,
	"Robert Hancock" <robert.hancock@calian.com>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Tali Perry" <tali.perry1@gmail.com>,
	"Thomas G leixner" <tglx@linutronix.de>,
	"Patrick Venture" <venture@google.com>,
	"Vinod Koul" <vkoul@kernel.org>, "Will Deacon" <will@kernel.org>,
	"Wim Van Sebroeck" <wim@linux-watchdog.org>,
	"Nancy Yuen" <yuenn@google.com>,
	devicetree <devicetree@vger.kernel.org>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	linux-clk <linux-clk@vger.kernel.org>,
	"open list": "SERIAL DRIVERS" <linux-serial@vger.kernel.org>,
	LINUXWATCHDOG <linux-watchdog@vger.kernel.org>,
	"Linux ARM" <linux-arm-kernel@lists.infradead.org>;
Subject: Re: [PATCH v8 04/16] clk: npcm8xx: add clock controller
Date: Mon, 18 Jul 2022 12:14:52 -0700	[thread overview]
Message-ID: <20220718191454.5B5D3C341C0@smtp.kernel.org> (raw)
In-Reply-To: <CAP6Zq1ie_RgJ_9S3ftoVJ=eJHX1xR4_O_czKZghNPKVEFOzC8Q@mail.gmail.com>

Quoting Tomer Maimon (2022-07-12 00:28:30)
> On Mon, 11 Jul 2022 at 22:55, Stephen Boyd <sboyd@kernel.org> wrote:
> >
> > Quoting Tomer Maimon (2022-07-11 05:35:07)
> > > +        */
> > > +       int onecell_idx;
> > > +};
> > > +
> > > +struct npcm8xx_clk_pll_data {
> > > +       u32 reg;
> > > +       const char *name;
> > > +       const char *parent_name;
> >
> > Any reason why we're not using clk_parent_data or direct clk_hw
> > pointers?
> For more historical reasons, I did the same method as done in the
> NPCM7XX driver.
> The clk_init_data struct can use * const *parent_names,
> https://elixir.bootlin.com/linux/v5.19-rc6/source/include/linux/clk-provider.h#L289
> Is it problematic?

It will need to be changed to not use global string matching. Ideally
new drivers use clk_parent_data or clk_hw pointers directly. It's faster
and preferred.

> >
> > > +       NPCM8XX_CLK_S_AHB, CLK_DIVIDER_READ_ONLY, 0, NPCM8XX_CLK_SPI0},
> > > +       /* bit 10-6 SPI0CKDV*/
> > > +       {NPCM8XX_CLKDIV3, 1, 5, NPCM8XX_CLK_S_SPIX,
> > > +       NPCM8XX_CLK_S_AHB, CLK_DIVIDER_READ_ONLY, 0, NPCM8XX_CLK_SPIX},
> > > +       /* bit 5-1 SPIXCKDV*/
> > > +
> > > +       {NPCM8XX_CLKDIV4, 28, 4, NPCM8XX_CLK_S_RG, NPCM8XX_CLK_S_RG_MUX,
> > > +       CLK_DIVIDER_READ_ONLY, 0, NPCM8XX_CLK_RG},
> > > +       /* bit 31-28 RGREFDIV*/
> > > +       {NPCM8XX_CLKDIV4, 12, 4, NPCM8XX_CLK_S_RCP, NPCM8XX_CLK_S_RCP_MUX,
> > > +       CLK_DIVIDER_READ_ONLY, 0, NPCM8XX_CLK_RCP},
> > > +       /* bit 15-12 RCPREFDIV*/
> > > +       {NPCM8XX_THRTL_CNT, 0, 2, NPCM8XX_CLK_S_TH, NPCM8XX_CLK_S_CPU_MUX,
> > > +       CLK_DIVIDER_READ_ONLY | CLK_DIVIDER_POWER_OF_TWO, 0, NPCM8XX_CLK_TH},
> > > +       /* bit 1-0 TH_DIV*/
> > > +};
> > > +
> > > +static DEFINE_SPINLOCK(npcm8xx_clk_lock);
> > > +
> > > +static int npcm8xx_clk_probe(struct platform_device *pdev)
> > > +{
> > > +       struct clk_hw_onecell_data *npcm8xx_clk_data;
> > > +       struct device *dev = &pdev->dev;
> > > +       struct device_node *np = dev->of_node;
> > > +       void __iomem *clk_base;
> > > +       struct resource res;
> > > +       struct clk_hw *hw;
> > > +       int i, err;
> > > +
> > > +       npcm8xx_clk_data = devm_kzalloc(dev, struct_size(npcm8xx_clk_data, hws,
> > > +                                                        NPCM8XX_NUM_CLOCKS),
> > > +                                       GFP_KERNEL);
> > > +       if (!npcm8xx_clk_data)
> > > +               return -ENOMEM;
> > > +
> > > +       err = of_address_to_resource(np, 0, &res);
> >
> > Why can't we use platform_get_resource()?
> >
> > > +       if (err) {
> > > +               dev_err(dev, "Failed to get resource, ret %d\n", err);
> > > +               return err;
> > > +       }
> > > +
> > > +       clk_base = ioremap(res.start, resource_size(&res));
> >
> > And use devm_platform_ioremap_resource()?
> Clock and reset driver use the same memory register map 0xF0801000 - 0xF0801FFF.
> For historical reasons the registers of both modules are mixed in the
> memory range 0xF0801000 - 0xF0801FFF this is why we can't have a
> separate region for each module.
> In case I will use devm_platform_ioremap_resource function the reset
> ioremap will fail so the driver using the method above.

So the clk and reset driver should be the same driver, or one driver
should register the other and use the auxiliary bus to express the
relationship. That way we know that the drivers are tightly coupled and
aren't going to stomp over each other.

> >
> > > +       if (!clk_base) {
> > > +               dev_err(&pdev->dev, "Failed to remap I/O memory\n");
> > > +               return -ENOMEM;
> > > +       }
> > > +
> > > +       npcm8xx_clk_data->num = NPCM8XX_NUM_CLOCKS;
> > > +
> > > +       for (i = 0; i < NPCM8XX_NUM_CLOCKS; i++)
> > > +               npcm8xx_clk_data->hws[i] = ERR_PTR(-EPROBE_DEFER);
> > > +
> > > +       /* Reference 25MHz clock */
> >
> > Does this exist on the board? If so, I'd make a fixed rate clk in the
> > dts and have 'refclk' be an input in the binding for this clk controller.
> No, it is an internal clock in the SoC, this is why it is in the driver.

Ok. I suppose that could be inside the 'soc' node for this device as a
fixed rate clk but registering it here is also fine.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-07-18 19:16 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-11 12:35 [PATCH v8 00/16] Introduce Nuvoton Arbel NPCM8XX BMC SoC Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 01/16] dt-bindings: timer: npcm: Add npcm845 compatible string Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 02/16] dt-bindings: watchdog: " Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 03/16] dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock Tomer Maimon
2022-07-11 19:48   ` Stephen Boyd
2022-07-11 12:35 ` [PATCH v8 04/16] clk: npcm8xx: add clock controller Tomer Maimon
2022-07-11 19:55   ` Stephen Boyd
2022-07-12  7:28     ` Tomer Maimon
2022-07-14 18:23       ` Tomer Maimon
2022-07-18 19:14       ` Stephen Boyd [this message]
2022-07-19 10:04         ` Tomer Maimon
2022-07-23  3:02           ` Stephen Boyd
2022-07-24  9:06             ` Tomer Maimon
2022-07-29 22:56               ` Stephen Boyd
2022-08-04 14:01                 ` Tomer Maimon
2022-08-04 20:05                   ` Stephen Boyd
2022-08-08 12:37                     ` Tomer Maimon
2022-08-08 13:08                       ` Tomer Maimon
2022-08-09 18:02                         ` Stephen Boyd
2022-07-11 12:35 ` [PATCH v8 05/16] dt-bindings: reset: npcm: add GCR syscon property Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 06/16] ARM: dts: nuvoton: add reset " Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 07/16] reset: npcm: using syscon instead of device data Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 08/16] dt-bindings: reset: npcm: Add support for NPCM8XX Tomer Maimon
2022-07-11 12:39   ` Philipp Zabel
2022-07-11 12:35 ` [PATCH v8 09/16] reset: npcm: Add NPCM8XX support Tomer Maimon
2022-07-11 12:40   ` Philipp Zabel
2022-07-11 12:35 ` [PATCH v8 10/16] dt-bindings: arm: npcm: Add maintainer Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 11/16] dt-bindings: arm: npcm: Add nuvoton,npcm845 compatible string Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 12/16] dt-bindings: arm: npcm: Add nuvoton,npcm845 GCR " Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 13/16] arm64: npcm: Add support for Nuvoton NPCM8XX BMC SoC Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 14/16] arm64: dts: nuvoton: Add initial NPCM8XX device tree Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 15/16] arm64: dts: nuvoton: Add initial NPCM845 EVB " Tomer Maimon
2022-07-11 12:35 ` [PATCH v8 16/16] arm64: defconfig: Add Nuvoton NPCM family support Tomer Maimon

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=20220718191454.5B5D3C341C0@smtp.kernel.org \
    --to=sboyd@kernel.org \
    --cc=arnd@arndb.de \
    --cc=avifishman70@gmail.com \
    --cc=benjaminfair@google.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=catalin.marinas@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=geert+renesas@glider.be \
    --cc=gregkh@linuxfoundation.org \
    --cc=j.neuschaefer@gmx.net \
    --cc=jirislaby@kernel.org \
    --cc=joel@jms.id.au \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lkundrak@v3.sk \
    --cc=marcel.ziswiler@toradex.com \
    --cc=mturquette@baylibre.com \
    --cc=nobuhiro1.iwamatsu@toshiba.co.jp \
    --cc=olof@lixom.net \
    --cc=p.zabel@pengutronix.de \
    --cc=robert.hancock@calian.com \
    --cc=robh+dt@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=tali.perry1@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=tmaimon77@gmail.com \
    --cc=venture@google.com \
    --cc=vkoul@kernel.org \
    --cc=will@kernel.org \
    --cc=wim@linux-watchdog.org \
    --cc=yuenn@google.com \
    /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).