1# Copyright (c) 2022 ITE Corporation. All Rights Reserved. 2# SPDX-License-Identifier: Apache-2.0 3 4description: | 5 The ITE IT8XXX2 pin controller is a node responsible for controlling 6 pin function selection and pin properties. For example, you can 7 use this node to route UART1 RX and TX setting the alternate 8 function on the pin. 9 10 The node has the 'pinctrl' node label set in your SoC's devicetree, 11 so you can modify it like this: 12 13 &pinctrl { 14 /* your modifications go here */ 15 }; 16 17 All device pin configurations should be placed in child nodes of the 18 'pinctrl' node, as shown in this example: 19 20 /* You can put this in places like a board-pinctrl.dtsi file in 21 * your board directory, or a devicetree overlay in your application. 22 */ 23 24 /* include pre-defined pins and functions for the SoC used by the board */ 25 #include <dt-bindings/pinctrl/it8xxx2-pinctrl.h> 26 27 &pinctrl { 28 /* configuration for I2C0 default state */ 29 i2c0_clk_pb3_default: i2c0_clk_pb3_default { 30 pinmuxs = <&pinctrlb 3 IT8XXX2_ALT_FUNC_1>; 31 gpio-voltage = "1p8"; 32 }; 33 i2c0_data_pb4_default: i2c0_data_pb4_default { 34 pinmuxs = <&pinctrlb 4 IT8XXX2_ALT_FUNC_1>; 35 gpio-voltage = "1v8"; 36 }; 37 /* configuration for UART0 default state */ 38 uart1_rx_pb0_default: uart1_rx_pb0_default { 39 pinmuxs = <&pinctrlb 0 IT8XXX2_ALT_FUNC_3>; 40 bias-pull-up; 41 }; 42 uart1_tx_pb1_default: uart1_tx_pb1_default { 43 pinmuxs = <&pinctrlb 1 IT8XXX2_ALT_FUNC_3>; 44 }; 45 }; 46 47 The 'uart1_rx_pb0_default' child node encodes the pin configurations 48 for a particular state of a device; in this case, the default 49 (that is, active) state. 50 51 To link pin configurations with a device, use a pinctrl-N property for some 52 number N, like this example you could place in your board's DTS file: 53 54 #include "board-pinctrl.dtsi" 55 56 &uart0 { 57 pinctrl-0 = <&uart1_rx_pb0_default &uart1_tx_pb1_default>; 58 pinctrl-1 = <&uart1_rx_pb0_sleep &uart1_tx_pb1_sleep>; 59 pinctrl-names = "default", "sleep"; 60 }; 61 62compatible: "ite,it8xxx2-pinctrl" 63 64include: base.yaml 65 66child-binding: 67 description: | 68 This binding gives a base representation of the ITE IT8XXX2 pins configuration. 69 70 include: 71 - name: pincfg-node.yaml 72 property-allowlist: 73 - bias-high-impedance 74 - bias-pull-pin-default 75 - bias-pull-up 76 - bias-pull-down 77 - input-enable 78 - drive-push-pull 79 - drive-open-drain 80 81 properties: 82 pinmuxs: 83 required: true 84 type: phandle-array 85 description: | 86 ITE IT8XXX2 pin's configuration (pinctrl node, pin and function). 87 88 gpio-voltage: 89 type: string 90 description: | 91 Pin input voltage selection 3.3V or 1.8V. All gpio pins support 3.3V. 92 This property only needs to be configured if the board specifies a 93 pin as 1.8V. So the default is 3.3V. 94 kSI[7:0] and KSO[15:0] pins only support 3.3V. 95 default: "3v3" 96 enum: 97 - "3v3" 98 - "1v8" 99 100 drive-strength: 101 type: string 102 description: | 103 We can configure this property to drive a high or low current selection. 104 If this property is not configured, it is the default setting. 105 According to the SPEC, the default drive current selection varies from 106 different pins. 107 Define the high level 0b: 8mA 108 low level 1b: 4mA or 2mA 109 enum: 110 - "high" 111 - "low" 112