#ifdef GEN2

#include "mux.h"
#include "exo_osal.h"
#include "exo_pinmap.h"
#include "drivers_test.h"
#include "exo_gpio.h"
#include "exo_ahw_al_gpio_exp_common.h"

#define SUCCESS 0
#define FAILURE 1

extern ahw_al_gpio_exp_hdle hgpio_exp_nic1;

/*
 * This function select the Payload board
 */
uint8_t paylaod_board_select(ps_brd_ssd_id ps_brd_id)
{
	uint8_t sts = 0;
	if(PAYLOAD_ID_1 == ps_brd_id.ps_id)
	{

		/*
		 *  PAYLOAD_A WORKING
		 */
		power_board_test_ps2_off();
		power_board_test_ps1_on();
		/**** MUX PIN ****/
		os_delay(50);
		io_hal_gpio_writepin(PS_MUX_PC6,GPIO_EXP_PIN_RESET);    ///< PC6
		io_hal_gpio_writepin(PS_CAN_SW_SEL,GPIO_EXP_PIN_RESET); ///< PJ5
		io_hal_gpio_writepin(PS_TRIGGER_SW_SEL,GPIO_EXP_PIN_RESET);///< PD8
		io_hal_gpio_writepin(PS_ETH_SEL,GPIO_EXP_PIN_RESET);    ///< PJ8
		io_hal_gpio_writepin(PS_USB_SEL,GPIO_EXP_PIN_SET);  ///< PG9

		/*** u13 payload expander => 18 ***/
		io_hal_gpio_writepin(PAYLOAD_SSD_CORE_ENABLE,GPIO_EXP_PIN_SET);     ///< GP4  // 3.3v payload power supply
		os_delay(1);
		io_hal_gpio_writepin(PAYLOAD_SB_ENABLE,GPIO_EXP_PIN_SET);           ///< GP3  // 5v pin enable after Q7 power supply go
		os_delay(1);
		io_hal_gpio_writepin(PAYLOAD_VCC_ENABLE,GPIO_EXP_PIN_SET);          ///< GP2
		io_hal_gpio_writepin(ETH_VDD3V3_EN,GPIO_EXP_PIN_SET);               ///< GP0
		os_delay(10);
		io_hal_gpio_writepin(ETH_RESET,GPIO_EXP_PIN_SET);                   ///< GP6
		ssd_board_init();
	}

	else if(PAYLOAD_ID_2 == ps_brd_id.ps_id)
	{
		power_board_test_ps1_off();
		power_board_test_ps2_on();
		/**** MUX PIN ****/
		io_hal_gpio_writepin(PS_MUX_PC6,GPIO_EXP_PIN_SET);                    ///< PC6
		io_hal_gpio_writepin(PS_CAN_SW_SEL,GPIO_EXP_PIN_SET);                 ///< PJ5
		io_hal_gpio_writepin(PS_TRIGGER_SW_SEL,GPIO_EXP_PIN_SET);             ///< PD8
		io_hal_gpio_writepin(PS_ETH_SEL,GPIO_EXP_PIN_SET);                    ///< PJ8
		io_hal_gpio_writepin(CORE_EDGE_SW_SEL,GPIO_EXP_PIN_RESET);            ///< PJ15
		io_hal_gpio_writepin(PS_USB_SEL,GPIO_EXP_PIN_RESET);                  ///< PG9

		//gpio_exp_pcal6408a_payload_board(PCAL6408A_SLV_ADDR);
		/*** u13 payload expander ***/
		io_hal_gpio_writepin(PAYLOAD_SSD_CORE_ENABLE,GPIO_EXP_PIN_SET);     ///< GP4  // 3.3v payload power supply
		os_delay(1);
		io_hal_gpio_writepin(PAYLOAD_SB_ENABLE,GPIO_EXP_PIN_SET);           ///< GP3  // 5v pin enable after Q7 power supply go
		os_delay(1);
		io_hal_gpio_writepin(PAYLOAD_VCC_ENABLE,GPIO_EXP_PIN_SET);          ///< GP2
		io_hal_gpio_writepin(ETH_VDD3V3_EN,GPIO_EXP_PIN_SET);               ///< GP0
		os_delay(10);
		io_hal_gpio_writepin(ETH_RESET,GPIO_EXP_PIN_SET);                   ///< GP6
		ssd_board_init();
	}

	/*
	 * This condition will turn off the both payload board
	 */
	else if(PAYLOAD_ID_3 == ps_brd_id.ps_id)
	{
		power_board_test_ps1_off();
		power_board_test_ps2_off();
		sts = 1;
	}

	/*
	 * Payload SSD init sequence
	 */
	if(PAYLOAD_SSD_1 == ps_brd_id.ps_ssd_id)
	{
#if 1
		io_hal_gpio_writepin(REDRIVER_SW_IN2,GPIO_EXP_PIN_SET); ///< U16 => GP3
		//< If the pin keep high it will become low.So when it will low the ssd_0 will select.
		io_hal_gpio_writepin(CON_MUX_SW_IN2,GPIO_EXP_PIN_SET);  ///< U16 => GP5
		io_hal_gpio_writepin(SSD_EN1,GPIO_EXP_PIN_SET);         ///< U18 => GP0
/*
 *Testing purpose
 */
		os_delay(200);
		io_hal_gpio_writepin(SSD_EN4,GPIO_EXP_PIN_SET);                     ///< U18 => GP3

//		for(uint8_t i=0 ; i <5 ; i++)
//		{
//			io_hal_gpio_writepin(SSD_MUX_SW_IN1,GPIO_EXP_PIN_SET);  ///< U16 => GP0
//			io_hal_gpio_writepin(SSD_MUX_SW_IN1,GPIO_EXP_PIN_RESET);  ///< U16 => GP0
//		}
#endif
#if 0
		/*** Testing purpose for ps-1 ssd ***/
//		io_hal_gpio_writepin(ALL_MUX_ENABLE,GPIO_EXP_PIN_RESET);         ///< U16 => GP7
//		io_hal_gpio_writepin(CLK_SSD_EN_A_B,GPIO_EXP_PIN_SET);           ///< U16 => GP6
        io_hal_gpio_writepin(SSD_MUX_SW_IN1,GPIO_EXP_PIN_SET);           ///< U16 => GP0
		io_hal_gpio_writepin(CON_MUX_SW_IN1,GPIO_EXP_PIN_SET);           ///< U16 => GP4
		io_hal_gpio_writepin(SSD_EN1,GPIO_EXP_PIN_SET);                  ///< U18 => GP0  /* ssd power pin */
//		io_hal_gpio_writepin(SSD_MUX_SW_IN1,GPIO_EXP_PIN_SET);           ///< U16 => GP0
//		io_hal_gpio_writepin(SSD1_SSD3_PD,GPIO_EXP_PIN_RESET);           ///< U18 => GP4
//		io_hal_gpio_writepin(A_SSD1_SSD2_PD,GPIO_EXP_PIN_RESET);         ///< U18 => GP5
//		io_hal_gpio_writepin(B_SSD1_SSD2_PD,GPIO_EXP_PIN_RESET);         ///< U18 => GP6
//		io_hal_gpio_writepin(SSD2_SSD4_PD,GPIO_EXP_PIN_RESET);           ///< U18 => GP7
#endif
	}
	else if(PAYLOAD_SSD_2 == ps_brd_id.ps_ssd_id)
	{
		io_hal_gpio_writepin(ALL_MUX_ENABLE,GPIO_EXP_PIN_RESET);         ///< U16 => GP7
		io_hal_gpio_writepin(SSD1_SSD3_PD,GPIO_EXP_PIN_RESET);           ///< U18 => GP4
		io_hal_gpio_writepin(A_SSD1_SSD2_PD,GPIO_EXP_PIN_RESET);         ///< U18 => GP5
		io_hal_gpio_writepin(B_SSD1_SSD2_PD,GPIO_EXP_PIN_RESET);         ///< U18 => GP6
		io_hal_gpio_writepin(SSD2_SSD4_PD,GPIO_EXP_PIN_RESET);           ///< U18 => GP7

		io_hal_gpio_writepin(CON_MUX_SW_IN2,GPIO_EXP_PIN_RESET);  ///< U16 => GP5
		io_hal_gpio_writepin(CON_MUX_SW_IN1,GPIO_EXP_PIN_SET);    ///< U16 => GP4  /* Testing purpose */
		io_hal_gpio_writepin(SSD_EN2,GPIO_EXP_PIN_SET);           ///< U18 => GP1
		io_hal_gpio_writepin(CLK_SSD_EN_A_B,GPIO_EXP_PIN_SET);    ///< U16 => GP6
#if 0
		io_hal_gpio_writepin(CON_MUX_SW_IN2,GPIO_EXP_PIN_RESET);  ///< U16 => GP5
		io_hal_gpio_writepin(CLK_SSD_EN_A_B,GPIO_EXP_PIN_SET);    ///< U16 => GP6
#endif
	}
	else if(PAYLOAD_SSD_3 == ps_brd_id.ps_ssd_id)
	{
		io_hal_gpio_writepin(CON_MUX_SW_IN2,GPIO_EXP_PIN_SET);///< U16 => GP5
		io_hal_gpio_writepin(SSD_EN3,GPIO_EXP_PIN_SET);       ///< U18 => GP2
	}
	else if(PAYLOAD_SSD_4 == ps_brd_id.ps_ssd_id)
	{
		io_hal_gpio_writepin(CON_MUX_SW_IN1,GPIO_EXP_PIN_SET);///< U16 => GP4
		io_hal_gpio_writepin(SSD_EN4,GPIO_EXP_PIN_SET);       ///< U18 => GP3
	}

	return sts;
}

/*
 * This function select the Edge board
 */
uint8_t edge_board_select(uint8_t edge_brd_id)
{
	uint8_t sts = 0;
	if(EDGE_ID_1 == edge_brd_id)
	{
		edge1_power_board_sel_on();
		edge2_power_board_sel_off();

		io_hal_gpio_writepin(EDGE_UART_SW_SEL,GPIO_EXP_PIN_SET);           ///< GI13
		io_hal_gpio_writepin(EDGE_GBE_SEL,GPIO_EXP_PIN_RESET);             ///< GI11
		io_hal_gpio_writepin(QUADSPI_BK1_NCS2,GPIO_EXP_PIN_RESET);         ///< GJ3
		//GPIO_EXPANDER_U16
		os_delay(1000);
		io_hal_gpio_writepin(E1_EN_5V_EDGE,GPIO_EXP_PIN_SET);              ///< GP0
		os_delay(1000);
		// SSD BOOT PIN
		io_hal_gpio_writepin(MUX_SSD_EN1,GPIO_EXP_PIN_SET);               ///<U16 => GP6  SSD POWER ENABLES
		io_hal_gpio_writepin(MUX_SSD_EN2,GPIO_EXP_PIN_SET);               ///<U16 => GP7  SSD POWER ENABLES


		io_hal_gpio_writepin(E1_EN_1P8V_EDGE,GPIO_EXP_PIN_SET);            ///< GP2
		io_hal_gpio_writepin(E1_EN_3P3V_EDGE,GPIO_EXP_PIN_SET);            ///< GP3
		//GPIO_EXPANDER_U38
		//os_delay(1000);
		io_hal_gpio_writepin(E2_EN_5V_EDGE,GPIO_EXP_PIN_RESET);            ///< GP0
		io_hal_gpio_writepin(E2_EN_1P8V_EDGE,GPIO_EXP_PIN_RESET);          ///< GP2
		io_hal_gpio_writepin(E2_EN_3P3V_EDGE_EN,GPIO_EXP_PIN_RESET);       ///< GP3
		io_hal_gpio_writepin(USB_SEL1_SEL2,GPIO_EXP_PIN_RESET);            ///< GP7
		//edge_board_ssd_select(2);

	}

	else if (EDGE_ID_2 == edge_brd_id)
	{

		edge1_power_board_sel_off();
		edge2_power_board_sel_on();

		/*****  MUX  PIN  *******/
		io_hal_gpio_writepin(EDGE_UART_SW_SEL,GPIO_EXP_PIN_RESET);                ///< GI13
		io_hal_gpio_writepin(QUADSPI_BK1_NCS2,GPIO_EXP_PIN_SET);           ///< GJ3
		io_hal_gpio_writepin(EDGE_GBE_SEL,GPIO_EXP_PIN_SET);                  ///< GI11

		//GPIO_EXPANDER_U16
		io_hal_gpio_writepin(E1_EN_5V_EDGE,GPIO_EXP_PIN_RESET);            ///< GP0
		io_hal_gpio_writepin(E1_EN_1P8V_EDGE,GPIO_EXP_PIN_RESET);          ///< GP2
		io_hal_gpio_writepin(E1_EN_3P3V_EDGE,GPIO_EXP_PIN_RESET);          ///< GP3
		//GPIO_EXPANDER_U38
		os_delay(1000);
		io_hal_gpio_writepin(E2_EN_5V_EDGE,GPIO_EXP_PIN_SET);              ///< GP0
		os_delay(100);
		io_hal_gpio_writepin(E2_EN_1P8V_EDGE,GPIO_EXP_PIN_SET);            ///< GP2
		io_hal_gpio_writepin(E2_EN_3P3V_EDGE_EN,GPIO_EXP_PIN_SET);         ///< GP3
		io_hal_gpio_writepin(USB_SEL1_SEL2,GPIO_EXP_PIN_SET);              ///< GP7
	}

	/*
	 * This condition will turn off the both edge board
	 */
	else if (EDGE_ID_3 == edge_brd_id)
	{
		edge1_power_board_sel_off();
		edge2_power_board_sel_off();
		sts = 1;
	}
	return sts;
}

/*
 * This function select the Edge SSD
 */
uint8_t edge_board_ssd_select(uint8_t edge_brd_ssd_id)
{
	if(EDGE_BRD_SSD_1 == edge_brd_ssd_id)
	{
		io_hal_gpio_writepin(CLK_EN_A_B,GPIO_EXP_PIN_SET);        ///< U37 => GP0 After power enable clk pin need to high
		/*** U40 ***/
		io_hal_gpio_writepin(SSD_RST_ENB,GPIO_EXP_PIN_SET);       ///<GP0
		io_hal_gpio_writepin(SSD_WAKE_ENB,GPIO_EXP_PIN_SET);      ///< GP1
		io_hal_gpio_writepin(EI_SEL1_SEL2,GPIO_EXP_PIN_SET);      ///< GP2
		io_hal_gpio_writepin(SSD1_SEL1_SEL2,GPIO_EXP_PIN_RESET);  ///< GP5
		/*** u37 ***/
		io_hal_gpio_writepin(SSD_RST_CON_ENB,GPIO_EXP_PIN_SET);   ///< GP1
		io_hal_gpio_writepin(SSD_WAKE_CON_ENB,GPIO_EXP_PIN_SET);  ///< GP2
	}

	else if(EDGE_BRD_SSD_2 == edge_brd_ssd_id)
	{


		io_hal_gpio_writepin(CLK_EN_A_B,GPIO_EXP_PIN_SET);   ///< GP0
		/*** U40 ***/
		io_hal_gpio_writepin(SSD_RST_ENB,GPIO_EXP_PIN_SET);    ///<GP0
		io_hal_gpio_writepin(SSD_WAKE_ENB,GPIO_EXP_PIN_SET);   ///< GP1
		io_hal_gpio_writepin(EI_SEL1_SEL2,GPIO_EXP_PIN_SET);   ///< GP2
		io_hal_gpio_writepin(SSD1_SEL1_SEL2,GPIO_EXP_PIN_RESET);///< GP5

		/*** u37 ***/
		io_hal_gpio_writepin(SSD_RST_CON_ENB,GPIO_EXP_PIN_SET);///< GP1
		io_hal_gpio_writepin(SSD_WAKE_CON_ENB,GPIO_EXP_PIN_SET); ///< GP2

	}

	else if(EDGE_BRD_SSD_3 == edge_brd_ssd_id)
	{
		io_hal_gpio_writepin(MUX_SSD_EN1,GPIO_EXP_PIN_SET);             ///< GP6
		io_hal_gpio_writepin(MUX_SSD_EN2,GPIO_EXP_PIN_SET);             ///< GP7
		os_delay(1000);
		//GPIO_EXPANDER_U37
		io_hal_gpio_writepin(CLK_EN_A_B,GPIO_EXP_PIN_RESET);            ///< GP0
		io_hal_gpio_writepin(SSD_RST_CON_ENB,GPIO_EXP_PIN_RESET);       ///< GP1
		io_hal_gpio_writepin(SSD_WAKE_CON_ENB,GPIO_EXP_PIN_RESET);      ///< GP2
		//GPIO_EXPANDER_U40
		io_hal_gpio_writepin(SSD_RST_ENB,GPIO_EXP_PIN_RESET);           ///< GP0
		io_hal_gpio_writepin(SSD_WAKE_ENB,GPIO_EXP_PIN_RESET);          ///< GP1
		io_hal_gpio_writepin(EI_SEL1_SEL2,GPIO_EXP_PIN_SET);            ///< GP2
		io_hal_gpio_writepin(E2_SEL1_SEL2,GPIO_EXP_PIN_RESET);          ///< GP3
		io_hal_gpio_writepin(SSD0_SEL1_SEL2,GPIO_EXP_PIN_SET);          ///< GP4
		io_hal_gpio_writepin(SSD1_SEL1_SEL2,GPIO_EXP_PIN_RESET);        ///< GP5
	}

	else if(EDGE_BRD_SSD_4 == edge_brd_ssd_id)
	{
		//GPIO_EXPANDER_U40
		io_hal_gpio_writepin(SSD_RST_ENB,GPIO_EXP_PIN_RESET);           ///< GP0
		io_hal_gpio_writepin(SSD_WAKE_ENB,GPIO_EXP_PIN_RESET);          ///< GP1
		io_hal_gpio_writepin(E2_SEL1_SEL2,GPIO_EXP_PIN_SET);            ///< GP3
		//io_hal_gpio_writepin(SSD0_SEL1_SEL2,GPIO_EXP_PIN_SET);        ///< GP4
		io_hal_gpio_writepin(SSD1_SEL1_SEL2,GPIO_EXP_PIN_SET);          ///< GP5
		//GPIO_EXPANDER_U16
		io_hal_gpio_writepin(MUX_SSD_EN1,GPIO_EXP_PIN_SET);             ///< GP6
		io_hal_gpio_writepin(MUX_SSD_EN2,GPIO_EXP_PIN_SET);             ///< GP7
		//GPIO_EXPANDER_U37
		io_hal_gpio_writepin(CLK_EN_A_B,GPIO_EXP_PIN_RESET);            ///< GP0
		io_hal_gpio_writepin(SSD_RST_CON_ENB,GPIO_EXP_PIN_RESET);       ///< GP1
		io_hal_gpio_writepin(SSD_WAKE_CON_ENB,GPIO_EXP_PIN_RESET);      ///< GP2
	}
	return 0;
}

/*
 * This function select the IO board
 */
uint8_t io_board_select(uint8_t io_brd_id)
{
	uint8_t sts = 0;
	ioal_gpio_config ioal_gpio_cfg;

	io_hal_gpio_writepin(IO_BOARD_ON,GPIO_EXP_PIN_SET);            /// U4 => GP6
	io_hal_gpio_writepin(MUX_PD_ENABLE,GPIO_EXP_PIN_RESET);        /// U5 => GP6
	io_hal_gpio_writepin(FDTI_RESETN,GPIO_EXP_PIN_SET);            /// U4 => GP7

	ahw_al_gpio_exp_init(&hgpio_exp_nic1,GPIO_EXPANDER_MCP23008_NIC_1);

	ioal_gpio_cfg.pin_number = NIC_PORT1_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	ioal_gpio_cfg.pin_number = NIC_PORT2_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	ioal_gpio_cfg.pin_number = NIC_PORT3_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	ioal_gpio_cfg.pin_number = NIC_PORT4_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	ioal_gpio_cfg.pin_number = NIC_PORT6_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	ioal_gpio_cfg.pin_number = NIC_PORT7_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	ioal_gpio_cfg.pin_number = NIC_PORT8_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	ioal_gpio_cfg.pin_number = NIC_PORT10_SEL;
	ioal_gpio_cfg.mode = IOAL_GPIO_MODE_OUTPUT_PP;
	ioal_gpio_cfg.pull_sts = IOAL_GPIO_NOPULL;
	ioal_gpio_cfg.external_int.isr_handler =NULL;
	ioal_gpio_cfg.external_int.isr_args = NULL;
	io_hal_gpio_init(&ioal_gpio_cfg);

	if(IO_BRD_1 == io_brd_id)
	{

		/*** U2 ***/
		io_hal_gpio_writepin(NIC_PORT1_SEL,GPIO_EXP_PIN_RESET);           ///< GP0
		io_hal_gpio_writepin(NIC_PORT2_SEL,GPIO_EXP_PIN_RESET);           ///< GP1
		io_hal_gpio_writepin(NIC_PORT3_SEL,GPIO_EXP_PIN_RESET);           ///< GP2
		io_hal_gpio_writepin(NIC_PORT4_SEL,GPIO_EXP_PIN_RESET);           ///< GP3
		io_hal_gpio_writepin(NIC_PORT6_SEL,GPIO_EXP_PIN_RESET);           ///< GP4
		io_hal_gpio_writepin(NIC_PORT7_SEL,GPIO_EXP_PIN_RESET);           ///< GP5
		io_hal_gpio_writepin(NIC_PORT8_SEL,GPIO_EXP_PIN_RESET);           ///< GP6
		io_hal_gpio_writepin(NIC_PORT10_SEL,GPIO_EXP_PIN_RESET);          ///< GP7
		/*** U5 ***/
		io_hal_gpio_writepin(B_ETH_DCDC1_ON,GPIO_EXP_PIN_RESET);      ///< GP0
		io_hal_gpio_writepin(B_ETH_DCDC2_ON,GPIO_EXP_PIN_RESET);      ///< GP1
		io_hal_gpio_writepin(B1_ETH_RESET,GPIO_EXP_PIN_RESET);        ///< GP4
		io_hal_gpio_writepin(B2_ETH_RESET,GPIO_EXP_PIN_RESET);        ///< GP5


		/*** U4 ***/
		io_hal_gpio_writepin(A_ETH_DCDC1_ON,GPIO_EXP_PIN_SET);        ///< GP0
		io_hal_gpio_writepin(A_ETH_DCDC2_ON,GPIO_EXP_PIN_SET);        ///< GP1
		os_delay(10);
		io_hal_gpio_writepin(PORT10_USB_SEL,GPIO_EXP_PIN_RESET);        ///< GP4
		os_delay(100);
		io_hal_gpio_writepin(PORT10_USB_SEL,GPIO_EXP_PIN_SET);          ///< GP4
		os_delay(1000);
		io_hal_gpio_writepin(A2_ETH_RESET,GPIO_EXP_PIN_RESET);        ///< GP5
		os_delay(100);
		io_hal_gpio_writepin(A2_ETH_RESET,GPIO_EXP_PIN_SET);          ///< GP5

		/** R2  IO_BRD_SEQ **/
//		io_hal_gpio_writepin(A_ETH_DCDC1_ON,GPIO_EXP_PIN_SET);        /// U4 -> GP0
//		io_hal_gpio_writepin(A_ETH_DCDC2_ON,GPIO_EXP_PIN_SET);        /// U4 -> GP1
//		os_delay(10);
////		io_hal_gpio_writepin(PORT10_USB_SEL,GPIO_EXP_PIN_RESET);      /// U4 -> GP4
//		/** TEST PURPOSE **/
//		io_hal_gpio_writepin(PORT10_USB_SEL,GPIO_EXP_PIN_SET);      /// U4 -> GP4
//
//		os_delay(1000);
//		io_hal_gpio_writepin(A2_ETH_RESET,GPIO_EXP_PIN_RESET);        /// U4 -> GP5
//		os_delay(100);
//		io_hal_gpio_writepin(A2_ETH_RESET,GPIO_EXP_PIN_SET);          /// U4 -> GP5
//		io_hal_gpio_writepin(IO_BOARD_ON,GPIO_EXP_PIN_SET);           /// U4 -> GP6
//		io_hal_gpio_writepin(MUX_PD_ENABLE,GPIO_EXP_PIN_SET);        /// U5 -> GP6
	}

	else if(IO_BRD_2 == io_brd_id)
	{

		/*** U2 ***/
		io_hal_gpio_writepin(NIC_PORT1_SEL,GPIO_EXP_PIN_SET);              ///< GP0
		io_hal_gpio_writepin(NIC_PORT2_SEL,GPIO_EXP_PIN_SET);              ///< GP1
		io_hal_gpio_writepin(NIC_PORT3_SEL,GPIO_EXP_PIN_SET);              ///< GP2
		io_hal_gpio_writepin(NIC_PORT4_SEL,GPIO_EXP_PIN_SET);              ///< GP3
		io_hal_gpio_writepin(NIC_PORT6_SEL,GPIO_EXP_PIN_SET);              ///< GP4
		io_hal_gpio_writepin(NIC_PORT7_SEL,GPIO_EXP_PIN_SET);              ///< GP5
		io_hal_gpio_writepin(NIC_PORT8_SEL,GPIO_EXP_PIN_SET);              ///< GP6
		io_hal_gpio_writepin(NIC_PORT10_SEL,GPIO_EXP_PIN_SET);             ///< GP7

		/*** U4 ***/
		io_hal_gpio_writepin(A_ETH_DCDC1_ON,GPIO_EXP_PIN_RESET);       ///< GP0
		io_hal_gpio_writepin(A_ETH_DCDC2_ON,GPIO_EXP_PIN_RESET);       ///< GP1
//		io_hal_gpio_writepin(PORT10_USB_SEL,GPIO_EXP_PIN_RESET);         ///< GP4

		/** TEST PURPOSE **/
		io_hal_gpio_writepin(PORT10_USB_SEL,GPIO_EXP_PIN_SET);      /// U4 -> GP4

		io_hal_gpio_writepin(A2_ETH_RESET,GPIO_EXP_PIN_RESET);         ///< GP5

		/*** U5 ***/
		io_hal_gpio_writepin(B_ETH_DCDC1_ON,GPIO_EXP_PIN_SET);         ///< GP0
		io_hal_gpio_writepin(B_ETH_DCDC2_ON,GPIO_EXP_PIN_SET);         ///< GP1
		os_delay(10);

		io_hal_gpio_writepin(B1_ETH_RESET,GPIO_EXP_PIN_RESET);         ///< GP4
		os_delay(100);

		io_hal_gpio_writepin(B1_ETH_RESET,GPIO_EXP_PIN_SET);           ///< GP4
		os_delay(1000);

		io_hal_gpio_writepin(B2_ETH_RESET,GPIO_EXP_PIN_RESET);         ///< GP5
		os_delay(100);

		io_hal_gpio_writepin(B2_ETH_RESET,GPIO_EXP_PIN_SET);           ///< GP5
		io_hal_gpio_writepin(MUX_PD_ENABLE,GPIO_EXP_PIN_SET);          ///< GP6
	}
	return sts;
}

/*
 * This function select Core Board A or B
 */
uint8_t back_plane_brd_select()
{
	io_hal_gpio_writepin(GPIO_PJ4,GPIO_EXP_PIN_RESET);                    ///< PJ4
	io_hal_gpio_writepin(CORE_I2C2_SEL,GPIO_EXP_PIN_SET);                 ///< PK1
	return 0;
}

/*
 * In this function pins are common mugs pin
 */
uint8_t common_mux_pin_select()
{
	io_hal_gpio_writepin(CORE_ETH_UART5_SW_SEL,GPIO_EXP_PIN_SET);     ///< PI8
	io_hal_gpio_writepin(CORE_PS_SW_SEL,GPIO_EXP_PIN_SET);            ///< PJ7
	io_hal_gpio_writepin(PWRBT_CORE_PCB,GPIO_EXP_PIN_RESET);          ///< PK7
	io_hal_gpio_writepin(SYS_RESET,GPIO_EXP_PIN_RESET);               ///< PB5
	return 0;
}
/*
 *In this function gpio expander pins are used to power board heat init
 */
uint8_t power_brd_heat_init()
{
	/**U3**/
	io_hal_gpio_writepin(E1_SSD0_HEAT_EN,GPIO_EXP_PIN_SET);           ///< GP0
	io_hal_gpio_writepin(E2_SSD0_HEAT_EN,GPIO_EXP_PIN_SET);           ///< GP1
	io_hal_gpio_writepin(SSD_HEAT_TOP1_EN,GPIO_EXP_PIN_SET);          ///< GP2
	io_hal_gpio_writepin(SSD_HEAT_TOP2_EN,GPIO_EXP_PIN_SET);          ///< GP3
	io_hal_gpio_writepin(SSD_HEAT_BOT1_EN,GPIO_EXP_PIN_SET);          ///< GP4
	io_hal_gpio_writepin(SSD_HEAT_BOT2_EN,GPIO_EXP_PIN_SET);          ///< GP5

	return 0;
}

/*
 * This function select the Payload board SSD off
 */
uint8_t payload_board_ssd_off()
{
	io_hal_gpio_writepin(REDRIVER_SW_IN2,GPIO_EXP_PIN_RESET);                 ///< GP3
	io_hal_gpio_writepin(CLK_EN_A_B,GPIO_EXP_PIN_RESET);                      ///< GP6
	io_hal_gpio_writepin(SSD_EN1,GPIO_EXP_PIN_RESET);                     ///< U18 => GP0

	return 0;
}

#endif
