2023-07-23 16:09:45

by Nikita Shubin

[permalink] [raw]
Subject: Re: [PATCH v3 02/42] dt-bindings: clock: Add Cirrus EP93xx

Hello Stephen.

On Thu, 2023-07-20 at 16:20 -0700, Stephen Boyd wrote:
> Quoting Nikita Shubin via B4 Relay (2023-07-20 04:29:02)
> > diff --git a/Documentation/devicetree/bindings/clock/cirrus,ep9301-
> > clk.yaml b/Documentation/devicetree/bindings/clock/cirrus,ep9301-
> > clk.yaml
> > new file mode 100644
> > index 000000000000..111e016601fb
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/clock/cirrus,ep9301-
> > clk.yaml
> > @@ -0,0 +1,46 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/clock/cirrus,ep9301-clk.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Cirrus Logic ep93xx SoC's clock controller
> > +
> > +maintainers:
> > +  - Nikita Shubin <[email protected]>
> > +  - Alexander Sverdlin <[email protected]>
> > +
> > +properties:
> > +  compatible:
> > +    oneOf:
> > +      - const: cirrus,ep9301-clk
> > +      - items:
> > +          - enum:
> > +              - cirrus,ep9302-clk
> > +              - cirrus,ep9307-clk
> > +              - cirrus,ep9312-clk
> > +              - cirrus,ep9315-clk
> > +          - const: cirrus,ep9301-clk
> > +
> > +  "#clock-cells":
> > +    const: 1
> > +
> > +  clocks:
> > +    items:
> > +      - description: reference clock
> > +
> > +required:
> > +  - compatible
> > +  - "#clock-cells"
> > +  - clocks
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    clock-controller {
> > +      compatible = "cirrus,ep9301-clk";
>
> Is there a reg property? The driver grabs some syscon and then iomaps
> it, so presumably there is a register range. Is it part of some other
> hardware block? If so, can you make that device register sub-devices
> with the auxiliary bus instead of using a syscon?

Is reg property missing the only thing that doesn't fit ?

`devm_of_iomap` was done only for reusing `devm_clk_hw_register_gate`
for DMA's and USB clock gates, i can give clk node it's own registers,
like:

reg = <0x80930004 0x04>;

Or drop devm_clk_hw_register_gate reusage entirely and just implement
non swlocked version of clk enable/disable that will go through syscon
regmap.

The ep93xx really looks like an syscon device in docs it refers itself
as a "Syscon block", also converting into "Auxiliary Bus" won't help
with `ep93xx_syscon_swlocked_write` either.