Binary SPI write-then-read doesn't confirm when there's nothing to read #158
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In binary SPI mode, the write-then-read command is supposed to send a confirmation byte (
0x01
) when the operation is complete. This happens inspi_read_to_uart
, which is called only whenread > 0
.When there is 0 bytes to read, BusPirate doesn't send any confirmation (and application needs to guess how long it needs to sleep to use SPI again without interfering).
Flashrom uses write-then-read without read to send commands (e.g. erase, program page). It waits for confirmation byte, which never arrives, so flashrom hangs.
This patch fixes the problem. I tested that the confirmation byte is sent and that flashrom no longer hangs.