/*
 * Copyright (c) 2022 Schlumberger
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/interrupt-controller/infineon-xmc4xxx-intc.h>

&intc {
	port-line-mapping = <
	XMC4XXX_INTC_SET_LINE_MAP(0, 1, 0, 0)     /* ERU0_ETL0_INPUTA_P0_1   XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 5, 2, 0)     /* ERU0_ETL0_INPUTA_P2_5   XMC_ERU_ETL_INPUT_A2 */
	XMC4XXX_INTC_SET_LINE_MAP(3, 2, 1, 0)     /* ERU0_ETL0_INPUTA_P3_2   XMC_ERU_ETL_INPUT_A1 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 0, 4, 0)     /* ERU0_ETL0_INPUTB_P0_0   XMC_ERU_ETL_INPUT_B0 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 0, 7, 0)     /* ERU0_ETL0_INPUTB_P2_0   XMC_ERU_ETL_INPUT_B3 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 4, 6, 0)     /* ERU0_ETL0_INPUTB_P2_4   XMC_ERU_ETL_INPUT_B2 */
	XMC4XXX_INTC_SET_LINE_MAP(3, 1, 5, 0)     /* ERU0_ETL0_INPUTB_P3_1   XMC_ERU_ETL_INPUT_B1 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 10, 0, 1)    /* ERU0_ETL1_INPUTA_P0_10  XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 3, 2, 1)     /* ERU0_ETL1_INPUTA_P2_3   XMC_ERU_ETL_INPUT_A2 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 9, 4, 1)     /* ERU0_ETL1_INPUTB_P0_9   XMC_ERU_ETL_INPUT_B0 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 2, 6, 1)     /* ERU0_ETL1_INPUTB_P2_2   XMC_ERU_ETL_INPUT_B2 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 6, 7, 1)     /* ERU0_ETL1_INPUTB_P2_6   XMC_ERU_ETL_INPUT_B3 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 8, 1, 2)     /* ERU0_ETL2_INPUTA_P0_8   XMC_ERU_ETL_INPUT_A1 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 5, 0, 2)     /* ERU0_ETL2_INPUTA_P1_5   XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 12, 6, 2)    /* ERU0_ETL2_INPUTB_P0_12  XMC_ERU_ETL_INPUT_B2 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 4, 7, 2)     /* ERU0_ETL2_INPUTB_P0_4   XMC_ERU_ETL_INPUT_B3 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 7, 5, 2)     /* ERU0_ETL2_INPUTB_P0_7   XMC_ERU_ETL_INPUT_B1 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 4, 4, 2)     /* ERU0_ETL2_INPUTB_P1_4   XMC_ERU_ETL_INPUT_B0 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 11, 2, 3)    /* ERU0_ETL3_INPUTA_P0_11  XMC_ERU_ETL_INPUT_A2 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 1, 0, 3)     /* ERU0_ETL3_INPUTA_P1_1   XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(3, 6, 1, 3)     /* ERU0_ETL3_INPUTA_P3_6   XMC_ERU_ETL_INPUT_A1 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 2, 7, 3)     /* ERU0_ETL3_INPUTB_P0_2   XMC_ERU_ETL_INPUT_B3 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 6, 6, 3)     /* ERU0_ETL3_INPUTB_P0_6   XMC_ERU_ETL_INPUT_B2 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 0, 4, 3)     /* ERU0_ETL3_INPUTB_P1_0   XMC_ERU_ETL_INPUT_B0 */
	XMC4XXX_INTC_SET_LINE_MAP(3, 5, 5, 3)     /* ERU0_ETL3_INPUTB_P3_5   XMC_ERU_ETL_INPUT_B1 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 5, 0, 4)     /* ERU1_ETL0_INPUTA_P1_5   XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 1, 4, 4)     /* ERU1_ETL0_INPUTB_P2_1   XMC_ERU_ETL_INPUT_B0 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 15, 0, 5)    /* ERU1_ETL1_INPUTA_P1_15  XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(2, 7, 4, 5)     /* ERU1_ETL1_INPUTB_P2_7   XMC_ERU_ETL_INPUT_B0 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 3, 0, 6)     /* ERU1_ETL2_INPUTA_P1_3   XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(1, 2, 4, 6)     /* ERU1_ETL2_INPUTB_P1_2   XMC_ERU_ETL_INPUT_B0 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 5, 0, 7)     /* ERU1_ETL3_INPUTA_P0_5   XMC_ERU_ETL_INPUT_A0 */
	XMC4XXX_INTC_SET_LINE_MAP(0, 3, 4, 7)     /* ERU1_ETL3_INPUTB_P0_3   XMC_ERU_ETL_INPUT_B0 */
	>;
};
