@@ -42,8 +42,6 @@ LOG_MODULE_REGISTER(flash_stm32_xspi, CONFIG_FLASH_LOG_LEVEL);
4242
4343#define STM32_XSPI_RESET_GPIO DT_INST_NODE_HAS_PROP(0, reset_gpios)
4444
45- #define STM32_XSPI_DLYB_BYPASSED DT_PROP(STM32_XSPI_NODE, dlyb_bypass)
46-
4745#define STM32_XSPI_USE_DMA DT_NODE_HAS_PROP(STM32_XSPI_NODE, dmas)
4846
4947#if STM32_XSPI_USE_DMA
@@ -52,6 +50,11 @@ LOG_MODULE_REGISTER(flash_stm32_xspi, CONFIG_FLASH_LOG_LEVEL);
5250#include <stm32_ll_dma.h>
5351#endif /* STM32_XSPI_USE_DMA */
5452
53+ #if defined(CONFIG_SOC_SERIES_STM32H7RSX )
54+ #include <stm32_ll_pwr.h>
55+ #include <stm32_ll_system.h>
56+ #endif /* CONFIG_SOC_SERIES_STM32H7RSX */
57+
5558#include "flash_stm32_xspi.h"
5659
5760static inline void xspi_lock_thread (const struct device * dev )
@@ -2068,6 +2071,11 @@ static int flash_stm32_xspi_init(const struct device *dev)
20682071 LOG_ERR ("XSPI mode SPI|DUAL|QUAD/DTR is not valid" );
20692072 return - ENOTSUP ;
20702073 }
2074+ #if defined(CONFIG_SOC_SERIES_STM32H7RSX )
2075+ LL_PWR_EnableXSPIM2 ();
2076+ __HAL_RCC_SBS_CLK_ENABLE ();
2077+ LL_SBS_EnableXSPI2SpeedOptim ();
2078+ #endif /* CONFIG_SOC_SERIES_STM32H7RSX */
20712079
20722080 /* Signals configuration */
20732081 ret = pinctrl_apply_state (dev_cfg -> pcfg , PINCTRL_STATE_DEFAULT );
@@ -2136,17 +2144,7 @@ static int flash_stm32_xspi_init(const struct device *dev)
21362144 if (dev_cfg -> data_rate == XSPI_DTR_TRANSFER ) {
21372145 dev_data -> hxspi .Init .MemoryType = HAL_XSPI_MEMTYPE_MACRONIX ;
21382146 dev_data -> hxspi .Init .DelayHoldQuarterCycle = HAL_XSPI_DHQC_ENABLE ;
2139- } else {
2140-
21412147 }
2142- #if defined(XSPI_DCR1_DLYBYP )
2143- #if STM32_XSPI_DLYB_BYPASSED
2144- dev_data -> hxspi .Init .DelayBlockBypass = HAL_XSPI_DELAY_BLOCK_BYPASS ;
2145- #else
2146- dev_data -> hxspi .Init .DelayBlockBypass = HAL_XSPI_DELAY_BLOCK_ON ;
2147- #endif /* STM32_XSPI_DLYB_BYPASSED */
2148- #endif /* XSPI_DCR1_DLYBYP */
2149-
21502148
21512149 if (HAL_XSPI_Init (& dev_data -> hxspi ) != HAL_OK ) {
21522150 LOG_ERR ("XSPI Init failed" );
@@ -2155,7 +2153,8 @@ static int flash_stm32_xspi_init(const struct device *dev)
21552153
21562154 LOG_DBG ("XSPI Init'd" );
21572155
2158- #if defined(HAL_XSPIM_IOPORT_1 ) || defined(HAL_XSPIM_IOPORT_2 )
2156+ #if defined(HAL_XSPIM_IOPORT_1 ) || defined(HAL_XSPIM_IOPORT_2 ) || \
2157+ defined(XSPIM ) || defined(XSPIM1 ) || defined(XSPIM2 )
21592158 /* XSPI I/O manager init Function */
21602159 XSPIM_CfgTypeDef xspi_mgr_cfg ;
21612160
@@ -2468,9 +2467,17 @@ static struct flash_stm32_xspi_data flash_stm32_xspi_dev_data = {
24682467 : HAL_XSPI_CSSEL_NCS2 ),
24692468#endif
24702469 .FreeRunningClock = HAL_XSPI_FREERUNCLK_DISABLE ,
2471- #if defined(OCTOSPI_DCR4_REFRESH )
2470+ #if defined(OCTOSPI_DCR1_DLYBYP ) || defined (XSPI_DCR1_DLYBYP )
2471+ .DelayBlockBypass = (DT_PROP (STM32_XSPI_NODE , dlyb_bypass )
2472+ ? HAL_XSPI_DELAY_BLOCK_BYPASS
2473+ : HAL_XSPI_DELAY_BLOCK_ON ),
2474+ #endif /* xXSPI_DCR1_DLYBYP */
2475+ #if defined(OCTOSPI_DCR3_MAXTRAN ) || defined (XSPI_DCR3_MAXTRAN )
2476+ .MaxTran = 0 ,
2477+ #endif /* xSPI_DCR3_MAXTRAN */
2478+ #if defined(OCTOSPI_DCR4_REFRESH ) || defined (XSPI_DCR4_REFRESH )
24722479 .Refresh = 0 ,
2473- #endif /* OCTOSPI_DCR4_REFRESH */
2480+ #endif /* xSPI_DCR4_REFRESH */
24742481 },
24752482 },
24762483 .qer_type = DT_QER_PROP_OR (0 , JESD216_DW15_QER_VAL_S1B6 ),
0 commit comments