nrf5: add free_driver_priv
Change-Id: I429a9868deb0c4b51f47a4bbad844bdc348e8d21 Signed-off-by: Jim Paris <jim@jtan.com> Reviewed-on: http://openocd.zylin.com/4608 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
parent
6738e447c5
commit
7ce8624dbf
|
@ -108,6 +108,7 @@ enum nrf5_nvmc_config_bits {
|
||||||
|
|
||||||
struct nrf5_info {
|
struct nrf5_info {
|
||||||
uint32_t code_page_size;
|
uint32_t code_page_size;
|
||||||
|
uint32_t refcount;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
bool probed;
|
bool probed;
|
||||||
|
@ -869,6 +870,18 @@ static int nrf5_write(struct flash_bank *bank, const uint8_t *buffer,
|
||||||
return chip->bank[bank->bank_number].write(bank, chip, buffer, offset, count);
|
return chip->bank[bank->bank_number].write(bank, chip, buffer, offset, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nrf5_free_driver_priv(struct flash_bank *bank)
|
||||||
|
{
|
||||||
|
struct nrf5_info *chip = bank->driver_priv;
|
||||||
|
if (chip == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
chip->refcount--;
|
||||||
|
if (chip->refcount == 0) {
|
||||||
|
free(chip);
|
||||||
|
bank->driver_priv = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
FLASH_BANK_COMMAND_HANDLER(nrf5_flash_bank_command)
|
FLASH_BANK_COMMAND_HANDLER(nrf5_flash_bank_command)
|
||||||
{
|
{
|
||||||
|
@ -904,6 +917,7 @@ FLASH_BANK_COMMAND_HANDLER(nrf5_flash_bank_command)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chip->refcount++;
|
||||||
chip->bank[bank->bank_number].probed = false;
|
chip->bank[bank->bank_number].probed = false;
|
||||||
bank->driver_priv = chip;
|
bank->driver_priv = chip;
|
||||||
|
|
||||||
|
@ -1128,6 +1142,7 @@ struct flash_driver nrf5_flash = {
|
||||||
.auto_probe = nrf5_auto_probe,
|
.auto_probe = nrf5_auto_probe,
|
||||||
.erase_check = default_flash_blank_check,
|
.erase_check = default_flash_blank_check,
|
||||||
.protect_check = nrf5_protect_check,
|
.protect_check = nrf5_protect_check,
|
||||||
|
.free_driver_priv = nrf5_free_driver_priv,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* We need to retain the flash-driver name as well as the commands
|
/* We need to retain the flash-driver name as well as the commands
|
||||||
|
@ -1145,4 +1160,5 @@ struct flash_driver nrf51_flash = {
|
||||||
.auto_probe = nrf5_auto_probe,
|
.auto_probe = nrf5_auto_probe,
|
||||||
.erase_check = default_flash_blank_check,
|
.erase_check = default_flash_blank_check,
|
||||||
.protect_check = nrf5_protect_check,
|
.protect_check = nrf5_protect_check,
|
||||||
|
.free_driver_priv = nrf5_free_driver_priv,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue