#ifndef DRIVERS_BSP_GEN2_INC_EXO_PINMAP_H_
#define DRIVERS_BSP_GEN2_INC_EXO_PINMAP_H_

#include "exo_hal_io_al_common.h"
#include "exo_io_al_gpio_common.h"
#include "exo_ahw_al_gpio_exp_common.h"


#define RTC_CLOCK_SOURCE_LSE

#define RTC_ASYNCH_PREDIV  0x7F
#define RTC_SYNCH_PREDIV   0x00FF

#define I2C1_SDA		GPIO_PIN_9  //PB9
#define I2C1_SDA_PORT	GPIOB
#define I2C1_SCL		GPIO_PIN_8  //PB8
#define I2C1_SCL_PORT	GPIOB

#define I2C2_SDA		GPIO_PIN_5  //PH5
#define I2C2_SDA_PORT	GPIOH
#define I2C2_SCL		GPIO_PIN_4  //PH4
#define I2C2_SCL_PORT	GPIOH

#define I2C3_SDA		GPIO_PIN_9  //PC9
#define I2C3_SDA_PORT	GPIOC
#define I2C3_SCL		GPIO_PIN_7  //PH7
#define I2C3_SCL_PORT	GPIOH

#define I2C4_SDA		GPIO_PIN_7  //PB7
#define I2C4_SDA_PORT	GPIOB
#define I2C4_SCL		GPIO_PIN_6  //PB6
#define I2C4_SCL_PORT	GPIOB

#define UART5_TX		GPIO_PIN_12	 //PC12
#define UART5_TX_PORT	GPIOC
#define UART5_RX		GPIO_PIN_2       //PD2
#define UART5_RX_PORT	GPIOD
#define UART4_TX		GPIO_PIN_10      //PC10
#define UART4_TX_PORT	GPIOC
#define UART4_RX		GPIO_PIN_11	 //PC11
#define UART4_RX_PORT	GPIOC
#define UART4_RTS_PAYLOAD         GPIO_PIN_14    //PB14
#define UART4_RTS_PAYLOAD_PORT    GPIOB
#define UART4_CTS_PAYLOAD         GPIO_PIN_15    //PB15
#define UART4_CTS_PAYLOAD_PORT    GPIOB

//#define SPI1_CS	         GPIO_PIN_4    //PA4
//#define SPI1_CS_PORT     GPIOA
#define SPI1_MOSI	     GPIO_PIN_7    //PD7
#define SPI1_MOSI_PORT   GPIOD
#define SPI1_MISO	     GPIO_PIN_6    //PA6
#define SPI1_MISO_PORT   GPIOA
#define SPI1_SCL	     GPIO_PIN_5    //PA5
#define SPI1_SCL_PORT    GPIOA
#define SPI1_PORT
#define SPI1_SCK_PORT

#define CAN2_TX		     GPIO_PIN_13   //PB13
#define CAN2_TX_PORT     GPIOB
#define CAN2_RX		     GPIO_PIN_12   //PB12
#define CAN_RX_PORT      GPIOB
#define CAN2_PORT

/**QUADSPI GPIO Configuration */
#define QUADSPI_BK1_IO2       GPIO_PIN_7    //PF7
#define QUADSPI_BK1_IO2_PORT  GPIOF
#define	QUADSPI_BK1_IO3       GPIO_PIN_6    //PF6
#define QUADSPI_BK1_IO3_PORT  GPIOF
#define QUADSPI_CLK  	      GPIO_PIN_10   //PF10
#define QUADSPI_CLK_PORT      GPIOF
#define QUADSPI_BK1_IO1       GPIO_PIN_9    //PF9
#define QUADSPI_BK1_IO1_PORT  GPIOF
#define QUADSPI_BK1_IO0       GPIO_PIN_8    //PF8
#define QUADSPI_BK1_IO_PORT   GPIOF
#define QUADSPI_BK1_NCS       GPIO_PIN_10   //PB10
#define QUADSPI_BK1_NCS_PORT  GPIOB

/* FMC pin mapping */
#define FMC_SDCLK  	          GPIO_PIN_8     //PG8
#define FMC_SDCLK_PORT        GPIOG
#define FMC_SDNE0             GPIO_PIN_3  	 //PH3
#define FMC_SDNE0_PORT        GPIOH
#define FMC_SDCKE0            GPIO_PIN_2         //PH2
#define FMC_SDCKE0_PORT       GPIOH
#define FMC_SDNWE  	          GPIO_PIN_0     //PC0
#define FMC_SDNWE_PORT        GPIOC
#define FMC_SDNCAS            GPIO_PIN_15        //PG15
#define FMC_SDNCAS_PORT       GPIOH
#define FMC_SDNRAS            GPIO_PIN_11        //PF11
#define FMC_SDNRAS_PORT       GPIOF

#define FMC_NE1  	          GPIO_PIN_7     //PC7
#define FMC_NE1_PORT          GPIOC
#define FMC_NOE  	          GPIOI_PIN_4    //PD4
#define FMC_NOE_PORT          GPIOD
#define FMC_NWE  	          GPIO_PIN_5     //PD5
#define FMC_NWE_PORT          GPIOD
#define FMC_NWAIT  	          GPIO_PIN_6     //PD6
#define FMC_NWAIT_PORT        GPIOD
#define FMC_NBL3  	          GPIO_PIN_5     //PI5
#define FMC_NBL3_PORT         GPIOP
#define FMC_A14               GPIO_PIN_4   	 //PG4
#define FMC_A14_PORT          GPIOG
#define FMC_A15 	          GPIO_PIN_5     //PG5
#define FMC_A15_PORT          GPIOG

#define FMC_NBL0  	          GPIO_PIN_0     //PE0
#define FMC_NBL0_PORT         GPIOE
#define FMC_NBL1  	          GPIO_PIN_1     //PE1
#define FMC_NBL1_PORT         GPIOE
#define FMC_NBL2  	          GPIO_PIN_4     //PI4
#define FMC_NBL2_PORT         GPIOi

#define FMC_A0  	          GPIO_PIN_0     //PF0
#define FMC_A0_PORT           GPIOF
#define FMC_A1  	          GPIO_PIN_1     //PF1
#define FMC_A1_PORT           GPIOF
#define FMC_A2  	          GPIO_PIN_2     //PF2
#define FMC_A2_PORT           GPIOF
#define FMC_A3  	          GPIO_PIN_3     //PF3
#define FMC_A3_PORT           GPIOF

#define FMC_A4  	          GPIO_PIN_4     //PF4
#define FMC_A4_PORT           GPIOF
#define FMC_A5  	          GPIO_PIN_5     //PF5
#define FMC_A5_PORT           GPIOF
#define FMC_A6  	          GPIO_PIN_12    //PF12
#define FMC_A6_PORT           GPIOF
#define FMC_A7  	          GPIO_PIN_13    //PF13
#define FMC_A7_PORT           GPIOF
#define FMC_A8   	          GPIO_PIN_14    //PF14
#define FMC_A8_PORT           GPIOF
#define FMC_A9  	          GPIO_PIN_15    //PF15
#define FMC_A9_PORT           GPIOF
#define FMC_A10 	          GPIO_PIN_0     //PG0
#define FMC_A10_PORT          GPIOG
#define FMC_A11 	          GPIO_PIN_1     //PG1
#define FMC_A11_PORT          GPIOG
#define FMC_A12 	          GPIO_PIN_2     //PG2
#define FMC_A12_PORT          GPIOG
#define FMC_A13 	          GPIO_PIN_3     //PG3
#define FMC_A13_PORT          GPIOG
#define FMC_A14 	          GPIO_PIN_4     //PG4
#define FMC_A14_PORT          GPIOG
#define FMC_A15 	          GPIO_PIN_5     //PG5
#define FMC_A15_PORT          GPIOG
#define FMC_A16 	          GPIO_PIN_11    //PD11
#define FMC_A16_PORT          GPIOD
#define FMC_A17 	          GPIO_PIN_12    //PD12
#define FMC_A17_PORT          GPIOD
#define FMC_A18 	          GPIO_PIN_13    //PD13
#define FMC_A18_PORT          GPIOD
#define FMC_A19 	          GPIO_PIN_3     //PE3
#define FMC_A19_PORT          GPIOE
#define FMC_A20 	          GPIO_PIN_4     //PE4
#define FMC_A20_PORT          GPIOE
#define FMC_A21 	          GPIO_PIN_5     //PE5
#define FMC_A21_PORT          GPIOE
#define FMC_A22 	          GPIO_PIN_6     //PE6
#define FMC_A22_PORT          GPIOE
#define FMC_A23               GPIO_PIN_2         //PE2
#define FMC_A23_PORT          GPIOP

#define FMC_D0		          GPIO_PIN_14    //PD14
#define FMC_D0_PORT           GPIOD
#define FMC_D1  	          GPIO_PIN_15    //PD15
#define FMC_D1_PORT           GPIOD
#define FMC_D2  	          GPIO_PIN_0     //PD0
#define FMC_D2_PORT           GPIOD
#define FMC_D3  	          GPIO_PIN_1     //PD1
#define FMC_D3_PORT           GPIOD
#define FMC_D4  	          GPIO_PIN_7     //PE7
#define FMC_D4_PORT           GPIOE
#define FMC_D5  	          GPIO_PIN_8     //PE8
#define FMC_D5_PORT           GPIOE
#define FMC_D6  	          GPIO_PIN_9     //PE9
#define FMC_D6_PORT           GPIOE
#define FMC_D7  	          GPIO_PIN_10    //PE10
#define FMC_D7_PORT           GPIOE
#define FMC_D8  	          GPIO_PIN_11    //PE11
#define FMC_D8_PORT           GPIOE
#define FMC_D9  	          GPIO_PIN_12    //PE12
#define FMC_D9_PORT           GPIOE
#define FMC_D10 	          GPIO_PIN_13    //PE13
#define FMC_D10_PORT          GPIOE
#define FMC_D11 	          GPIO_PIN_14    //PE14
#define FMC_D11_PORT          GPIOE
#define FMC_D12 	          GPIO_PIN_15    //PE15
#define FMC_D12_PORT          GPIOE
#define FMC_D13 	          GPIO_PIN_8     //PD8
#define FMC_D13_PORT          GPIOD
#define FMC_D14 	          GPIO_PIN_9     //PD9
#define FMC_D14_PORT          GPIOD
#define FMC_D15            	  GPIO_PIN_10    //PD10
#define FMC_D15_PORT          GPIOD
#define FMC_D16 	          GPIO_PIN_8     //PH8
#define FMC_D16_PORT          GPIOH
#define FMC_D17 	          GPIO_PIN_9     //PH9
#define FMC_D17_PORT          GPIOH
#define FMC_D18 	          GPIO_PIN_10    //PH10
#define FMC_D18_PORT          GPIOH
#define FMC_D19 	          GPIO_PIN_11    //PH11
#define FMC_D19_PORT          GPIOH
#define FMC_D20 	          GPIO_PIN_12    //PH12
#define FMC_D20_PORT          GPIOH
#define FMC_D21 	          GPIO_PIN_13    //PH13
#define FMC_D21_PORT          GPIOH
#define FMC_D22 	          GPIO_PIN_14    //PH14
#define FMC_D22_PORT          GPIOH
#define FMC_D23 	          GPIO_PIN_15    //PH15
#define FMC_D23_PORT          GPIOH
#define FMC_D24 	          GPIO_PIN_0     //PI0
#define FMC_D24_PORT          GPIOI
#define FMC_D25 	          GPIO_PIN_1     //PI1
#define FMC_D25_PORT          GPIOI
#define FMC_D26 	          GPIO_PIN_2     //PI2
#define FMC_D26_PORT          GPIOI
#define FMC_D27 	          GPIO_PIN_3     //PI3
#define FMC_D27_PORT          GPIOI
#define FMC_D28 	          GPIO_PIN_6     //PI6
#define FMC_D28_PORT          GPIOI
#define FMC_D29 	          GPIO_PIN_7     //PI7
#define FMC_D29_PORT          GPIOI
#define FMC_D30 	          GPIO_PIN_9     //PI9
#define FMC_D30_PORT          GPIOI
#define FMC_D31 	          GPIO_PIN_10    //PI10
#define FMC_D31_PORT          GPIOI

#define MCU_GPIO(x) ((x <<8)                 | MCU_ID)
#define MCP23008_EDGE_1_GPIO(x) ((x <<8)     | GPIO_EXPANDER_MCP23008_EDGE_1_GEN_2)
#define MCP23008_EDGE_2_GPIO(x) ((x <<8)     | GPIO_EXPANDER_MCP23008_EDGE_3_GEN_2)
#define MCP23008_EDGE_3_GPIO(x) ((x <<8)     | GPIO_EXPANDER_MCP23008_EDGE_4_GEN_2)
#define MCP23008_EDGE_4_GPIO(x) ((x <<8)     | GPIO_EXPANDER_MCP23008_EDGE_2_GEN_2)
#define MCP23008_NIC_1_GPIO(x) ((x <<8)      | GPIO_EXPANDER_MCP23008_NIC_1)
#define MCP23008_NIC_2_GPIO(x) ((x <<8)      | GPIO_EXPANDER_MCP23008_NIC_2)
#define MCP23008_NIC_3_GPIO(x) ((x <<8)      | GPIO_EXPANDER_MCP23008_NIC_3)
#define MCP23008_SSD_BRD_1_GPIO(x) ((x <<8)  | GPIO_EXPANDER_MCP23008_SSD_1)
#define MCP23008_SSD_BRD_2_GPIO(x) ((x <<8)  | GPIO_EXPANDER_MCP23008_SSD_2)
#define MCP23008_BP_BRD_GPIO(x) ((x <<8)     | GPIO_EXPANDER_MCP23008_BACK_PLANE)
#define PCAL6408A_PS_GPIO(x) ((x <<8)        | GPIO_EXPANDER_PCAL6408A_PS_GEN2)
#define MCP23008_PWR_BRD_1_GPIO(x) ((x <<8)  | GPIO_EXPANDER_MCP23008_POWER_BOARD_1)
#define MCP23008_PWR_BRD_2_GPIO(x) ((x <<8)  | GPIO_EXPANDER_MCP23008_POWER_BOARD_2)

#define PA0_WALKUP                     MCU_GPIO(IOAL_GPIO_PIN_1)
#define OPTICAL_I2C_SEL                MCU_GPIO(IOAL_GPIO_PIN_41)       //GPIO_PC8

#define SSD_EXPANDER_INTRPT            MCU_GPIO(IOAL_GPIO_PIN_4)        //GPIO_PA3
#define MCO                            MCU_GPIO(IOAL_GPIO_PIN_9)
#define SHUTDOWN_REQ                   MCU_GPIO(IOAL_GPIO_PIN_17)
#define POWER_EN                       MCU_GPIO(IOAL_GPIO_PIN_18)
#define SUS_S3_CORE                    MCU_GPIO(IOAL_GPIO_PIN_19)
#define PB4_GPIO_NJTRST                MCU_GPIO(IOAL_GPIO_PIN_21)

#define SYS_RESET                      MCU_GPIO(IOAL_GPIO_PIN_22)		//GPIO_PB5
#define CORE_IO1_EXPD_INT              MCU_GPIO(IOAL_GPIO_PIN_35)       //GPIO_PC2
#define EDGE_U40_EXPD_INT              MCU_GPIO(IOAL_GPIO_PIN_36)       //GPIO_PC3
#define PS_MUX_PC6                      MCU_GPIO(IOAL_GPIO_PIN_39)     //GPIO_PC6

#define RTC_OUT_GPIO_TP                MCU_GPIO(IOAL_GPIO_PIN_46)
#define PS_TRIGGER_SW_SEL              MCU_GPIO(IOAL_GPIO_PIN_52)       //GPIO_PD8
#define BMX160_U2_INT1                 MCU_GPIO(IOAL_GPIO_PIN_103)
#define CORE_TEM_SEN_INT               MCU_GPIO(IOAL_GPIO_PIN_104)

#define PS_USB_SEL                     MCU_GPIO(IOAL_GPIO_PIN_106)      //GPIO_PG9
#define GPIO_PG10                      MCU_GPIO(IOAL_GPIO_PIN_107)      //DUMMY_TO_BP_BRD

/*
 *  SPI_UART_PINS_CONFIGURATION
 */
#define SPI1_CS					       MCU_GPIO(IOAL_GPIO_PIN_5)        //GPIO_PA4
#define SPI_UART_IRQ		           MCU_GPIO(IOAL_GPIO_PIN_108)      //GPIO_PG11

#define BMX160_U1_INT1                 MCU_GPIO(IOAL_GPIO_PIN_109)
#define MCU2_INTERRUPT_EPS             MCU_GPIO(IOAL_GPIO_PIN_119)
#define CORE_ETH_UART5_SW_SEL          MCU_GPIO(IOAL_GPIO_PIN_137)      //GPIO_PI8
#define EDGE_GBE_SEL                   MCU_GPIO(IOAL_GPIO_PIN_140)      //GPIO_PI11
#define GPS_SW_SELECTION               MCU_GPIO(IOAL_GPIO_PIN_141)      //GPIO_PI12
#define EDGE_UART_SW_SEL               MCU_GPIO(IOAL_GPIO_PIN_142)      //GPIO_PI13
#define POER10_SEL                     MCU_GPIO(IOAL_GPIO_PIN_143)      //GPIO_PI14 
#define EPS_RST_GPIO                   MCU_GPIO(IOAL_GPIO_PIN_144)

#define PAYLOAD_PCB_SEN_ALERT          MCU_GPIO(IOAL_GPIO_PIN_161)
#define CORE_I2C2_SEL                  MCU_GPIO(IOAL_GPIO_PIN_162)      //GPIO_PK1
#define PAYLOAD_TEM_SEN_INT            MCU_GPIO(IOAL_GPIO_PIN_163)
#define EDGE_IO_INT                    MCU_GPIO(IOAL_GPIO_PIN_164)
#define ETH_INT                        MCU_GPIO(IOAL_GPIO_PIN_165)
#define ETH_RESET_N                    MCU_GPIO(IOAL_GPIO_PIN_166)
#define CORE_IO3_EXPD_INT              MCU_GPIO(IOAL_GPIO_PIN_167)      //GPIO_PK6
#define PWRBT_CORE_PCB                 MCU_GPIO(IOAL_GPIO_PIN_168)
#define GPS_IO_EXPD_INT                MCU_GPIO(IOAL_GPIO_PIN_145)
#define ADCS_PWR_EN                    MCU_GPIO(IOAL_GPIO_PIN_146)      //GPIO_PJ1
#define PG_CORE_PCB                    MCU_GPIO(IOAL_GPIO_PIN_147)
#define QUADSPI_BK1_NCS2               MCU_GPIO(IOAL_GPIO_PIN_148)
#define GPIO_PJ4                       MCU_GPIO(IOAL_GPIO_PIN_149)      //DUMMY_TO_BP_BRD
#define PS_CAN_SW_SEL                  MCU_GPIO(IOAL_GPIO_PIN_150)      //GPIO_PJ5
#define CORE_1PPS_1                    MCU_GPIO(IOAL_GPIO_PIN_151)      //GPIO_PJ6
#define CORE_PS_SW_SEL                 MCU_GPIO(IOAL_GPIO_PIN_152)      //GPIO_PJ7
#define PS_ETH_SEL                     MCU_GPIO(IOAL_GPIO_PIN_153)      //GPIO_PJ8
#define PL_IO_EXPD_INT                 MCU_GPIO(IOAL_GPIO_PIN_154)
#define GPIO_PJ10                      MCU_GPIO(IOAL_GPIO_PIN_155)      //DUMMY_TO_BP_BRD
#define PAY_CAN_SWSELECTION            MCU_GPIO(IOAL_GPIO_PIN_156)      //GPIO_PJ11
#define SSD_HEAT_ENABLE                MCU_GPIO(IOAL_GPIO_PIN_157)
#define CORE_IO2_EXPD_INT              MCU_GPIO(IOAL_GPIO_PIN_158)      //GPIO_PJ13
#define RESETBT_CORE_PCB               MCU_GPIO(IOAL_GPIO_PIN_159)
#define CORE_EDGE_SW_SEL               MCU_GPIO(IOAL_GPIO_PIN_160)      //GPIO_PJ15


#define E1_EN_5V_EDGE                  MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_0)
#define E1_EDGE_TEM_SEN_INT            MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_1)
#define E1_EN_1P8V_EDGE                MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_2)
#define E1_EN_3P3V_EDGE                MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_3)
#define E1_PGOOD_1P8V_EDGE             MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_4)
#define E1_PGOOD_3P3V_EDGE             MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_5)
#define MUX_SSD_EN1                    MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_6)
#define MUX_SSD_EN2                    MCP23008_EDGE_1_GPIO(GPIO_EXP_GPIO_7)

#define CLK_EN_A_B                     MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_0)
#define SSD_RST_CON_ENB                MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_1)
#define SSD_WAKE_CON_ENB               MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_2)
#define E1_FORCE_RECOVERY_LT           MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_3)
#define E2_FORCE_RECOVERY_LT           MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_4)
#define E2_EDGE_TEM_SEN_INT            MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_5)
#define CONN2_PCIE0_CLKREQ             MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_6)
#define CONN1_PCIE0_CLKREQ             MCP23008_EDGE_2_GPIO(GPIO_EXP_GPIO_7)

#define E2_EN_5V_EDGE                  MCP23008_EDGE_3_GPIO(GPIO_EXP_GPIO_0)
#define E2_EN_1P8V_EDGE                MCP23008_EDGE_3_GPIO(GPIO_EXP_GPIO_2)
#define E2_EN_3P3V_EDGE_EN             MCP23008_EDGE_3_GPIO(GPIO_EXP_GPIO_3)
#define E2_PGOOD_1P8V_EDGE             MCP23008_EDGE_3_GPIO(GPIO_EXP_GPIO_4)
#define E2_PGOOD_3P3V_EDGE             MCP23008_EDGE_3_GPIO(GPIO_EXP_GPIO_5)
#define USB_PD1_PD2                    MCP23008_EDGE_3_GPIO(GPIO_EXP_GPIO_6)
#define USB_SEL1_SEL2                  MCP23008_EDGE_3_GPIO(GPIO_EXP_GPIO_7)

#define SSD_RST_ENB                    MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_0)
#define SSD_WAKE_ENB                   MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_1)
#define EI_SEL1_SEL2                   MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_2)
#define E2_SEL1_SEL2                   MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_3)
#define SSD0_SEL1_SEL2                 MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_4)
#define SSD1_SEL1_SEL2                 MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_5)
#define E1_E2_PD                       MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_6)
#define SSD0_SSD1_PD                   MCP23008_EDGE_4_GPIO(GPIO_EXP_GPIO_7)

#define NIC_PORT1_SEL                      MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_0)
#define NIC_PORT2_SEL                      MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_1)
#define NIC_PORT3_SEL                      MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_2)
#define NIC_PORT4_SEL                      MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_3)
#define NIC_PORT6_SEL                      MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_4)
#define NIC_PORT7_SEL                      MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_5)
#define NIC_PORT8_SEL                      MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_6)
#define NIC_PORT10_SEL                     MCP23008_NIC_1_GPIO(GPIO_EXP_GPIO_7)

#define A_ETH_DCDC1_ON                 MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_0)
#define A_ETH_DCDC2_ON                 MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_1)
#define A_DVDDL_PG                     MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_2)
#define A_DVDDIO_PG                    MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_3)
#define PORT10_USB_SEL                 MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_4)
#define A2_ETH_RESET                   MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_5)
#define IO_BOARD_ON                    MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_6)
#define FDTI_RESETN                    MCP23008_NIC_2_GPIO(GPIO_EXP_GPIO_7)

#define B_ETH_DCDC1_ON                 MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_0)
#define B_ETH_DCDC2_ON                 MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_1)
#define B_DVDDL_PG                     MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_2)
#define B_DVDDIO_PG                    MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_3)
#define B1_ETH_RESET                   MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_4)
#define B2_ETH_RESET                   MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_5)
#define MUX_PD_ENABLE                  MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_6)
#define IO_TEM_SEN_INT                 MCP23008_NIC_3_GPIO(GPIO_EXP_GPIO_7)

#define SSD_MUX_SW_IN1                 MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_0)
#define SSD_MUX_SW_IN2                 MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_1)
#define REDRIVER_SW_IN1                MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_2)
#define REDRIVER_SW_IN2                MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_3)
#define CON_MUX_SW_IN1                 MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_4)
#define CON_MUX_SW_IN2                 MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_5)
#define CLK_SSD_EN_A_B                 MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_6)
#define ALL_MUX_ENABLE                 MCP23008_SSD_BRD_1_GPIO(GPIO_EXP_GPIO_7)

#define SSD_EN1                        MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_0)
#define SSD_EN2                        MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_1)
#define SSD_EN3                        MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_2)
#define SSD_EN4                        MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_3)
#define SSD1_SSD3_PD                   MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_4)
#define A_SSD1_SSD2_PD                 MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_5)
#define B_SSD1_SSD2_PD                 MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_6)
#define SSD2_SSD4_PD                   MCP23008_SSD_BRD_2_GPIO(GPIO_EXP_GPIO_7)

#define ETH_VDD3V3_EN                  PCAL6408A_PS_GPIO(GPIO_EXP_GPIO_0)
#define ETH_VDD3V3_PG                  PCAL6408A_PS_GPIO(GPIO_EXP_GPIO_1)
#define PAYLOAD_VCC_ENABLE             PCAL6408A_PS_GPIO(GPIO_EXP_GPIO_2)
#define PAYLOAD_SB_ENABLE              PCAL6408A_PS_GPIO(GPIO_EXP_GPIO_3)
#define PAYLOAD_SSD_CORE_ENABLE        PCAL6408A_PS_GPIO(GPIO_EXP_GPIO_4)
#define ETH_RESET                      PCAL6408A_PS_GPIO(GPIO_EXP_GPIO_6)

#define SPI_IRQ                        MCP23008_BP_BRD_GPIO(GPIO_EXP_GPIO_0)
#define SPI_UART_RST                   MCP23008_BP_BRD_GPIO(GPIO_EXP_GPIO_1)
#define PL72A1_RESET                   MCP23008_BP_BRD_GPIO(GPIO_EXP_GPIO_2)
#define GPS_ON                         MCP23008_BP_BRD_GPIO(GPIO_EXP_GPIO_3)
#define BP_PWR_EN                      MCP23008_BP_BRD_GPIO(GPIO_EXP_GPIO_4)
#define NRESET_IN                      MCP23008_BP_BRD_GPIO(GPIO_EXP_GPIO_5)

#define E1_SSD0_HEAT_EN                MCP23008_PWR_BRD_1_GPIO(GPIO_EXP_GPIO_0)
#define E2_SSD0_HEAT_EN                MCP23008_PWR_BRD_1_GPIO(GPIO_EXP_GPIO_1)
#define SSD_HEAT_TOP1_EN               MCP23008_PWR_BRD_1_GPIO(GPIO_EXP_GPIO_2)
#define SSD_HEAT_TOP2_EN               MCP23008_PWR_BRD_1_GPIO(GPIO_EXP_GPIO_3)
#define SSD_HEAT_BOT1_EN               MCP23008_PWR_BRD_1_GPIO(GPIO_EXP_GPIO_4)
#define SSD_HEAT_BOT2_EN               MCP23008_PWR_BRD_1_GPIO(GPIO_EXP_GPIO_5)
#define CORE_PCB_SEN_ALERT             MCP23008_PWR_BRD_1_GPIO(GPIO_EXP_GPIO_6)

#define PS1_PCB_SEN_ALERT              MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_0)
#define PS2_PCB_SEN_ALERT              MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_1)
#define PAY_LOAD1_ALERT                MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_2)
#define PAY_LOAD2_ALERT                MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_3)
#define IO_PCB_SEN_ALERT               MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_4)
#define E1_PCB_SEN_ALERT               MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_5)
#define CORE2_PCB_SEN_ALERT            MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_6)
#define E2_PCB_SEN_ALERT               MCP23008_PWR_BRD_2_GPIO(GPIO_EXP_GPIO_7)

#endif /* DRIVERS_BSP_GEN2_INC_EXO_PINMAP_H_ */
