dt-bindings: pinctrl: Add starfive,jhb100-sys0-pinctrl

Add pinctrl bindings for StarFive JHB100 SoC System-0(sys0) pinctrl
controller.

Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
This commit is contained in:
Changhuang Liang 2026-09-10 03:03:38 -07:00 committed by Linus Walleij
parent fead11de1f
commit 9d3dc8decb

View File

@ -0,0 +1,164 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/starfive,jhb100-sys0-pinctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: StarFive JHB100 System-0 Pin Controller
description: |
Pinctrl bindings for JHB100 RISC-V SoC from StarFive Technology Ltd.
The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, per1,
per2, per2pok, per3, adc0, adc1, emmc, and vga.
This document provides an overview of the "sys0" pinctrl domain.
The "sys0" domain has a pin controller which provides
- function selection for GPIO pads.
- GPIO pad configuration.
- GPIO interrupt handling.
In the SYS0 Pin Controller, there are 4 multi-function GPIO_PADs. Each of
them can be multiplexed to different hardware blocks through function
selection and each iopad has a maximum of up to 2 functions - 0 and 1.
Function 0 is the default function which is generally the GPIO function
(or occasionally, it can be a peripheral signal).
Function 1 is the alternate function or peripheral signal that can be
routed to the iopad. The function selection is carried out by writing
the function number to the iopad function select register.
Each iopad is configurable with parameters such as input-enable, internal
pull-up/pull-down bias, drive strength, schmitt trigger, slew rate, input
debounce nanoseconds.
maintainers:
- Changhuang Liang <changhuang.liang@starfivetech.com>
properties:
compatible:
items:
- const: starfive,jhb100-sys0-pinctrl
reg:
maxItems: 1
clocks:
maxItems: 1
resets:
maxItems: 1
interrupts:
maxItems: 1
interrupt-controller: true
'#interrupt-cells':
const: 2
gpio-controller: true
'#gpio-cells':
const: 2
gpio-ranges: true
gpio-line-names: true
patternProperties:
'-grp$':
type: object
additionalProperties: false
patternProperties:
'-pins$':
type: object
description: |
A pinctrl node should contain at least one subnode representing the
pinctrl groups available in the domain. Each subnode will list the
pins it needs, and how they should be configured, with regard to
function selection, bias, input enable/disable, input schmitt
trigger enable/disable, slew-rate, input debounce and
drive-strength.
allOf:
- $ref: /schemas/pinctrl/pincfg-node.yaml
- $ref: /schemas/pinctrl/pinmux-node.yaml
additionalProperties: false
properties:
pins:
description:
The list of IOs that properties in the pincfg node apply to.
function:
description:
A string containing the name of the function to mux for these
pins.
enum: [ auxpwrgood, gpio, hbled, pe2rst_out ]
bias-disable: true
bias-pull-down:
type: boolean
bias-pull-up:
type: boolean
drive-strength:
enum: [ 2, 4, 8, 12 ]
drive-strength-microamp:
enum: [ 2000, 4000, 8000, 12000 ]
input-debounce-ns:
minimum: 0
maximum: 10485680
description:
Debounce time in nanoseconds. The hardware counts in 80 ns
stages with a 17-bit counter, so the maximum is 10485680 ns.
input-disable: true
input-enable: true
input-schmitt-enable: true
input-schmitt-disable: true
slew-rate:
enum: [ 0, 1 ]
default: 0
description: |
0: slow
1: fast
required:
- compatible
- reg
- resets
- interrupts
- interrupt-controller
- '#interrupt-cells'
- gpio-controller
- '#gpio-cells'
- gpio-ranges
additionalProperties: false
examples:
- |
soc {
#address-cells = <2>;
#size-cells = <2>;
pinctrl_sys0: pinctrl@13080000 {
compatible = "starfive,jhb100-sys0-pinctrl";
reg = <0x0 0x13080000 0x0 0x800>;
resets = <&sys0crg 2>;
interrupts = <56>;
interrupt-controller;
#interrupt-cells = <2>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&pinctrl_sys0 0 0 4>;
};
};