From 853429c3f8d2328be5b7f47b40c1745e61e29261 Mon Sep 17 00:00:00 2001 From: Kinsey Moore Date: Mon, 22 May 2023 14:20:17 -0500 Subject: bsps/xqspipsu: Break out RDID Expose a function to read the NOR flash chip ID information beyond the minimum 3 bytes for the lookup table. --- bsps/shared/dev/spi/xqspipsu-flash-helper.c | 45 +++++++++++++++++++---------- 1 file changed, 29 insertions(+), 16 deletions(-) (limited to 'bsps/shared') diff --git a/bsps/shared/dev/spi/xqspipsu-flash-helper.c b/bsps/shared/dev/spi/xqspipsu-flash-helper.c index c9d8273b87..0dd065f02e 100644 --- a/bsps/shared/dev/spi/xqspipsu-flash-helper.c +++ b/bsps/shared/dev/spi/xqspipsu-flash-helper.c @@ -274,22 +274,9 @@ static void QspiPsuHandler( } } -/*****************************************************************************/ -/** - * - * Reads the flash ID and identifies the flash in FCT table. - * - * @param QspiPsuPtr is a pointer to the QSPIPSU driver component to use. - * - * @return XST_SUCCESS if successful, else XST_FAILURE. - * - * @note None. - * - *****************************************************************************/ -static int FlashReadID(XQspiPsu *QspiPsuPtr) +int QspiPsu_NOR_RDID(XQspiPsu *QspiPsuPtr, u8 *ReadBfrPtr, u32 ReadLen) { int Status; - u32 ReadId = 0; /* * Read ID @@ -303,7 +290,7 @@ static int FlashReadID(XQspiPsu *QspiPsuPtr) FlashMsg[1].TxBfrPtr = NULL; FlashMsg[1].RxBfrPtr = ReadBfrPtr; - FlashMsg[1].ByteCount = 3; + FlashMsg[1].ByteCount = ReadLen; FlashMsg[1].BusWidth = XQSPIPSU_SELECT_MODE_SPI; FlashMsg[1].Flags = XQSPIPSU_MSG_FLAG_RX; @@ -314,7 +301,33 @@ static int FlashReadID(XQspiPsu *QspiPsuPtr) } while (TransferInProgress); - rtems_cache_invalidate_multiple_data_lines(ReadBfrPtr, 3); + rtems_cache_invalidate_multiple_data_lines(ReadBfrPtr, ReadLen); + return XST_SUCCESS; +} + +/*****************************************************************************/ +/** + * + * Reads the flash ID and identifies the flash in FCT table. + * + * @param QspiPsuPtr is a pointer to the QSPIPSU driver component to use. + * + * @return XST_SUCCESS if successful, else XST_FAILURE. + * + * @note None. + * + *****************************************************************************/ +static int FlashReadID(XQspiPsu *QspiPsuPtr) +{ + u32 ReadId = 0; + u32 ReadLen = 3; + int Status; + + Status = QspiPsu_NOR_RDID(QspiPsuPtr, ReadBfrPtr, ReadLen); + if (Status != XST_SUCCESS) { + return XST_FAILURE; + } + /* In case of dual, read both and ensure they are same make/size */ /* -- cgit v1.2.3