From e1363941c2142e6a45364122e5b129885fa8d32a Mon Sep 17 00:00:00 2001 From: Nick Williams Date: Wed, 11 Mar 2026 12:13:24 -0400 Subject: [PATCH 1/3] support SDT for GPIO expander initialization --- lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c index 979e15eebaa..f33cbbcd5c8 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c @@ -821,11 +821,24 @@ static void XFsbl_PcieReset(void) static u32 InitGpios() { #if defined(XPAR_PSU_SPI_0_DEVICE_ID) && defined (XPAR_PSU_GPIO_0_DEVICE_ID) + XGpioPs_Config* gpio_conf; + u32 spi_dev_id; u32 RegVal; XStatus Status; - XGpioPs_Config* gpio_conf; XGpioPs gpio_inst; +#if defined(SDT) && defined(XPAR_XGPIOPS_0_BASEADDR) && defined(XPAR_SPI0_BASEADDR) + gpio_conf = XGpioPs_LookupConfig(XPAR_XGPIOPS_0_BASEADDR); + spi_dev_id = XPAR_SPI0_BASEADDR; +#elif defined(XPAR_PSU_GPIO_0_DEVICE_ID) && defined(XPAR_PSU_SPI_0_DEVICE_ID) + gpio_conf = XGpioPs_LookupConfig(XPAR_PSU_GPIO_0_DEVICE_ID); + spi_dev_id = XPAR_PSU_SPI_0_DEVICE_ID; +#else + /* fail fast if either PS GPIO0 or PS SPI0 are missing in the BSP */ + XFsbl_Printf(DEBUG_GENERAL, "XFSBL_GZU_NOSPI0_NOGPIO0\r\n"); + return XST_FAILURE; +#endif + gpio_conf = XGpioPs_LookupConfig(XPAR_PSU_GPIO_0_DEVICE_ID); if (NULL == gpio_conf) { XFsbl_Printf(DEBUG_GENERAL, "XFSBL_GZU_GPIO_FAIL\r\n"); @@ -846,7 +859,7 @@ static u32 InitGpios() (void)usleep(1); //Init GPIO Expander - if (XST_SUCCESS != (Status = SpiGpioInit(MCP23S08_SPI_DEVID, MCP23S08_SS_ID))) + if (XST_SUCCESS != (Status = SpiGpioInit(spi_dev_id, MCP23S08_SS_ID))) { XFsbl_Printf(DEBUG_GENERAL, "XFSBL_GZU_GPIOE_INITFAIL\r\n"); return XST_FAILURE; From cf43d5d82ae4d9be19b2b742b165bffcfebf1fd9 Mon Sep 17 00:00:00 2001 From: Nick Williams Date: Wed, 11 Mar 2026 12:14:12 -0400 Subject: [PATCH 2/3] Update xfsbl_board.c --- lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c index f33cbbcd5c8..52b89e70b89 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c @@ -904,10 +904,6 @@ static u32 InitGpios() } return XST_SUCCESS; -#else - XFsbl_Printf(DEBUG_GENERAL, "XFSBL_GZU_NOSPI0_NOGPIO0\r\n"); - return XST_FAILURE; -#endif } #endif From 52238d2fbbade6ff3972af4eee8e31c860de8727 Mon Sep 17 00:00:00 2001 From: Nick Williams Date: Wed, 11 Mar 2026 12:16:34 -0400 Subject: [PATCH 3/3] Update xfsbl_board.c --- lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c index 52b89e70b89..ef6b076632f 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_board.c @@ -820,7 +820,6 @@ static void XFsbl_PcieReset(void) */ static u32 InitGpios() { -#if defined(XPAR_PSU_SPI_0_DEVICE_ID) && defined (XPAR_PSU_GPIO_0_DEVICE_ID) XGpioPs_Config* gpio_conf; u32 spi_dev_id; u32 RegVal;