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.
The SPI-Py API allows the user to choose one of the four major SPI
modes. It does so using the SPI_IOC_WR_MODE ioctl, which gives access
to the bottom 8 bits of the mode property of the spidev instance, but
unfortunately it just sets its preferred value, zeroing any higher bits
that might have been set,
A change to the spi-bcm2835 driver in Linux 5.4 [1] converts it to use
GPIO descriptors, which as a side effect enables SPI_CS_HIGH mode
(presumably to avoid a negation somewhere). This change appears to work
as expected, but its reliance on the SPI_CS_HIGH bit means that using
SPI-Py breaks it in a way which persists after the SPI-Py client
application exits.
Fix the problem by preserving the upper mode bits.
Signed-off-by: Phil Elwell [email protected]
[1] 3bd158c56a56 ("spi: bcm2835: Convert to use CS GPIO descriptors")