Skip to content

Commit

Permalink
[nrf fromtree] drivers: spi: spi_nrfx_spi: Add CPOL handling on SCK pin
Browse files Browse the repository at this point in the history
Pin state after SPI deinitialization is based on pinctrl configuration.
On the other hand, CPOL is set during runtime. When the SPI instance
is disabled GPIO takes control over SCK and drives it to state set
by pinctrl driver. This might causes an invalid SCK state
when the transaction is configured with CPOL (Clock Polarity).

To address this issue, a patch was introduced to the SPI driver.
Now, when a SPI instance is configured with CPOL,
the driver is setting in the runtime the correct state of the SCK pin.

Signed-off-by: Adam Wojasinski <[email protected]>
(cherry picked from commit 9de69aa)
  • Loading branch information
Adam Wojasinski authored and nordicjm committed Aug 16, 2023
1 parent 1de9732 commit 451c1c4
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/spi/spi_nrfx_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,9 @@ static int configure(const struct device *dev,
config.mode = get_nrf_spi_mode(spi_cfg->operation);
config.bit_order = get_nrf_spi_bit_order(spi_cfg->operation);

nrf_gpio_pin_write(nrf_spi_sck_pin_get(dev_config->spi.p_reg),
spi_cfg->operation & SPI_MODE_CPOL ? 1 : 0);

if (dev_data->initialized) {
nrfx_spi_uninit(&dev_config->spi);
dev_data->initialized = false;
Expand Down

0 comments on commit 451c1c4

Please sign in to comment.