summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubrata Banik <subrata.banik@intel.com>2020-08-26 15:53:00 +0530
committerPatrick Georgi <pgeorgi@google.com>2020-09-02 07:17:39 +0000
commitd16ef4d21ea7efcad97b49bc2633caa4342ecbea (patch)
treeeb835ba99e157772ddd315c575c5f75fb3b031f7
parentbd2da5a4b560b96501e343b04fb1e0e189da55cc (diff)
util/ifdtool: Fix SPI frequency as per Gen11 SPI flash guide
BUG=b:153888802 TEST=Able to list correct SPI frequency as per TGL SPI flash guide Without this CL : Found Component Section FLCOMP 0x093030f6 Dual Output Fast Read Support: not supported Read ID/Read Status Clock Frequency: 33MHz Write/Erase Clock Frequency: 33MHz Fast Read Clock Frequency: 33MHz Fast Read Support: supported Read Clock Frequency: 20MHz With this CL : Found Component Section FLCOMP 0x093030f6 Dual Output Fast Read Support: not supported Read ID/Read Status Clock Frequency: 50MHz Write/Erase Clock Frequency: 50MHz Fast Read Clock Frequency: 50MHz Fast Read Support: supported Read Clock Frequency: 20MHz Signed-off-by: Subrata Banik <subrata.banik@intel.com> Change-Id: Id0a0a0cbd948ef8334cf522c09e881b464e87f0e Reviewed-on: https://review.coreboot.org/c/coreboot/+/44819 Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--util/ifdtool/ifdtool.c33
-rw-r--r--util/ifdtool/ifdtool.h8
2 files changed, 40 insertions, 1 deletions
diff --git a/util/ifdtool/ifdtool.c b/util/ifdtool/ifdtool.c
index 56e05fe21b..9f507bb68d 100644
--- a/util/ifdtool/ifdtool.c
+++ b/util/ifdtool/ifdtool.c
@@ -448,7 +448,7 @@ static void dump_frba_layout(const frba_t *frba, const char *layout_fname)
printf("Wrote layout to %s\n", layout_fname);
}
-static void decode_spi_frequency(unsigned int freq)
+static void _decode_spi_frequency(unsigned int freq)
{
switch (freq) {
case SPI_FREQUENCY_20MHZ:
@@ -478,6 +478,37 @@ static void decode_spi_frequency(unsigned int freq)
}
}
+static void _decode_spi_frequency_500_series(unsigned int freq)
+{
+ switch (freq) {
+ case SPI_FREQUENCY_100MHZ:
+ printf("100MHz");
+ break;
+ case SPI_FREQUENCY_50MHZ:
+ printf("50MHz");
+ break;
+ case SPI_FREQUENCY_500SERIES_33MHZ:
+ printf("33MHz");
+ break;
+ case SPI_FREQUENCY_25MHZ:
+ printf("25MHz");
+ break;
+ case SPI_FREQUENCY_14MHZ:
+ printf("14MHz");
+ break;
+ default:
+ printf("unknown<%x>MHz", freq);
+ }
+}
+
+static void decode_spi_frequency(unsigned int freq)
+{
+ if (chipset == CHIPSET_500_SERIES_TIGER_POINT)
+ _decode_spi_frequency_500_series(freq);
+ else
+ _decode_spi_frequency(freq);
+}
+
static void decode_component_density(unsigned int density)
{
switch (density) {
diff --git a/util/ifdtool/ifdtool.h b/util/ifdtool/ifdtool.h
index fb3de2fb39..0842924ec1 100644
--- a/util/ifdtool/ifdtool.h
+++ b/util/ifdtool/ifdtool.h
@@ -63,6 +63,14 @@ enum spi_frequency {
SPI_FREQUENCY_17MHZ = 6,
};
+enum spi_frequency_500_series {
+ SPI_FREQUENCY_100MHZ = 0,
+ SPI_FREQUENCY_50MHZ = 1,
+ SPI_FREQUENCY_500SERIES_33MHZ = 3,
+ SPI_FREQUENCY_25MHZ = 4,
+ SPI_FREQUENCY_14MHZ = 6,
+};
+
enum component_density {
COMPONENT_DENSITY_512KB = 0,
COMPONENT_DENSITY_1MB = 1,