PDK-6963: Updated tpr12 evm flash library for GigaDevice qspi flash
authorM V Pratap Reddy <x0257344@ti.com>
Fri, 30 Oct 2020 07:42:40 +0000 (13:12 +0530)
committerSivaraj R <sivaraj@ti.com>
Fri, 30 Oct 2020 08:35:46 +0000 (03:35 -0500)
packages/ti/board/src/flash/board_flash.c
packages/ti/board/src/flash/include/board_flash.h
packages/ti/board/src/flash/nor/device/gd25b16csag.h [new file with mode: 0755]
packages/ti/board/src/flash/nor/device/gd25b64cw2g.h [new file with mode: 0755]
packages/ti/board/src/flash/nor/qspi/nor_qspi.h
packages/ti/board/src/flash/nor/qspi/nor_qspi_v1.c
packages/ti/board/src/flash/src_files_flash.mk

index 3ff0f87a19a1b6d9313d2b7e580f9e17f7238e4c..a62f246b103cf4aeb752e4739b5d28c2a49231b9 100755 (executable)
@@ -61,6 +61,8 @@ static uint32_t Board_getFlashIntf(uint32_t deviceId)
     else if((deviceId == BOARD_FLASH_ID_MT25QU512ABB) || \\r
             (deviceId == BOARD_FLASH_ID_S25FL512S) || \\r
             (deviceId == BOARD_FLASH_ID_S25FL256S) ||\r
+            (deviceId == BOARD_FLASH_ID_GD25B16CSAG) ||\r
+            (deviceId == BOARD_FLASH_ID_GD25B64CW2G) ||\r
             (deviceId == BOARD_FLASH_ID_MX25V1635F))\r
     {\r
         flashIntf = BOARD_FLASH_NOR_QSPI;\r
@@ -132,6 +134,8 @@ Board_flashHandle Board_flashOpen(uint32_t deviceId, uint32_t portNum, void *par
         (deviceId == BOARD_FLASH_ID_MT35XU256ABA1G12)    || \\r
         (deviceId == BOARD_FLASH_ID_S71KS512S)           || \\r
         (deviceId == BOARD_FLASH_ID_S28HS512T)           || \\r
+        (deviceId == BOARD_FLASH_ID_GD25B16CSAG)         || \\r
+        (deviceId == BOARD_FLASH_ID_GD25B64CW2G)         || \\r
         (deviceId == BOARD_FLASH_ID_MX25V1635F)\r
        )\r
     {\r
@@ -231,6 +235,8 @@ Board_flash_STATUS Board_flashClose(Board_flashHandle handle)
         (flashInfo->device_id == BOARD_FLASH_ID_MT35XU256ABA1G12)    || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S71KS512S)           || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S28HS512T)           || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B16CSAG)         || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B64CW2G)         || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_MX25V1635F)\r
        )\r
     {\r
@@ -290,6 +296,8 @@ Board_flash_STATUS Board_flashRead(Board_flashHandle  handle,
         (flashInfo->device_id == BOARD_FLASH_ID_MT35XU256ABA1G12)    || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S71KS512S)           || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S28HS512T)           || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B16CSAG)         || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B64CW2G)         || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_MX25V1635F)\r
        )\r
     {\r
@@ -452,6 +460,8 @@ Board_flash_STATUS Board_flashOffsetToBlkPage(Board_flashHandle  handle,
         (flashInfo->device_id == BOARD_FLASH_ID_MT35XU256ABA1G12)    || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S71KS512S)           || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S28HS512T)           || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B16CSAG)         || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B64CW2G)         || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_MX25V1635F)\r
        )\r
     {\r
@@ -522,6 +532,8 @@ Board_flash_STATUS Board_flashBlkPageToOffset(Board_flashHandle  handle,
         (flashInfo->device_id == BOARD_FLASH_ID_MT35XU256ABA1G12)    || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S71KS512S)           || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S28HS512T)           || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B16CSAG)         || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B64CW2G)         || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_MX25V1635F)\r
        )\r
     {\r
@@ -586,6 +598,8 @@ Board_flash_STATUS Board_flashWrite(Board_flashHandle  handle,
         (flashInfo->device_id == BOARD_FLASH_ID_MT35XU256ABA1G12)    || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S71KS512S)           || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S28HS512T)           || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B16CSAG)         || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B64CW2G)         || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_MX25V1635F)\r
        )\r
     {\r
@@ -669,6 +683,8 @@ Board_flash_STATUS Board_flashEraseBlk(Board_flashHandle handle,
         (flashInfo->device_id == BOARD_FLASH_ID_MT35XU256ABA1G12)    || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S71KS512S)           || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_S28HS512T)           || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B16CSAG)         || \\r
+        (flashInfo->device_id == BOARD_FLASH_ID_GD25B64CW2G)         || \\r
         (flashInfo->device_id == BOARD_FLASH_ID_MX25V1635F)\r
        )\r
     {\r
index c6b0204d2a567e2bf9e868fe268d4788e760395f..3f3dfeb608d4f2bf85c67c52d3506bc938e89516 100755 (executable)
@@ -118,7 +118,9 @@ typedef int32_t Board_flash_STATUS;       /** Board Flash API return type */
 #define BOARD_FLASH_ID_MT25QU512ABB        (0xBB20) /**< 64MB NOR Flash */
 #define BOARD_FLASH_ID_S71KS512S           (0x007EU)  /**< 512 Mb cypress Hyperflash device Id  */
 #define BOARD_FLASH_ID_S28HS512T           (0x5B1AU)  /**< 512 Mb Cypress OSPI NOR flash */
-#define BOARD_FLASH_ID_MX25V1635F          (0x2315U)  /** Macronix 16MB NOR Flash **/
+#define BOARD_FLASH_ID_MX25V1635F          (0x2315U)  /** Macronix 16Mbit NOR Flash **/
+#define BOARD_FLASH_ID_GD25B16CSAG         (0x4015U)  /** Giga device 16Mbit NOR Flash **/
+#define BOARD_FLASH_ID_GD25B64CW2G         (0x4017U)  /** Giga device 16Mbit NOR Flash **/
 
 
 /**
diff --git a/packages/ti/board/src/flash/nor/device/gd25b16csag.h b/packages/ti/board/src/flash/nor/device/gd25b16csag.h
new file mode 100755 (executable)
index 0000000..ed571f8
--- /dev/null
@@ -0,0 +1,114 @@
+/*\r
+ * Copyright (c) 2020, Texas Instruments Incorporated\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ *\r
+ * *  Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ *\r
+ * *  Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the distribution.\r
+ *\r
+ * *  Neither the name of Texas Instruments Incorporated nor the names of\r
+ *    its contributors may be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ */\r
+\r
+/**\r
+ *\r
+ * \file  gd25b16csag.h\r
+ *\r
+ * \brief This file contains GD25B16CSAG NOR device definitions\r
+ *\r
+ *****************************************************************************/\r
+#ifndef GD25B16CSAG_H_\r
+#define GD25B16CSAG_H_\r
+\r
+#include <ti/drv/spi/SPI.h>\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**************************************************************************\r
+ **                       Macro Definitions\r
+ **************************************************************************/\r
+\r
+/** Macro to enable 4 byte addressing */\r
+/* #define EXT_ADDRESS_ENABLE        (0U) */\r
+\r
+/** FLASH device specific items (note: sizes are in bytes) */\r
+#define NOR_BLOCK_SIZE              (64U * 1024U)\r
+#define NOR_SECTOR_SIZE             (4U * 1024U)\r
+#define NOR_SIZE                    (2U * 1024U * 1024U)\r
+#define NOR_NUM_BLOCKS              (NOR_SIZE / NOR_BLOCK_SIZE)\r
+#define NOR_NUM_SECTORS             (NOR_SIZE / NOR_SECTOR_SIZE)\r
+#define NOR_PAGE_SIZE               (256U)\r
+#define NOR_NUM_PAGES_PER_SECTOR    (NOR_SECTOR_SIZE / NOR_PAGE_SIZE)\r
+#define NOR_NUM_PAGES_PER_BLOCK     (NOR_BLOCK_SIZE / NOR_PAGE_SIZE)\r
+\r
+/** Flash device commands */\r
+#define NOR_BE_SECTOR_NUM           (-1U)\r
+#define NOR_CMD_BULK_ERASE          (0xCEU)\r
+#define NOR_CMD_WRR                 (0x01U)\r
+#define NOR_CMD_WREN                (0x06U)\r
+#define NOR_CMD_RDSR                (0x05U)\r
+#define NOR_CMD_RDCR                (0x15U)\r
+#define NOR_CMD_RDID                (0x9FU)\r
+\r
+/** Commands for 3 byte addressing */\r
+\r
+#define NOR_CMD_BLOCK_ERASE         (0xD8U)\r
+#define NOR_CMD_SECTOR_ERASE        (0x20U)\r
+#define NOR_CMD_READ                (0x03U)\r
+#define NOR_CMD_DUAL_READ           (0x3BU)\r
+#define NOR_CMD_QUAD_READ           (0x6BU)\r
+#define NOR_CMD_PAGE_PROG           (0x02U)\r
+#define NOR_CMD_QUAD_PAGE_PROG      (0x32U)\r
+\r
+/* \brief Read ID command definitions */\r
+#define NOR_RDID_NUM_BYTES          (0x3U)\r
+#define NOR_MANF_ID                 (0xC8U)   /* Manufacturer ID */\r
+#define NOR_DEVICE_ID               (0x4015U)  /* Device ID */\r
+\r
+/** Status Register, Write-in-Progress bit */\r
+#define NOR_SR_WIP                             (1U << 0U)\r
+#define NOR_SR_QE                              (1U << 6U)\r
+\r
+/** Dummy cycles for Read operation */\r
+#define NOR_SINGLE_READ_DUMMY_CYCLE    (0U)\r
+#define NOR_DUAL_READ_DUMMY_CYCLE      (8U)\r
+#define NOR_QUAD_READ_DUMMY_CYCLE      (8U)\r
+\r
+/** In Micro seconds */\r
+#define NOR_PAGE_PROG_TIMEOUT          (400U)\r
+#define NOR_SECTOR_ERASE_TIMEOUT       (600U * 1000U)\r
+#define NOR_WRR_WRITE_TIMEOUT          (600U * 1000U)\r
+#define NOR_BULK_ERASE_TIMEOUT     (110U * 1000U * 1000U)\r
+\r
+#define NOR_MANUFACTURE_ID          (0x01U)\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* MX25V1635F_H_ */\r
+\r
+/* Nothing past this point */\r
diff --git a/packages/ti/board/src/flash/nor/device/gd25b64cw2g.h b/packages/ti/board/src/flash/nor/device/gd25b64cw2g.h
new file mode 100755 (executable)
index 0000000..6cbc37f
--- /dev/null
@@ -0,0 +1,119 @@
+/*\r
+ * Copyright (c) 2020, Texas Instruments Incorporated\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ *\r
+ * *  Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ *\r
+ * *  Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the distribution.\r
+ *\r
+ * *  Neither the name of Texas Instruments Incorporated nor the names of\r
+ *    its contributors may be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ */\r
+\r
+/**\r
+ *\r
+ * \file  gd25b64cw2g.h\r
+ *\r
+ * \brief This file contains GD25B64CW2G NOR device definitions\r
+ *\r
+ *****************************************************************************/\r
+#ifndef _GD25B64CW2G_H_\r
+#define _GD25B64CW2G_H_\r
+\r
+#include <ti/drv/spi/SPI.h>\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**************************************************************************\r
+ **                       Macro Definitions\r
+ **************************************************************************/\r
+\r
+/** Macro to enable 4 byte addressing */\r
+/* #define EXT_ADDRESS_ENABLE        (0U) */\r
+\r
+/** FLASH device specific items (note: sizes are in bytes) */\r
+#define NOR_BLOCK_SIZE              (64U * 1024U)\r
+#define NOR_SECTOR_SIZE             (4U * 1024U)\r
+#define NOR_SIZE                    (8U * 1024U * 1024U)\r
+#define NOR_NUM_BLOCKS              (NOR_SIZE / NOR_BLOCK_SIZE)\r
+#define NOR_SIZE_2MBIT_FLASH        (2U * 1024U * 1024U)\r
+#define NOR_NUM_BLOCKS_2MBIT_FLASH  (NOR_SIZE_2MBIT_FLASH / NOR_BLOCK_SIZE)\r
+#define NOR_NUM_SECTORS             (NOR_SIZE / NOR_SECTOR_SIZE)\r
+#define NOR_PAGE_SIZE               (256U)\r
+#define NOR_NUM_PAGES_PER_SECTOR    (NOR_SECTOR_SIZE / NOR_PAGE_SIZE)\r
+#define NOR_NUM_PAGES_PER_BLOCK     (NOR_BLOCK_SIZE / NOR_PAGE_SIZE)\r
+\r
+/** Flash device commands */\r
+#define NOR_BE_SECTOR_NUM           (-1U)\r
+#define NOR_CMD_BULK_ERASE          (0xCEU)\r
+#define NOR_CMD_WRR                 (0x01U)\r
+#define NOR_CMD_WREN                (0x06U)\r
+#define NOR_CMD_RDSR                (0x05U)\r
+#define NOR_CMD_RDCR                (0x15U)\r
+#define NOR_CMD_RDID                (0x9FU)\r
+\r
+/** Commands for 3 byte addressing */\r
+\r
+#define NOR_CMD_BLOCK_ERASE         (0xD8U)\r
+#define NOR_CMD_SECTOR_ERASE        (0x20U)\r
+#define NOR_CMD_READ                (0x03U)\r
+#define NOR_CMD_DUAL_READ           (0x3BU)\r
+#define NOR_CMD_QUAD_READ           (0x6BU)\r
+#define NOR_CMD_PAGE_PROG           (0x02U)\r
+#define NOR_CMD_QUAD_PAGE_PROG      (0x32U)\r
+\r
+/* \brief Read ID command definitions */\r
+#define NOR_RDID_NUM_BYTES          (0x3U)\r
+#define NOR_MANF_ID                 (0xC8U)   /* Manufacturer ID */\r
+#define NOR_MANF_ID_MX25V1635F      (0xC2U)   /* Manufacturer ID */\r
+#define NOR_DEVICE_ID               (0x4017U)  /* Device ID */\r
+#define NOR_DEVICE_ID_GD25B16CSAG   (0x4015U)  /* Device ID */\r
+#define NOR_DEVICE_ID_MX25V1635F    (0x2315U)  /* Device ID */\r
+\r
+/** Status Register, Write-in-Progress bit */\r
+#define NOR_SR_WIP                             (1U << 0U)\r
+#define NOR_SR_QE                              (1U << 6U)\r
+\r
+/** Dummy cycles for Read operation */\r
+#define NOR_SINGLE_READ_DUMMY_CYCLE    (0U)\r
+#define NOR_DUAL_READ_DUMMY_CYCLE      (8U)\r
+#define NOR_QUAD_READ_DUMMY_CYCLE      (8U)\r
+\r
+/** In Micro seconds */\r
+#define NOR_PAGE_PROG_TIMEOUT          (400U)\r
+#define NOR_SECTOR_ERASE_TIMEOUT       (600U * 1000U)\r
+#define NOR_WRR_WRITE_TIMEOUT          (600U * 1000U)\r
+#define NOR_BULK_ERASE_TIMEOUT     (110U * 1000U * 1000U)\r
+\r
+#define NOR_MANUFACTURE_ID          (0x01U)\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* _GD25B64CW2G_H_ */\r
+\r
+/* Nothing past this point */\r
index 0f56e63d4520c16ec2dfab38f86719573324107f..b72745230b84fc7927a14d3c6bd9ff9b53b0e72d 100755 (executable)
@@ -57,7 +57,7 @@ extern "C" {
 #elif defined (iceK2G)
 #include <ti/board/src/flash/nor/device/s25fl256s.h>
 #elif defined (tpr12_evm) || defined (tpr12_qt)
-#include <ti/board/src/flash/nor/device/mx25v1635f.h>
+#include <ti/board/src/flash/nor/device/gd25b64cw2g.h>
 #endif
 
 /**************************************************************************
index db80d670fcd184749a6b1c083874eb33fca44b31..6536aa698c5ba18f0801619ba91e48e98ed349f1 100755 (executable)
@@ -68,6 +68,8 @@ NOR_Info Nor_qspiInfo =
     NOR_SECTOR_SIZE            /* sectorSize */\r
 };\r
 \r
+static uint32_t gBoardQspiFlashSize = NOR_SIZE;\r
+\r
 static NOR_STATUS NOR_qspiCmdRead(SPI_Handle handle, uint8_t *cmdBuf,\r
                             uint32_t cmdLen, uint8_t *rxBuf, uint32_t rxLen)\r
 {\r
@@ -138,10 +140,19 @@ static NOR_STATUS Nor_qspiReadId(SPI_Handle handle)
     {\r
         manfID = (uint32_t)idCode[0];\r
         devID = ((uint32_t)idCode[1] << 8) | ((uint32_t)idCode[2]);\r
-        if ((manfID == NOR_MANF_ID) && (devID == NOR_DEVICE_ID))\r
+\r
+        if (((manfID == NOR_MANF_ID) && (devID == NOR_DEVICE_ID))             ||\r
+            ((manfID == NOR_MANF_ID) && (devID == NOR_DEVICE_ID_GD25B16CSAG)) ||\r
+            ((manfID == NOR_MANF_ID_MX25V1635F) && (devID == NOR_DEVICE_ID_MX25V1635F)))\r
         {\r
             Nor_qspiInfo.manufacturerId = manfID;\r
             Nor_qspiInfo.deviceId = devID;\r
+\r
+            if(devID != NOR_DEVICE_ID)\r
+            {\r
+                Nor_qspiInfo.blockCnt = NOR_NUM_BLOCKS_2MBIT_FLASH;\r
+                gBoardQspiFlashSize   = NOR_SIZE_2MBIT_FLASH;\r
+            }\r
         }\r
         else\r
         {\r
@@ -338,10 +349,8 @@ NOR_STATUS Nor_qspiQuadModeCtrl(SPI_Handle handle,
         /* quad disabled */\r
         cmd[1] = status & (~(NOR_SR_QE));\r
     }\r
-    /* Configuration Register */\r
-    cmd[2] = 0x0;\r
 \r
-    if (Nor_qspiCmdWrite(handle, cmd, 1, 2)) /* 1 byte command and 2 bytes write data */\r
+    if (Nor_qspiCmdWrite(handle, cmd, 1, 1))\r
     {\r
         goto err;\r
     }\r
@@ -402,7 +411,7 @@ NOR_STATUS Nor_qspiRead(NOR_HANDLE handle, uint32_t addr,
     rxLinesArg = object->rxLines;\r
 \r
     /* Validate address input */\r
-    if ((addr + len) > NOR_SIZE)\r
+    if ((addr + len) > gBoardQspiFlashSize)\r
     {\r
         return NOR_FAIL;\r
     }\r
@@ -548,7 +557,7 @@ NOR_STATUS Nor_qspiWrite(NOR_HANDLE handle, uint32_t addr, uint32_t len,
     hwAttrs   = (QSPI_HwAttrs *)(spiHandle->hwAttrs);\r
 \r
     /* Validate address input */\r
-    if ((addr + len) > NOR_SIZE)\r
+    if ((addr + len) > gBoardQspiFlashSize)\r
     {\r
         return NOR_FAIL;\r
     }\r
@@ -704,7 +713,7 @@ NOR_STATUS Nor_qspiErase(NOR_HANDLE handle, int32_t erLoc, bool blkErase)
     {\r
         if (blkErase == true)\r
         {\r
-            if (erLoc >= NOR_NUM_BLOCKS)\r
+            if (erLoc >= Nor_qspiInfo.blockCnt)\r
             {\r
                 return NOR_FAIL;\r
             }\r
index c2ed4e3eb9e683a75a17dbbef76afc46a0db9d0f..816e821b7df90506d9cd342829574e150d3c4656 100755 (executable)
@@ -117,7 +117,7 @@ INCDIR += src/flash/nor/qspi src/flash/nor
 SRCS_COMMON += nor_qspi_v1.c nor.c
 PACKAGE_SRCS_COMMON += src/flash/nor/nor.c src/flash/nor/nor.h
 PACKAGE_SRCS_COMMON += src/flash/nor/qspi/nor_qspi_v1.c src/flash/nor/qspi/nor_qspi.h
-PACKAGE_SRCS_COMMON += src/flash/nor/device/mx25v1635f.h
+PACKAGE_SRCS_COMMON += src/flash/nor/device/mx25v1635f.h src/flash/nor/device/gd25b64cw2g.h src/flash/nor/device/gd25b16csag.h
 endif
 
 PACKAGE_SRCS_COMMON += src/flash/include/board_flash.h src/flash/board_flash.c src/flash/src_files_flash.mk