1818#include <sys/param.h> // For MIN/MAX
1919#include <stdbool.h>
2020#include <string.h>
21-
21+ #include "hal/misc.h"
2222#include "soc/spi_periph.h"
2323#include "hal/spi_types.h"
2424#include "hal/spi_flash_types.h"
@@ -144,7 +144,7 @@ static inline void spimem_flash_ll_auto_resume_init(spi_mem_dev_t *dev, bool aut
144144 */
145145static inline void spimem_flash_ll_suspend_cmd_setup (spi_mem_dev_t * dev , uint32_t sus_cmd )
146146{
147- dev -> flash_sus_cmd . flash_pes_command = sus_cmd ;
147+ HAL_FORCE_MODIFY_U32_REG_FIELD ( dev -> flash_sus_cmd , flash_pes_command , sus_cmd ) ;
148148}
149149
150150/**
@@ -156,7 +156,7 @@ static inline void spimem_flash_ll_suspend_cmd_setup(spi_mem_dev_t *dev, uint32_
156156 */
157157static inline void spimem_flash_ll_resume_cmd_setup (spi_mem_dev_t * dev , uint32_t res_cmd )
158158{
159- dev -> flash_sus_cmd . flash_per_command = res_cmd ;
159+ HAL_FORCE_MODIFY_U32_REG_FIELD ( dev -> flash_sus_cmd , flash_per_command , res_cmd ) ;
160160}
161161
162162/**
@@ -168,7 +168,7 @@ static inline void spimem_flash_ll_resume_cmd_setup(spi_mem_dev_t *dev, uint32_t
168168 */
169169static inline void spimem_flash_ll_rd_sus_cmd_setup (spi_mem_dev_t * dev , uint32_t pesr_cmd )
170170{
171- dev -> flash_sus_cmd . wait_pesr_command = pesr_cmd ;
171+ HAL_FORCE_MODIFY_U32_REG_FIELD ( dev -> flash_sus_cmd , wait_pesr_command , pesr_cmd ) ;
172172}
173173
174174/**
@@ -205,7 +205,7 @@ static inline void spimem_flash_ll_res_check_sus_setup(spi_mem_dev_t *dev, bool
205205static inline void spimem_flash_ll_set_read_sus_status (spi_mem_dev_t * dev , uint32_t sus_conf )
206206{
207207 dev -> flash_sus_ctrl .frd_sus_2b = 0 ;
208- dev -> flash_sus_ctrl . pesr_end_msk = sus_conf ;
208+ HAL_FORCE_MODIFY_U32_REG_FIELD ( dev -> flash_sus_ctrl , pesr_end_msk , sus_conf ) ;
209209}
210210
211211/**
@@ -236,13 +236,14 @@ static inline void spimem_flash_set_cs_hold_delay(spi_mem_dev_t *dev, uint32_t c
236236 * Initialize auto wait idle mode
237237 *
238238 * @param dev Beginning address of the peripheral registers.
239- * @param auto_waiti Enable/disable auto wait-idle function
239+ * @param per_waiti Enable wait-idle with time delay function after resume.
240+ * @param pes_waiti Enable wait-idle with time delay function after suspend.
240241 */
241- static inline void spimem_flash_ll_auto_wait_idle_init (spi_mem_dev_t * dev , bool auto_waiti )
242+ static inline void spimem_flash_ll_auto_wait_idle_init (spi_mem_dev_t * dev , bool per_waiti , bool pes_waiti )
242243{
243- dev -> flash_waiti_ctrl . waiti_cmd = 0x05 ;
244- dev -> flash_sus_ctrl .flash_per_wait_en = auto_waiti ;
245- dev -> flash_sus_ctrl .flash_pes_wait_en = auto_waiti ;
244+ HAL_FORCE_MODIFY_U32_REG_FIELD ( dev -> flash_waiti_ctrl , waiti_cmd , 0x05 ) ;
245+ dev -> flash_sus_ctrl .flash_per_wait_en = per_waiti ;
246+ dev -> flash_sus_ctrl .flash_pes_wait_en = pes_waiti ;
246247}
247248
248249/**
@@ -518,11 +519,8 @@ static inline void spimem_flash_ll_set_mosi_bitlen(spi_mem_dev_t *dev, uint32_t
518519static inline void spimem_flash_ll_set_command (spi_mem_dev_t * dev , uint32_t command , uint32_t bitlen )
519520{
520521 dev -> user .usr_command = 1 ;
521- typeof (dev -> user2 ) user2 = {
522- .usr_command_value = command ,
523- .usr_command_bitlen = (bitlen - 1 ),
524- };
525- dev -> user2 .val = user2 .val ;
522+ HAL_FORCE_MODIFY_U32_REG_FIELD (dev -> user2 , usr_command_value , command );
523+ HAL_FORCE_MODIFY_U32_REG_FIELD (dev -> user2 , usr_command_bitlen , (bitlen - 1 ));
526524}
527525
528526/**
0 commit comments