/* SFDP DWORDS are indexed from 1 but C arrays are indexed from 0. */ #define SFDP_DWORD(i) ((i) - 1) #define SFDP_MASK_CHECK(dword, mask) (((dword) & (mask)) == (mask))
/* Basic Flash Parameter Table */
/* JESD216 rev D defines a Basic Flash Parameter Table of 20 DWORDs. */ #define BFPT_DWORD_MAX 20
struct sfdp_bfpt {
u32 dwords[BFPT_DWORD_MAX];
};
/* The first version of JESD216 defined only 9 DWORDs. */ #define BFPT_DWORD_MAX_JESD216 9 #define BFPT_DWORD_MAX_JESD216B 16
/* * (from JESD216 rev B) * Quad Enable Requirements (QER): * - 000b: Device does not have a QE bit. Device detects 1-1-4 and 1-4-4 * reads based on instruction. DQ3/HOLD# functions are hold during * instruction phase. * - 001b: QE is bit 1 of status register 2. It is set via Write Status with * two data bytes where bit 1 of the second byte is one. * [...] * Writing only one byte to the status register has the side-effect of * clearing status register 2, including the QE bit. The 100b code is * used if writing one byte to the status register does not modify * status register 2. * - 010b: QE is bit 6 of status register 1. It is set via Write Status with * one data byte where bit 6 is one. * [...] * - 011b: QE is bit 7 of status register 2. It is set via Write status * register 2 instruction 3Eh with one data byte where bit 7 is one. * [...] * The status register 2 is read using instruction 3Fh. * - 100b: QE is bit 1 of status register 2. It is set via Write Status with * two data bytes where bit 1 of the second byte is one. * [...] * In contrast to the 001b code, writing one byte to the status * register does not modify status register 2. * - 101b: QE is bit 1 of status register 2. Status register 1 is read using * Read Status instruction 05h. Status register2 is read using * instruction 35h. QE is set via Write Status instruction 01h with * two data bytes where bit 1 of the second byte is one. * [...]
*/ #define BFPT_DWORD15_QER_MASK GENMASK(22, 20) #define BFPT_DWORD15_QER_NONE (0x0UL << 20) /* Micron */ #define BFPT_DWORD15_QER_SR2_BIT1_BUGGY (0x1UL << 20) #define BFPT_DWORD15_QER_SR1_BIT6 (0x2UL << 20) /* Macronix */ #define BFPT_DWORD15_QER_SR2_BIT7 (0x3UL << 20) #define BFPT_DWORD15_QER_SR2_BIT1_NO_RD (0x4UL << 20) #define BFPT_DWORD15_QER_SR2_BIT1 (0x5UL << 20) /* Spansion */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.