From: Chanwoo Choi <chanwoo@kernel.org>
To: Leonard Crestez <leonard.crestez@nxp.com>
Cc: Chanwoo Choi <cw00.choi@samsung.com>,
Georgi Djakov <georgi.djakov@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
Alexandre Bailon <abailon@baylibre.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Jacky Bai <ping.bai@nxp.com>, Anson Huang <anson.huang@nxp.com>,
Abel Vesa <abel.vesa@nxp.com>,
Krzysztof Kozlowski <krzk@kernel.org>,
MyungJoo Ham <myungjoo.ham@samsung.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Saravana Kannan <saravanak@google.com>,
Mark Rutland <mark.rutland@arm.com>,
Viresh Kumar <viresh.kumar@linaro.org>,
Shawn Guo <shawnguo@kernel.org>,
Aisheng Dong <aisheng.dong@nxp.com>,
Fabio Estevam <fabio.estevam@nxp.com>,
Stephen Boyd <sboyd@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Matthias Kaehlcke <mka@chromium.org>,
Angus Ainslie <angus@akkea.ca>,
Martin Kepplinger <martink@posteo.de>,
Silvano Di Ninno <silvano.dininno@nxp.com>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
"kernel@pengutronix.de" <kernel@pengutronix.de>,
dl-linux-imx <linux-imx@nxp.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH RFC v6 1/9] dt-bindings: interconnect: Add bindings for imx8m noc
Date: Fri, 20 Dec 2019 00:55:59 +0900 [thread overview]
Message-ID: <CAGTfZH3epdWS_4kezHbvqmZPuUUbRs_7YGeofhB7yAL2tkh59g@mail.gmail.com> (raw)
In-Reply-To: <VI1PR04MB7023423D8D5D633074978430EE520@VI1PR04MB7023.eurprd04.prod.outlook.com>
2019년 12월 19일 (목) 오후 11:33, Leonard Crestez <leonard.crestez@nxp.com>님이 작성:
>
> On 17.12.2019 02:08, Chanwoo Choi wrote:
> > On 12/17/19 12:09 AM, Leonard Crestez wrote:
> >> On 16.12.2019 05:18, Chanwoo Choi wrote:
> >>> Hi,
> >>>
> >>> On 12/16/19 10:12 AM, Chanwoo Choi wrote:
> >>>> On 11/15/19 5:09 AM, Leonard Crestez wrote:
> >>>>> Add initial dt bindings for the interconnects inside i.MX chips.
> >>>>> Multiple external IPs are involved but SOC integration means the
> >>>>> software controllable interfaces are very similar.
> >>>>>
> >>>>> Main NOC node acts as interconnect provider if #interconnect-cells is
> >>>>> present.
> >>>>>
> >>>>> Multiple interconnects can be present, each with their own OPP table.
> >>>>>
> >>>>> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
> >>>>> ---
> >>>>> .../bindings/interconnect/fsl,imx8m-noc.yaml | 104 ++++++++++++++++++
> >>>>> 1 file changed, 104 insertions(+)
> >>>>> create mode 100644 Documentation/devicetree/bindings/interconnect/fsl,imx8m-noc.yaml
> >>>>>
> >>>>> diff --git a/Documentation/devicetree/bindings/interconnect/fsl,imx8m-noc.yaml b/Documentation/devicetree/bindings/interconnect/fsl,imx8m-noc.yaml
> >>>>> new file mode 100644
> >>>>> index 000000000000..5cd94185fec3
> >>>>> --- /dev/null
> >>>>> +++ b/Documentation/devicetree/bindings/interconnect/fsl,imx8m-noc.yaml
> >>>>> @@ -0,0 +1,104 @@
> >>>>> +# SPDX-License-Identifier: GPL-2.0
> >>>>> +%YAML 1.2
> >>>>> +---
> >>>>> +$id: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fprotect2.fireeye.com%2Furl%3Fk%3D8570eb5a-d8a45732-85716015-0cc47a3356b2-92a5b92cc514d07e%26u%3Dhttps%3A%2F%2Feur01.safelinks.protection.outlook.com%2F%3Furl%3Dhttps%253A%252F%252Fprotect2.fireeye.com%252Furl%253Fk%253D0c13f3e0-51df3f45-0c1278af-0cc47a30d446-77e809543b673ffd%2526u%253Dhttp%253A%252F%252Fdevicetree.org%252Fschemas%252Finterconnect%252Ffsl%252Cimx8m-noc.yaml%2523%26amp%3Bdata%3D02%257C01%257Cleonard.crestez%2540nxp.com%257C2d1f1868afa140702a6b08d781d6ab68%257C686ea1d3bc2b4c6fa92cd99c5c301635%257C0%257C0%257C637120631307418544%26amp%3Bsdata%3DH2q5nQlKYyLIivkBYUTaRD1Nu3WcnphPJny3k%252BK%252BGFE%253D%26amp%3Breserved%3D0&data=02%7C01%7Cleonard.crestez%40nxp.com%7C769d8e354f3b4d00b84508d782854a17%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637121381290437871&sdata=HYMJJHWyiKRhf7GDjKoOwjDpcZuYqlFlmRrDZnIRx5w%3D&reserved=0
> >>>>> +$schema: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fprotect2.fireeye.com%2Furl%3Fk%3Df7cec483-aa1a78eb-f7cf4fcc-0cc47a3356b2-4154a3c43886f5ed%26u%3Dhttps%3A%2F%2Feur01.safelinks.protection.outlook.com%2F%3Furl%3Dhttps%253A%252F%252Fprotect2.fireeye.com%252Furl%253Fk%253D87c672dc-da0abe79-87c7f993-0cc47a30d446-414d3b4d0127419a%2526u%253Dhttp%253A%252F%252Fdevicetree.org%252Fmeta-schemas%252Fcore.yaml%2523%26amp%3Bdata%3D02%257C01%257Cleonard.crestez%2540nxp.com%257C2d1f1868afa140702a6b08d781d6ab68%257C686ea1d3bc2b4c6fa92cd99c5c301635%257C0%257C0%257C637120631307418544%26amp%3Bsdata%3DT6PgQ1DWI4OLOx3gifRRt%252FNImdVrgDUoswZ%252FNKw3oR8%253D%26amp%3Breserved%3D0&data=02%7C01%7Cleonard.crestez%40nxp.com%7C769d8e354f3b4d00b84508d782854a17%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637121381290437871&sdata=fIbrUUOUtZ5nt%2FH1tm3dzaI1J%2FGn5Gc54ms93HnBnQg%3D&reserved=0
> >>>>> +
> >>>>> +title: Generic i.MX bus frequency device
> >>>>> +
> >>>>> +maintainers:
> >>>>> + - Leonard Crestez <leonard.crestez@nxp.com>
> >>>>> +
> >>>>> +description: |
> >>>>> + The i.MX SoC family has multiple buses for which clock frequency (and
> >>>>> + sometimes voltage) can be adjusted.
> >>>>> +
> >>>>> + Some of those buses expose register areas mentioned in the memory maps as GPV
> >>>>> + ("Global Programmers View") but not all. Access to this area might be denied
> >>>>> + for normal (non-secure) world.
> >>>>> +
> >>>>> + The buses are based on externally licensed IPs such as ARM NIC-301 and
> >>>>> + Arteris FlexNOC but DT bindings are specific to the integration of these bus
> >>>>> + interconnect IPs into imx SOCs.
> >>>>> +
> >>>>> +properties:
> >>>>> + compatible:
> >>>>> + oneOf:
> >>>>> + - items:
> >>>>> + - enum:
> >>>>> + - fsl,imx8mn-nic
> >>>>> + - fsl,imx8mm-nic
> >>>>> + - fsl,imx8mq-nic
> >>>>> + - const: fsl,imx8m-nic
> >>>>> + - items:
> >>>>> + - enum:
> >>>>> + - fsl,imx8mn-noc
> >>>>> + - fsl,imx8mm-noc
> >>>>> + - fsl,imx8mq-noc
> >>>>> + - const: fsl,imx8m-noc
> >>>>> +
> >>>>> + reg:
> >>>>> + maxItems: 1
> >>>>> +
> >>>>> + clocks:
> >>>>> + maxItems: 1
> >>>>> +
> >>>>> + operating-points-v2: true
> >>>>> + opp-table: true
> >>>>> +
> >>>>> + devfreq:
> >>>>> + $ref: "/schemas/types.yaml#/definitions/phandle"
> >>>>> + description:
> >>>>> + Phandle to another devfreq device to match OPPs with by using the
> >>>>
> >>>> Better to use 'parent' instead of 'another' word for improving the understanding.
> >>>
> >>> I think that 'devfreq' is not proper way to get the parent node
> >>> in devicetree. Because 'devfreq' name is linuxium. The property name
> >>> didn't indicate the any h/w device. So, I'll make 'devfreq' property deprecated.
> >>>
> >>> So, you better to make the specific property for this device driver
> >>> like as following: and use devfreq_get_devfreq_by_node() function
> >>> which is developed by you in order to get the devfreq instance node.
> >>>
> >>> fsl,parent-device = <&parent devfreq device>;
> >>
> >> This is only a "parent" in the sense that it's assigned to
> >> devfreq_passive.data.parent. The "devfreq" name is indeed too generic.
> >
> > I thought that 'devfreq' property name is generic.
> > But, it's not proper for DT binding because DT file show
> > the h/w and the relation of h/w. 'devfreq' property name
> > has not meant h/w.
> >
> > So that devfreq core doesn't force to use the specific property
> > name to get the devfreq parent instance on DT. Just, devfreq core
> > will provide devfreq_get_devfreq_by_node() function.
> >
> > I developed it on devfre-testing branch[2]. Before I'm sending
> > the these patches, you can check them.
> >
> > [1] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fchanwoo%2Flinux.git%2Fcommit%2F%3Fh%3Ddevfreq-testing%26id%3Df3678b4e6b75dccfe8bb87d005da2d68c70fdeab&data=02%7C01%7Cleonard.crestez%40nxp.com%7C769d8e354f3b4d00b84508d782854a17%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637121381290437871&sdata=R21Tv1QgofBvMYb2VaxFjKSerwQ3tl8kakcYRyALmgM%3D&reserved=0
> > [2] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fchanwoo%2Flinux.git%2Flog%2F%3Fh%3Ddevfreq-testing&data=02%7C01%7Cleonard.crestez%40nxp.com%7C769d8e354f3b4d00b84508d782854a17%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637121381290437871&sdata=uH0d9LvrbCHgZJdrPJNJ8c8w45J7x1QyM7t5I3j%2BpSw%3D&reserved=0
> >
> >>
> >> The DDRC can measure bandwith usage and I want to use the passive
> >> governor to make the main NOC match OPPs.
> >
> > which one use the passive governor? And which one is the parent
> > devfreq device for devfreq device using passive governor?
> >
> > In my case, it is difficult to catch the relationship
> > between devices. I'd like you to explain the detailed relationship
> > on binding document for user.
> >
> >> But at the bus level DDRC only has AXI and APB slave ports.
> >
> > 'DDRC' indicates the 'drivers/devfreq/imx8m-ddrc.c?
> >
> >>
> >> Buses on imx don't have a parent/child relationship; in fact there are
> >> even a few cycles.
> >
> > You mentioned that 'imx don't have a parent/child relationship',
> > Why do you use 'passive' governor? It is difficult to understand
> > the hierarchy of imx.
>
> The imx8m has a main NOC in the center between the CPU and the DDRC
> (dram controller) with many other peripheral buses around the NOC.
Actually, if this dt binding document contains the relationship
between ddrc(imx8m-ddrc.c)
, imx-bus.c(bus) and interconnect node, it is more easy to understand
the hierarchy
of bus/ddrc. In my case, it is difficult because the binding document doesn't
include the enough example. But, I'll expect them as you mentioned on
your reply.
>
> Here's /sys/kernel/debug/interconnect/interconnect_graph on imx8mm:
> https://gist.github.com/cdleonard/84d103dafc9131fcb8ca9a494822a131#file-imx8mm-svg
It is the interconnect node graph. I hope to know the relationship
when bus(imx-bus.c)
uses the 'passive governor' and which is the
>
> A lot of stuff is omitted, it mostly just includes high-performance bus
> masters.
>
> DDRC has a performance monitor attached which can measure current
> bandwith and feed it to an ondemand governor. I want to use passive
> governor on the NOC so that it matches frequencies with DDRC and scales
I have the following questions. If you explain the more detailed descritpion
and add multiple dt bidning example, I'll expect that I can understand
the following my questions.
- Which one will use the 'passive governor'?
- DDRC is parent devfreq device for imx bus(imx-bus.c) using passive governor?
- Why imx bus(imx-bus.c) use the userspace governor?
- Which the relationship between imx bus(imx-bus.c) using userspace
governor and imx bus(imx-bus.c) using passive governor?
> proportionally, otherwise if NOC is at low frequency then dynamically
> scaling up the DDRC might be ineffective.
>
> Perhaps you could explain how parent/child relationships work on exynos?
Right. So, I wrote[1] why exynos-bus.c have to use the passive governor
and how to make the hierarchy/relationship between exynos-bus(parent
devfreq device
using devfreq governor except for passive governor)
and exynos-bus (child devfreq device using only passive governor).
[1] Documentation/devicetree/bindings/devfreq/exynos-bus.txt
>
> >>> [1] [PATCH RFC v5 04/10] PM / devfreq: Add devfreq_get_devfreq_by_node
> >>>
> >>>>
> >>>>> + passive governor.
> >>>>> +
> >>>>> + '#interconnect-cells':
> >>>>> + description:
> >>>>> + If specified then also act as an interconnect provider. Should only be
> >>>>> + set once per soc on main noc.
> >>>>> + const: 1
> >>>>> +
> >>>>> + fsl,scalable-node-ids:
> >>>>> + $ref: /schemas/types.yaml#/definitions/uint32-array
> >>>>> + description:
> >>>>> + Array of node ids for scalable nodes. Uses same numeric identifier
> >>>>> + namespace as the consumer "interconnects" binding.
> >>>>> +
> >>>>> + fsl,scalable-nodes:
> >>>>> + $ref: /schemas/types.yaml#/definitions/phandle-array
> >>>>> + description:
> >>>>> + Array of phandles to scalable nodes. Must be of same length as
> >>>>> + fsl,scalable-node-ids.
> >>>>> +
> >>>>> +required:
> >>>>> + - compatible
> >>>>> + - clocks
> >>>>> +
> >>>>> +additionalProperties: false
> >>>>> +
> >>>>> +examples:
> >>>>> + - |
> >>>>
> >>>> Is it enough example to understand the relation between
> >>>> imx8m-ddrc.c, imx-devfreq.c and imx interconnect driver?
> >>>>
> >>>> In my case, if possible, hope to show the more detailed
> >>>> example. This example seems that don't contain the ddrc
> >>>> dt node (imx8m-ddrc.c).
> >>
> >> OK, I'll elaborate explanation on noc binding.
> >
> > Thanks. If possible, you better to add almost example cases.
> >
> >>
> >>>>
> >>>>> + #include <dt-bindings/clock/imx8mq-clock.h>
> >>>>> + #include <dt-bindings/interconnect/imx8mq.h>
> >>>>> + noc: interconnect@32700000 {
> >>>>> + compatible = "fsl,imx8mq-noc", "fsl,imx8m-noc";
> >>>>> + reg = <0x32700000 0x100000>;
> >>>>> + clocks = <&clk IMX8MQ_CLK_NOC>;
> >>>>> + #interconnect-cells = <1>;
> >>>>> + fsl,scalable-node-ids = <IMX8MQ_ICN_NOC>,
> >>>>> + <IMX8MQ_ICS_DRAM>;
> >>>>> + fsl,scalable-nodes = <&noc>,
> >>>>> + <&ddrc>;
> >>>>> + operating-points-v2 = <&noc_opp_table>;
> >>>>> +
> >>>>> + noc_opp_table: opp-table {
> >>>>> + compatible = "operating-points-v2";
> >>>>> +
> >>>>> + opp-133M {
> >>>>> + opp-hz = /bits/ 64 <133333333>;
> >>>>> + };
> >>>>> + opp-800M {
> >>>>> + opp-hz = /bits/ 64 <800000000>;
> >>>>> + };
> >>>>> + };
> >>>>> + };
> >>
> >>
> >
> >
>
>
--
Best Regards,
Chanwoo Choi
next prev parent reply other threads:[~2019-12-19 15:56 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-14 20:09 [PATCH RFC v6 0/9] interconnect: Add imx support via devfreq Leonard Crestez
2019-11-14 20:09 ` [PATCH RFC v6 1/9] dt-bindings: interconnect: Add bindings for imx8m noc Leonard Crestez
2019-12-16 1:12 ` Chanwoo Choi
2019-12-16 3:25 ` Chanwoo Choi
2019-12-16 15:09 ` Leonard Crestez
2019-12-17 0:15 ` Chanwoo Choi
2019-12-19 14:31 ` Leonard Crestez
2019-12-19 15:55 ` Chanwoo Choi [this message]
2019-12-19 19:11 ` Leonard Crestez
2019-11-14 20:09 ` [PATCH RFC v6 2/9] PM / devfreq: Add generic imx bus scaling driver Leonard Crestez
2019-11-20 14:08 ` Angus Ainslie
2019-11-20 15:04 ` Leonard Crestez
2019-11-20 15:29 ` Marco Felsch
2019-11-20 15:41 ` Angus Ainslie
2019-11-20 16:30 ` Leonard Crestez
2019-11-20 16:38 ` Angus Ainslie
2019-11-20 18:02 ` Leonard Crestez
2020-02-04 9:45 ` Martin Kepplinger
2020-02-13 10:53 ` Martin Kepplinger
2019-12-13 1:30 ` Chanwoo Choi
2019-12-13 1:51 ` Chanwoo Choi
2019-12-16 1:06 ` Chanwoo Choi
2019-12-16 14:57 ` Leonard Crestez
2019-12-17 0:41 ` Chanwoo Choi
2019-12-17 21:05 ` Leonard Crestez
2019-12-18 3:15 ` Chanwoo Choi
2019-12-18 10:10 ` Leonard Crestez
2019-12-18 10:46 ` Chanwoo Choi
2019-12-18 17:06 ` Chanwoo Choi
2019-11-14 20:09 ` [PATCH RFC v6 3/9] PM / devfreq: imx: Register interconnect device Leonard Crestez
2019-12-13 4:28 ` Chanwoo Choi
2019-12-16 15:00 ` Leonard Crestez
2019-12-17 1:02 ` Chanwoo Choi
2019-12-18 10:13 ` Leonard Crestez
2019-12-18 11:05 ` Chanwoo Choi
2019-12-18 17:13 ` Leonard Crestez
2019-12-19 7:07 ` Chanwoo Choi
2019-11-14 20:09 ` [PATCH RFC v6 4/9] interconnect: Add imx core driver Leonard Crestez
2019-12-12 7:29 ` Georgi Djakov
2019-12-19 0:18 ` Leonard Crestez
2019-11-14 20:09 ` [PATCH RFC v6 5/9] interconnect: imx: Add platform driver for imx8mm Leonard Crestez
2019-12-12 7:35 ` Georgi Djakov
2019-12-16 14:35 ` Leonard Crestez
2019-11-14 20:09 ` [PATCH RFC v6 6/9] interconnect: imx: Add platform driver for imx8mq Leonard Crestez
2019-11-14 20:09 ` [PATCH RFC v6 7/9] interconnect: imx: Add platform driver for imx8mn Leonard Crestez
2019-11-14 20:09 ` [PATCH RFC v6 8/9] arm64: dts: imx8m: Add NOC nodes Leonard Crestez
2019-11-14 20:09 ` [PATCH RFC v6 9/9] arm64: dts: imx8m: Add interconnect provider properties Leonard Crestez
2019-12-11 9:53 ` [PATCH RFC v6 0/9] interconnect: Add imx support via devfreq Leonard Crestez
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=CAGTfZH3epdWS_4kezHbvqmZPuUUbRs_7YGeofhB7yAL2tkh59g@mail.gmail.com \
--to=chanwoo@kernel.org \
--cc=abailon@baylibre.com \
--cc=abel.vesa@nxp.com \
--cc=aisheng.dong@nxp.com \
--cc=angus@akkea.ca \
--cc=anson.huang@nxp.com \
--cc=cw00.choi@samsung.com \
--cc=devicetree@vger.kernel.org \
--cc=fabio.estevam@nxp.com \
--cc=georgi.djakov@linaro.org \
--cc=kernel@pengutronix.de \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=leonard.crestez@nxp.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-pm@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=martink@posteo.de \
--cc=mka@chromium.org \
--cc=mturquette@baylibre.com \
--cc=myungjoo.ham@samsung.com \
--cc=ping.bai@nxp.com \
--cc=rafael@kernel.org \
--cc=robh+dt@kernel.org \
--cc=saravanak@google.com \
--cc=sboyd@kernel.org \
--cc=shawnguo@kernel.org \
--cc=silvano.dininno@nxp.com \
--cc=viresh.kumar@linaro.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).