/*
 * Copyright (c) 2021 ITE Corporation. All Rights Reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <dt-bindings/pinctrl/it8xxx2-pinctrl.h>

/ {
	it8xxx2_alts_map {
		compatible = "ite,it8xxx2-pinctrl-conf";

		/* ADC alternate function */
		pinctrl_adc0: adc0 {
			pinctrls = <&pinmuxi 0 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_adc1: adc1 {
			pinctrls = <&pinmuxi 1 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_adc2: adc2 {
			pinctrls = <&pinmuxi 2 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_adc3: adc3 {
			pinctrls = <&pinmuxi 3 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_adc4: adc4 {
			pinctrls = <&pinmuxi 4 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_adc5: adc5 {
			pinctrls = <&pinmuxi 5 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_adc6: adc6 {
			pinctrls = <&pinmuxi 6 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_adc7: adc7 {
			pinctrls = <&pinmuxi 7 IT8XXX2_PINMUX_FUNC_1>;
		};

		/* PWM alternate function */
		pinctrl_pwm0: pwm0 {
			pinctrls = <&pinmuxa 0 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_pwm1: pwm1 {
			pinctrls = <&pinmuxa 1 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_pwm2: pwm2 {
			pinctrls = <&pinmuxa 2 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_pwm3: pwm3 {
			pinctrls = <&pinmuxa 3 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_pwm4: pwm4 {
			pinctrls = <&pinmuxa 4 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_pwm5: pwm5 {
			pinctrls = <&pinmuxa 5 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_pwm6: pwm6 {
			pinctrls = <&pinmuxa 6 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_pwm7: pwm7 {
			pinctrls = <&pinmuxa 7 IT8XXX2_PINMUX_FUNC_1>;
		};

		/* Tachometer alternate function */
		pinctrl_tach0a: tach0a {
			pinctrls = <&pinmuxd 6 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_tach0b: tach0b {
			pinctrls = <&pinmuxj 2 IT8XXX2_PINMUX_FUNC_3>;
		};
		pinctrl_tach1a: tach1a {
			pinctrls = <&pinmuxd 7 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_tach1b: tach1b {
			pinctrls = <&pinmuxj 3 IT8XXX2_PINMUX_FUNC_3>;
		};

		/* I2C alternate function */
		pinctrl_i2c_clk0: i2c_clk0 {
			pinctrls = <&pinmuxb 3 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_i2c_data0: i2c_data0 {
			pinctrls = <&pinmuxb 4 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_i2c_clk1: i2c_clk1 {
			pinctrls = <&pinmuxc 1 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_i2c_data1: i2c_data1 {
			pinctrls = <&pinmuxc 2 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_i2c_clk2: i2c_clk2 {
			pinctrls = <&pinmuxf 6 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_i2c_data2: i2c_data2 {
			pinctrls = <&pinmuxf 7 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_i2c_clk3_gph1: i2c_clk3_gph1 {
			pinctrls = <&pinmuxh 1 IT8XXX2_PINMUX_FUNC_3>;
		};
		pinctrl_i2c_data3_gph2: i2c_data3_gph2 {
			pinctrls = <&pinmuxh 2 IT8XXX2_PINMUX_FUNC_3>;
		};
		pinctrl_i2c_clk3_gpf2: i2c_clk3_gpf2 {
			pinctrls = <&pinmuxf 2 IT8XXX2_PINMUX_FUNC_4>;
		};
		pinctrl_i2c_data3_gpf3: i2c_data3_gpf3 {
			pinctrls = <&pinmuxf 3 IT8XXX2_PINMUX_FUNC_4>;
		};
		pinctrl_i2c_clk4: i2c_clk4 {
			pinctrls = <&pinmuxe 0 IT8XXX2_PINMUX_FUNC_3>;
		};
		pinctrl_i2c_data4: i2c_data4 {
			pinctrls = <&pinmuxe 7 IT8XXX2_PINMUX_FUNC_3>;
		};
		pinctrl_i2c_clk5: i2c_clk5 {
			pinctrls = <&pinmuxa 4 IT8XXX2_PINMUX_FUNC_3>;
		};
		pinctrl_i2c_data5: i2c_data5 {
			pinctrls = <&pinmuxa 5 IT8XXX2_PINMUX_FUNC_3>;
		};

		/* SHI alternate function */
		pinctrl_shi_mosi: shi_mosi {
			pinctrls = <&pinmuxm 0 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_shi_miso: shi_miso {
			pinctrls = <&pinmuxm 1 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_shi_clk: shi_clk {
			pinctrls = <&pinmuxm 4 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_shi_cs: shi_cs {
			pinctrls = <&pinmuxm 5 IT8XXX2_PINMUX_FUNC_1>;
		};

		/* Keyboard alternate function */
		pinctrl_kso16: kso16 {
			pinctrls = <&pinmuxc 3 IT8XXX2_PINMUX_FUNC_1>;
		};
		pinctrl_kso17: kso17 {
			pinctrls = <&pinmuxc 5 IT8XXX2_PINMUX_FUNC_1>;
		};
	};
};
