SFDP: make mandatory table length check work with newer SFDP revisions

The JEDEC SFDP specification JESD216A (1.5) adds five new DWORDs to the
Basic Flash Parameter Table. Later versions of the spec add even more
fields. This increases the table being read from 36 bytes to currently
64 bytes and makes flashrom bail out for any SFDP version >= 1.5 due to
a static table length check.

This was discovered on a GigaDevice GD25B127DSIGR from 2021 with SFDP
revision 1.6, while another flash of the same model from 2020 with SFDP
revision 1.0 was detected fine by flashrom.

GD25B127DSIGR - 2020 version:

  Probing for Unknown SFDP-capable chip, 0 kB: SFDP revision = 1.0
  SFDP number of parameter headers is 2 (NPH = 1).

  SFDP parameter table header 0/1:
    ID 0x00, version 1.0
    Length 36 B, Parameter Table Pointer 0x000030

GD25B127DSIGR - 2021 version:

  Probing for Unknown SFDP-capable chip, 0 kB: SFDP revision = 1.6
  SFDP number of parameter headers is 2 (NPH = 1).

  SFDP parameter table header 0/1:
    ID 0x00, version 1.6
    Length 64 B, Parameter Table Pointer 0x000030

  ...

  Length of the mandatory JEDEC SFDP parameter table is wrong (64 B),
  skipping it.

The specification says that changes of the minor SFDP revision will
maintain compatibility. Thus, simply check for the minimal required
table length, which is 16 bytes for legacy Intel pre-SFDP and 36 bytes
for SFDP.

Change-Id: Id84cde4ebc805d68e2984e8041fbc48d7ceebe34
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/60055
Original-Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/flashrom-stable/+/71301
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
1 file changed