From dc9fc3aff12969bd545feca4245da0bc2b129f50 Mon Sep 17 00:00:00 2001 From: Steven Chang Date: Fri, 15 Mar 2024 10:46:24 +0800 Subject: [PATCH] dts: binding: pinctrl: Add kb1200 pinctrl A new pinctrl controller addition Signed-off-by: Steven Chang --- dts/bindings/pinctrl/ene,kb1200-pinctrl.yaml | 86 ++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 dts/bindings/pinctrl/ene,kb1200-pinctrl.yaml diff --git a/dts/bindings/pinctrl/ene,kb1200-pinctrl.yaml b/dts/bindings/pinctrl/ene,kb1200-pinctrl.yaml new file mode 100644 index 00000000000..dbafb47bac2 --- /dev/null +++ b/dts/bindings/pinctrl/ene,kb1200-pinctrl.yaml @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: Apache-2.0 + +description: | + The ENE KB1200 pin controller is a singleton node responsible for controlling + pin function selection and pin properties. For example, you can use these + nodes to select peripheral pin functions. + + Here is a list of supported standard pin properties: + - bias-disable: Disable pull-up/down resistor. + - bias-pull-up: Enable pull-up resistor. + - bias-pull-down: Enable pull-down resistor. + - drive-push-pull: Output driver is push-pull. + - drive-open-drain: Output driver is open-drain. + - output-disable: Disable GPIO output driver data + - output-enable: Ensable GPIO output driver data + - output-high: GPIO output data high + - output-low: GPIO output data low + - low-power-enable: Support input data ViH/ViL with low vlotage range(ex. 1.8V domain) + + Here is a list of support pinmux type: + - PINMUX_FUNC_A : GPIO Function + - PINMUX_FUNC_B : AltOutput 1 Function + - PINMUX_FUNC_C : AltOutput 2 Function + - PINMUX_FUNC_D : AltOutput 3 Function + - PINMUX_FUNC_E : AltOutput 4 Function + (Note. Alt-input function does not need to set pinmux type other than PINMUX_FUNC_A) + + An example for KB1200, include the chip level pinctrl DTSI file in the + board level DTS: + + #include + + We want to use the I2C0_0 port of the KB1200 controller and enable the + internal 3.3V pull-up if its i2c frequency won't exceed 400kHz. And we + need to set I2C0_0 pinmux type as PINMUX_FUNC_B (the alt-output 1 + function) not a GPIO. + + To change a pin's pinctrl default properties, add a reference to the + pin in the board's DTS file and set the properties as below: + + &i2c0_0 { + pinctrl-0 = <&i2c0_clk_gpio2c &i2c0_dat_gpio2d>; + pinctrl-names = "default"; + } + + /omit-if-no-ref/ i2c0_clk_gpio2c: i2c0_clk_gpio2c { + pinmux = ; + bias-pull-up; + }; + /omit-if-no-ref/ i2c0_dat_gpio2d: i2c0_dat_gpio2d { + pinmux = ; + bias-pull-up; + }; + +compatible: "ene,kb1200-pinctrl" + +include: base.yaml + +properties: + reg: + required: true + +child-binding: + description: | + This binding gives a base representation of the ENE KB1200 pins + configuration + + include: + - name: pincfg-node.yaml + property-allowlist: + - bias-disable + - bias-pull-down + - bias-pull-up + - drive-push-pull + - drive-open-drain + - output-disable + - output-enable + - output-high + - output-low + - low-power-enable + + properties: + pinmux: + type: int + required: true + description: Pinmux selection