i40e: Move NVM event wait check to NVM code
[deliverable/linux.git] / drivers / net / ethernet / intel / i40e / i40e_nvm.c
index 1ae29ac8c310ececa45316ae53853cc399042ea2..f2cea3d25de31bf06899bc5a11a02d0d6f8ed192 100644 (file)
@@ -1029,6 +1029,37 @@ retry:
        return status;
 }
 
+/**
+ * i40e_nvmupd_check_wait_event - handle NVM update operation events
+ * @hw: pointer to the hardware structure
+ * @opcode: the event that just happened
+ **/
+void i40e_nvmupd_check_wait_event(struct i40e_hw *hw, u16 opcode)
+{
+       if (opcode == i40e_aqc_opc_nvm_erase ||
+           opcode == i40e_aqc_opc_nvm_update) {
+               i40e_debug(hw, I40E_DEBUG_NVM,
+                          "NVMUPD: clearing wait on opcode 0x%04x\n", opcode);
+               if (hw->nvm_release_on_done) {
+                       i40e_release_nvm(hw);
+                       hw->nvm_release_on_done = false;
+               }
+
+               switch (hw->nvmupd_state) {
+               case I40E_NVMUPD_STATE_INIT_WAIT:
+                       hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
+                       break;
+
+               case I40E_NVMUPD_STATE_WRITE_WAIT:
+                       hw->nvmupd_state = I40E_NVMUPD_STATE_WRITING;
+                       break;
+
+               default:
+                       break;
+               }
+       }
+}
+
 /**
  * i40e_nvmupd_validate_command - Validate given command
  * @hw: pointer to hardware structure
This page took 0.027524 seconds and 5 git commands to generate.