/*
 * Copyright 2022 ITE Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/dt-util.h>

/ {
	/* Mapping between wuc bits and source device */
	it8xxx2-wuc-map {
		compatible = "ite,it8xxx2-wuc-map";

		/* WUC group 2 */
		wuc_wu20: wu20 {
			wucs = <&wuc2 BIT(0)>; /* GPD0 */
		};
		wuc_wu21: wu21 {
			wucs = <&wuc2 BIT(1)>; /* GPD1 */
		};
		wuc_wu22: wu22 {
			wucs = <&wuc2 BIT(2)>; /* GPC4 */
		};
		wuc_wu23: wu23 {
			wucs = <&wuc2 BIT(3)>; /* GPC6 */
		};
		wuc_wu24: wu24{
			wucs = <&wuc2 BIT(4)>; /* GPD2 */
		};
		wuc_wu25: wu25 {
			wucs = <&wuc2 BIT(5)>; /* GPE4 */
		};

		/* WUC group 3 */
		wuc_wu30: wu30 {
			wucs = <&wuc3 BIT(0)>; /* KSI[0] */
		};
		wuc_wu31: wu31 {
			wucs = <&wuc3 BIT(1)>; /* KSI[1] */
		};
		wuc_wu32: wu32 {
			wucs = <&wuc3 BIT(2)>; /* KSI[2] */
		};
		wuc_wu33: wu33 {
			wucs = <&wuc3 BIT(3)>; /* KSI[3] */
		};
		wuc_wu34: wu34{
			wucs = <&wuc3 BIT(4)>; /* KSI[4] */
		};
		wuc_wu35: wu35 {
			wucs = <&wuc3 BIT(5)>; /* KSI[5] */
		};
		wuc_wu36: wu36 {
			wucs = <&wuc3 BIT(6)>; /* KSI[6] */
		};
		wuc_wu37: wu37 {
			wucs = <&wuc3 BIT(7)>; /* KSI[7] */
		};

		/* WUC group 4 */
		wuc_wu40: wu40 {
			wucs = <&wuc4 BIT(0)>; /* GPE5 */
		};
		wuc_wu45: wu45 {
			wucs = <&wuc4 BIT(5)>; /* GPE6 */
		};
		wuc_wu46: wu46 {
			wucs = <&wuc4 BIT(6)>; /* GPE7 */
		};

		/* WUC group 5 */
		wuc_wu50: wu50 {
			wucs = <&wuc5 BIT(0)>; /* GPK0 */
		};
		wuc_wu51: wu51 {
			wucs = <&wuc5 BIT(1)>; /* GPK1 */
		};
		wuc_wu52: wu52 {
			wucs = <&wuc5 BIT(2)>; /* GPK2 */
		};
		wuc_wu53: wu53 {
			wucs = <&wuc5 BIT(3)>; /* GPK3 */
		};
		wuc_wu54: wu54 {
			wucs = <&wuc5 BIT(4)>; /* GPK4 */
		};
		wuc_wu55: wu55 {
			wucs = <&wuc5 BIT(5)>; /* GPK5 */
		};
		wuc_wu56: wu56 {
			wucs = <&wuc5 BIT(6)>; /* GPK6 */
		};
		wuc_wu57: wu57 {
			wucs = <&wuc5 BIT(7)>; /* GPK7 */
		};

		/* WUC group 6 */
		wuc_wu60: wu60 {
			wucs = <&wuc6 BIT(0)>; /* GPH0 */
		};
		wuc_wu61: wu61 {
			wucs = <&wuc6 BIT(1)>; /* GPH1 */
		};
		wuc_wu62: wu62 {
			wucs = <&wuc6 BIT(2)>; /* GPH2 */
		};
		wuc_wu63: wu63 {
			wucs = <&wuc6 BIT(3)>; /* GPH3 */
		};
		wuc_wu64: wu64 {
			wucs = <&wuc6 BIT(4)>; /* GPF4 */
		};
		wuc_wu65: wu65 {
			wucs = <&wuc6 BIT(5)>; /* GPF5 */
		};
		wuc_wu66: wu66 {
			wucs = <&wuc6 BIT(6)>; /* GPF6 */
		};
		wuc_wu67: wu67 {
			wucs = <&wuc6 BIT(7)>; /* GPF7 */
		};

		/* WUC group 7 */
		wuc_wu70: wu70 {
			wucs = <&wuc7 BIT(0)>; /* GPE0 */
		};
		wuc_wu71: wu71 {
			wucs = <&wuc7 BIT(1)>; /* GPE1 */
		};
		wuc_wu72: wu72 {
			wucs = <&wuc7 BIT(2)>; /* GPE2 */
		};
		wuc_wu73: wu73 {
			wucs = <&wuc7 BIT(3)>; /* GPE3 */
		};
		wuc_wu74: wu74 {
			wucs = <&wuc7 BIT(4)>; /* GPI4 */
		};
		wuc_wu75: wu75 {
			wucs = <&wuc7 BIT(5)>; /* GPI5 */
		};
		wuc_wu76: wu76 {
			wucs = <&wuc7 BIT(6)>; /* GPI6 */
		};
		wuc_wu77: wu77 {
			wucs = <&wuc7 BIT(7)>; /* GPI7 */
		};

		/* WUC group 8 */
		wuc_wu80: wu80 {
			wucs = <&wuc8 BIT(0)>; /* GPA3 */
		};
		wuc_wu81: wu81 {
			wucs = <&wuc8 BIT(1)>; /* GPA4 */
		};
		wuc_wu82: wu82 {
			wucs = <&wuc8 BIT(2)>; /* GPA5 */
		};
		wuc_wu83: wu83 {
			wucs = <&wuc8 BIT(3)>; /* GPA6 */
		};
		wuc_wu84: wu84 {
			wucs = <&wuc8 BIT(4)>; /* GPB2 */
		};
		wuc_wu85: wu85 {
			wucs = <&wuc8 BIT(5)>; /* GPC0 */
		};
		wuc_wu86: wu86 {
			wucs = <&wuc8 BIT(6)>; /* GPC7 */
		};
		wuc_wu87: wu87 {
			wucs = <&wuc8 BIT(7)>; /* GPD7 */
		};

		/* WUC group 9 */
		wuc_wu88: wu88 {
			wucs = <&wuc9 BIT(0)>; /* GPH4 */
		};
		wuc_wu89: wu89 {
			wucs = <&wuc9 BIT(1)>; /* GPH5 */
		};
		wuc_wu90: wu90 {
			wucs = <&wuc9 BIT(2)>; /* GPH6 */
		};
		wuc_wu91: wu91 {
			wucs = <&wuc9 BIT(3)>; /* GPA0 */
		};
		wuc_wu92: wu92 {
			wucs = <&wuc9 BIT(4)>; /* GPA1 */
		};
		wuc_wu93: wu93 {
			wucs = <&wuc9 BIT(5)>; /* GPA2 */
		};
		wuc_wu94: wu94 {
			wucs = <&wuc9 BIT(6)>; /* GPB4 */
		};
		wuc_wu95: wu95 {
			wucs = <&wuc9 BIT(7)>; /* GPC2 */
		};

		/* WUC group 10 */
		wuc_wu96: wu96 {
			wucs = <&wuc10 BIT(0)>; /* GPF0 */
		};
		wuc_wu97: wu97 {
			wucs = <&wuc10 BIT(1)>; /* GPF1 */
		};
		wuc_wu98: wu98 {
			wucs = <&wuc10 BIT(2)>; /* GPF2 */
		};
		wuc_wu99: wu99 {
			wucs = <&wuc10 BIT(3)>; /* GPF3 */
		};
		wuc_wu100: wu100 {
			wucs = <&wuc10 BIT(4)>; /* GPA7 */
		};
		wuc_wu101: wu101 {
			wucs = <&wuc10 BIT(5)>; /* GPB0 */
		};
		wuc_wu102: wu102 {
			wucs = <&wuc10 BIT(6)>; /* GPB1 */
		};
		wuc_wu103: wu103 {
			wucs = <&wuc10 BIT(7)>; /* GPB3 */
		};

		/* WUC group 11 */
		wuc_wu104: wu104 {
			wucs = <&wuc11 BIT(0)>; /* GPB5 */
		};
		wuc_wu105: wu105 {
			wucs = <&wuc11 BIT(1)>; /* GPB6 */
		};
		wuc_wu106: wu106 {
			wucs = <&wuc11 BIT(2)>; /* GPB7 */
		};
		wuc_wu107: wu107 {
			wucs = <&wuc11 BIT(3)>; /* GPC1 */
		};
		wuc_wu108: wu108 {
			wucs = <&wuc11 BIT(4)>; /* GPC3 */
		};
		wuc_wu109: wu109 {
			wucs = <&wuc11 BIT(5)>; /* GPC5 */
		};
		wuc_wu110: wu110 {
			wucs = <&wuc11 BIT(6)>; /* GPD3 */
		};
		wuc_wu111: wu111 {
			wucs = <&wuc11 BIT(7)>; /* GPD4 */
		};

		/* WUC group 12 */
		wuc_wu112: wu112 {
			wucs = <&wuc12 BIT(0)>; /* GPD5 */
		};
		wuc_wu113: wu113 {
			wucs = <&wuc12 BIT(1)>; /* GPD6 */
		};
		wuc_wu114: wu114 {
			wucs = <&wuc12 BIT(2)>; /* GPE4 */
		};
		wuc_wu115: wu115 {
			wucs = <&wuc12 BIT(3)>; /* GPG0 */
		};
		wuc_wu116: wu116 {
			wucs = <&wuc12 BIT(4)>; /* GPG1 */
		};
		wuc_wu117: wu117 {
			wucs = <&wuc12 BIT(5)>; /* GPG2 */
		};
		wuc_wu118: wu118 {
			wucs = <&wuc12 BIT(6)>; /* GPG6 */
		};
		wuc_wu119: wu119 {
			wucs = <&wuc12 BIT(7)>; /* GPI0 */
		};

		/* WUC group 13 */
		wuc_wu120: wu120 {
			wucs = <&wuc13 BIT(0)>; /* GPI1 */
		};
		wuc_wu121: wu121 {
			wucs = <&wuc13 BIT(1)>; /* GPI2 */
		};
		wuc_wu122: wu122 {
			wucs = <&wuc13 BIT(2)>; /* GPI3 */
		};
		wuc_wu123: wu123 {
			wucs = <&wuc13 BIT(3)>; /* GPG3 */
		};
		wuc_wu124: wu124 {
			wucs = <&wuc13 BIT(4)>; /* GPG4 */
		};
		wuc_wu125: wu125 {
			wucs = <&wuc13 BIT(5)>; /* GPG5 */
		};
		wuc_wu126: wu126 {
			wucs = <&wuc13 BIT(6)>; /* GPG7 */
		};

		/* WUC group 14 */
		wuc_wu128: wu128 {
			wucs = <&wuc14 BIT(0)>; /* GPJ0 */
		};
		wuc_wu129: wu129 {
			wucs = <&wuc14 BIT(1)>; /* GPJ1 */
		};
		wuc_wu130: wu130 {
			wucs = <&wuc14 BIT(2)>; /* GPJ2 */
		};
		wuc_wu131: wu131 {
			wucs = <&wuc14 BIT(3)>; /* GPJ3 */
		};
		wuc_wu132: wu132 {
			wucs = <&wuc14 BIT(4)>; /* GPJ4 */
		};
		wuc_wu133: wu133 {
			wucs = <&wuc14 BIT(5)>; /* GPJ5 */
		};
		wuc_wu134: wu134 {
			wucs = <&wuc14 BIT(6)>; /* GPJ6 */
		};
		wuc_wu135: wu135 {
			wucs = <&wuc14 BIT(7)>; /* GPJ7 */
		};

		/* WUC group 15 */
		wuc_wu136: wu136 {
			wucs = <&wuc15 BIT(0)>; /* GPIO L0 */
		};
		wuc_wu137: wu137 {
			wucs = <&wuc15 BIT(1)>; /* GPIO L1 */
		};
		wuc_wu138: wu138 {
			wucs = <&wuc15 BIT(2)>; /* GPIO L2 */
		};
		wuc_wu139: wu139 {
			wucs = <&wuc15 BIT(3)>; /* GPIO L3 */
		};
		wuc_wu140: wu140 {
			wucs = <&wuc15 BIT(4)>; /* GPIO L4 */
		};
		wuc_wu141: wu141 {
			wucs = <&wuc15 BIT(5)>; /* GPIO L5 */
		};
		wuc_wu142: wu142 {
			wucs = <&wuc15 BIT(6)>; /* GPIO L6 */
		};
		wuc_wu143: wu143 {
			wucs = <&wuc15 BIT(7)>; /* GPIO L7 */
		};

		/* WUC group 16 */
		wuc_wu144: wu144 {
			wucs = <&wuc16 BIT(0)>; /* GPM0 */
		};
		wuc_wu145: wu145 {
			wucs = <&wuc16 BIT(1)>; /* GPM1 */
		};
		wuc_wu146: wu146 {
			wucs = <&wuc16 BIT(2)>; /* GPM2 */
		};
		wuc_wu147: wu147 {
			wucs = <&wuc16 BIT(3)>; /* GPM3 */
		};
		wuc_wu148: wu148 {
			wucs = <&wuc16 BIT(4)>; /* GPM4 */
		};
		wuc_wu149: wu149 {
			wucs = <&wuc16 BIT(5)>; /* GPM5 */
		};
		wuc_wu150: wu150 {
			wucs = <&wuc16 BIT(6)>; /* GPM6 */
		};
	};
};
