[PATCH 3/4] dt-bindings: clock: Add Siflower SF19A2890 peripheral clock/reset managers

From: Joseph Telaak via B4 Relay

Date: Wed Nov 04 2026 - 02:28:32 EST


From: Joseph Telaak <joseph@xxxxxxxxxx>

Each peripheral block of the Siflower SF19A2890 has a clock and reset
manager of its own, with a reset register, a clock gate register and a
bus output enable. The blocks differ in which gate and reset bits they
use, so each has its own compatible, and clock N of a manager is its
input clock N, gated.

Based on Chuanhong Guo's binding, which described every block with one
compatible and its bit layout in properties.

Signed-off-by: Joseph Telaak <joseph@xxxxxxxxxx>
---
.../clock/siflower,sf19a2890-periph-crm.yaml | 169 +++++++++++++++++++++
1 file changed, 169 insertions(+)

diff --git a/Documentation/devicetree/bindings/clock/siflower,sf19a2890-periph-crm.yaml b/Documentation/devicetree/bindings/clock/siflower,sf19a2890-periph-crm.yaml
new file mode 100644
index 000000000..7f0bce603
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/siflower,sf19a2890-periph-crm.yaml
@@ -0,0 +1,169 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/siflower,sf19a2890-periph-crm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Siflower SF19A2890 peripheral clock and reset manager
+
+maintainers:
+ - Joseph Telaak <joseph@xxxxxxxxxx>
+
+description: |
+ Each peripheral, or group of peripherals, of the Siflower SF19A2890 has
+ a clock and reset manager of its own: a reset register, a clock gate
+ register, and a bus output enable that the peripherals need as well as
+ their clocks to answer bus requests.
+
+ Clock N of the manager is input clock N, gated. The reset lines are:
+
+ gmac-crm: 0 GMAC
+ usb-crm: 0 USB controller, 1 USB PHY power-on, 2 USB PHY
+ uart-crm: 0 UART0, 1 UART1, 2 UART2
+ the others: 0 the block
+
+properties:
+ compatible:
+ enum:
+ - siflower,sf19a2890-gmac-crm
+ - siflower,sf19a2890-gpio-crm
+ - siflower,sf19a2890-i2c-crm
+ - siflower,sf19a2890-pwm-crm
+ - siflower,sf19a2890-rf-crm
+ - siflower,sf19a2890-spi-crm
+ - siflower,sf19a2890-timer-crm
+ - siflower,sf19a2890-uart-crm
+ - siflower,sf19a2890-usb-crm
+ - siflower,sf19a2890-wdt-crm
+ - siflower,sf19a2890-wlan24-crm
+ - siflower,sf19a2890-wlan5-crm
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ minItems: 1
+ maxItems: 6
+
+ "#clock-cells":
+ const: 1
+
+ "#reset-cells":
+ const: 1
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - "#clock-cells"
+ - "#reset-cells"
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: siflower,sf19a2890-gmac-crm
+ then:
+ properties:
+ clocks:
+ items:
+ - description: GMAC bus clock
+ - description: GMAC register clock
+ - description: RGMII transmit reference clock
+ - description: Timestamp unit clock
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - siflower,sf19a2890-wlan24-crm
+ - siflower,sf19a2890-wlan5-crm
+ then:
+ properties:
+ clocks:
+ items:
+ - description: AXI slave clock
+ - description: AXI master clock
+ - description: Radio platform clock
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: siflower,sf19a2890-rf-crm
+ then:
+ properties:
+ clocks:
+ items:
+ - description: Test clock
+ - description: AXI slave clock
+ - description: Boot clock
+ - description: Low-power clock
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: siflower,sf19a2890-usb-crm
+ then:
+ properties:
+ clocks:
+ items:
+ - description: USB controller clock
+ - description: AXI master clock
+ - description: USB PHY reference clock
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: siflower,sf19a2890-spi-crm
+ then:
+ properties:
+ clocks:
+ items:
+ - description: APB clock
+ - description: SSP clock
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: siflower,sf19a2890-uart-crm
+ then:
+ properties:
+ clocks:
+ items:
+ - description: UART0 APB clock
+ - description: UART1 APB clock
+ - description: UART2 APB clock
+ - description: UART0 clock
+ - description: UART1 clock
+ - description: UART2 clock
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - siflower,sf19a2890-gpio-crm
+ - siflower,sf19a2890-i2c-crm
+ - siflower,sf19a2890-pwm-crm
+ - siflower,sf19a2890-timer-crm
+ - siflower,sf19a2890-wdt-crm
+ then:
+ properties:
+ clocks:
+ maxItems: 1
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/siflower,sf19a2890-clk.h>
+
+ clock-controller@19e24c00 {
+ compatible = "siflower,sf19a2890-uart-crm";
+ reg = <0x19e24c00 0x10>;
+ clocks = <&clk CLK_MUXDIV_PBUS>, <&clk CLK_MUXDIV_PBUS>,
+ <&clk CLK_MUXDIV_PBUS>, <&clk CLK_MUXDIV_UART>,
+ <&clk CLK_MUXDIV_UART>, <&clk CLK_MUXDIV_UART>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };

--
Git-155)