summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: fa7e928)
raw | patch | inline | side by side (parent: fa7e928)
author | M V Pratap Reddy <x0257344@ti.com> | |
Fri, 30 Oct 2020 07:42:40 +0000 (13:12 +0530) | ||
committer | Sivaraj R <sivaraj@ti.com> | |
Fri, 30 Oct 2020 08:35:46 +0000 (03:35 -0500) |
index 3ff0f87a19a1b6d9313d2b7e580f9e17f7238e4c..a62f246b103cf4aeb752e4739b5d28c2a49231b9 100755 (executable)
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
(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
(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
(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
(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
(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
(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
diff --git a/packages/ti/board/src/flash/include/board_flash.h b/packages/ti/board/src/flash/include/board_flash.h
index c6b0204d2a567e2bf9e868fe268d4788e760395f..3f3dfeb608d4f2bf85c67c52d3506bc938e89516 100755 (executable)
#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
--- /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
--- /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
diff --git a/packages/ti/board/src/flash/nor/qspi/nor_qspi.h b/packages/ti/board/src/flash/nor/qspi/nor_qspi.h
index 0f56e63d4520c16ec2dfab38f86719573324107f..b72745230b84fc7927a14d3c6bd9ff9b53b0e72d 100755 (executable)
#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
/**************************************************************************
diff --git a/packages/ti/board/src/flash/nor/qspi/nor_qspi_v1.c b/packages/ti/board/src/flash/nor/qspi/nor_qspi_v1.c
index db80d670fcd184749a6b1c083874eb33fca44b31..6536aa698c5ba18f0801619ba91e48e98ed349f1 100755 (executable)
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
{\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
/* 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
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
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
{\r
if (blkErase == true)\r
{\r
- if (erLoc >= NOR_NUM_BLOCKS)\r
+ if (erLoc >= Nor_qspiInfo.blockCnt)\r
{\r
return NOR_FAIL;\r
}\r
diff --git a/packages/ti/board/src/flash/src_files_flash.mk b/packages/ti/board/src/flash/src_files_flash.mk
index c2ed4e3eb9e683a75a17dbbef76afc46a0db9d0f..816e821b7df90506d9cd342829574e150d3c4656 100755 (executable)
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