@@ -26,8 +26,7 @@ LOG_MODULE_REGISTER(flash_mspi_nor, CONFIG_FLASH_LOG_LEVEL);
2626#define NON_XIP_DEV_CFG_MASK (MSPI_DEVICE_CONFIG_ALL & ~XIP_DEV_CFG_MASK)
2727
2828static void set_up_xfer (const struct device * dev , enum mspi_xfer_direction dir );
29- static int perform_xfer (const struct device * dev ,
30- uint8_t cmd , bool mem_access );
29+ static int perform_xfer (const struct device * dev , uint8_t cmd );
3130static int cmd_rdsr (const struct device * dev , uint8_t op_code , uint8_t * sr );
3231static int wait_until_ready (const struct device * dev , k_timeout_t poll_period );
3332static int cmd_wren (const struct device * dev );
@@ -77,12 +76,13 @@ static uint16_t get_extended_command(const struct device *dev,
7776 return ((uint16_t )cmd << 8 ) | cmd_extension ;
7877}
7978
80- static int perform_xfer (const struct device * dev ,
81- uint8_t cmd , bool mem_access )
79+ static int perform_xfer (const struct device * dev , uint8_t cmd )
8280{
8381 const struct flash_mspi_nor_config * dev_config = dev -> config ;
8482 struct flash_mspi_nor_data * dev_data = dev -> data ;
8583 const struct mspi_dev_cfg * cfg = NULL ;
84+ bool mem_access = (cmd == dev_data -> cmd_info .read_cmd ||
85+ cmd == dev_data -> cmd_info .pp_cmd );
8686 int rc ;
8787
8888 if (dev_data -> cmd_info .cmd_extension != CMD_EXTENSION_NONE &&
@@ -158,7 +158,7 @@ static int cmd_rdsr(const struct device *dev, uint8_t op_code, uint8_t *sr)
158158 }
159159 dev_data -> packet .num_bytes = sizeof (uint8_t );
160160 dev_data -> packet .data_buf = sr ;
161- rc = perform_xfer (dev , op_code , false );
161+ rc = perform_xfer (dev , op_code );
162162 if (rc < 0 ) {
163163 LOG_ERR ("%s 0x%02x failed: %d" , __func__ , op_code , rc );
164164 return rc ;
@@ -194,7 +194,7 @@ static int cmd_wren(const struct device *dev)
194194 int rc ;
195195
196196 set_up_xfer (dev , MSPI_TX );
197- rc = perform_xfer (dev , SPI_NOR_CMD_WREN , false );
197+ rc = perform_xfer (dev , SPI_NOR_CMD_WREN );
198198 if (rc < 0 ) {
199199 LOG_ERR ("%s failed: %d" , __func__ , rc );
200200 return rc ;
@@ -217,7 +217,7 @@ static int cmd_wrsr(const struct device *dev, uint8_t op_code,
217217 set_up_xfer (dev , MSPI_TX );
218218 dev_data -> packet .num_bytes = sr_cnt ;
219219 dev_data -> packet .data_buf = sr ;
220- rc = perform_xfer (dev , op_code , false );
220+ rc = perform_xfer (dev , op_code );
221221 if (rc < 0 ) {
222222 LOG_ERR ("%s 0x%02x failed: %d" , __func__ , op_code , rc );
223223 return rc ;
@@ -368,7 +368,7 @@ static int api_read(const struct device *dev, off_t addr, void *dest,
368368 dev_data -> xfer .rx_dummy = get_rx_dummy (dev );
369369 dev_data -> packet .data_buf = dest ;
370370 dev_data -> packet .num_bytes = to_read ;
371- rc = perform_xfer (dev , dev_data -> cmd_info .read_cmd , true );
371+ rc = perform_xfer (dev , dev_data -> cmd_info .read_cmd );
372372
373373 addr += to_read ;
374374 dest = (uint8_t * )dest + to_read ;
@@ -419,7 +419,7 @@ static int api_write(const struct device *dev, off_t addr, const void *src,
419419 set_up_xfer_with_addr (dev , MSPI_TX , addr );
420420 dev_data -> packet .data_buf = (uint8_t * )src ;
421421 dev_data -> packet .num_bytes = to_write ;
422- rc = perform_xfer (dev , dev_data -> cmd_info .pp_cmd , true );
422+ rc = perform_xfer (dev , dev_data -> cmd_info .pp_cmd );
423423 if (rc < 0 ) {
424424 LOG_ERR ("Page program xfer failed: %d" , rc );
425425 break ;
@@ -491,7 +491,7 @@ static int api_erase(const struct device *dev, off_t addr, size_t size)
491491 if (size == flash_size ) {
492492 /* Chip erase. */
493493 set_up_xfer (dev , MSPI_TX );
494- rc = perform_xfer (dev , SPI_NOR_CMD_CE , false );
494+ rc = perform_xfer (dev , SPI_NOR_CMD_CE );
495495
496496 size -= flash_size ;
497497 } else {
@@ -500,7 +500,7 @@ static int api_erase(const struct device *dev, off_t addr, size_t size)
500500
501501 if (best_et != NULL ) {
502502 set_up_xfer_with_addr (dev , MSPI_TX , addr );
503- rc = perform_xfer (dev , best_et -> cmd , false );
503+ rc = perform_xfer (dev , best_et -> cmd );
504504
505505 addr += BIT (best_et -> exp );
506506 size -= BIT (best_et -> exp );
@@ -566,7 +566,7 @@ static int sfdp_read(const struct device *dev, off_t addr, void *dest,
566566 dev_data -> packet .address = addr ;
567567 dev_data -> packet .data_buf = dest ;
568568 dev_data -> packet .num_bytes = size ;
569- rc = perform_xfer (dev , JESD216_CMD_READ_SFDP , false );
569+ rc = perform_xfer (dev , JESD216_CMD_READ_SFDP );
570570 if (rc < 0 ) {
571571 LOG_ERR ("Read SFDP xfer failed: %d" , rc );
572572 }
@@ -587,7 +587,7 @@ static int read_jedec_id(const struct device *dev, uint8_t *id)
587587 }
588588 dev_data -> packet .data_buf = id ;
589589 dev_data -> packet .num_bytes = JESD216_READ_ID_LEN ;
590- rc = perform_xfer (dev , SPI_NOR_CMD_RDID , false );
590+ rc = perform_xfer (dev , SPI_NOR_CMD_RDID );
591591 if (rc < 0 ) {
592592 LOG_ERR ("Read JEDEC ID failed: %d" , rc );
593593 }
@@ -777,7 +777,7 @@ static int octal_enable_set(const struct device *dev, bool enable)
777777 dev_data -> packet .address = 0x02 ;
778778 dev_data -> packet .num_bytes = sizeof (uint8_t );
779779 dev_data -> packet .data_buf = & status_reg ;
780- rc = perform_xfer (dev , op_code , false );
780+ rc = perform_xfer (dev , op_code );
781781 if (rc < 0 ) {
782782 LOG_ERR ("cmd_rdsr 0x%02x failed: %d" , op_code , rc );
783783 return rc ;
@@ -813,7 +813,7 @@ static int enter_4byte_addressing_mode(const struct device *dev)
813813 }
814814
815815 set_up_xfer (dev , MSPI_TX );
816- rc = perform_xfer (dev , 0xB7 , false );
816+ rc = perform_xfer (dev , 0xB7 );
817817 if (rc < 0 ) {
818818 LOG_ERR ("Command 0xB7 failed: %d" , rc );
819819 return rc ;
@@ -932,14 +932,14 @@ static int soft_reset_66_99(const struct device *dev)
932932 int rc ;
933933
934934 set_up_xfer (dev , MSPI_TX );
935- rc = perform_xfer (dev , SPI_NOR_CMD_RESET_EN , false );
935+ rc = perform_xfer (dev , SPI_NOR_CMD_RESET_EN );
936936 if (rc < 0 ) {
937937 LOG_ERR ("CMD_RESET_EN failed: %d" , rc );
938938 return rc ;
939939 }
940940
941941 set_up_xfer (dev , MSPI_TX );
942- rc = perform_xfer (dev , SPI_NOR_CMD_RESET_MEM , false );
942+ rc = perform_xfer (dev , SPI_NOR_CMD_RESET_MEM );
943943 if (rc < 0 ) {
944944 LOG_ERR ("CMD_RESET_MEM failed: %d" , rc );
945945 return rc ;
0 commit comments