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 <nikita.shubin@xxxxxxxxxxx> > > + - Alexander Sverdlin <alexander.sverdlin@xxxxxxxxx> > > + > > +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.