Browse Source

nrf5: add free_driver_priv

Change-Id: I429a9868deb0c4b51f47a4bbad844bdc348e8d21
Signed-off-by: Jim Paris <jim@jtan.com>
jim-rtt
Jim Paris 5 years ago
parent
commit
2f0b9b67d9
1 changed files with 22 additions and 0 deletions
  1. +22
    -0
      src/flash/nor/nrf5.c

+ 22
- 0
src/flash/nor/nrf5.c View File

@@ -108,6 +108,7 @@ enum nrf5_nvmc_config_bits {

struct nrf5_info {
uint32_t code_page_size;
uint32_t refcount;

struct {
bool probed;
@@ -869,6 +870,24 @@ static int nrf5_write(struct flash_bank *bank, const uint8_t *buffer,
return chip->bank[bank->bank_number].write(bank, chip, buffer, offset, count);
}

static void nrf5_free_driver_priv(struct flash_bank *bank)
{
if (bank->sectors) {
free(bank->sectors);
bank->sectors = NULL;
}

struct nrf5_info *chip = bank->driver_priv;
if (chip == NULL)
return;
chip->bank[bank->bank_number].probed = false;

chip->refcount--;
if (chip->refcount == 0) {
free(chip);
bank->driver_priv = NULL;
}
}

FLASH_BANK_COMMAND_HANDLER(nrf5_flash_bank_command)
{
@@ -904,6 +923,7 @@ FLASH_BANK_COMMAND_HANDLER(nrf5_flash_bank_command)
break;
}

chip->refcount++;
chip->bank[bank->bank_number].probed = false;
bank->driver_priv = chip;

@@ -1128,6 +1148,7 @@ struct flash_driver nrf5_flash = {
.auto_probe = nrf5_auto_probe,
.erase_check = default_flash_blank_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
@@ -1145,4 +1166,5 @@ struct flash_driver nrf51_flash = {
.auto_probe = nrf5_auto_probe,
.erase_check = default_flash_blank_check,
.protect_check = nrf5_protect_check,
.free_driver_priv = nrf5_free_driver_priv,
};

Loading…
Cancel
Save