mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
spi: stm32h7: ensure message are smaller than max size
Ensure that messages given to transfer_one handler can actually be handled by it. For that purpose rely on the SPI framework spi_split_transfers_maxsize function to split messages whenever necessary. Signed-off-by: Alain Volmat <alain.volmat@foss.st.com> Link: https://lore.kernel.org/r/1612551572-495-5-git-send-email-alain.volmat@foss.st.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
5a380b833a
commit
084de52328
@ -1004,6 +1004,20 @@ static int stm32_spi_prepare_msg(struct spi_master *master,
|
||||
!!(spi_dev->mode & SPI_LSB_FIRST),
|
||||
!!(spi_dev->mode & SPI_CS_HIGH));
|
||||
|
||||
/* On STM32H7, messages should not exceed a maximum size setted
|
||||
* afterward via the set_number_of_data function. In order to
|
||||
* ensure that, split large messages into several messages
|
||||
*/
|
||||
if (spi->cfg->set_number_of_data) {
|
||||
int ret;
|
||||
|
||||
ret = spi_split_transfers_maxsize(master, msg,
|
||||
STM32H7_SPI_TSIZE_MAX,
|
||||
GFP_KERNEL | GFP_DMA);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&spi->lock, flags);
|
||||
|
||||
/* CPOL, CPHA and LSB FIRST bits have common register */
|
||||
|
Loading…
Reference in New Issue
Block a user