int stellaris_erase(struct flash_bank_s *bank, int first, int last);
int stellaris_protect(struct flash_bank_s *bank, int set, int first, int last);
int stellaris_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count);
+int stellaris_auto_probe(struct flash_bank_s *bank);
int stellaris_probe(struct flash_bank_s *bank);
int stellaris_erase_check(struct flash_bank_s *bank);
int stellaris_protect_check(struct flash_bank_s *bank);
.protect = stellaris_protect,
.write = stellaris_write,
.probe = stellaris_probe,
+ .auto_probe = stellaris_auto_probe,
.erase_check = stellaris_erase_check,
.protect_check = stellaris_protect_check,
.info = stellaris_info
stellaris_flash_bank_t *stellaris_info = bank->driver_priv;
target_t *target = bank->target;
- if (bank->target->state != TARGET_HALTED)
- {
- return ERROR_TARGET_NOT_HALTED;
- }
-
if (stellaris_info->did1 == 0)
{
stellaris_read_part_info(bank);
DEBUG("(bank=%08X buffer=%08X offset=%08X count=%08X)",
(unsigned int)bank, (unsigned int)buffer, offset, count);
- if (bank->target->state != TARGET_HALTED)
- {
- return ERROR_TARGET_NOT_HALTED;
- }
-
if (stellaris_info->did1 == 0)
{
stellaris_read_part_info(bank);
*/
stellaris_flash_bank_t *stellaris_info = bank->driver_priv;
+ stellaris_info->probed = 0;
+
if (stellaris_info->did1 == 0)
{
stellaris_read_part_info(bank);
return ERROR_FLASH_OPERATION_FAILED;
}
+ stellaris_info->probed = 1;
+
return ERROR_OK;
}
+
+int stellaris_auto_probe(struct flash_bank_s *bank)
+{
+ stellaris_flash_bank_t *stellaris_info = bank->driver_priv;
+ if (stellaris_info->probed)
+ return ERROR_OK;
+ return stellaris_probe(bank);
+}