112 lines
3.6 KiB
YAML
112 lines
3.6 KiB
YAML
# Copyright (c) 2022 ITE Corporation. All Rights Reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
description: |
|
|
The ITE IT8XXX2 pin controller is a node responsible for controlling
|
|
pin function selection and pin properties. For example, you can
|
|
use this node to route UART1 RX and TX setting the alternate
|
|
function on the pin.
|
|
|
|
The node has the 'pinctrl' node label set in your SoC's devicetree,
|
|
so you can modify it like this:
|
|
|
|
&pinctrl {
|
|
/* your modifications go here */
|
|
};
|
|
|
|
All device pin configurations should be placed in child nodes of the
|
|
'pinctrl' node, as shown in this example:
|
|
|
|
/* You can put this in places like a board-pinctrl.dtsi file in
|
|
* your board directory, or a devicetree overlay in your application.
|
|
*/
|
|
|
|
/* include pre-defined pins and functions for the SoC used by the board */
|
|
#include <dt-bindings/pinctrl/it8xxx2-pinctrl.h>
|
|
|
|
&pinctrl {
|
|
/* configuration for I2C0 default state */
|
|
i2c0_clk_pb3_default: i2c0_clk_pb3_default {
|
|
pinmuxs = <&pinctrlb 3 IT8XXX2_ALT_FUNC_1>;
|
|
gpio-voltage = "1p8";
|
|
};
|
|
i2c0_data_pb4_default: i2c0_data_pb4_default {
|
|
pinmuxs = <&pinctrlb 4 IT8XXX2_ALT_FUNC_1>;
|
|
gpio-voltage = "1v8";
|
|
};
|
|
/* configuration for UART0 default state */
|
|
uart1_rx_pb0_default: uart1_rx_pb0_default {
|
|
pinmuxs = <&pinctrlb 0 IT8XXX2_ALT_FUNC_3>;
|
|
bias-pull-up;
|
|
};
|
|
uart1_tx_pb1_default: uart1_tx_pb1_default {
|
|
pinmuxs = <&pinctrlb 1 IT8XXX2_ALT_FUNC_3>;
|
|
};
|
|
};
|
|
|
|
The 'uart1_rx_pb0_default' child node encodes the pin configurations
|
|
for a particular state of a device; in this case, the default
|
|
(that is, active) state.
|
|
|
|
To link pin configurations with a device, use a pinctrl-N property for some
|
|
number N, like this example you could place in your board's DTS file:
|
|
|
|
#include "board-pinctrl.dtsi"
|
|
|
|
&uart0 {
|
|
pinctrl-0 = <&uart1_rx_pb0_default &uart1_tx_pb1_default>;
|
|
pinctrl-1 = <&uart1_rx_pb0_sleep &uart1_tx_pb1_sleep>;
|
|
pinctrl-names = "default", "sleep";
|
|
};
|
|
|
|
compatible: "ite,it8xxx2-pinctrl"
|
|
|
|
include: base.yaml
|
|
|
|
child-binding:
|
|
description: |
|
|
This binding gives a base representation of the ITE IT8XXX2 pins configuration.
|
|
|
|
include:
|
|
- name: pincfg-node.yaml
|
|
property-allowlist:
|
|
- bias-high-impedance
|
|
- bias-pull-pin-default
|
|
- bias-pull-up
|
|
- bias-pull-down
|
|
- input-enable
|
|
- drive-push-pull
|
|
- drive-open-drain
|
|
|
|
properties:
|
|
pinmuxs:
|
|
required: true
|
|
type: phandle-array
|
|
description: |
|
|
ITE IT8XXX2 pin's configuration (pinctrl node, pin and function).
|
|
|
|
gpio-voltage:
|
|
type: string
|
|
description: |
|
|
Pin input voltage selection 3.3V or 1.8V. All gpio pins support 3.3V.
|
|
This property only needs to be configured if the board specifies a
|
|
pin as 1.8V. So the default is 3.3V.
|
|
kSI[7:0] and KSO[15:0] pins only support 3.3V.
|
|
default: "3v3"
|
|
enum:
|
|
- "3v3"
|
|
- "1v8"
|
|
|
|
drive-strength:
|
|
type: string
|
|
description: |
|
|
We can configure this property to drive a high or low current selection.
|
|
If this property is not configured, it is the default setting.
|
|
According to the SPEC, the default drive current selection varies from
|
|
different pins.
|
|
Define the high level 0b: 8mA
|
|
low level 1b: 4mA or 2mA
|
|
enum:
|
|
- "high"
|
|
- "low"
|