RE: [PATCH v4 1/4] dt-bindings: clock: add ExynosAuto v920 SoC CMU bindings

From: sunyeal.hong
Date: Thu Jul 25 2024 - 02:35:30 EST


Hello Krzysztof,

> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
> Sent: Thursday, July 25, 2024 3:21 PM
> To: sunyeal.hong <sunyeal.hong@xxxxxxxxxxx>; 'Rob Herring'
> <robh@xxxxxxxxxx>
> Cc: 'Sylwester Nawrocki' <s.nawrocki@xxxxxxxxxxx>; 'Chanwoo Choi'
> <cw00.choi@xxxxxxxxxxx>; 'Alim Akhtar' <alim.akhtar@xxxxxxxxxxx>; 'Michael
> Turquette' <mturquette@xxxxxxxxxxxx>; 'Stephen Boyd' <sboyd@xxxxxxxxxx>;
> 'Conor Dooley' <conor+dt@xxxxxxxxxx>; linux-samsung-soc@xxxxxxxxxxxxxxx;
> linux-clk@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-arm-
> kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v4 1/4] dt-bindings: clock: add ExynosAuto v920 SoC
> CMU bindings
>
> On 25/07/2024 05:03, sunyeal.hong wrote:
>
> > - dts
> > cmu_misc: clock-controller@10020000 {
> > compatible = "samsung,exynosautov920-cmu-misc";
> > reg = <0x10020000 0x8000>;
> > #clock-cells = <1>;
> >
> > clocks = <&xtcxo>,
> > <&cmu_top DOUT_CLKCMU_MISC_NOC>;
> > clock-names = "oscclk",
> > "noc";
> > };
> >
> > In this case, can you tell me how to handle it?
> > And if a new clock item is added and a new cmu block uses only the clock
> item added and oscclk, a problem may occur.
>
> The same problem was in your original version, so why suddenly it appeared?
>
> Anyway, why clock would be missing? You just wrote in the bindings that
> there is such input clock.
>
> Best regards,
> Krzysztof
>

If I reflect Rob's review, it will be changed as below.

- yaml
properties:
compatible:
enum:
- samsung,exynosautov920-cmu-top
- samsung,exynosautov920-cmu-peric0

clocks:
minItems: 1
items:
- description: External reference clock (38.4 MHz)
- description: Block IP clock (from CMU_TOP)
- description: Block NOC clock (from CMU_TOP)

clock-names:
minItems: 1
items:
- const: oscclk
- const: ip
- const: noc

"#clock-cells":
const: 1

reg:
maxItems: 1

if:
properties:
compatible:
enum:
- samsung,exynosautov920-cmu-misc

then:
properties:
clocks:
minItems: 2
maxItems: 2

clock-names:
minItems: 2
maxItems: 2

- device tree
cmu_misc: clock-controller@10020000 {
compatible = "samsung,exynosautov920-cmu-misc";
reg = <0x10020000 0x8000>;
#clock-cells = <1>;

clocks = <&xtcxo>,
<&cmu_top DOUT_CLKCMU_MISC_NOC>;
clock-names = "oscclk",
"noc";
};

In this case, ip should be used after oscclk, but misc does not use ip, so there is a problem in dt check.

The code of v4 version has clock items for each block, so there was no problem like this.
- yaml(v4)

if:
properties:
compatible:
contains:
const: samsung,exynosautov920-cmu-misc

then:
properties:
clocks:
items:
- description: External reference clock (38.4 MHz)
- description: CMU_MISC NOC clock (from CMU_MISC)

clock-names:
items:
- const: oscclk
- const: noc

If there is anything I misunderstand, please guide me.

Thanks,
Sunyeal Hong.