Commit 412f8e0c authored by Mark Einon's avatar Mark Einon Committed by Greg Kroah-Hartman

staging: et131x: Remove private adapter->linkspeed and use phydev->speed instead

The phy device keeps a note of the link speed, so use that value instead of the driver private one.

Also use the phydev defines for link speeds, and remove the driver private ones.

adapter->hw_errs was never used, even in the vendor driver, so remove that too.
Signed-off-by: default avatarMark Einon <mark.einon@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 740b7a2c
...@@ -82,6 +82,7 @@ ...@@ -82,6 +82,7 @@
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/crc32.h> #include <linux/crc32.h>
#include <linux/phy.h>
#include "et1310_phy.h" #include "et1310_phy.h"
#include "et131x_adapter.h" #include "et131x_adapter.h"
...@@ -166,6 +167,7 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter) ...@@ -166,6 +167,7 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter)
{ {
int32_t delay = 0; int32_t delay = 0;
struct mac_regs __iomem *mac = &adapter->regs->mac; struct mac_regs __iomem *mac = &adapter->regs->mac;
struct phy_device *phydev = adapter->phydev;
u32 cfg1; u32 cfg1;
u32 cfg2; u32 cfg2;
u32 ifctrl; u32 ifctrl;
...@@ -178,7 +180,7 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter) ...@@ -178,7 +180,7 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter)
/* Set up the if mode bits */ /* Set up the if mode bits */
cfg2 &= ~0x300; cfg2 &= ~0x300;
if (adapter->linkspeed == TRUEPHY_SPEED_1000MBPS) { if (phydev && phydev->speed == SPEED_1000) {
cfg2 |= 0x200; cfg2 |= 0x200;
/* Phy mode bit */ /* Phy mode bit */
ifctrl &= ~(1 << 24); ifctrl &= ~(1 << 24);
...@@ -239,6 +241,7 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter) ...@@ -239,6 +241,7 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter)
void et1310_config_rxmac_regs(struct et131x_adapter *adapter) void et1310_config_rxmac_regs(struct et131x_adapter *adapter)
{ {
struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac; struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac;
struct phy_device *phydev = adapter->phydev;
u32 sa_lo; u32 sa_lo;
u32 sa_hi = 0; u32 sa_hi = 0;
u32 pf_ctrl = 0; u32 pf_ctrl = 0;
...@@ -351,7 +354,7 @@ void et1310_config_rxmac_regs(struct et131x_adapter *adapter) ...@@ -351,7 +354,7 @@ void et1310_config_rxmac_regs(struct et131x_adapter *adapter)
* bit 16: Receive frame truncated. * bit 16: Receive frame truncated.
* bit 17: Drop packet enable * bit 17: Drop packet enable
*/ */
if (adapter->linkspeed == TRUEPHY_SPEED_100MBPS) if (phydev && phydev->speed == SPEED_100)
writel(0x30038, &rxmac->mif_ctrl); writel(0x30038, &rxmac->mif_ctrl);
else else
writel(0x30030, &rxmac->mif_ctrl); writel(0x30030, &rxmac->mif_ctrl);
......
...@@ -440,6 +440,7 @@ void et131x_xcvr_init(struct et131x_adapter *adapter) ...@@ -440,6 +440,7 @@ void et131x_xcvr_init(struct et131x_adapter *adapter)
void et131x_mii_check(struct et131x_adapter *adapter, void et131x_mii_check(struct et131x_adapter *adapter,
u16 bmsr, u16 bmsr_ints) u16 bmsr, u16 bmsr_ints)
{ {
struct phy_device *phydev = adapter->phydev;
u8 link_status; u8 link_status;
u32 autoneg_status; u32 autoneg_status;
u32 speed; u32 speed;
...@@ -456,7 +457,7 @@ void et131x_mii_check(struct et131x_adapter *adapter, ...@@ -456,7 +457,7 @@ void et131x_mii_check(struct et131x_adapter *adapter,
dev_warn(&adapter->pdev->dev, dev_warn(&adapter->pdev->dev,
"Link down - cable problem ?\n"); "Link down - cable problem ?\n");
if (adapter->linkspeed == TRUEPHY_SPEED_10MBPS) { if (phydev && phydev->speed == SPEED_10) {
/* NOTE - Is there a way to query this without /* NOTE - Is there a way to query this without
* TruePHY? * TruePHY?
* && TRU_QueryCoreType(adapter->hTruePhy, 0) == * && TRU_QueryCoreType(adapter->hTruePhy, 0) ==
...@@ -476,7 +477,6 @@ void et131x_mii_check(struct et131x_adapter *adapter, ...@@ -476,7 +477,6 @@ void et131x_mii_check(struct et131x_adapter *adapter,
netif_carrier_off(adapter->netdev); netif_carrier_off(adapter->netdev);
adapter->linkspeed = 0;
adapter->duplex_mode = 0; adapter->duplex_mode = 0;
/* Free the packets being actively sent & stopped */ /* Free the packets being actively sent & stopped */
...@@ -516,12 +516,11 @@ void et131x_mii_check(struct et131x_adapter *adapter, ...@@ -516,12 +516,11 @@ void et131x_mii_check(struct et131x_adapter *adapter,
&speed, &duplex, &mdi_mdix, &speed, &duplex, &mdi_mdix,
&masterslave, &polarity); &masterslave, &polarity);
adapter->linkspeed = speed;
adapter->duplex_mode = duplex; adapter->duplex_mode = duplex;
adapter->boot_coma = 20; adapter->boot_coma = 20;
if (adapter->linkspeed == TRUEPHY_SPEED_10MBPS) { if (phydev && phydev->speed == SPEED_10) {
/* /*
* NOTE - Is there a way to query this without * NOTE - Is there a way to query this without
* TruePHY? * TruePHY?
...@@ -542,7 +541,7 @@ void et131x_mii_check(struct et131x_adapter *adapter, ...@@ -542,7 +541,7 @@ void et131x_mii_check(struct et131x_adapter *adapter,
et1310_config_flow_control(adapter); et1310_config_flow_control(adapter);
if (adapter->linkspeed == TRUEPHY_SPEED_1000MBPS && if (phydev && phydev->speed == SPEED_1000 &&
adapter->registry_jumbo_packet > 2048) adapter->registry_jumbo_packet > 2048)
et1310_phy_and_or_reg(adapter, 0x16, 0xcfff, et1310_phy_and_or_reg(adapter, 0x16, 0xcfff,
0x2000); 0x2000);
......
...@@ -242,11 +242,6 @@ struct mi_regs { ...@@ -242,11 +242,6 @@ struct mi_regs {
#define TRUEPHY_MASK 2 #define TRUEPHY_MASK 2
#endif #endif
/* Define speeds */
#define TRUEPHY_SPEED_10MBPS 0
#define TRUEPHY_SPEED_100MBPS 1
#define TRUEPHY_SPEED_1000MBPS 2
/* Define duplex modes */ /* Define duplex modes */
#define TRUEPHY_DUPLEX_HALF 0 #define TRUEPHY_DUPLEX_HALF 0
#define TRUEPHY_DUPLEX_FULL 1 #define TRUEPHY_DUPLEX_FULL 1
......
...@@ -82,6 +82,7 @@ ...@@ -82,6 +82,7 @@
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/phy.h>
#include "et1310_phy.h" #include "et1310_phy.h"
#include "et131x_adapter.h" #include "et131x_adapter.h"
...@@ -724,11 +725,15 @@ void et131x_config_rx_dma_regs(struct et131x_adapter *adapter) ...@@ -724,11 +725,15 @@ void et131x_config_rx_dma_regs(struct et131x_adapter *adapter)
*/ */
void et131x_set_rx_dma_timer(struct et131x_adapter *adapter) void et131x_set_rx_dma_timer(struct et131x_adapter *adapter)
{ {
struct phy_device *phydev = adapter->phydev;
if (!phydev)
return;
/* For version B silicon, we do not use the RxDMA timer for 10 and 100 /* For version B silicon, we do not use the RxDMA timer for 10 and 100
* Mbits/s line rates. We do not enable and RxDMA interrupt coalescing. * Mbits/s line rates. We do not enable and RxDMA interrupt coalescing.
*/ */
if ((adapter->linkspeed == TRUEPHY_SPEED_100MBPS) || if ((phydev->speed == SPEED_100) || (phydev->speed == SPEED_10)) {
(adapter->linkspeed == TRUEPHY_SPEED_10MBPS)) {
writel(0, &adapter->regs->rxdma.max_pkt_time); writel(0, &adapter->regs->rxdma.max_pkt_time);
writel(1, &adapter->regs->rxdma.num_pkt_done); writel(1, &adapter->regs->rxdma.num_pkt_done);
} }
......
...@@ -82,6 +82,7 @@ ...@@ -82,6 +82,7 @@
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/phy.h>
#include "et1310_phy.h" #include "et1310_phy.h"
#include "et131x_adapter.h" #include "et131x_adapter.h"
...@@ -287,6 +288,7 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb) ...@@ -287,6 +288,7 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb)
u32 nr_frags = skb_shinfo(skb)->nr_frags + 1; u32 nr_frags = skb_shinfo(skb)->nr_frags + 1;
struct skb_frag_struct *frags = &skb_shinfo(skb)->frags[0]; struct skb_frag_struct *frags = &skb_shinfo(skb)->frags[0];
unsigned long flags; unsigned long flags;
struct phy_device *phydev = adapter->phydev;
/* Part of the optimizations of this send routine restrict us to /* Part of the optimizations of this send routine restrict us to
* sending 24 fragments at a pass. In practice we should never see * sending 24 fragments at a pass. In practice we should never see
...@@ -400,7 +402,7 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb) ...@@ -400,7 +402,7 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb)
if (frag == 0) if (frag == 0)
return -EIO; return -EIO;
if (adapter->linkspeed == TRUEPHY_SPEED_1000MBPS) { if (phydev && phydev->speed == SPEED_1000) {
if (++adapter->tx_ring.since_irq == PARM_TX_NUM_BUFS_DEF) { if (++adapter->tx_ring.since_irq == PARM_TX_NUM_BUFS_DEF) {
/* Last element & Interrupt flag */ /* Last element & Interrupt flag */
desc[frag - 1].flags = 0x5; desc[frag - 1].flags = 0x5;
...@@ -478,7 +480,7 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb) ...@@ -478,7 +480,7 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb)
/* For Gig only, we use Tx Interrupt coalescing. Enable the software /* For Gig only, we use Tx Interrupt coalescing. Enable the software
* timer to wake us up if this packet isn't followed by N more. * timer to wake us up if this packet isn't followed by N more.
*/ */
if (adapter->linkspeed == TRUEPHY_SPEED_1000MBPS) { if (phydev && phydev->speed == SPEED_1000) {
writel(PARM_TX_TIME_INT_DEF * NANO_IN_A_MICRO, writel(PARM_TX_TIME_INT_DEF * NANO_IN_A_MICRO,
&adapter->regs->global.watchdog_timer); &adapter->regs->global.watchdog_timer);
} }
......
...@@ -147,7 +147,6 @@ struct et131x_adapter { ...@@ -147,7 +147,6 @@ struct et131x_adapter {
/* Flags that indicate current state of the adapter */ /* Flags that indicate current state of the adapter */
u32 flags; u32 flags;
u32 hw_errs;
/* Configuration */ /* Configuration */
u8 rom_addr[ETH_ALEN]; u8 rom_addr[ETH_ALEN];
...@@ -170,7 +169,6 @@ struct et131x_adapter { ...@@ -170,7 +169,6 @@ struct et131x_adapter {
/* Packet Filter and look ahead size */ /* Packet Filter and look ahead size */
u32 packet_filter; u32 packet_filter;
u32 linkspeed;
u32 duplex_mode; u32 duplex_mode;
/* multicast list */ /* multicast list */
......
...@@ -678,12 +678,6 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev, ...@@ -678,12 +678,6 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,
/* Copy address into the net_device struct */ /* Copy address into the net_device struct */
memcpy(netdev->dev_addr, adapter->addr, ETH_ALEN); memcpy(netdev->dev_addr, adapter->addr, ETH_ALEN);
/* Setup et1310 as per the documentation */
et131x_adapter_setup(adapter);
/* Create a timer to count errors received by the NIC */
init_timer(&adapter->error_timer);
adapter->error_timer.expires = jiffies + TX_ERROR_PERIOD * HZ / 1000; adapter->error_timer.expires = jiffies + TX_ERROR_PERIOD * HZ / 1000;
adapter->error_timer.function = et131x_error_timer_handler; adapter->error_timer.function = et131x_error_timer_handler;
adapter->error_timer.data = (unsigned long)adapter; adapter->error_timer.data = (unsigned long)adapter;
...@@ -726,6 +720,12 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev, ...@@ -726,6 +720,12 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,
goto err_mdio_unregister; goto err_mdio_unregister;
} }
/* Setup et1310 as per the documentation */
et131x_adapter_setup(adapter);
/* Create a timer to count errors received by the NIC */
init_timer(&adapter->error_timer);
/* We can enable interrupts now /* We can enable interrupts now
* *
* NOTE - Because registration of interrupt handler is done in the * NOTE - Because registration of interrupt handler is done in the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment