22#ifndef _mcci_flash_sfdp_h_
23#define _mcci_flash_sfdp_h_
36typedef struct mcci_flash_sfdp_header_s
39 uint8_t properties[4];
49 const uint8_t pValue[4]
52 return ((uint32_t)pValue[0] << 0) |
53 ((uint32_t)pValue[1] << 8) |
54 ((uint32_t)pValue[2] << 16) |
55 ((uint32_t)pValue[3] << 24);
71#define MCCI_FLASH_SFDP_HEADER_SIGNATURE \
72 ((UINT32_C(0x50) << 24) | (UINT32_C(0x44) << 16) | (UINT32_C(0x46) << 8) | 0x53)
84#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND1_216D 0xF0
85#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND2_216D 0xF1
86#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND3_CLASS1_D 0xF2
87#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND3_CLASS2_D 0xF3
88#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND1_216B 0xF4
89#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND2_216B 0xF5
90#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND3_RSV1 0xF6
91#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NAND3_RSV2 0xF7
92#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_RSV248 0xF8
93#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_RSV249 0xF9
94#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NOR2 0xFA
95#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_RSV251 0xFB
96#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NOR1_3_8W 0xFC
97#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NOR1_4_20W 0xFD
98#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NOR1_4_8W 0xFE
99#define MCCI_FLASH_SFDP_HEADER_PROPERTY_PROTOCOL_NOR 0xFF
113#define MCCI_FLASH_SFDP_HEADER_PROPERTY_VERSION_JES216D UINT16_C(0x0108)
114#define MCCI_FLASH_SFDP_HEADER_PROPERTY_VERSION_JES216C UINT16_C(0x0107)
115#define MCCI_FLASH_SFDP_HEADER_PROPERTY_VERSION_JES216B UINT16_C(0x0106)
116#define MCCI_FLASH_SFDP_HEADER_PROPERTY_VERSION_JES216A UINT16_C(0x0105)
123typedef struct mcci_flash_sfdp_param_s
137static inline uint16_t
146static inline uint16_t
154#define MCCI_FLASH_SFDP_ID_BASIC_SPI UINT16_C(0xFF00)
155#define MCCI_FLASH_SFDP_ID_SECTOR_MAP UINT16_C(0xFF81)
156#define MCCI_FLASH_SFDP_ID_RPMC UINT16_C(0xFF03)
157#define MCCI_FLASH_SFDP_ID_4BA_INSTR UINT16_C(0xFF84)
158#define MCCI_FLASH_SFDP_ID_xSPI1 UINT16_C(0xFF05)
159#define MCCI_FLASH_SFDP_ID_xSPI2 UINT16_C(0xFF06)
160#define MCCI_FLASH_SFDP_ID_SCCR_MAP UINT16_C(0xFF87)
161#define MCCI_FLASH_SFDP_ID_SCCR_OFFSETS UINT16_C(0xFF88)
162#define MCCI_FLASH_SFDP_ID_SCCR_xSPI2 UINT16_C(0xFF09)
163#define MCCI_FLASH_SFDP_ID_OCTAL_DDR UINT16_C(0xFF0A)
164#define MCCI_FLASH_SFDP_ID_LL_MSPT UINT16_C(0xFF8B)
165#define MCCI_FLASH_SFDP_ID_QUAD_IO UINT16_C(0xFF0C)
166#define MCCI_FLASH_SFDP_ID_QUAD_DDR UINT16_C(0xFF8D)
167#define MCCI_FLASH_SFDP_ID_RSV8E UINT16_C(0xFF8E)
172static inline uint32_t
175 return ((uint32_t)p->
dword2[0] << 0) |
176 ((uint32_t)p->
dword2[1] << 8) |
177 ((uint32_t)p->
dword2[2] << 16)
static uint32_t McciFlashSfdpHeader_getSignature(const mcci_flash_sfdp_header_t *p)
return the signature value from an SFDP header
static uint8_t McciFlashSfdpHeader_getProtocol(const mcci_flash_sfdp_header_t *p)
return the access protocol value from an SFDP header
static uint32_t McciFlashSfdp_get32(const uint8_t pValue[4])
get value of a 32-bit SFDP entry
static uint16_t McciFlashSfdpParam_getVersion(const mcci_flash_sfdp_param_t *p)
return version of parameter table
static uint16_t McciFlashSfdpHeader_getVersion(const mcci_flash_sfdp_header_t *p)
Get SFDP version compliance claimed by header.
static uint8_t McciFlashSfdpParam_getLength(const mcci_flash_sfdp_param_t *p)
return length of parameter table in dwords.
static uint32_t McciFlashSfdpParam_getPTP(const mcci_flash_sfdp_param_t *p)
return pointer to parameter table (PTP)
static uint16_t McciFlashSfdpParam_getID(const mcci_flash_sfdp_param_t *p)
return ID of parameter table
the SFDP parameter header
uint8_t dword1[4]
low order dword
uint8_t dword2[4]
high-order dword