Anastasia Klimchuk has uploaded this change for review.

View Change

ichspi: Extract handling programmer param into a function

Extract processing of ich_spi_mode into a separate function which
is called from init_ich_default. This makes init_ich_default more
readable and avoids one local variable.

TEST ME ON HW

BUG=b:204488958

Change-Id: I20e2379a6fd58c9346f0a2d6daf2b8decf1f6976
Signed-off-by: Anastasia Klimchuk <aklm@chromium.org>
---
M ichspi.c
1 file changed, 38 insertions(+), 27 deletions(-)

git pull ssh://review.coreboot.org:29418/flashrom refs/changes/36/58736/1
diff --git a/ichspi.c b/ichspi.c
index 9db241c..7a9c5cd 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -1749,20 +1749,49 @@
return 0;
}

+enum ich_spi_mode {
+ ich_auto,
+ ich_hwseq,
+ ich_swseq
+};
+
+static int get_ich_spi_mode_param(enum ich_spi_mode *ich_spi_mode)
+{
+ char *arg = extract_programmer_param("ich_spi_mode");
+ if (arg && !strcmp(arg, "hwseq")) {
+ *ich_spi_mode = ich_hwseq;
+ msg_pspew("user selected hwseq\n");
+ } else if (arg && !strcmp(arg, "swseq")) {
+ *ich_spi_mode = ich_swseq;
+ msg_pspew("user selected swseq\n");
+ } else if (arg && !strcmp(arg, "auto")) {
+ msg_pspew("user selected auto\n");
+ *ich_spi_mode = ich_auto;
+ } else if (arg && !strlen(arg)) {
+ msg_perr("Missing argument for ich_spi_mode.\n");
+ free(arg);
+ return ERROR_FATAL;
+ } else if (arg) {
+ msg_perr("Unknown argument for ich_spi_mode: %s\n",
+ arg);
+ free(arg);
+ return ERROR_FATAL;
+ }
+ free(arg);
+
+ return 0;
+}
+
+
static int init_ich_default(void *spibar, enum ich_chipset ich_gen)
{
unsigned int i;
uint16_t tmp2;
uint32_t tmp;
- char *arg;
int ich_spi_rw_restricted = 0;
int desc_valid = 0;
struct ich_descriptors desc = { 0 };
- enum ich_spi_mode {
- ich_auto,
- ich_hwseq,
- ich_swseq
- } ich_spi_mode = ich_auto;
+ enum ich_spi_mode ich_spi_mode = ich_auto;

size_t num_freg, num_pr, reg_pr0;

@@ -1817,27 +1846,9 @@
break;
}

- arg = extract_programmer_param("ich_spi_mode");
- if (arg && !strcmp(arg, "hwseq")) {
- ich_spi_mode = ich_hwseq;
- msg_pspew("user selected hwseq\n");
- } else if (arg && !strcmp(arg, "swseq")) {
- ich_spi_mode = ich_swseq;
- msg_pspew("user selected swseq\n");
- } else if (arg && !strcmp(arg, "auto")) {
- msg_pspew("user selected auto\n");
- ich_spi_mode = ich_auto;
- } else if (arg && !strlen(arg)) {
- msg_perr("Missing argument for ich_spi_mode.\n");
- free(arg);
- return ERROR_FATAL;
- } else if (arg) {
- msg_perr("Unknown argument for ich_spi_mode: %s\n",
- arg);
- free(arg);
- return ERROR_FATAL;
- }
- free(arg);
+ int ret = get_ich_spi_mode_param(&ich_spi_mode);
+ if (ret)
+ return ret;

tmp2 = mmio_readw(spibar + ICH9_REG_HSFS);
msg_pdbg("0x04: 0x%04x (HSFS)\n", tmp2);

To view, visit change 58736. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I20e2379a6fd58c9346f0a2d6daf2b8decf1f6976
Gerrit-Change-Number: 58736
Gerrit-PatchSet: 1
Gerrit-Owner: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-MessageType: newchange