From: Aisheng Dong <aisheng.dong@nxp.com>
To: Stephen Boyd <sboyd@kernel.org>,
"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>
Cc: "linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"mturquette@baylibre.com" <mturquette@baylibre.com>,
"shawnguo@kernel.org" <shawnguo@kernel.org>,
Fabio Estevam <fabio.estevam@nxp.com>,
dl-linux-imx <linux-imx@nxp.com>,
"kernel@pengutronix.de" <kernel@pengutronix.de>,
Rob Herring <robh@kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: RE: [PATCH 2/4] dt-bindings: clock: imx-lpcg: add support to parse clocks from device tree
Date: Tue, 2 Apr 2019 14:55:29 +0000 [thread overview]
Message-ID: <AM0PR04MB42119CF865B3C9659FBF9C7E80560@AM0PR04MB4211.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <AM0PR04MB421102D948A6972B8A19C78880470@AM0PR04MB4211.eurprd04.prod.outlook.com>
Hi Stephen,
> > > a/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.txt
> > > b/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.txt
> > > index 965cfa4..a317844 100644
> > > --- a/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.txt
> > > +++ b/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.txt
> > > @@ -11,6 +11,20 @@ enabled by these control bits, it might still not
> > > be running based on the base resource.
> > >
> > > Required properties:
> > > +- compatible: Should be one of:
> > > + "fsl,imx8qxp-lpcg"
> > > + "fsl,imx8qm-lpcg" followed by
> > "fsl,imx8qxp-lpcg".
> > > +- reg: Address and length of the register set.
> > > +- #clock-cells: Should be 1. One LPCG supports multiple
> > clocks.
> > > +- clocks: Input parent clocks phandle array for each clock.
> > > +- bit-offset: An integer array indicating the bit offset for each
> > clock.
> > > +- hw-autogate: Boolean array indicating whether supports HW
> > autogate for
> > > + each clock.
> >
> > This looks like one clk per node style of bindings which is a
> > direction we don't want DT bindings to go in. It leads to a bunch of
> > time parsing DT to generate clks and in general doesn't represent the
> > clock controller hardware that is there. Basically, anything with 'bit-offset'
> > in the binding is not going to be acceptable.
> >
>
> This is not one clk per node but one clock controller per node which strictly
> describes the HW.
>
> On MX8, each LPCG is a separate clock controller which can control a couple of
> clock output gates for one specific device to use. Each device has a
> corresponding LPCG clock controller and those LPCGs are independent with
> each other with separate IO space.
>
> Those LPCGs are distributed in various SS (subsystems) along with device
> resources.
> Describing them in device tree SS dtsi doesn't seem to be an issue as it is
> representing the real hardware.
>
> For SCU clocks, they're similar case that each SS having separate clock
> controllers In HW which are managed by SCU firmware. So it seems also okay
> to put them in device tree SS dtsi file, right?
>
> If you're concerning each node having one compatible string, how about doing
> like many power domain does as below?
>
> Having only one compatible string in clock parent nodes.
>
> //LSIO SS
> lsio_scu_clk: lsio-scu-clock-controller {
> compatible = "fsl,imx8qxp-clock", "fsl,scu-clk";
>
> fspi0_clk: clock-fspi0{
> #clock-cells = <0>;
> rsrc-id = <IMX_SC_R_FSPI_0>;
> clk-type = <IMX_SC_PM_CLK_PER>;
> power-domains = <&pd IMX_SC_R_FSPI_0>;
> };
>
> fspi1_clk: clock-fspi1{
> ...
> };
> ...
> };
>
> /* LPCG clocks */
> lsio_lpcg_clk: lsio-lpcg-clock-controller {
> compatible = "fsl,imx8qxp-lpcg";
>
> pwm0_lpcg: clock-controller@5d400000 {
> reg = <0x5d400000 0x10000>;
> #clock-cells = <1>;
> clocks = <&pwm0_clk>, <&pwm0_clk>, <&pwm0_clk>,
> <&lsio_bus_clk>, <&pwm0_clk>;
> bit-offset = <0 4 16 20 24>;
> clock-output-names = "pwm0_lpcg_ipg_clk",
> "pwm0_lpcg_ipg_hf_clk",
> "pwm0_lpcg_ipg_s_clk",
> "pwm0_lpcg_ipg_slv_clk",
> "pwm0_lpcg_ipg_mstr_clk";
> power-domains = <&pd IMX_SC_R_PWM_0>;
> status = "disabled";
> };
> ...
> };
>
> I also have spent a lot time to investigate how TI and Samsung does. However,
> finally i.MX is still different and I still believe current way is better for i.MX,
> mainly due to below reasons:
>
> 1) IMX having separate clock controllers in HW, not shared one like others
> 2) IMX SoC is comprised of various HW SS (Subsystem) while others don't have.
> Describing clocks in DT can help a better SW architecture to describe HW.
> 3) Each clock is associated with a power domain. DT is the best place to
> indicate it.
> 4) Clock availability (Both SCU and LPCG) are configurable according to
> different HW partition configuration by SCU firmware.
> Defining them all in driver will cause annoying and continued churn in driver
> all the time when adding new SoC support.
> e.g.
> Handling availability for different SS in different SoC.
> Defining Clock IDs for diferent SS in different SoC for same clocks.
>
> By putting clocks in DT, we can make the clock driver completely generic and
> no more churn in the driver anymore in the future for adding new SoC support.
> It can significantly save the driver maintain effort.
>
Shawn is okay with the whole point of MX8 Arch improvement[1].
(e.g. moving clocks into DT)
But we still need the your agreement on the clock part first.
Could you help review if this is okay to you?
[1] https://patchwork.kernel.org/cover/10824537/
Regards
Dong Aisheng
> Last, this won't break compatibility. It's just introduce a new binding.
>
> Regards
> Dong Aisheng
>
> > > +- clock-output-names: Shall be the corresponding names of the outputs.
> > > + NOTE this property must be specified in the
> > same order
> > > + as the clock bit-offset and hw-autogate
> property.
> > > +
> > > +Legacy binding (DEPRECATED):
> > > - compatible: Should be one of:
> > > "fsl,imx8qxp-lpcg-adma",
next prev parent reply other threads:[~2019-04-02 14:57 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-21 18:03 [PATCH 0/4] clk: imx: scu: add parsing clocks from device tree support Aisheng Dong
2019-02-21 18:03 ` [PATCH 1/4] dt-bindings: firmware: imx-scu: new binding to parse clocks from device tree Aisheng Dong
2019-03-26 13:47 ` Rob Herring
2019-03-27 14:35 ` Aisheng Dong
2019-04-02 14:47 ` Aisheng Dong
2019-04-09 14:04 ` Aisheng Dong
2019-04-10 15:32 ` Rob Herring
2019-04-10 17:35 ` [EXT] " Aisheng Dong
2019-02-21 18:03 ` [PATCH 2/4] dt-bindings: clock: imx-lpcg: add support " Aisheng Dong
2019-02-25 19:46 ` Stephen Boyd
2019-02-26 10:07 ` Aisheng Dong
2019-03-18 15:10 ` Aisheng Dong
2019-04-02 14:55 ` Aisheng Dong [this message]
2019-02-21 18:03 ` [PATCH 3/4] clk: imx: imx8qxp: add parsing " Aisheng Dong
2019-02-21 18:03 ` [PATCH 4/4] clk: imx: imx8qxp-lpcg: " Aisheng Dong
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=AM0PR04MB42119CF865B3C9659FBF9C7E80560@AM0PR04MB4211.eurprd04.prod.outlook.com \
--to=aisheng.dong@nxp.com \
--cc=devicetree@vger.kernel.org \
--cc=fabio.estevam@nxp.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=mturquette@baylibre.com \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=shawnguo@kernel.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).