@@ -18,11 +18,11 @@ LOG_MODULE_REGISTER(flash_ambiq, CONFIG_FLASH_LOG_LEVEL);
1818#define SOC_NV_FLASH_NODE DT_INST(0, soc_nv_flash)
1919#define SOC_NV_FLASH_ADDR DT_REG_ADDR(SOC_NV_FLASH_NODE)
2020#define SOC_NV_FLASH_SIZE DT_REG_SIZE(SOC_NV_FLASH_NODE)
21- #if (CONFIG_SOC_SERIES_APOLLO4X )
22- #define MIN_WRITE_SIZE 16
23- #else
21+ #if (CONFIG_SOC_SERIES_APOLLO3X )
2422#define MIN_WRITE_SIZE 4
25- #endif /* CONFIG_SOC_SERIES_APOLLO4X */
23+ #else
24+ #define MIN_WRITE_SIZE 16
25+ #endif
2626#define FLASH_WRITE_BLOCK_SIZE MAX(DT_PROP(SOC_NV_FLASH_NODE, write_block_size), MIN_WRITE_SIZE)
2727#define FLASH_ERASE_BLOCK_SIZE DT_PROP(SOC_NV_FLASH_NODE, erase_block_size)
2828
@@ -48,7 +48,7 @@ static struct k_sem flash_ambiq_sem;
4848static const struct flash_parameters flash_ambiq_parameters = {
4949 .write_block_size = FLASH_WRITE_BLOCK_SIZE ,
5050 .erase_value = FLASH_ERASE_BYTE ,
51- #if defined(CONFIG_SOC_SERIES_APOLLO4X )
51+ #if ! defined (CONFIG_SOC_SERIES_APOLLO3X )
5252 .caps = {
5353 .no_explicit_erase = true,
5454 },
@@ -113,17 +113,17 @@ static int flash_ambiq_write(const struct device *dev, off_t offset, const void
113113 aligned [j ] = UNALIGNED_GET ((uint32_t * )src );
114114 src ++ ;
115115 }
116- #if (CONFIG_SOC_SERIES_APOLLO4X )
117- ret = am_hal_mram_main_program (
118- AM_HAL_MRAM_PROGRAM_KEY , aligned ,
119- (uint32_t * )(SOC_NV_FLASH_ADDR + offset + i * FLASH_WRITE_BLOCK_SIZE ),
120- FLASH_WRITE_BLOCK_SIZE / sizeof (uint32_t ));
121- #elif (CONFIG_SOC_SERIES_APOLLO3X )
116+ #if defined(CONFIG_SOC_SERIES_APOLLO3X )
122117 ret = am_hal_flash_program_main (
123118 AM_HAL_FLASH_PROGRAM_KEY , aligned ,
124119 (uint32_t * )(SOC_NV_FLASH_ADDR + offset + i * FLASH_WRITE_BLOCK_SIZE ),
125120 FLASH_WRITE_BLOCK_SIZE / sizeof (uint32_t ));
126- #endif /* CONFIG_SOC_SERIES_APOLLO4X */
121+ #else
122+ ret = am_hal_mram_main_program (
123+ AM_HAL_MRAM_PROGRAM_KEY , aligned ,
124+ (uint32_t * )(SOC_NV_FLASH_ADDR + offset + i * FLASH_WRITE_BLOCK_SIZE ),
125+ FLASH_WRITE_BLOCK_SIZE / sizeof (uint32_t ));
126+ #endif
127127 if (ret ) {
128128 break ;
129129 }
@@ -150,9 +150,7 @@ static int flash_ambiq_erase(const struct device *dev, off_t offset, size_t len)
150150 return 0 ;
151151 }
152152
153- #if (CONFIG_SOC_SERIES_APOLLO4X )
154- /* The erase address and length alignment check will be done in HAL.*/
155- #elif (CONFIG_SOC_SERIES_APOLLO3X )
153+ #if defined(CONFIG_SOC_SERIES_APOLLO3X )
156154 if ((offset % FLASH_ERASE_BLOCK_SIZE ) != 0 ) {
157155 LOG_ERR ("offset 0x%lx is not on a page boundary" , (long )offset );
158156 return - EINVAL ;
@@ -162,15 +160,13 @@ static int flash_ambiq_erase(const struct device *dev, off_t offset, size_t len)
162160 LOG_ERR ("len %zu is not multiple of a page size" , len );
163161 return - EINVAL ;
164162 }
165- #endif /* CONFIG_SOC_SERIES_APOLLO4X */
163+ #else
164+ /* The erase address and length alignment check will be done in HAL.*/
165+ #endif
166166
167167 FLASH_SEM_TAKE ();
168168
169- #if (CONFIG_SOC_SERIES_APOLLO4X )
170- ret = am_hal_mram_main_fill (AM_HAL_MRAM_PROGRAM_KEY , FLASH_ERASE_WORD ,
171- (uint32_t * )(SOC_NV_FLASH_ADDR + offset ),
172- (len / sizeof (uint32_t )));
173- #elif (CONFIG_SOC_SERIES_APOLLO3X )
169+ #if defined(CONFIG_SOC_SERIES_APOLLO3X )
174170 unsigned int key = 0 ;
175171
176172 key = irq_lock ();
@@ -181,7 +177,11 @@ static int flash_ambiq_erase(const struct device *dev, off_t offset, size_t len)
181177 AM_HAL_FLASH_ADDR2PAGE (((uint32_t )SOC_NV_FLASH_ADDR + offset )));
182178
183179 irq_unlock (key );
184- #endif /* CONFIG_SOC_SERIES_APOLLO4X */
180+ #else
181+ ret = am_hal_mram_main_fill (AM_HAL_MRAM_PROGRAM_KEY , FLASH_ERASE_WORD ,
182+ (uint32_t * )(SOC_NV_FLASH_ADDR + offset ),
183+ (len / sizeof (uint32_t )));
184+ #endif
185185
186186 FLASH_SEM_GIVE ();
187187
0 commit comments