dt-bindings: pinctrl: add Ambarella CV75 pinctrl

Document the CV75 pin controller binding using generic function and
groups properties for pinmux configuration.

Reviewed-by: Linus Walleij <linusw@kernel.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Long Zhao <longzhao@ambarella.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
This commit is contained in:
Long Zhao 2026-09-21 12:23:23 +08:00 committed by Linus Walleij
parent cee9395acd
commit c1fb14e022

View File

@ -0,0 +1,237 @@
# 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 <longzhao@ambarella.com>
description:
The Ambarella CV75 pin controller configures pin multiplexing, bias and
drive strength for the main GPIO banks. Pin groups and their mux settings
are defined by the pin controller driver and selected by function and group
names.
allOf:
- $ref: pinctrl.yaml#
properties:
compatible:
const: ambarella,cv75-pinctrl
reg:
maxItems: 1
description: IOMUX registers
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.
patternProperties:
"^[a-z0-9-]+-pins$":
type: object
allOf:
- $ref: pinmux-node.yaml#
- $ref: pincfg-node.yaml#
additionalProperties: false
properties:
function:
enum:
- can0
- can1
- dmic0
- enet0
- hsync0
- hsync1
- i2c0
- i2c1
- i2c2
- i2c3
- i2cs
- i2s0
- i2s1
- ir
- pwm0
- pwm1
- pwm2
- pwm3
- pwm4
- pwm5
- pwm6
- pwm7
- pwm8
- pwm9
- pwm10
- pwm11
- sdmmc0
- sdmmc1
- snand
- spi0
- spi1
- spi2
- spi3
- spi_slave
- spinor
- uart0
- uart1
- uart2
- uart3
- uart4
- vin_master_sync
- vsync0
- vsync1
- vsync2
- vsync3
- wdt
groups:
items:
enum:
- can0
- can1
- dmic0
- enet_2nd_ref_clk_a
- enet_2nd_ref_clk_b
- enet_ext_osc_clk
- enet0_ptp_pps_o
- hsync0
- hsync1
- i2c0_a
- i2c0_b
- i2c1_a
- i2c1_b
- i2c2
- i2c3_a
- i2c3_b
- i2c3_c
- i2cs_a
- i2cs_b
- i2cs_c
- i2cs_d
- i2s0
- i2s1
- ir
- pwm0
- pwm1
- pwm2
- pwm3
- pwm4_a
- pwm4_b
- pwm5_a
- pwm5_b
- pwm6_a
- pwm6_b
- pwm7_a
- pwm7_b
- pwm8_a
- pwm8_b
- pwm9_a
- pwm9_b
- pwm10_a
- pwm10_b
- pwm11_a
- pwm11_b
- rgmii0
- rmii0
- sdmmc0_1bit
- sdmmc0_4bit
- sdmmc0_cd
- sdmmc0_hs_sel
- sdmmc0_reset
- sdmmc0_wp
- sdmmc1_1bit
- sdmmc1_4bit
- sdmmc1_cd
- sdmmc1_hs_sel
- sdmmc1_reset
- sdmmc1_wp
- snand
- spi0
- spi1
- spi2
- spi3_a
- spi3_b
- spi3_c
- spi_slave_a
- spi_slave_b
- spi_slave_c
- spi_slave_d
- spi_slave_e
- spinor
- uart0
- uart1
- uart1_flow
- uart2_a
- uart2_b
- uart2_c
- uart2_flow_a
- uart2_flow_b
- uart3_a
- uart3_b
- uart3_flow_a
- uart3_flow_b
- uart4_a
- uart4_b
- uart4_flow_a
- uart4_flow_b
- vin_master_sync_a
- vin_master_sync_b
- vin_master_sync_c
- vin_master_sync_d
- vin_master_sync_e
- vsync0
- vsync1
- vsync2
- vsync3
- wdt_a
- wdt_b
- wdt_c
- wdt_d
- wdt_e
- wdt_f
minItems: 1
maxItems: 6
uniqueItems: true
bias-disable: true
bias-pull-down: true
bias-pull-up: true
drive-strength:
enum: [3, 4, 5, 6, 7, 8, 9, 12]
required:
- function
- groups
required:
- compatible
- reg
- ambarella,drive-strength-syscon
- ambarella,pull-syscon
unevaluatedProperties: false
examples:
- |
pinctrl: pinctrl@e4010000 {
compatible = "ambarella,cv75-pinctrl";
reg = <0xe4010000 0x1000>;
ambarella,drive-strength-syscon = <&rct>;
ambarella,pull-syscon = <&scratchpad>;
uart0-pins {
function = "uart0";
groups = "uart0";
bias-disable;
drive-strength = <8>;
};
};