From 3299c2321fceeeabf6d7861ee6c2122eabad417b Mon Sep 17 00:00:00 2001 From: Shakti Bhatnagar Date: Wed, 24 Dec 2014 19:41:24 +0530 Subject: [PATCH] xilisf: Added check for flash interface Added check for flash interface for Winbond, Spansion and Micron flash family for PSQSPI. Signed-off-by: Shakti Bhatnagar --- lib/sw_services/xilisf/src/include/xilisf.h | 4 +- lib/sw_services/xilisf/src/xilisf.c | 125 +++++++++++++------- 2 files changed, 86 insertions(+), 43 deletions(-) diff --git a/lib/sw_services/xilisf/src/include/xilisf.h b/lib/sw_services/xilisf/src/include/xilisf.h index debbf10c..f7d93186 100755 --- a/lib/sw_services/xilisf/src/include/xilisf.h +++ b/lib/sw_services/xilisf/src/include/xilisf.h @@ -487,6 +487,8 @@ * SendBankSelect() * XIsf_SetStatusHandler() * XIsf_IfaceHandler() +* 5.1 sb 12/23/14 Added check for flash interface for Winbond, Spansion +* and Micron flash family for PSQSPI. * * * @@ -1006,7 +1008,7 @@ int XIsf_SetSpiConfiguration(XIsf *InstancePtr, XIsf_Iface *SpiInstPtr, /* *Interrupt Status Handler of XilIsf Lib */ -void XIsf_SetStatusHandler(XIsf *InstancePtr, XIsf_Iface *QspiInstancePtr, +void XIsf_SetStatusHandler(XIsf *InstancePtr, XIsf_Iface *XIfaceInstancePtr, XIsf_StatusHandler XilIsf_Handler); /* diff --git a/lib/sw_services/xilisf/src/xilisf.c b/lib/sw_services/xilisf/src/xilisf.c index d48ec35a..a10cbeb1 100755 --- a/lib/sw_services/xilisf/src/xilisf.c +++ b/lib/sw_services/xilisf/src/xilisf.c @@ -87,7 +87,8 @@ * - XIsf_GetDeviceInfo() * - XIsf_WriteEnable() * - XIsf_Ioctl() -* +* 5.1 sb 12/23/14 Added check for flash interface for Winbond, Spansion +* and Micron flash family for PSQSPI. * * * @@ -115,8 +116,11 @@ typedef struct { } AtmelDeviceGeometry; #endif /* (XPAR_XISF_FLASH_FAMILY == ATMEL) */ -#if ((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST)) +#if (((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ + || (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI))) \ /** * The following structure specifies the geometry of the Intel/STM Serial Flash. */ @@ -127,11 +131,16 @@ typedef struct { u16 PagesPerSector; /**< Number of Pages per Sector */ u16 NumOfSectors; /**< Number of Sectors in the device */ } IntelStmDeviceGeometry; -#endif /* ((XPAR_XISF_FLASH_FAMILY==INTEL) || (XPAR_XISF_FLASH_FAMILY==STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST))*/ +#endif /* (((XPAR_XISF_FLASH_FAMILY == INTEL) || + (XPAR_XISF_FLASH_FAMILY == STM) || \ + (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI)))*/ -#if ((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ - (XPAR_XISF_FLASH_FAMILY == SPANSION)) +#if (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) /** * The following structure specifies the geometry of the Spansion/Micron * Serial Flash. @@ -157,8 +166,9 @@ typedef struct { u8 NumDie; /**< No. of die forming a single flash */ } SpaMicWinDeviceGeometry; -#endif /* ((XPAR_XISF_FLASH_FAMILY == WINBOND) || - (XPAR_XISF_FLASH_FAMILY == SPANSION)) */ +#endif /* (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) */ /***************** Macros (Inline Functions) Definitions *********************/ @@ -177,19 +187,26 @@ int SendBankSelect(XIsf *InstancePtr, u32 BankSel); static int AtmelFlashInitialize(XIsf *InstancePtr, u8 *ReadBuf); #endif /* (XPAR_XISF_FLASH_FAMILY == ATMEL) */ -#if ((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) || \ - (XPAR_XISF_FLASH_FAMILY == SST)) +#if (((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) || \ + (XPAR_XISF_FLASH_FAMILY == SST) || (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI))) static int IntelStmFlashInitialize(XIsf *InstancePtr, u8 *ReadBuf); -#endif /* ((XPAR_XISF_FLASH_FAMILY == INTEL) || \ - (XPAR_XISF_FLASH_FAMILY == STM) || \ - (|| (XPAR_XISF_FLASH_FAMILY == SST)) */ +#endif /* (((XPAR_XISF_FLASH_FAMILY == INTEL) || \ + (XPAR_XISF_FLASH_FAMILY == STM) || \ + (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI))) */ -#if ((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ - (XPAR_XISF_FLASH_FAMILY == SPANSION)) +#if (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) static int SpaMicWinFlashInitialize(XIsf *InstancePtr, u8 *BufferPtr); -#endif /* ((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ - (XPAR_XISF_FLASH_FAMILY == SPANSION)) */ +#endif /* (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) */ /************************** Variable Definitions *****************************/ @@ -226,8 +243,11 @@ static const AtmelDeviceGeometry AtmelDevices[] = { }; #endif /* (XPAR_XISF_FLASH_FAMILY == ATMEL) */ -#if ((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST)) +#if (((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ + || (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI))) static const IntelStmDeviceGeometry IntelStmDevices[] = { {XISF_MANUFACTURER_ID_INTEL, XISF_INTEL_DEV_S3316MBIT, XISF_BYTES256_PER_PAGE, XISF_PAGES256_PER_SECTOR, @@ -370,11 +390,15 @@ static const IntelStmDeviceGeometry IntelStmDevices[] = { XISF_NUM_OF_SECTORS256}, }; -#endif /* ((XPAR_XISF_FLASH_FAMILY==INTEL) || (XPAR_XISF_FLASH_FAMILY==STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST))*/ +#endif /* (((XPAR_XISF_FLASH_FAMILY==INTEL) || (XPAR_XISF_FLASH_FAMILY==STM) \ + || (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI)))*/ -#if ((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ - (XPAR_XISF_FLASH_FAMILY == SPANSION)) +#if (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) static const SpaMicWinDeviceGeometry SpaMicWinDevices[] = { {0x10000, 0x100, 256, 0x10000, 0x1000000, XISF_MANUFACTURER_ID_SPANSION, XISF_SPANSION_ID_BYTE2_128, @@ -452,8 +476,9 @@ static const SpaMicWinDeviceGeometry SpaMicWinDevices[] = { XISF_MANUFACTURER_ID_WINBOND, XISF_WINBOND_ID_BYTE2_128, 0xFFFE0000, 1} }; -#endif /* ((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ - (XPAR_XISF_FLASH_FAMILY == SPANSION)) */ +#endif /* (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) */ /* * The following variables are shared between non-interrupt processing and @@ -583,23 +608,31 @@ int XIsf_Initialize(XIsf *InstancePtr, XIsf_Iface *SpiInstPtr, u8 SlaveSelect, #endif /* (XPAR_XISF_FLASH_FAMILY == ATMEL) */ -#if ((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST)) +#if (((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ + || (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI))) /* * Check for Intel/STM/Winbond/Spansion Serial Flash. */ Status = IntelStmFlashInitialize(InstancePtr, ReadBuf); -#endif /* ((XPAR_XISF_FLASH_FAMILY==INTEL) || (XPAR_XISF_FLASH_FAMILY==STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST))*/ -#if ((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ - (XPAR_XISF_FLASH_FAMILY == SPANSION)) +#endif /* (((XPAR_XISF_FLASH_FAMILY==INTEL) || (XPAR_XISF_FLASH_FAMILY==STM) \ + || (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI)))*/ +#if (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) Status = SpaMicWinFlashInitialize(InstancePtr, ReadBuf); -#endif /*(XPAR_XISF_FLASH_FAMILY == WINBOND) || - (XPAR_XISF_FLASH_FAMILY == SPANSION)) */ +#endif /*(((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) */ return Status; } @@ -1289,8 +1322,11 @@ static int AtmelFlashInitialize(XIsf *InstancePtr, u8 *BufferPtr) } #endif /* (XPAR_XISF_FLASH_FAMILY == ATMEL) */ -#if ((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST)) +#if (((XPAR_XISF_FLASH_FAMILY == INTEL) || (XPAR_XISF_FLASH_FAMILY == STM) \ + || (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI))) /*****************************************************************************/ /** * @@ -1369,11 +1405,15 @@ static int IntelStmFlashInitialize(XIsf *InstancePtr, u8 *BufferPtr) return (int)(XST_SUCCESS); } -#endif /* ((XPAR_XISF_FLASH_FAMILY==INTEL) || (XPAR_XISF_FLASH_FAMILY==STM) \ - || (XPAR_XISF_FLASH_FAMILY == SST))*/ +#endif /* (((XPAR_XISF_FLASH_FAMILY==INTEL) || (XPAR_XISF_FLASH_FAMILY==STM) \ + || (XPAR_XISF_FLASH_FAMILY == SST) || \ + (XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + (!defined(XPAR_XISF_INTERFACE_PSQSPI)))*/ -#if ((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ - (XPAR_XISF_FLASH_FAMILY == SPANSION)) +#if (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI)) /*****************************************************************************/ /** * @@ -1562,8 +1602,9 @@ static int SpaMicWinFlashInitialize(XIsf *InstancePtr, u8 *BufferPtr) return (int)(XST_SUCCESS); } -#endif /* (XPAR_XISF_FLASH_FAMILY == WINBOND) || - (XPAR_XISF_FLASH_FAMILY == SPANSION)) */ +#endif /* (((XPAR_XISF_FLASH_FAMILY == WINBOND) || \ + (XPAR_XISF_FLASH_FAMILY == SPANSION)) && \ + defined(XPAR_XISF_INTERFACE_PSQSPI))*/ /*****************************************************************************/ /**