summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
diff options
context:
space:
mode:
authorIgor Russkikh <igor.russkikh@aquantia.com>2018-01-19 17:03:26 +0300
committerDavid S. Miller <davem@davemloft.net>2018-01-21 18:19:04 -0500
commitc8c82eb387abcfa9a362f3e75106a9d2c7d2b67f (patch)
tree84f34b652b004964b4500575f6f6a695c6f65813 /drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
parenta57d3929b838204efd026e0f6d5eaed5bb65cce7 (diff)
net: aquantia: Introduce global AQC hardware reset sequence
The detailed reset sequence ensures all HW components are in aligned state before NIC startup. It also supports cards with signed firmware (RBL) and checks if their FW is valid. Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c')
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c24
1 files changed, 3 insertions, 21 deletions
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
index 29abbc2588c6..819f6bcf9b4e 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
@@ -87,32 +87,14 @@ static int hw_atl_b0_hw_reset(struct aq_hw_s *self)
{
int err = 0;
- hw_atl_glb_glb_reg_res_dis_set(self, 1U);
- hw_atl_pci_pci_reg_res_dis_set(self, 0U);
- hw_atl_rx_rx_reg_res_dis_set(self, 0U);
- hw_atl_tx_tx_reg_res_dis_set(self, 0U);
-
- HW_ATL_FLUSH();
- hw_atl_glb_soft_res_set(self, 1);
-
- /* check 10 times by 1ms */
- AQ_HW_WAIT_FOR(hw_atl_glb_soft_res_get(self) == 0, 1000U, 10U);
- if (err < 0)
- goto err_exit;
-
- hw_atl_itr_irq_reg_res_dis_set(self, 0U);
- hw_atl_itr_res_irq_set(self, 1U);
-
- /* check 10 times by 1ms */
- AQ_HW_WAIT_FOR(hw_atl_itr_res_irq_get(self) == 0, 1000U, 10U);
- if (err < 0)
- goto err_exit;
+ err = hw_atl_utils_soft_reset(self);
+ if (err)
+ return err;
self->aq_fw_ops->set_state(self, MPI_RESET);
err = aq_hw_err_from_flags(self);
-err_exit:
return err;
}