if (manual_wp) {
LOG_WARNING("manual write mode detected");
- nvm_ctrlb &= ~SAMD_NVM_CTRLB_MANW;
+ } else {
+ LOG_WARNING("automatic write mode detected");
+ nvm_ctrlb |= SAMD_NVM_CTRLB_MANW;
res = target_write_u32(bank->target, SAMD_NVMCTRL + SAMD_NVMCTRL_CTRLB, nvm_ctrlb);
if (res != ERROR_OK) {
- LOG_ERROR("select automatic mode write_u32 failed");
+ LOG_ERROR("select manual mode write_u32 failed");
return res;
}
if (res != ERROR_OK)
return res;
- if (nvm_ctrlb & SAMD_NVM_CTRLB_MANW) {
- LOG_ERROR("select automatic mode failed");
+ if ((nvm_ctrlb & SAMD_NVM_CTRLB_MANW) == 0) {
+ LOG_ERROR("select manual mode failed");
return ERROR_FAIL;
}
- manual_wp = false;
- } else
- LOG_WARNING("automatic write mode detected");
+ LOG_INFO("manual write mode selected");
+ manual_wp = true;
+ }
uint32_t nvm_param;