OK to 1 and 2 Thanks Chris
On 22/9/2023 7:31 am, Kinsey Moore wrote: > 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 */ > > /* _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel