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

/ {
	def-lvol-conf-list {
		compatible = "nuvoton,npcx-lvolctrl-conf";

		/* Low-Voltage IO Control 0 */
		lvol_iob5: lvol00 {
			lvols = <&scfg 0 0>;
		};
		lvol_iob4: lvol01 {
			lvols = <&scfg 0 1>;
		};
		lvol_iob3: lvol02 {
			lvols = <&scfg 0 2>;
		};
		lvol_iob2: lvol03 {
			lvols = <&scfg 0 3>;
		};
		lvol_io90: lvol04 {
			lvols = <&scfg 0 4>;
		};
		lvol_io87: lvol05 {
			lvols = <&scfg 0 5>;
		};
		lvol_io00: lvol06 {
			lvols = <&scfg 0 6>;
		};
		lvol_io33: lvol07 {
			lvols = <&scfg 0 7>;
		};

		/* Low-Voltage IO Control 1 */
		lvol_io92: lvol10 {
			lvols = <&scfg 1 0>;
		};
		lvol_io91: lvol11 {
			lvols = <&scfg 1 1>;
		};
		lvol_iod1: lvol12 {
			lvols = <&scfg 1 2>;
		};
		lvol_iod0: lvol13 {
			lvols = <&scfg 1 3>;
		};
		lvol_io36: lvol14 {
			lvols = <&scfg 1 4>;
		};
		lvol_io64: lvol15 {
			lvols = <&scfg 1 5>;
		};

		/* Low-Voltage IO Control 2 */
		lvol_io74: lvol20 {
			lvols = <&scfg 2 0>;
		};
		lvol_io73: lvol23 {
			lvols = <&scfg 2 3>;
		};
		lvol_ioc1: lvol24 {
			lvols = <&scfg 2 4>;
		};
		lvol_ioc7: lvol25 {
			lvols = <&scfg 2 5>;
		};
		lvol_io34: lvol27 {
			lvols = <&scfg 2 7>;
		};

		/* Low-Voltage IO Control 3 */
		lvol_ioc6: lvol30 {
			lvols = <&scfg 3 0>;
		};
		lvol_io37: lvol31 {
			lvols = <&scfg 3 1>;
		};
		lvol_io40: lvol32 {
			lvols = <&scfg 3 2>;
		};
		lvol_io82: lvol34 {
			lvols = <&scfg 3 4>;
		};
		lvol_io75: lvol35 {
			lvols = <&scfg 3 5>;
		};
		lvol_io80: lvol36 {
			lvols = <&scfg 3 6>;
		};
		lvol_ioc5: lvol37 {
			lvols = <&scfg 3 7>;
		};

		/* Low-Voltage IO Control 4 */
		lvol_ioc2: lvol41 {
			lvols = <&scfg 4 1>;
		};
		lvol_iof3: lvol42 {
			lvols = <&scfg 4 2>;
		};
		lvol_iof2: lvol43 {
			lvols = <&scfg 4 3>;
		};
		lvol_iof5: lvol44 {
			lvols = <&scfg 4 4>;
		};
		lvol_iof4: lvol45 {
			lvols = <&scfg 4 5>;
		};
		lvol_ioe4: lvol46 {
			lvols = <&scfg 4 6>;
		};
		lvol_ioe3: lvol47 {
			lvols = <&scfg 4 7>;
		};

		/* Low-Voltage IO Control 5 */
		lvol_io72: lvol50 {
			lvols = <&scfg 5 0>;
		};
		lvol_io50: lvol53 {
			lvols = <&scfg 5 3>;
		};

		/*
		 * Pseudo Low-Voltage IO Control (i.e. IO pad doesn't support
		 * low voltage detection.)
		 */
		lvol_none: lvol-pseudo {
			lvols = <&scfg 6 0>;
		};
	};
};
