/*
 * Copyright (c) 2020 Nuvoton Technology Corporation.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/ {
	npcx7_alts_map {
		compatible = "nuvoton,npcx-pinctrl-conf";

		/******** SCFG device alternative table *******/
		/* SCFG DEVALT 0 */
		alt0_spip_sl:      alt00     { alts = <&scfg 0x00 0x0 0>; };
		alt0_gpio_no_spip: alt03_inv { alts = <&scfg 0x00 0x3 1>; };
		/* FPIP (FIU SPI Interface Peripheral) for external flash. */
		alt0_gpio_no_fpip: alt07_inv { alts = <&scfg 0x00 0x7 1>; };

		/* SCFG DEVALT 1 */
		alt1_kbrst_sl:     alt10     { alts = <&scfg 0x01 0x0 0>; };
		alt1_a20m_sl:      alt11     { alts = <&scfg 0x01 0x1 0>; };
		alt1_smi_sl:       alt12     { alts = <&scfg 0x01 0x2 0>; };
		alt1_ec_sci_sl:    alt13     { alts = <&scfg 0x01 0x3 0>; };
		alt1_no_pwrgd:     alt14_inv { alts = <&scfg 0x01 0x4 1>; };
		alt1_pwroff:       alt15     { alts = <&scfg 0x01 0x5 0>; };
		alt1_clkrn_sl:     alt16     { alts = <&scfg 0x01 0x6 0>; };
		alt1_no_lpc_espi:  alt17_inv { alts = <&scfg 0x01 0x7 1>; };

		/* SCFG DEVALT 2 */
		alt2_i2c0_0_sl:    alt20     { alts = <&scfg 0x02 0x0 0>; };
		alt2_i2c7_0_sl:    alt21     { alts = <&scfg 0x02 0x1 0>; };
		alt2_i2c1_0_sl:    alt22     { alts = <&scfg 0x02 0x2 0>; };
		alt2_i2c6_0_sl:    alt23     { alts = <&scfg 0x02 0x3 0>; };
		alt2_i2c2_0_sl:    alt24     { alts = <&scfg 0x02 0x4 0>; };
		alt2_i2c5_0_sl:    alt25     { alts = <&scfg 0x02 0x5 0>; };
		alt2_i2c3_0_sl:    alt26     { alts = <&scfg 0x02 0x6 0>; };

		/* SCFG DEVALT 3 */
		alt3_ps2_0_sl:     alt30     { alts = <&scfg 0x03 0x0 0>; };
		alt3_ps2_1_sl:     alt31     { alts = <&scfg 0x03 0x1 0>; };
		alt3_ps2_2_sl:     alt32     { alts = <&scfg 0x03 0x2 0>; };
		alt3_ta1_sl1:      alt34     { alts = <&scfg 0x03 0x4 0>; };
		alt3_tb1_sl1:      alt35     { alts = <&scfg 0x03 0x5 0>; };
		alt3_ta2_sl1:      alt36     { alts = <&scfg 0x03 0x6 0>; };

		/* SCFG DEVALT 4 */
		alt4_pwm0_sl:      alt40     { alts = <&scfg 0x04 0x0 0>; };
		alt4_pwm1_sl:      alt41     { alts = <&scfg 0x04 0x1 0>; };
		alt4_pwm2_sl:      alt42     { alts = <&scfg 0x04 0x2 0>; };
		alt4_pwm3_sl:      alt43     { alts = <&scfg 0x04 0x3 0>; };
		alt4_pwm4_sl:      alt44     { alts = <&scfg 0x04 0x4 0>; };
		alt4_pwm5_sl:      alt45     { alts = <&scfg 0x04 0x5 0>; };
		alt4_pwm6_sl:      alt46     { alts = <&scfg 0x04 0x6 0>; };
		alt4_pwm7_sl:      alt47     { alts = <&scfg 0x04 0x7 0>; };

		/* SCFG DEVALT 5 */
		alt5_trace_en:     alt50     { alts = <&scfg 0x05 0x0 0>; };
		alt5_njen1_en:     alt51     { alts = <&scfg 0x05 0x1 0>; };
		alt5_njen0_en:     alt52     { alts = <&scfg 0x05 0x2 0>; };
		alt5_strace_en:    alt54     { alts = <&scfg 0x05 0x4 0>; };

		/* SCFG DEVALT 6 */
		alt6_adc0_sl:      alt60     { alts = <&scfg 0x06 0x0 0>; };
		alt6_adc1_sl:      alt61     { alts = <&scfg 0x06 0x1 0>; };
		alt6_adc2_sl:      alt62     { alts = <&scfg 0x06 0x2 0>; };
		alt6_adc3_sl:      alt63     { alts = <&scfg 0x06 0x3 0>; };
		alt6_adc4_sl:      alt64     { alts = <&scfg 0x06 0x4 0>; };
		alt6_i2c6_1_sl:    alt65     { alts = <&scfg 0x06 0x5 0>; };
		alt6_i2c5_1_sl:    alt66     { alts = <&scfg 0x06 0x6 0>; };
		alt6_i2c4_1_sl:    alt67     { alts = <&scfg 0x06 0x7 0>; };

		/* SCFG DEVALT 7 */
		alt7_no_ksi0_sl:   alt70_inv { alts = <&scfg 0x07 0x0 1>; };
		alt7_no_ksi1_sl:   alt71_inv { alts = <&scfg 0x07 0x1 1>; };
		alt7_no_ksi2_sl:   alt72_inv { alts = <&scfg 0x07 0x2 1>; };
		alt7_no_ksi3_sl:   alt73_inv { alts = <&scfg 0x07 0x3 1>; };
		alt7_no_ksi4_sl:   alt74_inv { alts = <&scfg 0x07 0x4 1>; };
		alt7_no_ksi5_sl:   alt75_inv { alts = <&scfg 0x07 0x5 1>; };
		alt7_no_ksi6_sl:   alt76_inv { alts = <&scfg 0x07 0x6 1>; };
		alt7_no_ksi7_sl:   alt77_inv { alts = <&scfg 0x07 0x7 1>; };

		/* SCFG DEVALT 8 */
		alt8_no_kso00_sl:  alt80_inv { alts = <&scfg 0x08 0x0 1>; };
		alt8_no_kso01_sl:  alt81_inv { alts = <&scfg 0x08 0x1 1>; };
		alt8_no_kso02_sl:  alt82_inv { alts = <&scfg 0x08 0x2 1>; };
		alt8_no_kso03_sl:  alt83_inv { alts = <&scfg 0x08 0x3 1>; };
		alt8_no_kso04_sl:  alt84_inv { alts = <&scfg 0x08 0x4 1>; };
		alt8_no_kso05_sl:  alt85_inv { alts = <&scfg 0x08 0x5 1>; };
		alt8_no_kso06_sl:  alt86_inv { alts = <&scfg 0x08 0x6 1>; };
		alt8_no_kso07_sl:  alt87_inv { alts = <&scfg 0x08 0x7 1>; };

		/* SCFG DEVALT 9 */
		alt9_no_kso08_sl:  alt90_inv { alts = <&scfg 0x09 0x0 1>; };
		alt9_no_kso09_sl:  alt91_inv { alts = <&scfg 0x09 0x1 1>; };
		alt9_no_kso10_sl:  alt92_inv { alts = <&scfg 0x09 0x2 1>; };
		alt9_no_kso11_sl:  alt93_inv { alts = <&scfg 0x09 0x3 1>; };
		alt9_no_kso12_sl:  alt94_inv { alts = <&scfg 0x09 0x4 1>; };
		alt9_no_kso13_sl:  alt95_inv { alts = <&scfg 0x09 0x5 1>; };
		alt9_no_kso14_sl:  alt96_inv { alts = <&scfg 0x09 0x6 1>; };
		alt9_no_kso15_sl:  alt97_inv { alts = <&scfg 0x09 0x7 1>; };

		/* SCFG DEVALT A */
		alta_no_kso16_sl:  alta0_inv { alts = <&scfg 0x0A 0x0 1>; };
		alta_no_kso17_sl:  alta1_inv { alts = <&scfg 0x0A 0x1 1>; };
		alta_32k_out_sl:   alta2     { alts = <&scfg 0x0A 0x2 0>; };
		alta_32kclkin_sl:  alta3     { alts = <&scfg 0x0A 0x3 0>; };
		alta_no_vcc1_rst:  alta4_inv { alts = <&scfg 0x0A 0x4 1>; };
		alta_uart2_sl:     alta5     { alts = <&scfg 0x0A 0x5 0>; };
		alta_no_peci_en:   alta6_inv { alts = <&scfg 0x0A 0x6 1>; };
		alta_uart1_sl1:    alta7     { alts = <&scfg 0x0A 0x7 0>; };

		/* SCFG DEVALT B */
		altb_rxd_sl:       altb0     { alts = <&scfg 0x0B 0x0 0>; };
		altb_txd_sl:       altb1     { alts = <&scfg 0x0B 0x1 0>; };
		altb_rts_sl:       altb2     { alts = <&scfg 0x0B 0x2 0>; };
		altb_cts_sl:       altb3     { alts = <&scfg 0x0B 0x3 0>; };
		altb_ri_sl:        altb4     { alts = <&scfg 0x0B 0x4 0>; };
		altb_dtr_bout_sl:  altb5     { alts = <&scfg 0x0B 0x5 0>; };
		altb_dcd_sl:       altb6     { alts = <&scfg 0x0B 0x6 0>; };
		altb_dsr_sl:       altb7     { alts = <&scfg 0x0B 0x7 0>; };

		/* SCFG DEVALT C */
		altc_uart1_sl2:    altc0     { alts = <&scfg 0x0C 0x0 0>; };
		altc_shi_sl:       altc1     { alts = <&scfg 0x0C 0x1 0>; };
		altc_ps2_3_sl2:    altc3     { alts = <&scfg 0x0C 0x3 0>; };
		altc_ta1_sl2:      altc4     { alts = <&scfg 0x0C 0x4 0>; };
		altc_tb1_sl2:      altc5     { alts = <&scfg 0x0C 0x5 0>; };
		altc_ta2_sl2:      altc6     { alts = <&scfg 0x0C 0x6 0>; };
		altc_tb2_sl2:      altc7     { alts = <&scfg 0x0C 0x7 0>; };

		/* SCFG DEVALT D */
		altd_psl_in1_ahi:  altd0     { alts = <&scfg 0x0D 0x0 0>; };
		altd_npsl_in1_sl:  altd1_inv { alts = <&scfg 0x0D 0x1 1>; };
		altd_psl_in2_ahi:  altd2     { alts = <&scfg 0x0D 0x2 0>; };
		altd_npsl_in2_sl:  altd3_inv { alts = <&scfg 0x0D 0x3 1>; };
		altd_psl_in3_ahi:  altd4     { alts = <&scfg 0x0D 0x4 0>; };
		altd_psl_in3_sl:   altd5     { alts = <&scfg 0x0D 0x5 0>; };
		altd_psl_in4_ahi:  altd6     { alts = <&scfg 0x0D 0x6 0>; };
		altd_psl_in4_sl:   altd7     { alts = <&scfg 0x0D 0x7 0>; };

		/* SCFG DEVALT E */
		alte_wov_sl:       alte0     { alts = <&scfg 0x0E 0x0 0>; };
		alte_i2s_sl:       alte1     { alts = <&scfg 0x0E 0x1 0>; };
		alte_dmclk_fast:   alte2     { alts = <&scfg 0x0E 0x2 0>; };

		/* SCFG DEVALT F */
		altf_adc5_sl:      altf0     { alts = <&scfg 0x0F 0x0 0>; };
		altf_adc6_sl:      altf1     { alts = <&scfg 0x0F 0x1 0>; };
		altf_adc7_sl:      altf2     { alts = <&scfg 0x0F 0x2 0>; };
		altf_adc8_sl:      altf3     { alts = <&scfg 0x0F 0x3 0>; };
		altf_adc9_sl:      altf4     { alts = <&scfg 0x0F 0x4 0>; };
		altf_shi_new:      altf7     { alts = <&scfg 0x0F 0x7 0>; };
	};
};
