Difference between revisions of "STM32MP15 ecosystem errata sheet"

[checked revision] [quality revision]
m
m

The STM32MP15xx device errata document[1] lists the different device errata and explains the associated workaround (software and/or hardware) if any.

Among those STM32MP15xx device errata, this article aims to describe which workarounds are implemented in STM32MP15 ecosystem releases.

Here is the legend for the column "Status STM32MP15xx Rev.B" in the table below, which refers to the availability of a workaround for the described errata:

  • A = workaround available
  • P = partial workaround available

Here is the legend for the column "STM32MP15-Ecosystem-vx.x.x Status" in the table below, which refers to the availability of a workaround in the given STM32MP15 ecosystem release:

  • I = workaround Implemented
  • P = workaround Partialy implemented
  • N= workaround Not implemented
  • NA= workaround Not Applicable

Fly over the letters in the table to show the legend locally.

Previous ecosystem releases [Expand/Collapse] Previous ecosystem releases [Expand/Collapse]
Function Section Limitation Status for STM32MP15xx Rev.B Status for ecosystem release v1.0.0 More info.png Status for ecosystem release v1.1.0 More info.png Comment about the workaround implemented in STM32MP15 ecosystem
Arm® Cortex®-A7 core 2.1.1 Memory locations might be accessed speculatively due to instruction fetches when HCR.VM is set A N N Workaround not implemented: STM32MPU Embedded Software distribution does not activate Cortex®-A7 hypervisor mode and so Virtual Memory second stage of translation.

It is customer responsibility to implement the workaround if hypervisor mode used in its product.

2.1.2 Cache maintenance by set/way operations can execute out of order A N N Limited impact on system. Implementation accepted by the community since Linux kernel v5.3 in arch/arm/Kconfig (look for ARM_ERRATA_814220) so it can already be backported, if needed.
2.1.4 PMU event counter 0x14 does not increment correctly A N N No impact on system. Minor impact performance measurement.

No workaround provided by Arm for Linux kernel PMU driver.

Arm® Cortex®-M4 core 2.2.1 Interrupted loads to SP can cause erroneous behavior A N N Limitation only on hand-written assembly code. Customer to implement workaround in its product assembly code.
2.2.2 VDIV or VSQRT instructions might not complete correctly when very short ISRs are used A N N STM32CubeMP1 Package provided as example. It is customer responsibility to implement one of the proposed workarounds according to its user code and product configuration.
2.2.3 Store immediate overlapping exception return operation might vector to incorrect interrupt A N N Impact on system is minor.Workaround to be implemented by customer according to its MPU configuration.
System 2.3.1 TPIU fails to output sync after the pattern generator is disabled in Normal mode A N N No workaround implemented.

No impact on system, issue happens only trace port.

2.3.3 HSE external oscillator required in some LTDC use cases P I I HW implementation of external oscillator connected to the HSE pins available on STM32MP157C-EV1 MB1263 Rev.C (aka "MB1263C") and STM32MP157X-DKX MB1272 Rev.C (aka "MB1272C")

HSE configuration implemented in TF-A fdts/stm32mp157c-ed1.dts for STM32MP157C-EV1 MB1263 and fdts/stm32mp157c-dk1.dts for STM32MP157X-DKX MB1272

2.3.4 RCC cannot exit Stop and LP-Stop modes A I I Implemented in TF-A plat/st/stm32mp1/bl2_plat_setup.c
2.3.5 Incorrect reset of glitch-free kernel clock switch P I I STPMIC1 performs a VDDCORE reset on NRST activation, by default
2.3.6 Limitation of aclk/hclk5/hclk6 to 200 MHz when used as SDMMC1/2 kernel clock P I I Implemented in TF-A fdts with a clock tree that uses a SDMMC1/SDMMC2 kernel clock source that is not the aclk/hclk5/hclk6 bus clock
2.3.8 eMMC boot timeout too short A I I Implemented in STM32MP157C-EV1 MB1263 Rev.C (aka "MB1263C") that uses an eMMC that meets the required timing.
2.3.9 Cortex-M4 cannot use I/O compensation on Standby mode exit A I I The examples delivered with STM32Cube only use IOSPEEDR[1:0] settings 00 and 01.
DDRPHYC 2.4.1 DDRPHYC overconsumption upon reset or Standby mode exit A P P DDRPHYC is correctly reinitialized by TF-A after reset and Standby mode exit.

Issue remains in case of Cortex®-M4 standalone wake-up as TF-A not executed and so DDRPHYC not reinitialized in such case.

2.4.2 DDR_CLK jitter out of JEDEC requirement for 32-bit LPDDR2/LPDDR3 at low device Tj A NA NA ST boards are using DDR3, not LpDDR2/3.
2.4.3 Data corruption at low device Tj combined with low 32-bit LPDDR2/LPDDR3 I/O supply voltage A NA NA ST boards are using DDR3, not LpDDR2/3.
DMAMUX 2.5.4 Wrong input DMA request routed upon specific DMAMUX_CxCR register write coinciding with synchronization event A P P Not applicable in OpenSTLinux distribution as DMA synchronous mode not used.

Customer responsibility to provide the right DMAMUX signal polarity configuration when calling HAL_DMAEx_ConfigMuxSync() provided by STM32CubeMP1 PackageSrc/stm32mp1xx_hal_dma_ex.c .

QUADSPI 2.6.1 Memory-mapped read of last memory byte fails P A A Implemented in OpenSTLinux distribution drivers/spi/spi-stm32-qspi.c
ADC 2.7.1 ADC ANA0/ANA1 resolution limited when Gigabit Ethernet is used P P P Customer should implement workaround by limiting ADC data resolution in OpenSTLinux distribution device tree configuration or in its STM32CubeMP1 Package based application.
2.7.2 ADC missing codes in differential 16-bit static acquisition P P P Customer should implement workaround by limiting ADC data resolution in OpenSTLinux distribution device tree configuration or in its STM32CubeMP1 Package based application.
DAC 2.8.1 Invalid DAC channel analog output if the DAC channel MODE bitfield is programmed before

DAC initialization

A NA NA Linux DAC driver only uses the normal mode and never needs to change the MODE bitfield.
DTS 2.9.1 Mode using PCLK & LSE (REFCLK_SEL = 1) should not be used P I I Implemented in OpenSTLinux distribution drivers/thermal/st/stm_thermal.c
TIM 2.11.1 One-pulse mode trigger not detected in master-slave reset + trigger configuration P N N Proposed workaround is only a recommendation
LPTIM 2.12.1 MCU may remain stuck in LPTIM interrupt when entering Stop mode A N N Interrupt not used in OpenSTLinux distribution.

Workaround not implemented in STM32CubeMP1 Package. It is customer responsibility to implement it in MspDeinit().

2.12.2 MCU may remain stuck in LPTIM interrupt when clearing event flag P I I Interrupt not used in OpenSTLinux distribution.

Implemented in STM32CubeMP1 Package Src/stm32mp1xx_hal_lptim.c

RTC and TAMP 2.13.2 Calendar initialization may fail in case of consecutive INIT mode entry A I I Implemented in OpenSTLinux distribution drivers/rtc/rtc-stm32.c
I2C 2.14.1 Wrong data sampling when data setup time (tSU;DAT) is shorter than one I2C kernel clock period P I I Implemented in TF-A fdts with a clock tree configuring I2C kernel clock source greater than 20MHz.

Valid for both OpenSTLinux distribution and STM32CubeMP1 Package.

2.14.2 Spurious bus error detection in master mode A N N Workaround not implemented, neither in OpenSTLinux distribution nor within STM32CubeMP1 Package, in order to properly get real bus error notifications.
2.14.3 Spurious master transfer upon own slave address match P NA NA Multi-mastering mode implementation of STM32CubeMP1 Package I2C HAL driver prevents to enter in such case.
2.14.5 Transmission stalled after first byte transfer A N N
SPI 2.15.1 Master data transfer stall at system clock much faster than SCK A I I SPI is disabled after each EOT in OpenSTLinux distribution drivers/spi/spi-stm32.c and in STM32CubeMP1 Package Src/stm32mp1xx_hal_spi.c .
2.15.2 Corrupted CRC return at non-zero UDRDET setting P N N Slave mode & CRC not supported in OpenSTLinux distribution.

Not implemented in STM32CubeMP1 Package.

2.15.3 TXP interrupt occurring while SPI disabled A I I Implemented in OpenSTLinux distribution, drivers/spi/spi-stm32.c ensures that all interrupts are disabled before the SPI is disabled.

Implemented in STM32CubeMP1 Package Src/stm32mp1xx_hal_spi.c .

2.15.4 Possible corruption of last-received data depending on CRCSIZE setting A N N CRC not supported in OpenSTLinux distribution.
FDCAN 2.16.1 Desynchronization under specific condition with edge filtering enabled A N N
2.16.2 Tx FIFO messages inverted under specific buffer usage and priority setting A N N
2.16.3 DAR mode transmission failure due to lost arbitration A N N
ETH 2.17.2 Rx DMA may fail to recover upon DMA restart following a bus error, with Rx timestamping enabled A N N
2.17.3 Tx DMA may halt while fetching TSO header under specific conditions A N N
2.17.4 Spurious receive watchdog timeout interrupt A N N
2.17.5 Incorrect flexible PPS output interval under specific conditions A N N
2.17.6 Packets dropped in RMII 10Mbps mode due to fake dribble and CRC error A N N
2.17.7 ARP offload function not effective A P P Customer to activate ARP software support in OpenSTLinux distribution.

References[edit]



The STM32MP15xx device errata document<ref  name=errata>[[STM32MP15 resources - v1.0.0#Errata sheets|STM32MP15 Errata sheets]]</ref> lists the different device errata and explains the associated workaround (software and/or hardware) if any.</br>


Among those STM32MP15xx device errata, this article aims to describe which workarounds are implemented in STM32MP15 ecosystem releases.<br />


Here is the legend for the column "Status STM32MP15xx Rev.B" in the table below, which refers to the availability of a workaround for the described errata:
* A = workaround available
* P = partial workaround available

Here is the legend for the column "STM32MP15-Ecosystem-vx.x.x Status" in the table below, which refers to the availability of a workaround in the given STM32MP15 ecosystem release:
* I = workaround '''I'''mplemented
* P = workaround '''P'''artialy implemented
* N= workaround '''N'''ot implemented
* NA= workaround '''N'''ot '''A'''pplicable

Fly over the letters in the table to show the legend locally.

{| class="st-table"
|+ style="caption-side:top;" | <span class="mw-customtoggle-col-ex">Previous ecosystem releases <span style="color: {{STLightBlue}};">[Expand/Collapse]</span></span>

|+ style="caption-side:bottom;" | <span class="mw-customtoggle-col-ex">Previous ecosystem releases <span style="color: {{STLightBlue}};">[Expand/Collapse]</span></span>

! style="text-align: center" | Function
! style="text-align: center" | Section
! style="text-align: center" | Limitation
! style="text-align: center" | Status for </br>STM32MP15xx Rev.B
! style="text-align: center" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | Status for </br>{{EcosystemRelease | revision=1.0.0}}
! style="text-align: center" | Status for </br>{{EcosystemRelease | revision=1.1.0}}
! style="text-align: center" | Comment about the workaround implemented in STM32MP15 ecosystem
|-
| rowspan="3" | [[Arm Cortex-A7|Arm<sup>&reg;</sup> Cortex<sup>&reg;</sup>-A7 core]]
| style="text-align: center;" | 2.1.1
| Memory locations might be accessed speculatively due to instruction fetches when HCR.VM is set
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Workaround not implemented: [[STM32MPU Embedded Software distribution]] does not activate Cortex<sup>&reg;</sup>-A7 hypervisor mode and so Virtual Memory second stage of translation.</br>

It is customer responsibility to implement the workaround if hypervisor mode used in its product.
|-
| style="text-align: center;" | 2.1.2
| Cache maintenance by set/way operations can execute out of order
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Limited impact on system. Implementation accepted by the community since Linux kernel v5.3 in arch/arm/Kconfig (look for ARM_ERRATA_814220) so it can already be backported, if needed.
|-
| style="text-align: center;" | 2.1.4
| PMU event counter 0x14 does not increment correctly
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| No impact on system. Minor impact performance measurement.</br> 

No workaround provided by Arm for Linux kernel PMU driver.
|-
| rowspan="3" | [[Arm Cortex-M4|Arm<sup>&reg;</sup> Cortex<sup>&reg;</sup>-M4 core]]
| style="text-align: center;" | 2.2.1
| Interrupted loads to SP can cause erroneous behavior
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Limitation only on hand-written assembly code.</br> Customer to implement workaround in its product assembly code.
|-
| style="text-align: center;" | 2.2.2
| VDIV or VSQRT instructions might not complete correctly when very short ISRs are used
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| [[STM32CubeMP1 Package]] provided as example.</br> It is customer responsibility to implement one of the proposed workarounds according to its user code and product configuration.
|-
| style="text-align: center;" | 2.2.3
| Store immediate overlapping exception return operation might vector to incorrect interrupt
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Impact on system is minor.</br>Workaround to be implemented by customer according to its MPU configuration.
|-
| rowspan="7" | System
| style="text-align: center;" | 2.3.1
| TPIU fails to output sync after the pattern generator is disabled in Normal mode
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| No workaround implemented.</br>

No impact on system, issue happens only trace port.
|-
| style="text-align: center;" | 2.3.3
| [[RCC internal peripheral|HSE]] external oscillator required in some [[LTDC internal peripheral|LTDC]] use cases
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| HW implementation of external oscillator connected to the HSE pins available on [[STM32MP157C-EV1 - hardware description|STM32MP157C-EV1]] [[MB1263]] Rev.C (aka "MB1263C") and [[STM32MP157X-DKX - hardware description|STM32MP157X-DKX]] [[MB1272]] Rev.C (aka "MB1272C")</br>

HSE configuration implemented in [[TF-A overview|TF-A]] {{CodeSource | TF-A | fdts/stm32mp157c-ed1.dts | fdts/stm32mp157c-ed1.dts}} for  [[STM32MP157C-EV1 - hardware description|STM32MP157C-EV1]] [[MB1263]]  and {{CodeSource | TF-A | fdts/stm32mp157c-dk1.dts | fdts/stm32mp157c-dk1.dts}} for  [[STM32MP157X-DKX - hardware description|STM32MP157X-DKX]] [[MB1272]] 
|-
| style="text-align: center;" | 2.3.4
| [[RCC internal peripheral|RCC]] cannot exit Stop and LP-Stop modes
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Implemented in [[TF-A overview|TF-A]] {{CodeSource | TF-A | plat/st/stm32mp1/bl2_plat_setup.c#L279 | plat/st/stm32mp1/bl2_plat_setup.c}}
|-
| style="text-align: center;" | 2.3.5
| Incorrect [[RCC internal peripheral|reset]] of glitch-free kernel clock switch
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| [[PMIC_hardware_components#STPMIC1|STPMIC1]] performs a VDDCORE reset on NRST activation, by default
|-
| style="text-align: center;" | 2.3.6
| Limitation of aclk/hclk5/hclk6 to 200 MHz when used as SDMMC1/2 [[RCC internal peripheral|kernel clock]]
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Implemented in [[TF-A overview|TF-A]] {{CodeSource | TF-A | fdts | fdts}} with a [[STM32MP15 clock tree|clock tree]] that uses a SDMMC1/SDMMC2 kernel clock source that is not the aclk/hclk5/hclk6 bus clock
|-
| style="text-align: center;" | 2.3.8
| eMMC boot timeout too short
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Implemented in [[STM32MP157C-EV1 - hardware description|STM32MP157C-EV1]] [[MB1263]] Rev.C (aka "MB1263C") that uses an eMMC that meets the required timing.
|-
| style="text-align: center;" | 2.3.9
| Cortex-M4 cannot use I/O compensation on Standby mode exit
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| The examples delivered with STM32Cube only use IOSPEEDR[1:0] settings 00 and 01.
|-
| rowspan="3" | [[DDRCTRL and DDRPHYC internal peripherals|DDRPHYC]]
| style="text-align: center;" | 2.4.1
| DDRPHYC overconsumption upon reset or Standby mode exit
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround partially implemented" >P</span>

| style="text-align: center;" | <span title="workaround partially implemented" >P</span>

| DDRPHYC is correctly reinitialized by TF-A after reset and Standby mode exit.</br>

Issue remains in case of Cortex<sup>&reg;</sup>-M4 standalone wake-up as TF-A not executed and so DDRPHYC not reinitialized in such case.
|-
| style="text-align: center;" | 2.4.2
| DDR_CLK jitter out of JEDEC requirement for 32-bit LPDDR2/LPDDR3 at low device Tj
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not applicable" >NA</span>

| style="text-align: center;" | <span title="workaround not applicable" >NA</span>

| ST boards are using DDR3, not LpDDR2/3.
|-
| style="text-align: center;" | 2.4.3
| Data corruption at low device Tj combined with low 32-bit LPDDR2/LPDDR3 I/O supply voltage
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not applicable" >NA</span>

| style="text-align: center;" | <span title="workaround not applicable" >NA</span>

| ST boards are using DDR3, not LpDDR2/3.
|-
| rowspan="1" | [[DMAMUX internal peripheral|DMAMUX]]
| style="text-align: center;" | 2.5.4
| Wrong input DMA request routed upon specific DMAMUX_CxCR register write coinciding with synchronization event
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround partially implemented" >P</span>

| style="text-align: center;" | <span title="workaround partially implemented" >P</span>

| Not applicable in [[OpenSTLinux distribution]] as DMA synchronous mode not used. <br />

Customer responsibility to provide the right DMAMUX signal polarity configuration when calling HAL_DMAEx_ConfigMuxSync() provided by [[STM32CubeMP1 Package]]{{CodeSource | STM32CubeMP1 | Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma_ex.c#L320 | Src/stm32mp1xx_hal_dma_ex.c}}.
|-
| rowspan="1" | [[QUADSPI internal peripheral|QUADSPI]]
| style="text-align: center;" | 2.6.1
| Memory-mapped read of last memory byte fails
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >A</span>

| style="text-align: center;" | <span title="workaround implemented" >A</span>

| Implemented in [[OpenSTLinux distribution]] {{CodeSource | Linux kernel | drivers/spi/spi-stm32-qspi.c#L452 | drivers/spi/spi-stm32-qspi.c}}
|-
| rowspan="2" | [[ADC internal peripheral|ADC]]
| style="text-align: center;" | 2.7.1
| ADC ANA0/ANA1 resolution limited when Gigabit Ethernet is used
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround partially implemented " >P</span>

| style="text-align: center;" | <span title="workaround partially implemented " >P</span>

| Customer should implement workaround by limiting ADC data resolution in [[OpenSTLinux distribution]] device tree configuration or in its [[STM32CubeMP1 Package]] based application.
|-
| style="text-align: center;" | 2.7.2
| ADC missing codes in differential 16-bit static acquisition
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround partially implemented" >P</span>

| style="text-align: center;" | <span title="workaround partially implemented" >P</span>

| Customer should implement workaround by limiting ADC data resolution in [[OpenSTLinux distribution]] device tree configuration or in its [[STM32CubeMP1 Package]] based application.
|-
| rowspan="1" | [[DAC internal peripheral|DAC]]
| style="text-align: center;" | 2.8.1
| Invalid DAC channel analog output if the DAC channel MODE bitfield is programmed before
DAC initialization
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not applicable" >NA</span>

| style="text-align: center;" | <span title="workaround not applicable" >NA</span>

| Linux DAC driver only uses the normal mode and never needs to change the MODE bitfield.
|-
| rowspan="1" | [[DTS internal peripheral|DTS]]
| style="text-align: center;" | 2.9.1
| Mode using PCLK & LSE (REFCLK_SEL = 1) should not be used
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Implemented in [[OpenSTLinux distribution]] {{CodeSource | Linux kernel | drivers/thermal/st/stm_thermal.c#L215 | drivers/thermal/st/stm_thermal.c}}
|-
| rowspan="1" | [[TIM internal peripheral|TIM]]
| style="text-align: center;" | 2.11.1
| One-pulse mode trigger not detected in master-slave reset + trigger configuration
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Proposed workaround is only a recommendation
|-
| rowspan="2" | [[LPTIM internal peripheral|LPTIM]]
| style="text-align: center;" | 2.12.1
| MCU may remain stuck in LPTIM interrupt when entering Stop mode
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Interrupt not used in [[OpenSTLinux distribution]]. <br />

Workaround not implemented in [[STM32CubeMP1 Package]]. It is customer responsibility to implement it in MspDeinit().
|-
| style="text-align: center;" | 2.12.2
| MCU may remain stuck in LPTIM interrupt when clearing event flag
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Interrupt not used in [[OpenSTLinux distribution]]. </br>

Implemented in [[STM32CubeMP1 Package]] {{CodeSource | STM32CubeMP1 | Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_lptim.c#L1413 | Src/stm32mp1xx_hal_lptim.c}}
|-
| rowspan="1" | [[RTC internal peripheral|RTC]] and [[TAMP internal peripheral|TAMP]]
| style="text-align: center;" | 2.13.2
| Calendar initialization may fail in case of consecutive INIT mode entry
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Implemented in [[OpenSTLinux distribution]] {{CodeSource | Linux kernel | drivers/rtc/rtc-stm32.c#L276 | drivers/rtc/rtc-stm32.c}}
|-
| rowspan="4" | [[I2C internal peripheral|I2C]]
| style="text-align: center;" | 2.14.1
| Wrong data sampling when data setup time (tSU;DAT) is shorter than one I2C kernel clock period
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Implemented in [[TF-A overview|TF-A]] {{CodeSource | TF-A | fdts | fdts}} with a [[STM32MP15 clock tree|clock tree]] configuring I2C kernel clock source greater than 20MHz.
Valid for both [[OpenSTLinux distribution]] and [[STM32CubeMP1 Package]].
|-
| style="text-align: center;" | 2.14.2
| Spurious bus error detection in master mode
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Workaround not implemented, neither in [[OpenSTLinux distribution]] nor within [[STM32CubeMP1 Package]], in order to properly get real bus error notifications.
|-
| style="text-align: center;" | 2.14.3
| Spurious master transfer upon own slave address match
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not applicable" >NA</span>

| style="text-align: center;" | <span title="workaround not applicable" >NA</span>

| Multi-mastering mode implementation of [[STM32CubeMP1 Package]] I2C HAL driver prevents to enter in such case.
|-
| style="text-align: center;" | 2.14.5
| Transmission stalled after first byte transfer
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| {{ReviewsComments|GeraldB: 1.1.0 check on going}} 
|-
| rowspan="4" | [[SPI internal peripheral|SPI]]
| style="text-align: center;" | 2.15.1
| Master data transfer stall at system clock much faster than SCK
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| SPI is disabled after each EOT in [[OpenSTLinux distribution]] {{CodeSource | Linux kernel | drivers/spi/spi-stm32.c | drivers/spi/spi-stm32.c}} and in [[STM32CubeMP1 Package]] {{CodeSource | STM32CubeMP1 | Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi.c | Src/stm32mp1xx_hal_spi.c}}.
|-
| style="text-align: center;" | 2.15.2
| Corrupted CRC return at non-zero UDRDET setting
| style="text-align: center;" | <span title="partial workaround available" >P</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| Slave mode & CRC not supported in [[OpenSTLinux distribution]]. <br />

Not implemented in [[STM32CubeMP1 Package]].
|-
| style="text-align: center;" | 2.15.3
| TXP interrupt occurring while SPI disabled
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround implemented" >I</span>

| style="text-align: center;" | <span title="workaround implemented" >I</span>

| Implemented in [[OpenSTLinux distribution]], {{CodeSource | Linux kernel | drivers/spi/spi-stm32.c | drivers/spi/spi-stm32.c}} ensures that all interrupts are disabled before the SPI is disabled.<br />

Implemented in [[STM32CubeMP1 Package]] {{CodeSource | STM32CubeMP1 | Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi.c | Src/stm32mp1xx_hal_spi.c}}.
|-
| style="text-align: center;" | 2.15.4
| Possible corruption of last-received data depending on CRCSIZE setting
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| CRC not supported in [[OpenSTLinux distribution]].
|-
| rowspan="3" | [[FDCAN internal peripheral|FDCAN]]
| style="text-align: center;" | 2.16.1
| Desynchronization under specific condition with edge filtering enabled
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| {{ReviewsComments|GeraldB: 1.1.0 check on going}}
|-
| style="text-align: center;" | 2.16.2
| Tx FIFO messages inverted under specific buffer usage and priority setting
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| {{ReviewsComments|GeraldB: 1.1.0 check on going}}
|-
| style="text-align: center;" | 2.16.3
| DAR mode transmission failure due to lost arbitration
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

| {{ReviewsComments|GeraldB: 1.1.0 check on going}}
|-
| rowspan="6" | [[ETH internal peripheral|ETH]]
| style="text-align: center;" | 2.17.2
| Rx DMA may fail to recover upon DMA restart following a bus error, with Rx timestamping enabled
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

|
|-
| style="text-align: center;" | 2.17.3
| Tx DMA may halt while fetching TSO header under specific conditions
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

|
|-
| style="text-align: center;" | 2.17.4
| Spurious receive watchdog timeout interrupt
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

|
|-
| style="text-align: center;" | 2.17.5
| Incorrect flexible PPS output interval under specific conditions
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

|
|-
| style="text-align: center;" | 2.17.6
| Packets dropped in RMII 10Mbps mode due to fake dribble and CRC error
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround not implemented" >N</span>

| style="text-align: center;" | <span title="workaround not implemented" >N</span>

|
|-
| style="text-align: center;" | 2.17.7
| ARP offload function not effective
| style="text-align: center;" | <span title="workaround available" >A</span>

| style="text-align: center;" id="mw-customcollapsible-col-ex" class="mw-collapsible mw-collapsed" | <span title="workaround partially implemented" >P</span>

| style="text-align: center;" | <span title="workaround partially implemented" >P</span>

| Customer to activate ARP software support in [[OpenSTLinux distribution]].
{{ReviewsComments|GeraldB: why "P" and not "N" ? My understanding is that the customer would have to implement the workaround by himself}} 
|-
|}

=References=<references/>

<noinclude>
{{PublicationRequestId | Auto}}[[Category:Release notes archives]]</noinclude>
Line 362: Line 362:
   
 
<noinclude>
 
<noinclude>
  +
{{PublicationRequestId | Auto}}
 
[[Category:Release notes archives]]
 
[[Category:Release notes archives]]
 
</noinclude>
 
</noinclude>

Attachments

Discussions