sfc: Remove support for SFN4111T, SFT9001 and Falcon GMAC
[pandora-kernel.git] / drivers / net / sfc / falcon.c
index b398a41..254a599 100644 (file)
@@ -446,30 +446,19 @@ static void falcon_reset_macs(struct efx_nic *efx)
                /* It's not safe to use GLB_CTL_REG to reset the
                 * macs, so instead use the internal MAC resets
                 */
-               if (!EFX_IS10G(efx)) {
-                       EFX_POPULATE_OWORD_1(reg, FRF_AB_GM_SW_RST, 1);
-                       efx_writeo(efx, &reg, FR_AB_GM_CFG1);
-                       udelay(1000);
-
-                       EFX_POPULATE_OWORD_1(reg, FRF_AB_GM_SW_RST, 0);
-                       efx_writeo(efx, &reg, FR_AB_GM_CFG1);
-                       udelay(1000);
-                       return;
-               } else {
-                       EFX_POPULATE_OWORD_1(reg, FRF_AB_XM_CORE_RST, 1);
-                       efx_writeo(efx, &reg, FR_AB_XM_GLB_CFG);
-
-                       for (count = 0; count < 10000; count++) {
-                               efx_reado(efx, &reg, FR_AB_XM_GLB_CFG);
-                               if (EFX_OWORD_FIELD(reg, FRF_AB_XM_CORE_RST) ==
-                                   0)
-                                       return;
-                               udelay(10);
-                       }
-
-                       netif_err(efx, hw, efx->net_dev,
-                                 "timed out waiting for XMAC core reset\n");
+               EFX_POPULATE_OWORD_1(reg, FRF_AB_XM_CORE_RST, 1);
+               efx_writeo(efx, &reg, FR_AB_XM_GLB_CFG);
+
+               for (count = 0; count < 10000; count++) {
+                       efx_reado(efx, &reg, FR_AB_XM_GLB_CFG);
+                       if (EFX_OWORD_FIELD(reg, FRF_AB_XM_CORE_RST) ==
+                           0)
+                               return;
+                       udelay(10);
                }
+
+               netif_err(efx, hw, efx->net_dev,
+                         "timed out waiting for XMAC core reset\n");
        }
 
        /* Mac stats will fail whist the TX fifo is draining */
@@ -508,7 +497,6 @@ static void falcon_reset_macs(struct efx_nic *efx)
         * are re-enabled by the caller */
        efx_writeo(efx, &mac_ctrl, FR_AB_MAC_CTRL);
 
-       /* This can run even when the GMAC is selected */
        falcon_setup_xaui(efx);
 }
 
@@ -646,8 +634,6 @@ static void falcon_stats_timer_func(unsigned long context)
        spin_unlock(&efx->stats_lock);
 }
 
-static void falcon_switch_mac(struct efx_nic *efx);
-
 static bool falcon_loopback_link_poll(struct efx_nic *efx)
 {
        struct efx_link_state old_state = efx->link_state;
@@ -658,11 +644,7 @@ static bool falcon_loopback_link_poll(struct efx_nic *efx)
        efx->link_state.fd = true;
        efx->link_state.fc = efx->wanted_fc;
        efx->link_state.up = true;
-
-       if (efx->loopback_mode == LOOPBACK_GMAC)
-               efx->link_state.speed = 1000;
-       else
-               efx->link_state.speed = 10000;
+       efx->link_state.speed = 10000;
 
        return !efx_link_state_equal(&efx->link_state, &old_state);
 }
@@ -685,7 +667,7 @@ static int falcon_reconfigure_port(struct efx_nic *efx)
        falcon_stop_nic_stats(efx);
        falcon_deconfigure_mac_wrapper(efx);
 
-       falcon_switch_mac(efx);
+       falcon_reset_macs(efx);
 
        efx->phy_op->reconfigure(efx);
        rc = efx->mac_op->reconfigure(efx);
@@ -835,69 +817,16 @@ out:
        return rc;
 }
 
-static void falcon_clock_mac(struct efx_nic *efx)
-{
-       unsigned strap_val;
-       efx_oword_t nic_stat;
-
-       /* Configure the NIC generated MAC clock correctly */
-       efx_reado(efx, &nic_stat, FR_AB_NIC_STAT);
-       strap_val = EFX_IS10G(efx) ? 5 : 3;
-       if (efx_nic_rev(efx) >= EFX_REV_FALCON_B0) {
-               EFX_SET_OWORD_FIELD(nic_stat, FRF_BB_EE_STRAP_EN, 1);
-               EFX_SET_OWORD_FIELD(nic_stat, FRF_BB_EE_STRAP, strap_val);
-               efx_writeo(efx, &nic_stat, FR_AB_NIC_STAT);
-       } else {
-               /* Falcon A1 does not support 1G/10G speed switching
-                * and must not be used with a PHY that does. */
-               BUG_ON(EFX_OWORD_FIELD(nic_stat, FRF_AB_STRAP_PINS) !=
-                      strap_val);
-       }
-}
-
-static void falcon_switch_mac(struct efx_nic *efx)
-{
-       struct efx_mac_operations *old_mac_op = efx->mac_op;
-       struct falcon_nic_data *nic_data = efx->nic_data;
-       unsigned int stats_done_offset;
-
-       WARN_ON(!mutex_is_locked(&efx->mac_lock));
-       WARN_ON(nic_data->stats_disable_count == 0);
-
-       efx->mac_op = (EFX_IS10G(efx) ?
-                      &falcon_xmac_operations : &falcon_gmac_operations);
-
-       if (EFX_IS10G(efx))
-               stats_done_offset = XgDmaDone_offset;
-       else
-               stats_done_offset = GDmaDone_offset;
-       nic_data->stats_dma_done = efx->stats_buffer.addr + stats_done_offset;
-
-       if (old_mac_op == efx->mac_op)
-               return;
-
-       falcon_clock_mac(efx);
-
-       netif_dbg(efx, hw, efx->net_dev, "selected %cMAC\n",
-                 EFX_IS10G(efx) ? 'X' : 'G');
-       /* Not all macs support a mac-level link state */
-       efx->xmac_poll_required = false;
-       falcon_reset_macs(efx);
-}
-
 /* This call is responsible for hooking in the MAC and PHY operations */
 static int falcon_probe_port(struct efx_nic *efx)
 {
+       struct falcon_nic_data *nic_data = efx->nic_data;
        int rc;
 
        switch (efx->phy_type) {
        case PHY_TYPE_SFX7101:
                efx->phy_op = &falcon_sfx7101_phy_ops;
                break;
-       case PHY_TYPE_SFT9001A:
-       case PHY_TYPE_SFT9001B:
-               efx->phy_op = &falcon_sft9001_phy_ops;
-               break;
        case PHY_TYPE_QT2022C2:
        case PHY_TYPE_QT2025C:
                efx->phy_op = &falcon_qt202x_phy_ops;
@@ -937,6 +866,7 @@ static int falcon_probe_port(struct efx_nic *efx)
                  (u64)efx->stats_buffer.dma_addr,
                  efx->stats_buffer.addr,
                  (u64)virt_to_phys(efx->stats_buffer.addr));
+       nic_data->stats_dma_done = efx->stats_buffer.addr + XgDmaDone_offset;
 
        return 0;
 }
@@ -1201,7 +1131,7 @@ static void falcon_monitor(struct efx_nic *efx)
                falcon_stop_nic_stats(efx);
                falcon_deconfigure_mac_wrapper(efx);
 
-               falcon_switch_mac(efx);
+               falcon_reset_macs(efx);
                rc = efx->mac_op->reconfigure(efx);
                BUG_ON(rc);
 
@@ -1210,8 +1140,7 @@ static void falcon_monitor(struct efx_nic *efx)
                efx_link_status_changed(efx);
        }
 
-       if (EFX_IS10G(efx))
-               falcon_poll_xmac(efx);
+       falcon_poll_xmac(efx);
 }
 
 /* Zeroes out the SRAM contents.  This routine must be called in
@@ -1604,16 +1533,6 @@ static int falcon_init_nic(struct efx_nic *efx)
        EFX_SET_OWORD_FIELD(temp, FRF_AB_ONCHIP_SRAM, 1);
        efx_writeo(efx, &temp, FR_AB_NIC_STAT);
 
-       /* Set the source of the GMAC clock */
-       if (efx_nic_rev(efx) == EFX_REV_FALCON_B0) {
-               efx_reado(efx, &temp, FR_AB_GPIO_CTL);
-               EFX_SET_OWORD_FIELD(temp, FRF_AB_USE_NIC_CLK, true);
-               efx_writeo(efx, &temp, FR_AB_GPIO_CTL);
-       }
-
-       /* Select the correct MAC */
-       falcon_clock_mac(efx);
-
        rc = falcon_reset_sram(efx);
        if (rc)
                return rc;