Commit 9de4ce14 authored by Jeff Garzik's avatar Jeff Garzik

Merge

parents e7f10a52 847636cc
...@@ -1730,7 +1730,7 @@ config VIA_RHINE ...@@ -1730,7 +1730,7 @@ config VIA_RHINE
(e.g. VT8235). (e.g. VT8235).
To compile this driver as a module, choose M here. The module To compile this driver as a module, choose M here. The module
will be called via-rhine. will be called via-velocity.
config VIA_RHINE_MMIO config VIA_RHINE_MMIO
bool "Use MMIO instead of PIO" bool "Use MMIO instead of PIO"
......
...@@ -641,6 +641,8 @@ e1000_remove(struct pci_dev *pdev) ...@@ -641,6 +641,8 @@ e1000_remove(struct pci_dev *pdev)
pci_release_regions(pdev); pci_release_regions(pdev);
free_netdev(netdev); free_netdev(netdev);
pci_disable_device(pdev);
} }
/** /**
......
...@@ -549,6 +549,8 @@ static int hdlcdrv_close(struct net_device *dev) ...@@ -549,6 +549,8 @@ static int hdlcdrv_close(struct net_device *dev)
netif_stop_queue(dev); netif_stop_queue(dev);
netif_stop_queue(dev);
if (s->ops && s->ops->close) if (s->ops && s->ops->close)
i = s->ops->close(dev); i = s->ops->close(dev);
if (s->skb) if (s->skb)
......
...@@ -42,10 +42,6 @@ ...@@ -42,10 +42,6 @@
#include "8390.h" #include "8390.h"
#if (LINUX_VERSION_CODE < 0x02030e)
#define net_device device
#endif
#define WD_START_PG 0x00 /* First page of TX buffer */ #define WD_START_PG 0x00 /* First page of TX buffer */
#define CABLETRON_RX_START_PG 0x00 /* First page of RX buffer */ #define CABLETRON_RX_START_PG 0x00 /* First page of RX buffer */
#define CABLETRON_RX_STOP_PG 0x30 /* Last page +1 of RX ring */ #define CABLETRON_RX_STOP_PG 0x30 /* Last page +1 of RX ring */
......
...@@ -653,12 +653,43 @@ static void __devexit ne2k_pci_remove_one (struct pci_dev *pdev) ...@@ -653,12 +653,43 @@ static void __devexit ne2k_pci_remove_one (struct pci_dev *pdev)
pci_set_drvdata(pdev, NULL); pci_set_drvdata(pdev, NULL);
} }
#ifdef CONFIG_PM
static int ne2k_pci_suspend (struct pci_dev *pdev, u32 state)
{
struct net_device *dev = pci_get_drvdata (pdev);
netif_device_detach(dev);
pci_save_state(pdev, pdev->saved_config_space);
pci_set_power_state(pdev, state);
return 0;
}
static int ne2k_pci_resume (struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata (pdev);
pci_set_power_state(pdev, 0);
pci_restore_state(pdev, pdev->saved_config_space);
NS8390_init(dev, 1);
netif_device_attach(dev);
return 0;
}
#endif /* CONFIG_PM */
static struct pci_driver ne2k_driver = { static struct pci_driver ne2k_driver = {
.name = DRV_NAME, .name = DRV_NAME,
.probe = ne2k_pci_init_one, .probe = ne2k_pci_init_one,
.remove = __devexit_p(ne2k_pci_remove_one), .remove = __devexit_p(ne2k_pci_remove_one),
.id_table = ne2k_pci_tbl, .id_table = ne2k_pci_tbl,
#ifdef CONFIG_PM
.suspend = ne2k_pci_suspend,
.resume = ne2k_pci_resume,
#endif /* CONFIG_PM */
}; };
......
...@@ -160,6 +160,49 @@ SMC_outw(u16 val, unsigned long ioaddr, int reg) ...@@ -160,6 +160,49 @@ SMC_outw(u16 val, unsigned long ioaddr, int reg)
#define SMC_insw(a, r, p, l) insw((a) + (r), p, l) #define SMC_insw(a, r, p, l) insw((a) + (r), p, l)
#define SMC_outsw(a, r, p, l) outsw((a) + (r), p, l) #define SMC_outsw(a, r, p, l) outsw((a) + (r), p, l)
#elif defined(CONFIG_MACH_LPD7A400) || defined(CONFIG_MACH_LPD7A404)
#include <asm/arch/constants.h> /* IOBARRIER_VIRT */
#define SMC_CAN_USE_8BIT 0
#define SMC_CAN_USE_16BIT 1
#define SMC_CAN_USE_32BIT 0
#define SMC_NOWAIT 0
#define SMC_IOBARRIER ({ barrier (); readl (IOBARRIER_VIRT); })
static inline unsigned short SMC_inw (unsigned long a, int r)
{
unsigned short v;
v = readw (a + r);
SMC_IOBARRIER;
return v;
}
static inline void SMC_outw (unsigned short v, unsigned long a, int r)
{
writew (v, a + r);
SMC_IOBARRIER;
}
static inline void SMC_insw (unsigned long a, int r, unsigned char* p, int l)
{
while (l-- > 0) {
*((unsigned short*)p)++ = readw (a + r);
SMC_IOBARRIER;
}
}
static inline void SMC_outsw (unsigned long a, int r, unsigned char* p, int l)
{
while (l-- > 0) {
writew (*((unsigned short*)p)++, a + r);
SMC_IOBARRIER;
}
}
#define RPC_LSA_DEFAULT RPC_LED_TX_RX
#define RPC_LSB_DEFAULT RPC_LED_100_10
#elif defined(CONFIG_M32R) #elif defined(CONFIG_M32R)
#define SMC_CAN_USE_8BIT 0 #define SMC_CAN_USE_8BIT 0
......
...@@ -5089,7 +5089,7 @@ mii_get_phy(struct net_device *dev) ...@@ -5089,7 +5089,7 @@ mii_get_phy(struct net_device *dev)
lp->useMII = TRUE; lp->useMII = TRUE;
/* Search the MII address space for possible PHY devices */ /* Search the MII address space for possible PHY devices */
for (n=0, lp->mii_cnt=0, i=1; !((i==1) && (n==1)); i=(++i)%DE4X5_MAX_MII) { for (n=0, lp->mii_cnt=0, i=1; !((i==1) && (n==1)); i=(i+1)%DE4X5_MAX_MII) {
lp->phy[lp->active].addr = i; lp->phy[lp->active].addr = i;
if (i==0) n++; /* Count cycles */ if (i==0) n++; /* Count cycles */
while (de4x5_reset_phy(dev)<0) udelay(100);/* Wait for reset */ while (de4x5_reset_phy(dev)<0) udelay(100);/* Wait for reset */
......
...@@ -234,7 +234,7 @@ static void irlan_client_ctrl_disconnect_indication(void *instance, void *sap, ...@@ -234,7 +234,7 @@ static void irlan_client_ctrl_disconnect_indication(void *instance, void *sap,
ASSERT(tsap == self->client.tsap_ctrl, return;); ASSERT(tsap == self->client.tsap_ctrl, return;);
/* Remove frames queued on the control channel */ /* Remove frames queued on the control channel */
while ((skb = skb_dequeue(&self->client.txq))) { while ((skb = skb_dequeue(&self->client.txq)) != NULL) {
dev_kfree_skb(skb); dev_kfree_skb(skb);
} }
self->client.tx_busy = FALSE; self->client.tx_busy = FALSE;
......
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