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

/* Common Wake-Up Unit Input (WUI) mapping configurations in npcx family */
#include <nuvoton/npcx/npcx-miwus-wui-map.dtsi>

/* Specific Wake-Up Unit Input (WUI) mapping configurations in npcx4 series */
/ {
	/* Mapping between MIWU wui bits and source device */
	npcx-miwus-wui-map {
		compatible = "nuvoton,npcx-miwu-wui-map";

		/* MIWU table 0 */
		/* MIWU group H */
		wui_ioe7: wui0-8-7 {
			miwus = <&miwu0 7 7>; /* GPIOE7 */
		};

		/* MIWU table 1 */
		/* MIWU group B */
		wui_io13: wui1-2-3 {
			miwus = <&miwu1 1 3>; /* GPIO13 */
		};

		/* MIWU group G */
		wui_io66: wui1-7-6 {
			miwus = <&miwu1 6 6>; /* GPIO66 */
		};

		/* MIWU table 2 */
		/* MIWU group E */
		wui_slp_msc: wui2-5-0 {
			miwus = <&miwu2 4 0>; /* SLP_MSC */
		};
		wui_z8: wui2-5-1 {
			miwus = <&miwu2 4 1>; /* Z8 */
		};
		wui_z9: wui2-5-2 {
			miwus = <&miwu2 4 2>; /* Z9 */
		};
		wui_z10: wui2-5-3 {
			miwus = <&miwu2 4 3>; /* Z10 */
		};

		/* MIWU group F */
		wui_io12: wui2-6-0 {
			miwus = <&miwu2 5 0>; /* GPIO12 */
		};
		wui_smb2: wui2-6-3 {
			miwus = <&miwu2 5 3>; /* SMB2 */
		};
		wui_smb3: wui2-6-4 {
			miwus = <&miwu2 5 4>; /* SMB3 */
		};
		wui_iod6: wui2-6-5 {
			miwus = <&miwu2 5 5>; /* GPIOD6 */
		};
		wui_iob6: wui2-6-6 {
			miwus = <&miwu2 5 6>; /* GPIOB6 */
		};
		wui_lct: wui2-6-7 {
			miwus = <&miwu2 5 7>; /* LCT Event */
		};

		/* MIWU group G */
		wui_cr_sin2: wui2-7-3 {
			miwus = <&miwu2 6 3>; /* CR_SIN2 */
		};
		wui_cr_sin3: wui2-7-4 {
			miwus = <&miwu2 6 4>; /* CR_SIN3 */
		};
		wui_cr_sin4: wui2-7-5 {
			miwus = <&miwu2 6 5>; /* CR_SIN4 */
		};
		wui_i3c1_addrw: wui2-7-6 {
			miwus = <&miwu2 6 6>; /* I3C1_ADDRW */
		};
		wui_i3c1_rstw: wui2-7-7 {
			miwus = <&miwu2 6 7>; /* I3C1_RSTW */
		};

		/* MIWU group G */
		wui_i3c2_addrw: wui2-8-0 {
			miwus = <&miwu2 7 0>; /* I3C2_ADDRW */
		};
		wui_i3c2_rstw: wui2-8-1 {
			miwus = <&miwu2 7 1>; /* I3C2_RSTW */
		};
		wui_i3c3_addrw: wui2-8-2 {
			miwus = <&miwu2 7 2>; /* I3C3_ADDRW */
		};
		wui_i3c3_rstw: wui2-8-3 {
			miwus = <&miwu2 7 3>; /* I3C3_RSTW */
		};
	};
};
