[PATCH 1/2] bsps/xqspipsu: Break out RDID
Chris Johns
chrisj at rtems.org
Fri Sep 22 00:04:36 UTC 2023
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 */
>
> /*
More information about the devel
mailing list