|
@@ -4056,6 +4056,24 @@ void i40e_do_reset(struct i40e_pf *pf, u32 reset_flags)
|
|
|
wr32(&pf->hw, I40E_GLGEN_RTRIG, val);
|
|
|
i40e_flush(&pf->hw);
|
|
|
|
|
|
+ } else if (reset_flags & (1 << __I40E_EMP_RESET_REQUESTED)) {
|
|
|
+
|
|
|
+ /* Request a Firmware Reset
|
|
|
+ *
|
|
|
+ * Same as Global reset, plus restarting the
|
|
|
+ * embedded firmware engine.
|
|
|
+ */
|
|
|
+ /* enable EMP Reset */
|
|
|
+ val = rd32(&pf->hw, I40E_GLGEN_RSTENA_EMP);
|
|
|
+ val |= I40E_GLGEN_RSTENA_EMP_EMP_RST_ENA_MASK;
|
|
|
+ wr32(&pf->hw, I40E_GLGEN_RSTENA_EMP, val);
|
|
|
+
|
|
|
+ /* force the reset */
|
|
|
+ val = rd32(&pf->hw, I40E_GLGEN_RTRIG);
|
|
|
+ val |= I40E_GLGEN_RTRIG_EMPFWR_MASK;
|
|
|
+ wr32(&pf->hw, I40E_GLGEN_RTRIG, val);
|
|
|
+ i40e_flush(&pf->hw);
|
|
|
+
|
|
|
} else if (reset_flags & (1 << __I40E_PF_RESET_REQUESTED)) {
|
|
|
|
|
|
/* Request a PF Reset
|