[PATCH 04/10] dt-bindings: pinctrl: add Ambarella CV75 pinctrl

Long Zhao <[email protected]> Thu, 30 Jul 2026 18:43:24 +0800
Newsgroups dev.linux.lists.soc,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-gpio,org.kernel.vger.linux-kernel,org.kernel.vger.linux-serial
Message-ID <[email protected]>
Add the CV75 pin controller binding and pinmux ID header.

Signed-off-by: Long Zhao <[email protected]>
---
 .../pinctrl/ambarella,cv75-pinctrl.yaml       | 167 ++++++++++++++++++
 .../dt-bindings/pinctrl/ambarella,pinctrl.h   |  11 ++
 2 files changed, 178 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/pinctrl/ambarella,cv7=
5-pinctrl.yaml
 create mode 100644 include/dt-bindings/pinctrl/ambarella,pinctrl.h

diff --git a/Documentation/devicetree/bindings/pinctrl/ambarella,cv75-pinct=
rl.yaml b/Documentation/devicetree/bindings/pinctrl/ambarella,cv75-pinctrl.=
yaml
new file mode 100644
index 000000000000..8a331c642fad
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/ambarella,cv75-pinctrl.yaml
@@ -0,0 +1,167 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/ambarella,cv75-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Ambarella CV75 Pin Controller
+
+maintainers:
+  - Long Zhao <[email protected]>
+
+description:
+  The Ambarella CV75 pin controller configures pin multiplexing, bias and
+  drive strength for the main GPIO banks. Pin multiplexing entries encode
+  the pin number and alternate function with the AMBA_PINMUX() macro from
+  dt-bindings/pinctrl/ambarella,pinctrl.h.
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+properties:
+  compatible:
+    const: ambarella,cv75-pinctrl
+
+  reg:
+    items:
+      - description: GPIO bank 0 registers
+      - description: GPIO bank 1 registers
+      - description: GPIO bank 2 registers
+      - description: IOMUX registers
+
+  reg-names:
+    items:
+      - const: gpio0
+      - const: gpio1
+      - const: gpio2
+      - const: iomux
+
+  interrupts:
+    items:
+      - description: GPIO bank 0 interrupt
+      - description: GPIO bank 1 interrupt
+      - description: GPIO bank 2 interrupt
+
+  ambarella,drive-strength-syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: RCT syscon containing the drive-strength registers.
+
+  ambarella,pull-syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: Secure scratchpad syscon containing the pull registers.
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+patternProperties:
+  "^gpio@[0-9a-f]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      reg:
+        maxItems: 1
+
+      gpio-controller: true
+
+      "#gpio-cells":
+        const: 2
+
+      gpio-ranges:
+        maxItems: 1
+
+      interrupt-controller: true
+
+      "#interrupt-cells":
+        const: 2
+
+    required:
+      - reg
+      - gpio-controller
+      - "#gpio-cells"
+      - gpio-ranges
+      - interrupt-controller
+      - "#interrupt-cells"
+
+  "^[a-z0-9-]+-pins$":
+    type: object
+    allOf:
+      - $ref: pinmux-node.yaml#
+      - $ref: pincfg-node.yaml#
+    additionalProperties: false
+
+    properties:
+      function: true
+
+      pinmux:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        minItems: 1
+        maxItems: 96
+
+      bias-disable: true
+      bias-pull-down: true
+      bias-pull-up: true
+
+      drive-strength:
+        enum: [3, 4, 5, 6, 7, 8, 9, 12]
+
+    required:
+      - function
+      - pinmux
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - ambarella,drive-strength-syscon
+  - ambarella,pull-syscon
+  - "#address-cells"
+  - "#size-cells"
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/pinctrl/ambarella,pinctrl.h>
+
+    rct: rct {
+    };
+
+    scratchpad: scratchpad {
+    };
+
+    pinctrl: pinctrl@e4013000 {
+        compatible =3D "ambarella,cv75-pinctrl";
+        #address-cells =3D <1>;
+        #size-cells =3D <0>;
+        reg =3D <0xe4013000 0x1000>, <0xe4014000 0x1000>,
+              <0xe4015000 0x1000>, <0xe4010000 0x1000>;
+        reg-names =3D "gpio0", "gpio1", "gpio2", "iomux";
+        interrupts =3D <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+        ambarella,drive-strength-syscon =3D <&rct>;
+        ambarella,pull-syscon =3D <&scratchpad>;
+
+        gpio: gpio@0 {
+            reg =3D <0>;
+            gpio-controller;
+            #gpio-cells =3D <2>;
+            gpio-ranges =3D <&pinctrl 0 0 95>;
+            interrupt-controller;
+            #interrupt-cells =3D <2>;
+        };
+
+        uart0-pins {
+            function =3D "uart0";
+            pinmux =3D <AMBA_PINMUX(44, 1)>,
+                     <AMBA_PINMUX(45, 1)>;
+            bias-disable;
+            drive-strength =3D <8>;
+        };
+    };
diff --git a/include/dt-bindings/pinctrl/ambarella,pinctrl.h b/include/dt-b=
indings/pinctrl/ambarella,pinctrl.h
new file mode 100644
index 000000000000..20463d5acc66
--- /dev/null
+++ b/include/dt-bindings/pinctrl/ambarella,pinctrl.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Copyright (C) 2026 Ambarella, Inc.
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_AMBARELLA_PINCTRL_H
+#define _DT_BINDINGS_PINCTRL_AMBARELLA_PINCTRL_H
+
+#define AMBA_PINMUX(pin, mux)  (((mux) << 12) | (pin))
+
+#endif
--
2.34.1

NOTE: This email (including attachments) contain Ambarella Proprietary and/=
or Confidential Information and is intended solely for the use of the indiv=
idual(s) to whom it is addressed. Any unauthorized review, use, disclosure,=
 distribute, copy, or print is prohibited. If you are not an intended recip=
ient, please contact the sender by reply email and destroy all copies of th=
e original message. Thank you.