On Fri, Oct 29, 2021 at 10:25:05PM +0200, Rafał Miłecki wrote: > From: Rafał Miłecki <rafal@xxxxxxxxxx> > > This block is called timer in documentation but it actually behaves like > a MFD. > > Signed-off-by: Rafał Miłecki <rafal@xxxxxxxxxx> > --- > .../bindings/mfd/brcm,timer-mfd.yaml | 64 +++++++++++++++++++ > 1 file changed, 64 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/brcm,timer-mfd.yaml > > diff --git a/Documentation/devicetree/bindings/mfd/brcm,timer-mfd.yaml b/Documentation/devicetree/bindings/mfd/brcm,timer-mfd.yaml > new file mode 100644 > index 000000000000..0060b6c443a7 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/brcm,timer-mfd.yaml > @@ -0,0 +1,64 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/brcm,timer-mfd.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Broadcom's timer MFD > + > +maintainers: > + - Rafał Miłecki <rafal@xxxxxxxxxx> > + > +description: | > + Broadcom's timer is a block used in multiple SoCs (e.g., BCM4908, BCM63xx, > + BCM7038). Despite its name it's not strictly a timer device. It consists of: > + timers, watchdog and software reset handler. > + > +properties: > + compatible: > + items: > + - const: brcm,timer-mfd 'mfd' is a Linuxism. Name it what Broadcom calls the block. There should be at least as many compatibles as there are variations of register layouts. > + - const: simple-mfd > + - const: syscon > + > + reg: > + maxItems: 1 > + > + ranges: true > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 1 > + > +patternProperties: > + '^watchdog@[a-f0-9]+$': > + $ref: ../watchdog/brcm,bcm7038-wdt.yaml /schema/watchdog/... > + > +additionalProperties: false > + > +required: > + - reg > + > +examples: > + - | > + timer_mfd: timer-mfd@ff800400 { > + compatible = "brcm,timer-mfd", "simple-mfd", "syscon"; > + reg = <0xff800400 0x4c>; > + ranges = <0x0 0xff800400 0x4c>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + watchdog@28 { > + compatible = "brcm,bcm7038-wdt"; > + reg = <0x28 0x8>; > + }; Don't you need a timer node? Make the binding complete. > + }; > + > + reboot { > + compatible = "syscon-reboot"; > + regmap = <&timer_mfd>; Make this a child node of the timer. > + offset = <0x34>; Use 'reg'. If "syscon-reboot" doesn't allow that, add it. > + mask = <1>; > + }; > -- > 2.31.1 > >