@@ -18,11 +18,11 @@ LOG_MODULE_REGISTER(flash_ambiq, CONFIG_FLASH_LOG_LEVEL);
18
18
#define SOC_NV_FLASH_NODE DT_INST(0, soc_nv_flash)
19
19
#define SOC_NV_FLASH_ADDR DT_REG_ADDR(SOC_NV_FLASH_NODE)
20
20
#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 )
24
22
#define MIN_WRITE_SIZE 4
25
- #endif /* CONFIG_SOC_SERIES_APOLLO4X */
23
+ #else
24
+ #define MIN_WRITE_SIZE 16
25
+ #endif
26
26
#define FLASH_WRITE_BLOCK_SIZE MAX(DT_PROP(SOC_NV_FLASH_NODE, write_block_size), MIN_WRITE_SIZE)
27
27
#define FLASH_ERASE_BLOCK_SIZE DT_PROP(SOC_NV_FLASH_NODE, erase_block_size)
28
28
@@ -48,7 +48,7 @@ static struct k_sem flash_ambiq_sem;
48
48
static const struct flash_parameters flash_ambiq_parameters = {
49
49
.write_block_size = FLASH_WRITE_BLOCK_SIZE ,
50
50
.erase_value = FLASH_ERASE_BYTE ,
51
- #if defined(CONFIG_SOC_SERIES_APOLLO4X )
51
+ #if ! defined (CONFIG_SOC_SERIES_APOLLO3X )
52
52
.caps = {
53
53
.no_explicit_erase = true,
54
54
},
@@ -113,17 +113,17 @@ static int flash_ambiq_write(const struct device *dev, off_t offset, const void
113
113
aligned [j ] = UNALIGNED_GET ((uint32_t * )src );
114
114
src ++ ;
115
115
}
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 )
122
117
ret = am_hal_flash_program_main (
123
118
AM_HAL_FLASH_PROGRAM_KEY , aligned ,
124
119
(uint32_t * )(SOC_NV_FLASH_ADDR + offset + i * FLASH_WRITE_BLOCK_SIZE ),
125
120
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
127
127
if (ret ) {
128
128
break ;
129
129
}
@@ -150,9 +150,7 @@ static int flash_ambiq_erase(const struct device *dev, off_t offset, size_t len)
150
150
return 0 ;
151
151
}
152
152
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 )
156
154
if ((offset % FLASH_ERASE_BLOCK_SIZE ) != 0 ) {
157
155
LOG_ERR ("offset 0x%lx is not on a page boundary" , (long )offset );
158
156
return - EINVAL ;
@@ -162,15 +160,13 @@ static int flash_ambiq_erase(const struct device *dev, off_t offset, size_t len)
162
160
LOG_ERR ("len %zu is not multiple of a page size" , len );
163
161
return - EINVAL ;
164
162
}
165
- #endif /* CONFIG_SOC_SERIES_APOLLO4X */
163
+ #else
164
+ /* The erase address and length alignment check will be done in HAL.*/
165
+ #endif
166
166
167
167
FLASH_SEM_TAKE ();
168
168
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 )
174
170
unsigned int key = 0 ;
175
171
176
172
key = irq_lock ();
@@ -181,7 +177,11 @@ static int flash_ambiq_erase(const struct device *dev, off_t offset, size_t len)
181
177
AM_HAL_FLASH_ADDR2PAGE (((uint32_t )SOC_NV_FLASH_ADDR + offset )));
182
178
183
179
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
185
185
186
186
FLASH_SEM_GIVE ();
187
187
0 commit comments