Merge branch 'fix/spi_master_dio_qio_hal' into 'master'

spi_master: fix the dual/quad io issue

See merge request idf/esp-idf!4894
This commit is contained in:
Ivan Grokhotkov 2019-04-30 16:14:53 +08:00
commit db86b31ef4
2 changed files with 6 additions and 5 deletions

View file

@ -647,7 +647,9 @@ static void SPI_MASTER_ISR_ATTR spi_new_trans(spi_device_t *dev, spi_trans_priv_
trans = trans_buf->trans;
host->cur_cs = dev_id;
//We should be done with the transmission.
//Reconfigure according to device settings, the function only has effect when the dev_id is changed.
spi_setup_device(host, dev_id);
hal->tx_bitlen = trans->length;
hal->rx_bitlen = trans->rxlength;
@ -683,8 +685,6 @@ static void SPI_MASTER_ISR_ATTR spi_new_trans(spi_device_t *dev, spi_trans_priv_
hal->dummy_bits = dev->cfg.dummy_bits;
}
//Reconfigure according to device settings, the function only has effect when the dev_id is changed.
spi_setup_device(host, dev_id);
spi_hal_setup_trans(hal);
spi_hal_prepare_data(hal);

View file

@ -41,11 +41,12 @@ void spi_hal_setup_trans(const spi_hal_context_t *hal)
{
spi_dev_t *hw = hal->hw;
//clear int bit
spi_ll_clear_int_stat(hal->hw);
//We should be done with the transmission.
assert(spi_ll_get_running_cmd(hw) == 0);
//clear int bit
spi_ll_master_set_io_mode(hw, SPI_LL_IO_MODE_NORMAL);
spi_ll_master_set_io_mode(hw, hal->io_mode);
int extra_dummy = 0;
//when no_dummy is not set and in half-duplex mode, sets the dummy bit if RX phase exist