aboutsummaryrefslogtreecommitdiffstats
path: root/include/flash.h
diff options
context:
space:
mode:
authorNikolai Artemiev <nartemiev@google.com>2022-08-30 11:11:13 +1000
committerEdward O'Callaghan <quasisec@chromium.org>2022-10-28 00:41:32 +0000
commit2e00f736714c3117354106c502a8c89b23896b2b (patch)
treefa51e602529c445891de23cafb36a1f4f42b6434 /include/flash.h
parentbd8a02de6cd9a6fb909be7e246ab7bb0dc558798 (diff)
downloadflashrom-2e00f736714c3117354106c502a8c89b23896b2b.tar.gz
flashrom-2e00f736714c3117354106c502a8c89b23896b2b.tar.bz2
flashrom-2e00f736714c3117354106c502a8c89b23896b2b.zip
tree/: Convert flashchip decode range func ptr to enum
Replace the `decode_range` function pointer in `struct flashchip` to an enum value. The enum value can be used to find the corresponding function pointer by passing it to `lookup_decode_range_func_ptr()`. Removing function pointers like `decode_range` makes it possible to represent chip data in a declarative format that does not have to be stored as C source code. BUG=b:242479049 BRANCH=none TEST=ninja && ninja test Signed-off-by: Nikolai Artemiev <nartemiev@google.com> Change-Id: If6d08d414d3d1ddadc95ca1d407fc87c23ab543d Reviewed-on: https://review.coreboot.org/c/flashrom/+/67195 Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Felix Singer <felixsinger@posteo.net> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'include/flash.h')
-rw-r--r--include/flash.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/include/flash.h b/include/flash.h
index 633601db..32290e4d 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -211,6 +211,12 @@ struct reg_bit_info {
struct wp_bits;
+enum decode_range_func {
+ NO_DECODE_RANGE_FUNC = 0, /* 0 indicates no range decode funciton is set. */
+ DECODE_RANGE_SPI25 = 1,
+};
+typedef void (decode_range_func_t)(size_t *start, size_t *len, const struct wp_bits *, size_t chip_len);
+
struct flashchip {
const char *vendor;
const char *name;
@@ -321,9 +327,11 @@ struct flashchip {
struct reg_bit_info wps;
} reg_bits;
- /* Function that takes a set of WP config bits (e.g. BP, SEC, TB, etc) */
- /* and determines what protection range they select. */
- void (*decode_range)(size_t *start, size_t *len, const struct wp_bits *, size_t chip_len);
+ /*
+ * Function that takes a set of WP config bits (e.g. BP, SEC, TB, etc)
+ * and determines what protection range they select.
+ */
+ enum decode_range_func decode_range;
};
typedef int (*chip_restore_fn_cb_t)(struct flashctx *flash, uint8_t status);