drivers/spi: Add ISSI IS25WP256D flash
datasheet: IS25WP256D Rev A13 (2023-08-03)
tested:
boot SiFive Hifive Unmatched board
Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: I655776258cbcf464becf38cbb5045cda5bca711c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/79369
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
diff --git a/src/drivers/spi/issi.c b/src/drivers/spi/issi.c
new file mode 100644
index 0000000..45fe5a1
--- /dev/null
+++ b/src/drivers/spi/issi.c
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include <console/console.h>
+#include <commonlib/helpers.h>
+#include <spi_flash.h>
+#include <spi-generic.h>
+#include <delay.h>
+#include <lib.h>
+
+#include "spi_flash_internal.h"
+
+static const struct spi_flash_part_id flash_table[] = {
+ {
+ /* IS25WP256D */
+ .id[0] = 0x7019,
+ .nr_sectors_shift = 13,
+ },
+};
+
+const struct spi_flash_vendor_info spi_flash_issi_vi = {
+ .id = VENDOR_ID_ISSI,
+ .page_size_shift = 8, // 256 byte page size
+ .sector_size_kib_shift = 2, // 4 Kbyte sector size
+ .match_id_mask[0] = 0xffff,
+ .ids = flash_table,
+ .nr_part_ids = ARRAY_SIZE(flash_table),
+ .desc = &spi_flash_pp_0x20_sector_desc,
+ .prot_ops = NULL,
+};