Skip to content

Commit e04a1a4

Browse files
author
Veijo Pesonen
committed
SFDP: adds traces to identify known SFDP headers
1 parent 43289c7 commit e04a1a4

File tree

1 file changed

+61
-12
lines changed

1 file changed

+61
-12
lines changed

drivers/source/SFDP.cpp

Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,20 +111,69 @@ int sfdp_parse_single_param_header(sfdp_prm_hdr *phdr_ptr, sfdp_hdr_info &hdr_in
111111
return -1;
112112
}
113113

114-
if ((phdr_ptr->PID_LSB == 0) && (sfdp_get_param_id_msb(phdr_ptr->DWORD2) == 0xFF)) {
115-
tr_debug("Parameter header: Basic Parameter Header");
116-
hdr_info.bptbl.addr = sfdp_get_param_tbl_ptr(phdr_ptr->DWORD2);
117-
hdr_info.bptbl.size = std::min((phdr_ptr->P_LEN * 4), SFDP_BASIC_PARAMS_TBL_SIZE);
118-
119-
} else if ((phdr_ptr->PID_LSB == 0x81) && (sfdp_get_param_id_msb(phdr_ptr->DWORD2) == 0xFF)) {
120-
tr_debug("Parameter header: Sector Map Parameter Header");
121-
hdr_info.smptbl.addr = sfdp_get_param_tbl_ptr(phdr_ptr->DWORD2);
122-
hdr_info.smptbl.size = phdr_ptr->P_LEN * 4;
123-
124-
} else {
125-
tr_debug("Parameter header: header vendor specific or unknown. Parameter ID LSB: 0x%" PRIX8 "; MSB: 0x%" PRIX8 "",
114+
int param_id_msb = sfdp_get_param_id_msb(phdr_ptr->DWORD2);
115+
116+
/* MSB JEDEC ID */
117+
if (param_id_msb == 0xFF) {
118+
119+
/* LSB JEDEC ID */
120+
switch (phdr_ptr->PID_LSB) {
121+
case 0x0:
122+
tr_debug("Parameter header: JEDEC Basic Flash - Revision %" PRIX8 ".%" PRIX8 "",
123+
phdr_ptr->P_MAJOR,
124+
phdr_ptr->P_MINOR);
125+
hdr_info.bptbl.addr = sfdp_get_param_tbl_ptr(phdr_ptr->DWORD2);
126+
hdr_info.bptbl.size = std::min((phdr_ptr->P_LEN * 4), SFDP_BASIC_PARAMS_TBL_SIZE);
127+
break;
128+
case 0x81:
129+
tr_info("Parameter header: Sector Map");
130+
hdr_info.smptbl.addr = sfdp_get_param_tbl_ptr(phdr_ptr->DWORD2);
131+
hdr_info.smptbl.size = phdr_ptr->P_LEN * 4;
132+
break;
133+
/* Unsupported */
134+
case 0x03:
135+
tr_info("UNSUPPORTED:Parameter header: Replay Protected Monotonic Counters");
136+
break;
137+
case 0x84:
138+
tr_info("UNSUPPORTED:Parameter header: 4-byte Address Instruction");
139+
break;
140+
case 0x05:
141+
tr_info("UNSUPPORTED:Parameter header: eXtended Serial Peripheral Interface (xSPI) Profile 1.0");
142+
break;
143+
case 0x06:
144+
tr_info("UNSUPPORTED:Parameter header: eXtended Serial Peripheral Interface (xSPI) Profile 2.0");
145+
break;
146+
case 0x87:
147+
tr_info("UNSUPPORTED:Parameter header: SCCR Map for SPI Memory Devices");
148+
break;
149+
case 0x88:
150+
tr_info("UNSUPPORTED:Parameter header: SCCR Map Offsets for Multi-Chip SPI Memory Devices");
151+
break;
152+
case 0x09:
153+
tr_info("UNSUPPORTED:Parameter header: SCCR Map for xSPI Profile 2.0 Memory Devices");
154+
break;
155+
case 0x0A:
156+
tr_info("UNSUPPORTED:Parameter header: Command Sequences to Change to Octal DDR (8D-8D-8D) mode");
157+
break;
158+
case 0x0C:
159+
tr_info("UNSUPPORTED:Parameter header: x4 Quad IO with DS");
160+
break;
161+
case 0x8D:
162+
tr_info("UNSUPPORTED:Parameter header: Command Sequences to Change to Quad DDR (4S-4D-4D) mode");
163+
break;
164+
default:
165+
tr_debug("Parameter header: unknown JEDEC header. Parameter ID LSB: 0x%" PRIX8 "; MSB: 0x%" PRIX8 "",
166+
phdr_ptr->PID_LSB,
167+
sfdp_get_param_id_msb(phdr_ptr->DWORD2));
168+
}
169+
} else if (param_id_msb >= 0x80) { // MSB JEDEC ID
170+
tr_debug("Parameter header: unknown JEDEC header. Parameter ID LSB: 0x%" PRIX8 "; MSB: 0x%" PRIX8 "",
126171
phdr_ptr->PID_LSB,
127172
sfdp_get_param_id_msb(phdr_ptr->DWORD2));
173+
} else { // MSB Vendor ID
174+
tr_info("Parameter header: vendor specific header. Parameter ID LSB: 0x%" PRIX8 "; MSB: 0x%" PRIX8 "",
175+
phdr_ptr->PID_LSB,
176+
sfdp_get_param_id_msb(phdr_ptr->DWORD2));
128177
}
129178

130179
return 0;

0 commit comments

Comments
 (0)