X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fat91sam7.c;h=0347742360b44c3877b4ae29554ce2a88480139c;hp=cf3547942d39638ac95dd4162327c762b2c67b5c;hb=c882cb089477050eb46f5f9fba90ff52179acd71;hpb=8d6292d9a070e87bf49d7d2894cd933795b9e3a8 diff --git a/src/flash/at91sam7.c b/src/flash/at91sam7.c index cf3547942d..0347742360 100644 --- a/src/flash/at91sam7.c +++ b/src/flash/at91sam7.c @@ -57,6 +57,7 @@ int at91sam7_erase(struct flash_bank_s *bank, int first, int last); int at91sam7_protect(struct flash_bank_s *bank, int set, int first, int last); int at91sam7_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count); int at91sam7_probe(struct flash_bank_s *bank); +int at91sam7_auto_probe(struct flash_bank_s *bank); int at91sam7_erase_check(struct flash_bank_s *bank); int at91sam7_protect_check(struct flash_bank_s *bank); int at91sam7_info(struct flash_bank_s *bank, char *buf, int buf_size); @@ -76,6 +77,7 @@ flash_driver_t at91sam7_flash = .protect = at91sam7_protect, .write = at91sam7_write, .probe = at91sam7_probe, + .auto_probe = at91sam7_auto_probe, .erase_check = at91sam7_erase_check, .protect_check = at91sam7_protect_check, .info = at91sam7_info @@ -617,6 +619,7 @@ int at91sam7_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, ch at91sam7_info = malloc(sizeof(at91sam7_flash_bank_t)); bank->driver_priv = at91sam7_info; + at91sam7_info->probed = 0; /* part wasn't probed for info yet */ at91sam7_info->cidr = 0; @@ -806,6 +809,7 @@ int at91sam7_probe(struct flash_bank_s *bank) * if this is an at91sam7, it has the configured flash */ at91sam7_flash_bank_t *at91sam7_info = bank->driver_priv; + at91sam7_info->probed = 0; if (at91sam7_info->cidr == 0) { @@ -818,9 +822,20 @@ int at91sam7_probe(struct flash_bank_s *bank) return ERROR_FLASH_OPERATION_FAILED; } + at91sam7_info->probed = 1; + return ERROR_OK; } + +int at91sam7_auto_probe(struct flash_bank_s *bank) +{ + at91sam7_flash_bank_t *at91sam7_info = bank->driver_priv; + if (at91sam7_info->probed) + return ERROR_OK; + return at91sam7_probe(bank); +} + int at91sam7_info(struct flash_bank_s *bank, char *buf, int buf_size) { int printed, flashplane;