David Hendricks has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/30521
Change subject: dediprog: Use 4BA page program without 0x12
......................................................................
dediprog: Use 4BA page program without 0x12
It's not clear exactly what the difference is between
WRITE_MODE_4B_ADDR_256B_PAGE_PGM with and without _0x12 from the SF600
command spec, but the former seems to work more reliably.
Tested using an SF600 (FW v7.2.21), IS25LP256D, W25Q256JV, and
MX25L25735.
Change-Id: I3cb37ec8838f5bb02948ed52b4a2906fa033cf83
Signed-off-by: David Hendricks <david.hendricks(a)gmail.com>
---
M dediprog.c
1 file changed, 2 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/21/30521/1
diff --git a/dediprog.c b/dediprog.c
index 2a190d2..303f1d5 100644
--- a/dediprog.c
+++ b/dediprog.c
@@ -398,7 +398,8 @@
}
} else if (dedi_spi_cmd == WRITE_MODE_PAGE_PGM) {
if (flash->chip->feature_bits & FEATURE_4BA_WRITE) {
- data_packet[3] = WRITE_MODE_4B_ADDR_256B_PAGE_PGM_0x12;
+// data_packet[3] = WRITE_MODE_4B_ADDR_256B_PAGE_PGM_0x12;
+ data_packet[3] = WRITE_MODE_4B_ADDR_256B_PAGE_PGM;
data_packet[4] = JEDEC_BYTE_PROGRAM_4BA;
use_4ba = true;
} else if (flash->in_4ba_mode) {
--
To view, visit https://review.coreboot.org/c/flashrom/+/30521
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I3cb37ec8838f5bb02948ed52b4a2906fa033cf83
Gerrit-Change-Number: 30521
Gerrit-PatchSet: 1
Gerrit-Owner: David Hendricks <david.hendricks(a)gmail.com>
Gerrit-MessageType: newchange
Hrvoje Čavrak has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/39841 )
Change subject: udelay.c: Enable providing delay calibration value through CLI
......................................................................
udelay.c: Enable providing delay calibration value through CLI
This commit implements --delay option to retrieve and provide the calibration
loop delay through the command line. The delay calibration procedure can take
up to few seconds, which adds up when executed a number of times consecutively.
Therefore, this provides a means to execute it only once, and then re-use the
calibrated value on subsequent runs. Also, it implements a sanity check,
expecting the value to land within 10% of the theoretical delay expectance,
otherwise it ignores the provided value and runs the calibration procedure
instead.
modified: cli_classic.c
modified: flashrom.8.tmpl
modified: programmer.h
modified: udelay.c
Change-Id: Iea2a7f62300663bc0a32ed4abced57c8c55c90c8
Signed-off-by: Hrvoje Cavrak <hrvoje(a)hrvoje.org>
---
M cli_classic.c
M flashrom.8.tmpl
M programmer.h
M udelay.c
4 files changed, 51 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/41/39841/1
diff --git a/cli_classic.c b/cli_classic.c
index 73cc417..f0842d4 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -63,6 +63,8 @@
" -o | --output <logfile> log output to <logfile>\n"
" --flash-contents <ref-file> assume flash contents to be <ref-file>\n"
" -L | --list-supported print supported devices\n"
+ " -d | --loop-delay <value> set loop delay calibration manually\n"
+ " --loop-delay get show loop delay calibration\n"
#if CONFIG_PRINT_WIKI == 1
" -z | --list-supported-wiki print supported devices in wiki syntax\n"
#endif
@@ -118,6 +120,7 @@
int flash_name = 0, flash_size = 0;
int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0;
int dont_verify_it = 0, dont_verify_all = 0, list_supported = 0, operation_specified = 0;
+ unsigned long provided_delay = 0;
struct flashrom_layout *layout = NULL;
enum programmer prog = PROGRAMMER_INVALID;
enum {
@@ -130,7 +133,7 @@
};
int ret = 0;
- static const char optstring[] = "r:Rw:v:nNVEfc:l:i:p:Lzho:";
+ static const char optstring[] = "r:Rw:v:nNVEfc:l:i:p:Lzho:d:";
static const struct option long_options[] = {
{"read", 1, NULL, 'r'},
{"write", 1, NULL, 'w'},
@@ -156,6 +159,7 @@
{"help", 0, NULL, 'h'},
{"version", 0, NULL, 'R'},
{"output", 1, NULL, 'o'},
+ {"delay", 1, NULL, 'd'},
{NULL, 0, NULL, 0},
};
@@ -362,6 +366,14 @@
}
#endif /* STANDALONE */
break;
+ case 'd':
+ provided_delay = strtoul(strdup(optarg), NULL, 0);
+ if (!provided_delay) {
+ /* Make it easy for scripts to parse this by omitting anything else */
+ msg_pinfo("%lu\n", get_calibration_value());
+ exit(0);
+ }
+ break;
default:
cli_classic_abort_usage(NULL);
break;
@@ -454,7 +466,10 @@
}
/* FIXME: Delay calibration should happen in programmer code. */
- myusec_calibrate_delay();
+ if (provided_delay)
+ set_external_calibration(provided_delay);
+ else
+ myusec_calibrate_delay();
if (programmer_init(prog, pparam)) {
msg_perr("Error: Programmer initialization failed.\n");
diff --git a/flashrom.8.tmpl b/flashrom.8.tmpl
index fde98c0..c14f2de 100644
--- a/flashrom.8.tmpl
+++ b/flashrom.8.tmpl
@@ -50,7 +50,7 @@
[\fB\-E\fR|\fB\-r\fR <file>|\fB\-w\fR <file>|\fB\-v\fR <file>]
[(\fB\-l\fR <file>|\fB\-\-ifd|\fB \-\-fmap\fR|\fB\-\-fmap-file\fR <file>) [\fB\-i\fR <image>]]
[\fB\-n\fR] [\fB\-N\fR] [\fB\-f\fR])]
- [\fB\-V\fR[\fBV\fR[\fBV\fR]]] [\fB-o\fR <logfile>]
+ [\fB\-V\fR[\fBV\fR[\fBV\fR]]] [\fB-o\fR <logfile>] [\fB-d\fR get | <value>]
.SH DESCRIPTION
.B flashrom
is a utility for detecting, reading, writing, verifying and erasing flash
@@ -364,6 +364,18 @@
.TP
.B "\-R, \-\-version"
Show version information and exit.
+.TP
+.B "\-d, \-\-loop\-delay"
+Retrieve the loop calibration delay value or provide one externally. Calibrate
+delay procedure can take a few seconds and for repeated execution on a large
+number of hosts it can provide a significant overhead. Therefore, this argument
+makes it possible to provide the calibration delay through the command line
+option.
+
+To retrieve the value, run
+.BR "flashrom \-\-loop\-delay get " "and to provide it during programming, add "
+.BR "\-\-loop\-delay <value> " "to your command."
+
.SH PROGRAMMER-SPECIFIC INFORMATION
Some programmer drivers accept further parameters to set programmer-specific
parameters. These parameters are separated from the programmer name by a
diff --git a/programmer.h b/programmer.h
index 08500c6..a659a18 100644
--- a/programmer.h
+++ b/programmer.h
@@ -277,6 +277,8 @@
void myusec_calibrate_delay(void);
void internal_sleep(unsigned int usecs);
void internal_delay(unsigned int usecs);
+unsigned long get_calibration_value(void);
+void set_external_calibration(unsigned long external_micro);
#if CONFIG_INTERNAL == 1
/* board_enable.c */
diff --git a/udelay.c b/udelay.c
index 6c0efc4..90c4c9e 100644
--- a/udelay.c
+++ b/udelay.c
@@ -221,6 +221,25 @@
msg_pinfo("OK.\n");
}
+void set_external_calibration(unsigned long external_micro)
+{
+ micro = external_micro;
+ unsigned long elapsed = measure_delay(100000);
+ /* Do a sanity check if the provided parameter makes loops fall within 10% of
+ * the desired value. Otherwise, ignore provided value and recalibrate.
+ */
+ if (elapsed > 90000 && elapsed < 110000)
+ msg_pinfo("Provided delay is acceptable!\n");
+ else
+ myusec_calibrate_delay();
+}
+
+unsigned long get_calibration_value(void)
+{
+ myusec_calibrate_delay();
+ return micro;
+}
+
/* Not very precise sleep. */
void internal_sleep(unsigned int usecs)
{
--
To view, visit https://review.coreboot.org/c/flashrom/+/39841
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: Iea2a7f62300663bc0a32ed4abced57c8c55c90c8
Gerrit-Change-Number: 39841
Gerrit-PatchSet: 1
Gerrit-Owner: Hrvoje Čavrak <github(a)hrvoje.org>
Gerrit-MessageType: newchange
Hello Patrick Rudolph,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/flashrom/+/34629
to review the following change.
Change subject: dediprog: Fix SF600 4BA mode
......................................................................
dediprog: Fix SF600 4BA mode
Flash chips greater than 16MiB require 4BA mode support.
Current master doesn't support such mode as the SF600 uses
PROTOCOL_V3.
Fix protocol version check to support 4BA on PROTOCOL_V3, too.
Tested on SF600 V:7.2.45
Able to read and write "IS25WP256" (32768 kB, SPI).
Change-Id: I2d3089693fbd2f8f7717a8f71be242be131ce707
Signed-off-by: Patrick Rudolph <patrick.rudolph(a)9elements.com>
---
M dediprog.c
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/29/34629/1
diff --git a/dediprog.c b/dediprog.c
index 3566109..add478d 100644
--- a/dediprog.c
+++ b/dediprog.c
@@ -1160,7 +1160,7 @@
if (dediprog_devicetype == DEV_SF100 && protocol() == PROTOCOL_V1)
spi_master_dediprog.features &= ~SPI_MASTER_NO_4BA_MODES;
- if (protocol() == PROTOCOL_V2)
+ if (protocol() >= PROTOCOL_V2)
spi_master_dediprog.features |= SPI_MASTER_4BA;
if (register_spi_master(&spi_master_dediprog) || dediprog_set_leds(LED_NONE))
--
To view, visit https://review.coreboot.org/c/flashrom/+/34629
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I2d3089693fbd2f8f7717a8f71be242be131ce707
Gerrit-Change-Number: 34629
Gerrit-PatchSet: 1
Gerrit-Owner: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph(a)9elements.com>
Gerrit-MessageType: newchange
David Hendricks has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/43602 )
Change subject: git-hooks: Add check-style for pre-commit hook
......................................................................
git-hooks: Add check-style for pre-commit hook
This imports check-style and some related lint tools from coreboot
for the pre-commit hook:
- Add check-style rule to Makefile
- Replace the current pre-commit hook with the one from coreboot,
omitting lint-stable for the time being.
- Import checkpatch.pl, along with certain dependencies (spelling.txt
and const_structs.checkpatch) and .checkpatch.conf.
- Add .clang-format from CB:38673.
Change-Id: Ieb77aa1aa2911e081c69c93929a2f1c4430cd2b9
Signed-off-by: David Hendricks <david.hendricks(a)gmail.com>
---
A .checkpatch.conf
A .clang-format
M Makefile
M util/git-hooks/pre-commit
A util/lint/check-style
A util/lint/checkpatch.pl
A util/lint/const_structs.checkpatch
A util/lint/lint-007-checkpatch
A util/lint/spelling.txt
9 files changed, 16,655 insertions(+), 8 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/02/43602/1
--
To view, visit https://review.coreboot.org/c/flashrom/+/43602
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: Ieb77aa1aa2911e081c69c93929a2f1c4430cd2b9
Gerrit-Change-Number: 43602
Gerrit-PatchSet: 1
Gerrit-Owner: David Hendricks <david.hendricks(a)gmail.com>
Gerrit-MessageType: newchange
Richard Hughes has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/42230 )
Change subject: meson: Do not compile with -DSTANDALONE
......................................................................
meson: Do not compile with -DSTANDALONE
This enables the -o option which is used to collect logs for debugging.
Change-Id: If6c12c682ba72cd519e30f1f8c96552322ff75e3
Signed-off-by: Richard Hughes <richard(a)hughsie.com>
---
M meson.build
1 file changed, 0 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/30/42230/1
diff --git a/meson.build b/meson.build
index 5d8e630..4b00339 100644
--- a/meson.build
+++ b/meson.build
@@ -415,7 +415,6 @@
],
c_args : [
cargs,
- '-DSTANDALONE',
'-DCONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_INVALID',
'-DCONFIG_DEFAULT_PROGRAMMER_ARGS=""',
],
--
To view, visit https://review.coreboot.org/c/flashrom/+/42230
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: If6c12c682ba72cd519e30f1f8c96552322ff75e3
Gerrit-Change-Number: 42230
Gerrit-PatchSet: 1
Gerrit-Owner: Richard Hughes <richard(a)hughsie.com>
Gerrit-MessageType: newchange
Nikolai Artemiev has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/42796 )
Change subject: ft2232_spi.c: align with Chrome OS flashrom
......................................................................
ft2232_spi.c: align with Chrome OS flashrom
Brings over various changes:
- Limit servo channel selection to valid range
- Use DIS_DIV_5 constant
- Update some comments
- Wrap long lines
Signed-off-by: Nikolai Artemiev <nartemiev(a)google.com>
Change-Id: I24c20e9b5d7e661d0180699bbd0d1447f6bf816f
---
M ft2232_spi.c
1 file changed, 20 insertions(+), 10 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/96/42796/1
diff --git a/ft2232_spi.c b/ft2232_spi.c
index 87e6057..083e58f 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -110,7 +110,8 @@
{
int i;
for (i = 0; devs_ft2232spi[i].vendor_name != NULL; i++) {
- if ((devs_ft2232spi[i].device_id == ft2232_type) && (devs_ft2232spi[i].vendor_id == ft2232_vid))
+ if ((devs_ft2232spi[i].device_id == ft2232_type)
+ && (devs_ft2232spi[i].vendor_id == ft2232_vid))
return devs_ft2232spi[i].device_name;
}
return "unknown device";
@@ -120,7 +121,8 @@
{
int i;
for (i = 0; devs_ft2232spi[i].vendor_name != NULL; i++) {
- if ((devs_ft2232spi[i].device_id == ft2232_type) && (devs_ft2232spi[i].vendor_id == ft2232_vid))
+ if ((devs_ft2232spi[i].device_id == ft2232_type)
+ && (devs_ft2232spi[i].vendor_id == ft2232_vid))
return devs_ft2232spi[i].vendor_name;
}
return "unknown vendor";
@@ -132,7 +134,8 @@
int r;
r = ftdi_write_data(ftdic, (unsigned char *) buf, size);
if (r < 0) {
- msg_perr("ftdi_write_data: %d, %s\n", r, ftdi_get_error_string(ftdic));
+ msg_perr("ftdi_write_data: %d, %s\n", r,
+ ftdi_get_error_string(ftdic));
return 1;
}
return 0;
@@ -146,7 +149,8 @@
while (size > 0) {
r = ftdi_read_data(ftdic, (unsigned char *) buf, size);
if (r < 0) {
- msg_perr("ftdi_read_data: %d, %s\n", r, ftdi_get_error_string(ftdic));
+ msg_perr("ftdi_read_data: %d, %s\n", r,
+ ftdi_get_error_string(ftdic));
return 1;
}
buf += r;
@@ -183,8 +187,8 @@
enum ftdi_interface ft2232_interface = INTERFACE_A;
/*
* The 'H' chips can run with an internal clock of either 12 MHz or 60 MHz,
- * but the non-H chips can only run at 12 MHz. We enable the divide-by-5
- * prescaler on the former to run on the same speed.
+ * but the non-H chips can only run at 12 MHz. We disable the divide-by-5
+ * prescaler on 'H' chips so they run at 60MHz.
*/
uint8_t clock_5x = 1;
/* In addition to the prescaler mentioned above there is also another
@@ -193,7 +197,8 @@
* div = (1 + x) * 2 <-> x = div / 2 - 1
* Hence the expressible divisors are all even numbers between 2 and
* 2^17 (=131072) resulting in SCK frequencies of 6 MHz down to about
- * 92 Hz for 12 MHz inputs.
+ * 92 Hz for 12 MHz inputs and 30 MHz down to about 458 Hz for 60 MHz
+ * inputs.
*/
uint32_t divisor = DEFAULT_DIVISOR;
int f;
@@ -268,14 +273,17 @@
} else if (!strcasecmp(arg, "google-servo")) {
ft2232_vid = GOOGLE_VID;
ft2232_type = GOOGLE_SERVO_PID;
+ channel_count = 2;
} else if (!strcasecmp(arg, "google-servo-v2")) {
ft2232_vid = GOOGLE_VID;
ft2232_type = GOOGLE_SERVO_V2_PID1;
+ channel_count = 2;
/* Default divisor is too fast, and chip ID fails */
divisor = 6;
} else if (!strcasecmp(arg, "google-servo-v2-legacy")) {
ft2232_vid = GOOGLE_VID;
ft2232_type = GOOGLE_SERVO_V2_PID0;
+ channel_count = 2;
} else if (!strcasecmp(arg, "flyswatter")) {
ft2232_type = FTDI_FT2232H_PID;
channel_count = 2;
@@ -381,7 +389,8 @@
free(arg);
if (f < 0 && f != -5) {
- msg_perr("Unable to open FTDI device: %d (%s).\n", f, ftdi_get_error_string(ftdic));
+ msg_perr("Unable to open FTDI device: %d (%s)\n", f,
+ ftdi_get_error_string(ftdic));
return -4;
}
@@ -408,7 +417,7 @@
if (clock_5x) {
msg_pdbg("Disable divide-by-5 front stage\n");
- buf[0] = 0x8a; /* Disable divide-by-5. DIS_DIV_5 in newer libftdi */
+ buf[0] = DIS_DIV_5;
if (send_buf(ftdic, buf, 1)) {
ret = -5;
goto ftdi_err;
@@ -453,7 +462,8 @@
ftdi_err:
if ((f = ftdi_usb_close(ftdic)) < 0) {
- msg_perr("Unable to close FTDI device: %d (%s)\n", f, ftdi_get_error_string(ftdic));
+ msg_perr("Unable to close FTDI device: %d (%s)\n", f,
+ ftdi_get_error_string(ftdic));
}
return ret;
}
--
To view, visit https://review.coreboot.org/c/flashrom/+/42796
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I24c20e9b5d7e661d0180699bbd0d1447f6bf816f
Gerrit-Change-Number: 42796
Gerrit-PatchSet: 1
Gerrit-Owner: Nikolai Artemiev <nartemiev(a)google.com>
Gerrit-MessageType: newchange