[rtems commit] bsps/xqspipsu: Break out RDID

Joel Sherrill joel at rtems.org
Sat Sep 23 14:17:35 UTC 2023


Module:    rtems
Branch:    master
Commit:    853429c3f8d2328be5b7f47b40c1745e61e29261
Changeset: http://git.rtems.org/rtems/commit/?id=853429c3f8d2328be5b7f47b40c1745e61e29261

Author:    Kinsey Moore <kinsey.moore at oarcorp.com>
Date:      Mon May 22 14:20:17 2023 -0500

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/include/dev/spi/xqspipsu-flash-helper.h | 15 ++++++++++
 bsps/shared/dev/spi/xqspipsu-flash-helper.c  | 45 ++++++++++++++++++----------
 2 files changed, 44 insertions(+), 16 deletions(-)

diff --git a/bsps/include/dev/spi/xqspipsu-flash-helper.h b/bsps/include/dev/spi/xqspipsu-flash-helper.h
index 5e4233e64e..1578fe8485 100644
--- a/bsps/include/dev/spi/xqspipsu-flash-helper.h
+++ b/bsps/include/dev/spi/xqspipsu-flash-helper.h
@@ -155,3 +155,18 @@ u32 QspiPsu_NOR_Get_Device_Size(XQspiPsu *QspiPsuPtr);
  *
  ******************************************************************************/
 u32 QspiPsu_NOR_Get_Sector_Size(XQspiPsu *QspiPsuPtr);
+
+/*****************************************************************************/
+/**
+ *
+ * This function performs a read of the RDID configuration space.
+ *
+ * @param	QspiPsuPtr is a pointer to the QSPIPSU driver component to use.
+ * @param	ReadBfrPtr is a pointer to a buffer to be filled with
+ * 		configuration data.
+ * @param	ReadLen is the total length of the configuration space to read.
+ *
+ * @return	XST_SUCCESS if successful, else XST_FAILURE.
+ *
+ ******************************************************************************/
+int QspiPsu_NOR_RDID(XQspiPsu *QspiPsuPtr, u8 *ReadBfrPtr, u32 ReadLen);
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 */
 
   /*



More information about the vc mailing list