/** @file Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef FLASH_H #define FLASH_H #include #include #include #include #include #include #include #include #include #include #include #include #define PAGE_SIZE(x) ((x) & 0x01) #define PAGE_SIZE_2K_VAL (0x01UL) #define SPARE_AREA_SIZE(x) (((x) >> 2) & 0x01) #define SPARE_AREA_SIZE_64B_VAL (0x1UL) #define BLOCK_SIZE(x) (((x) >> 4) & 0x01) #define BLOCK_SIZE_128K_VAL (0x01UL) #define ORGANIZATION(x) (((x) >> 6) & 0x01) #define ORGANIZATION_X8 (0x0UL) #define ORGANIZATION_X16 (0x1UL) #define PAGE_SIZE_512B (512) #define PAGE_SIZE_2K (2048) #define PAGE_SIZE_4K (4096) #define SPARE_AREA_SIZE_16B (16) #define SPARE_AREA_SIZE_64B (64) #define BLOCK_SIZE_16K (16*1024) #define BLOCK_SIZE_128K (128*1024) #define BLOCK_COUNT (2048) #define LAST_BLOCK (BLOCK_COUNT - 1) #define ECC_POSITION 2 //List of commands. #define RESET_CMD 0xFF #define READ_ID_CMD 0x90 #define READ_STATUS_CMD 0x70 #define PAGE_READ_CMD 0x00 #define PAGE_READ_CONFIRM_CMD 0x30 #define BLOCK_ERASE_CMD 0x60 #define BLOCK_ERASE_CONFIRM_CMD 0xD0 #define PROGRAM_PAGE_CMD 0x80 #define PROGRAM_PAGE_CONFIRM_CMD 0x10 //Nand status register bit definition #define NAND_SUCCESS (0x0UL << 0) #define NAND_FAILURE BIT0 #define NAND_BUSY (0x0UL << 6) #define NAND_READY BIT6 #define NAND_RESET_STATUS (0x60UL << 0) #define MAX_RETRY_COUNT 1500 typedef struct { UINT8 ManufactureId; UINT8 DeviceId; UINT8 BlockAddressStart; //Start of the Block address in actual NAND UINT8 PageAddressStart; //Start of the Page address in actual NAND } NAND_PART_INFO_TABLE; typedef struct { UINT8 ManufactureId; UINT8 DeviceId; UINT8 Organization; //x8 or x16 UINT32 PageSize; UINT32 SparePageSize; UINT32 BlockSize; UINT32 NumPagesPerBlock; UINT8 BlockAddressStart; //Start of the Block address in actual NAND UINT8 PageAddressStart; //Start of the Page address in actual NAND } NAND_FLASH_INFO; #endif //FLASH_H