Skip to content

Conversation

@mathieuchopstm
Copy link
Contributor

@mathieuchopstm mathieuchopstm commented Nov 26, 2025

Since #99258, the {source,dest}_burst_length argument is no longer ignored by the dma_stm32u5 driver (notably used on STM32N6 series). Many drivers were mistakenly setting its value to 1 under the assumption that the unit was number of data-sized transfers, which is WRONG - the parameter's unit is in bytes.

This means that most configurations were wrong unless byte-sized transfers were used.

Fix all drivers by setting a proper value for the burst_length parameters, equal to the data size (i.e., resulting in one transfer, as originally intended).

Fixes #100100.

cc @avolmat-st for video driver, @gautierg-st for ADC, ...

The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Fixes broken 16-bit on STM32N6 series.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
The burst length unit is bytes, not number of transfers. This had not been
an issue since the DMA driver historically ignored the values, but has now
become one since they are used and (most importantly for us) validated.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
@mathieuchopstm mathieuchopstm force-pushed the stm32_spi_burst_len_fix branch from 7253af8 to b23aea2 Compare November 27, 2025 13:10
@mathieuchopstm
Copy link
Contributor Author

Edited commit message that made CI unhappy.

@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ADC Analog-to-Digital Converter (ADC) area: ec_host_cmd area: I2C area: I2S area: I3C area: SPI SPI bus area: UART Universal Asynchronous Receiver-Transmitter area: Video Video subsystem platform: STM32 ST Micro STM32

Projects

None yet

Development

Successfully merging this pull request may close these issues.

STM32: broken 16-bit SPI

6 participants