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

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

&pinctrl {
	/* ADC alternate function */
	adc0_ch0_gpi0_default: adc0_ch0_gpi0_default {
		pinmuxs = <&pinctrli 0 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch1_gpi1_default: adc0_ch1_gpi1_default {
		pinmuxs = <&pinctrli 1 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch2_gpi2_default: adc0_ch2_gpi2_default {
		pinmuxs = <&pinctrli 2 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch3_gpi3_default: adc0_ch3_gpi3_default {
		pinmuxs = <&pinctrli 3 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch4_gpi4_default: adc0_ch4_gpi4_default {
		pinmuxs = <&pinctrli 4 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch5_gpi5_default: adc0_ch5_gpi5_default {
		pinmuxs = <&pinctrli 5 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch6_gpi6_default: adc0_ch6_gpi6_default {
		pinmuxs = <&pinctrli 6 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch7_gpi7_default: adc0_ch7_gpi7_default {
		pinmuxs = <&pinctrli 7 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch13_gpl0_default: adc0_ch13_gpl0_default {
		pinmuxs = <&pinctrll 0 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch14_gpl1_default: adc0_ch14_gpl1_default {
		pinmuxs = <&pinctrll 1 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch15_gpl2_default: adc0_ch15_gpl2_default {
		pinmuxs = <&pinctrll 2 IT8XXX2_ALT_FUNC_1>;
	};
	adc0_ch16_gpl3_default: adc0_ch16_gpl3_default {
		pinmuxs = <&pinctrll 3 IT8XXX2_ALT_FUNC_1>;
	};

	/* I2C alternate function */
	i2c0_clk_gpb3_default: i2c0_clk_gpb3_default {
		pinmuxs = <&pinctrlb 3 IT8XXX2_ALT_FUNC_1>;
	};
	i2c0_data_gpb4_default: i2c0_data_gpb4_default {
		pinmuxs = <&pinctrlb 4 IT8XXX2_ALT_FUNC_1>;
	};
	i2c1_clk_gpc1_default: i2c1_clk_gpc1_default {
		pinmuxs = <&pinctrlc 1 IT8XXX2_ALT_FUNC_1>;
	};
	i2c1_data_gpc2_default: i2c1_data_gpc2_default {
		pinmuxs = <&pinctrlc 2 IT8XXX2_ALT_FUNC_1>;
	};
	i2c2_clk_gpf6_default: i2c2_clk_gpf6_default {
		pinmuxs = <&pinctrlf 6 IT8XXX2_ALT_FUNC_1>;
	};
	i2c2_data_gpf7_default: i2c2_data_gpf7_default {
		pinmuxs = <&pinctrlf 7 IT8XXX2_ALT_FUNC_1>;
	};
	i2c3_clk_gph1_default: i2c3_clk_gph1_default {
		pinmuxs = <&pinctrlh 1 IT8XXX2_ALT_FUNC_3>;
	};
	i2c3_data_gph2_default: i2c3_data_gph2_default {
		pinmuxs = <&pinctrlh 2 IT8XXX2_ALT_FUNC_3>;
	};
	i2c3_clk_gpf2_default: i2c3_clk_gpf2_default {
		pinmuxs = <&pinctrlf 2 IT8XXX2_ALT_FUNC_4>;
	};
	i2c3_data_gpf3_default: i2c3_data_gpf3_default {
		pinmuxs = <&pinctrlf 3 IT8XXX2_ALT_FUNC_4>;
	};
	i2c4_clk_gpe0_default: i2c4_clk_gpe0_default {
		pinmuxs = <&pinctrle 0 IT8XXX2_ALT_FUNC_3>;
	};
	i2c4_data_gpe7_default: i2c4_data_gpe7_default {
		pinmuxs = <&pinctrle 7 IT8XXX2_ALT_FUNC_3>;
	};
	i2c5_clk_gpa4_default: i2c5_clk_gpa4_default {
		pinmuxs = <&pinctrla 4 IT8XXX2_ALT_FUNC_3>;
	};
	i2c5_data_gpa5_default: i2c5_data_gpa5_default {
		pinmuxs = <&pinctrla 5 IT8XXX2_ALT_FUNC_3>;
	};

	/* Keyboard alternate function */
	kso16_gpc3_default: kso16_gpc3_default {
		pinmuxs = <&pinctrlc 3 IT8XXX2_ALT_FUNC_1>;
		bias-pull-up;
	};
	kso17_gpc5_default: kso17_gpc5_default {
		pinmuxs = <&pinctrlc 5 IT8XXX2_ALT_FUNC_1>;
		bias-pull-up;
	};

	/* PECI alternate function */
	peci_gpf6_default: peci_gpf6_default {
		pinmuxs = <&pinctrlf 6 IT8XXX2_ALT_FUNC_3>;
	};

	/* PWM alternate function */
	pwm0_gpa0_default: pwm0_gpa0_default {
		pinmuxs = <&pinctrla 0 IT8XXX2_ALT_FUNC_1>;
	};
	pwm1_gpa1_default: pwm1_gpa1_default {
		pinmuxs = <&pinctrla 1 IT8XXX2_ALT_FUNC_1>;
	};
	pwm2_gpa2_default: pwm2_gpa2_default {
		pinmuxs = <&pinctrla 2 IT8XXX2_ALT_FUNC_1>;
	};
	pwm3_gpa3_default: pwm3_gpa3_default {
		pinmuxs = <&pinctrla 3 IT8XXX2_ALT_FUNC_1>;
	};
	pwm4_gpa4_default: pwm4_gpa4_default {
		pinmuxs = <&pinctrla 4 IT8XXX2_ALT_FUNC_1>;
	};
	pwm5_gpa5_default: pwm5_gpa5_default {
		pinmuxs = <&pinctrla 5 IT8XXX2_ALT_FUNC_1>;
	};
	pwm6_gpa6_default: pwm6_gpa6_default {
		pinmuxs = <&pinctrla 6 IT8XXX2_ALT_FUNC_1>;
	};
	pwm7_gpa7_default: pwm7_gpa7_default {
		pinmuxs = <&pinctrla 7 IT8XXX2_ALT_FUNC_1>;
	};

	/* SHI alternate function */
	shi_mosi_gpm0_default: shi_mosi_gpm0_default {
		pinmuxs = <&pinctrlm 0 IT8XXX2_ALT_FUNC_1>;
	};
	shi_miso_gpm1_default: shi_miso_gpm1_default {
		pinmuxs = <&pinctrlm 1 IT8XXX2_ALT_FUNC_1>;
	};
	shi_clk_gpm4_default: shi_clk_gpm4_default {
		pinmuxs = <&pinctrlm 4 IT8XXX2_ALT_FUNC_1>;
	};
	shi_cs_gpm5_default: shi_cs_gpm5_default {
		pinmuxs = <&pinctrlm 5 IT8XXX2_ALT_FUNC_1>;
	};

	/* Tachometer alternate function */
	tach0a_gpd6_default: tach0a_gpd6_default {
		pinmuxs = <&pinctrld 6 IT8XXX2_ALT_FUNC_1>;
	};
	tach0b_gpj2_default: tach0b_gpj2_default {
		pinmuxs = <&pinctrlj 2 IT8XXX2_ALT_FUNC_3>;
	};
	tach1a_gpd7_default: tach1a_gpd7_default {
		pinmuxs = <&pinctrld 7 IT8XXX2_ALT_FUNC_1>;
	};
	tach1b_gpj3_default: tach1b_gpj3_default {
		pinmuxs = <&pinctrlj 3 IT8XXX2_ALT_FUNC_3>;
	};

	/* UART alternate function */
	uart1_rx_gpb0_default: uart1_rx_gpb0_default {
		pinmuxs = <&pinctrlb 0 IT8XXX2_ALT_FUNC_3>;
	};
	uart1_tx_gpb1_default: uart1_tx_gpb1_default {
		pinmuxs = <&pinctrlb 1 IT8XXX2_ALT_FUNC_3>;
	};
	uart2_rx_gph1_default: uart2_rx_gph1_default {
		pinmuxs = <&pinctrlh 1 IT8XXX2_ALT_FUNC_4>;
	};
	uart2_tx_gph2_default: uart2_tx_gph2_default {
		pinmuxs = <&pinctrlh 2 IT8XXX2_ALT_FUNC_4>;
	};

};
