240 lines
9.3 KiB
C
Executable File
Vendored
240 lines
9.3 KiB
C
Executable File
Vendored
/*
|
|
* drvDeviceInfo.h- Sigmastar
|
|
*
|
|
* Copyright (c) [2019~2020] SigmaStar Technology.
|
|
*
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License version 2 for more details.
|
|
*
|
|
*/
|
|
#ifndef _DRV_DEVICE_INFO_H_
|
|
#define _DRV_DEVICE_INFO_H_
|
|
|
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
// Macro and Define
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
|
// Flash IC
|
|
|
|
|
|
#define FLASH_IC_UNKNOWN 0x0000UL
|
|
// SST
|
|
#define FLASH_IC_SST25VF080B 0x0100UL // 1M SST
|
|
#define FLASH_IC_SST25VF016B 0x0101UL // 2M
|
|
#define FLASH_IC_SST25VF032B 0x0102UL // 2M
|
|
|
|
#define FLASH_IC_PM25LV080 0x0200UL // 1M PMC
|
|
#define FLASH_IC_PM25LV016 0x0201UL // 2M
|
|
#define FLASH_IC_PM25LQ032C 0x0202UL // 4M
|
|
|
|
#define FLASH_IC_ST25P80_A 0x0300UL // 1M ST
|
|
#define FLASH_IC_ST25P16_A 0x0301UL // 2M
|
|
#define FLASH_IC_STM25P32 0x0302UL // 4M
|
|
#define FLASH_IC_ST25Q128 0x0303UL // unknow , history problem , maybe brand typo .
|
|
|
|
//ATMEL
|
|
#define FLASH_IC_AT26DF081A 0x0400UL // 1M ATMEL
|
|
#define FLASH_IC_AT26DF161 0x0401UL // 2M
|
|
#define FLASH_IC_AT26DF321 0x0402UL // 4M
|
|
#define FLASH_IC_AT25DF321A 0x0403UL // 4M
|
|
|
|
// MXIC
|
|
#define FLASH_IC_MX25L8005 0x0500UL // 1M MXIC
|
|
#define FLASH_IC_MX25L1655D 0x0501UL // 2M for secure option
|
|
#define FLASH_IC_MX25L1606E 0x0502UL // 2M
|
|
#define FLASH_IC_MX25L1605A 0x0503UL // 2M
|
|
#define FLASH_IC_MX25L3206E 0x0504UL // 4M
|
|
#define FLASH_IC_MX25L3205D 0x0505UL // 4M
|
|
#define FLASH_IC_MX25L6405D 0x0506UL // 8M
|
|
#define FLASH_IC_MX25L6406E 0x0507UL // 8M
|
|
#define FLASH_IC_MX25L12805D 0x0508UL // 16M
|
|
#define FLASH_IC_MX25L12845E 0x0509UL // 16M
|
|
#define FLASH_IC_MX25L6445E 0x050AUL // 8M
|
|
#define FLASH_IC_MX25L6455E 0x050BUL // 8M
|
|
#define FLASH_IC_MX25L12855E 0x050CUL // 16M
|
|
#define FLASH_IC_MX25L4006E 0x050DUL // 512K MXIC
|
|
#define FLASH_IC_MX25L8006E 0x050EUL // 1M MXIC
|
|
#define FLASH_IC_MX25L3255D 0x0512UL // 4M for secure option
|
|
#define FLASH_IC_MX25L25645G 0x0513UL // 32M
|
|
#define FLASH_IC_MX25L5123G 0x5014UL //64M / MX25L51245G
|
|
|
|
// NX
|
|
#define FLASH_IC_NX25P80 0x0600UL // 1M NX
|
|
#define FLASH_IC_NX25P16 0x0601UL // 2M
|
|
|
|
// WINB
|
|
#define FLASH_IC_W25X80 0x0700UL // 1M WINB
|
|
#define FLASH_IC_W25Q80 0x0701UL // 1M
|
|
#define FLASH_IC_W25Q16 0x0702UL // 2M
|
|
#define FLASH_IC_W25X16 0x0703UL // 2M
|
|
#define FLASH_IC_W25X32 0x0704UL // 4M
|
|
#define FLASH_IC_W25Q32 0x0705UL // 4M
|
|
#define FLASH_IC_W25X64 0x0706UL // 8M
|
|
#define FLASH_IC_W25Q64 0x0707UL // 8M
|
|
#define FLASH_IC_W25Q64CV 0x0708UL // 8M
|
|
#define FLASH_IC_W25Q128 0x0709UL // 16M
|
|
#define FLASH_IC_W25Q32BV 0x070AUL // 4M
|
|
#define FLASH_IC_W25X40 0x070BUL // 512K WINB
|
|
#define FLASH_IC_W25Q256JV 0x070CUL // 32M
|
|
|
|
//SPANSION
|
|
#define FLASH_IC_S25FL008A 0x0800UL // 1M SPANSION
|
|
#define FLASH_IC_S25FL016A 0x0801UL // 2M
|
|
#define FLASH_IC_S25FL128P 0x0802UL // 16M
|
|
#define FLASH_IC_S25FL032P 0x0803UL // 4M
|
|
#define FLASH_IC_S25FL064P 0x0804UL // 8M
|
|
#define FLASH_IC_S25FL032K 0x0805UL // 4M
|
|
#define FLASH_IC_S25FL032 0x0804UL // 4M
|
|
|
|
// EON
|
|
#define FLASH_IC_EN25F10 0x0900UL // 128K for secure boot
|
|
#define FLASH_IC_EN25F16 0x0901UL // 2M
|
|
#define FLASH_IC_EN25F32 0x0902UL // 4M
|
|
#define FLASH_IC_EN25F80 0x0903UL // 1M
|
|
#define FLASH_IC_EN25B20T 0x0904UL // 2M EON
|
|
#define FLASH_IC_EN25B20B 0x0905UL // 2M
|
|
#define FLASH_IC_EN25B10T 0x0906UL // 1M
|
|
#define FLASH_IC_EN25B10B 0x0907UL // 1M
|
|
#define FLASH_IC_EN25B32B 0x0908UL // 4M (Bottom Boot)
|
|
#define FLASH_IC_EN25Q32 0x0909UL // 4M
|
|
#define FLASH_IC_EN25Q32A 0x090AUL // 4M
|
|
#define FLASH_IC_EN25Q64 0x090BUL // 4M
|
|
#define FLASH_IC_EN25B64B 0x090CUL // 4M
|
|
#define FLASH_IC_EN25Q128 0x090DUL // 16M
|
|
#define FLASH_IC_EN25QH128 0x090FUL // 16M
|
|
#define FLASH_IC_EN25P16 0x090EUL // 2M
|
|
#define FLASH_IC_EN25F40 0x090AUL // 512k
|
|
#define FLASH_IC_EN25QH16 0x090BUL // 2M
|
|
|
|
// ESMT
|
|
#define FLASH_IC_ESMT_F25L016A 0x0A00UL // 2M
|
|
// GD
|
|
#define FLASH_IC_GD25Q32 0x0B00UL // 4M
|
|
#define FLASH_IC_GD25Q16 0x0B01UL // 2MByte
|
|
#define FLASH_IC_GD25S80 0x0B02UL
|
|
#define FLASH_IC_GD25Q64 0x0B03UL // 8M
|
|
#define FLASH_IC_GD25Q128 0x0B05UL //16M
|
|
#define FLASH_IC_GD25Q256C 0x0B06UL //32M
|
|
|
|
// AM
|
|
#define FLASH_IC_A25LM032 0x0D00UL
|
|
|
|
// MICRON
|
|
#define FLASH_IC_MICRON_M25P16 0x0E00UL // 2M
|
|
#define FLASH_IC_MICRON_N25Q32 0x0E01UL // 4M
|
|
#define FLASH_IC_MICRON_N25Q64 0x0E02UL // 8M
|
|
#define FLASH_IC_MICRON_N25Q128 0x0E03UL // 16M
|
|
#define FLASH_IC_NUMONYX_M25PX16 0x0E04UL // 2M
|
|
|
|
|
|
//ZB
|
|
#define FLASH_IC_ZB25Q64 0x1002UL // 8M
|
|
#define FLASH_IC_ZB25VQ128 0x1003UL // 16M
|
|
|
|
#define FLASH_IC_25Q128AS 0x1100UL // 25q128as
|
|
|
|
#define FLASH_IC_XM25QH128A 0x1200UL
|
|
#define FLASH_IC_XM25QH256B 0x1201UL
|
|
|
|
//XTX
|
|
#define FLASH_IC_XT25F128B 0x1300UL
|
|
|
|
//End of table
|
|
#define FLASH_IC_ENDTABLE 0x0000UL
|
|
|
|
// Flash Manufacture ID
|
|
#define MID_MXIC 0xC2UL
|
|
#define MID_WB 0xEFUL
|
|
#define MID_EON 0x1CUL
|
|
#define MID_ST 0x20UL
|
|
#define MID_SST 0xBFUL
|
|
#define MID_PMC 0x9DUL
|
|
#define MID_ATMEL 0x1FUL
|
|
#define MID_SPAN 0x01UL
|
|
#define MID_GD 0xC8UL
|
|
#define MID_MICRON 0x20UL
|
|
#define MID_NUMONYX 0x20UL
|
|
#define MID_AM 0x37UL
|
|
#define MID_25Q 0x68UL
|
|
#define MID_ZB 0x5EUL
|
|
#define MID_XMC 0x20UL
|
|
#define MID_XTX 0x0BUL
|
|
|
|
// Flash Storage Size
|
|
#define SIZE_1KB 0x400UL
|
|
#define SIZE_2KB 0x800UL
|
|
#define SIZE_4KB 0x1000UL
|
|
#define SIZE_8KB 0x2000UL
|
|
#define SIZE_16KB 0x4000UL
|
|
#define SIZE_32KB 0x8000UL
|
|
#define SIZE_64KB 0x10000UL
|
|
#define SIZE_128KB 0x20000UL
|
|
#define SIZE_256KB 0x40000UL
|
|
#define SIZE_512KB 0x80000UL
|
|
#define SIZE_1MB 0x100000UL
|
|
#define SIZE_2MB 0x200000UL
|
|
#define SIZE_4MB 0x400000UL
|
|
#define SIZE_8MB 0x800000UL
|
|
#define SIZE_16MB 0x1000000UL
|
|
|
|
// ISP_DEV_SEL
|
|
#define ISP_DEV_PMC BITS(2:0, 0)
|
|
#define ISP_DEV_NEXTFLASH BITS(2:0, 1)
|
|
#define ISP_DEV_ST BITS(2:0, 2)
|
|
#define ISP_DEV_SST BITS(2:0, 3)
|
|
#define ISP_DEV_ATMEL BITS(2:0, 4)
|
|
|
|
// ISP_SPI_ENDIAN_SEL
|
|
#define ISP_SPI_ENDIAN_BIG BITS(0:0, 1)
|
|
#define ISP_SPI_ENDIAN_LITTLE BITS(0:0, 0)
|
|
|
|
typedef struct
|
|
{
|
|
MS_U8 u8BlockProtectBits; // Block Protection Bits
|
|
MS_U8 u8BlockProtectMask; // Block Protection Mask
|
|
MS_U32 u32LowerBound;
|
|
MS_U32 u32UpperBound;
|
|
} ST_WRITE_PROTECT;
|
|
|
|
typedef struct
|
|
{
|
|
MS_U16 u16Start; // Start block # of special block size
|
|
MS_U16 u16End; // End block # of special block size
|
|
MS_U32 au32SizeList[8]; // List of special block sizes. Total size must be equal to FLASH_BLOCK_SIZE
|
|
} ST_SPECIAL_BLOCKS;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
MS_U16 u16FlashType; // flash type
|
|
MS_U8 u8MID; // Manufacture ID
|
|
MS_U8 u8DID0; // Device ID (memory type)
|
|
MS_U8 u8DID1; // Device ID (memory capacity)
|
|
|
|
ST_WRITE_PROTECT *pWriteProtectTable;
|
|
ST_SPECIAL_BLOCKS *pSpecialBlocks;
|
|
|
|
MS_U32 u32FlashSize; // Flash Size
|
|
MS_U32 u32NumSec; // NUMBER_OF_SERFLASH_SECTORS // number of sectors
|
|
MS_U32 u32SecSize; // SERFLASH_SECTOR_SIZE // sector size
|
|
MS_U16 u16PageSize; // SERFLASH_PAGE_SIZE // page size
|
|
MS_U16 u16MaxChipWrDoneTimeout; // SERFLASH_MAX_CHIP_WR_DONE_TIMEOUT // max timeout for chip write done
|
|
MS_U8 u8WrsrBlkProtect; // SERFLASH_WRSR_BLK_PROTECT // BP bits @ Serial Flash Status Register
|
|
MS_U16 u16DevSel; // ISP_DEV_SEL // reg_device_select
|
|
MS_U16 u16SpiEndianSel; // ISP_SPI_ENDIAN_SEL // reg_endian_sel_spi
|
|
MS_U16 u16SPIMaxClk[2];
|
|
MS_BOOL b2XREAD;
|
|
MS_BOOL b4XREAD;
|
|
} hal_SERFLASH_t;
|
|
|
|
#endif //_DRV_DEVICE_INFO_H_
|
|
|