lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9f6b243b-0642-41db-85ed-d020bfa3e6e2@kernel.org>
Date: Sat, 9 Nov 2024 11:20:09 +0100
From: Krzysztof Kozlowski <krzk@...nel.org>
To: Peng Fan <peng.fan@....com>,
 Dario Binacchi <dario.binacchi@...rulasolutions.com>
Cc: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
 "linux-amarula@...rulasolutions.com" <linux-amarula@...rulasolutions.com>,
 Abel Vesa <abelvesa@...nel.org>, Conor Dooley <conor+dt@...nel.org>,
 Fabio Estevam <festevam@...il.com>, Krzysztof Kozlowski
 <krzk+dt@...nel.org>, Michael Turquette <mturquette@...libre.com>,
 Pengutronix Kernel Team <kernel@...gutronix.de>,
 Rob Herring <robh@...nel.org>, Sascha Hauer <s.hauer@...gutronix.de>,
 Shawn Guo <shawnguo@...nel.org>, Stephen Boyd <sboyd@...nel.org>,
 "devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
 "imx@...ts.linux.dev" <imx@...ts.linux.dev>,
 "linux-arm-kernel@...ts.infradead.org"
 <linux-arm-kernel@...ts.infradead.org>,
 "linux-clk@...r.kernel.org" <linux-clk@...r.kernel.org>
Subject: Re: [PATCH v3 1/8] dt-bindings: clock: imx8m-clock: support spread
 spectrum clocking

On 09/11/2024 11:05, Krzysztof Kozlowski wrote:
> On 09/11/2024 01:37, Peng Fan wrote:
>>> Subject: Re: [PATCH v3 1/8] dt-bindings: clock: imx8m-clock: support
>>> spread spectrum clocking
>>>
>>> On 08/11/2024 13:50, Peng Fan wrote:
>>>>> Subject: Re: [PATCH v3 1/8] dt-bindings: clock: imx8m-clock:
>>> support
>>>>> spread spectrum clocking
>>>>>
>>>>> On 07/11/2024 15:57, Dario Binacchi wrote:
>>>>>>     clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
>>>>>>                   <&clk_ext3>, <&clk_ext4>;
>>>>>>     clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
>>>>>>                              "clk_ext3", "clk_ext4";
>>>>>>     assigned-clocks = <&clk IMX8MN_CLK_A53_SRC>,
>>>>>>                                   <&clk IMX8MN_CLK_A53_CORE>,
>>>>>>                                   <&clk IMX8MN_CLK_NOC>,
>>>>>>                                   <&clk IMX8MN_CLK_AUDIO_AHB>,
>>>>>>                                   <&clk IMX8MN_CLK_IPG_AUDIO_ROOT>,
>>>>>>                                   <&clk IMX8MN_SYS_PLL3>,
>>>>>>                                   <&clk IMX8MN_AUDIO_PLL1>,
>>>>>>                                   <&clk IMX8MN_AUDIO_PLL2>;
>>>>>>     assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_800M>,
>>>>>>                                              <&clk IMX8MN_ARM_PLL_OUT>,
>>>>>>                                              <&clk IMX8MN_SYS_PLL3_OUT>,
>>>>>>                                              <&clk IMX8MN_SYS_PLL1_800M>;
>>>>>>     assigned-clock-rates = <0>, <0>, <0>,
>>>>>>                                          <400000000>,
>>>>>>                                          <400000000>,
>>>>>>                                          <600000000>,
>>>>>>                                          <393216000>,
>>>>>>                                          <361267200>; };
>>>>>>
>>>>>> The spread spectrum is not configurable on these clocks or, more
>>>>>> generally, may not be configurable (only 4 PLLs have this
>>> capability).
>>>>>> Therefore, I need the "fsl,ssc-clocks"
>>>>>
>>>>> No. That's not true. You do not need it.
>>>>>
>>>>
>>>> i.MX8M clock hardware is similar as:
>>>>
>>>> OSC->ANATOP->CCM
>>>>
>>>> ANATOP will produce PLLs.
>>>> CCM use PLLs as input source.
>>>>
>>>> Currently there is no dedicated ANATOP driver in linux.
>>>> The CCM linux driver will parse the ANATOP node and register clk_hw
>>>> for the PLLs.
>>>
>>> I do not know what is CCM and how does it fit here. What's more, I
>>> don't get driver context here. We talk about bindings.
>>
>>
>> CCM: Clock Control Module, it accepts PLL from anatop as inputs,
>> and outputs clocks to various modules, I2C, CAN, NET, SAI and ...
>>
>>>
>>>
>>>>
>>>>
>>>>> First, the clock inputs for this device are listed in clocks *only*.
>>>>> What is no there, is not an input to the device. Including also Linux
>>>>> aspect (missing devlinks etc). Therefore how can you configure
>>> spread
>>>>> spectrum on clocks which are not connected to this device?
>>>>
>>>> I not understand this well, you mean
>>>> add clocks = <xx CLK_IMX8MM_VIDEO_PLL> in the ccm dtb node?
>>>
>>> Yes. Let me re-iterate and please respond to this exactly comment
>>> instead of ignoring it.
>>>
>>> How a device can care about spread spectrum of a clock which is not
>>> supplied to this device?
>>
>> I hope we are on same page of what spread spectrum means.
>> spread spectrum of a clock is the clock could produce freq in a range,
>> saying [500MHz - 100KHz, 500MHz + 100KHz]. software only need
>> to configure the middle frequency and choose the up/down border
>> range(100KHz here) and enable spread spectrum. 
>>
>> device: I suppose you mean the Clock Control Module(CCM) here.
> 
> I mean the device we discuss here, in this binding. Whatever this device
> is. CCM or CCX
> 
>> CCM does not care, it just accepts the PLL as input, and output
> 
> Takes PLL as input but you refuse to add it as clocks? Are you really
> responding to my question?
> 
> I asked how can you set spread spectrum on clock which you do not
> receive. Why you do not receive? Because you refuse to add it to clocks
> even though I speak about this since months.
> 
>> divided clock to various IPs(Video here). The video IPs care about
>> the spread spectrum of the clock.
> 
> So which device do we talk about? I am not a NXP clock developer and I
> care zero about NXP, so keep it simple. We discuss this one specific
> binding for specific device which is called "imx8m-clock" - see subject
> prefix.
> 
>>
>> The clock hardware path is as below:
>>
>> OSC(24M) --> Anatop(produce PLL with spread spectrum) ->
>> Clock Control Module(output clock to modules) -> Video IP
>>
>> From hardware perspective, Clock Control Module does not
>> care spread spectrum. Video IP cares spread spectrum.
>>
>>
>>>
>>> Why would you care about spread spectrum of some clock which is not
>>> coming to this device?
>>
>> device, I suppose you mean clock control module(CCM). 
>>
>> There is no 'clocks = <&ccm CLK_IMX8M_VIDEO_PLL>' under ccm node.
>> Because in current design, ccm is taken as producer of
>> CLK_IMX8M_VIDEO_PLL, not consumer. 
> 
> I don't understand now even more. Or I understand even less now. Why
> binding references its own clocks via phandle? This makes no sense at
> all, except of course assigned clocks, but that's because we have one
> property for multiple cases.

And BTW if that was the point then the example is confusing because the
&clk phandle is not the device node in the example but it should.
Neither description says which device's clocks are these.

This is expressed very poorly in the binding, look:
"Phandles of the PLL" - it clearly suggests some other clocks, not its
own, that's so obvious I did not even think of asking. Patchset goes
slow also because of poor explanation, lack of diagrams and expecting me
to remember your clock hierarchy.

Best regards,
Krzysztof


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ