Commit a19d03a3 authored by David S. Miller's avatar David S. Miller

Merge 2.4.x Sun GEM/HME net driver fixes.

parent 71c54597
This diff is collapsed.
...@@ -94,6 +94,8 @@ ...@@ -94,6 +94,8 @@
#define GREG_SWRST_TXRST 0x00000001 /* TX Software Reset */ #define GREG_SWRST_TXRST 0x00000001 /* TX Software Reset */
#define GREG_SWRST_RXRST 0x00000002 /* RX Software Reset */ #define GREG_SWRST_RXRST 0x00000002 /* RX Software Reset */
#define GREG_SWRST_RSTOUT 0x00000004 /* Force RST# pin active */ #define GREG_SWRST_RSTOUT 0x00000004 /* Force RST# pin active */
#define GREG_SWRST_CACHESIZE 0x00ff0000 /* RIO only: cache line size */
#define GREG_SWRST_CACHE_SHIFT 16
/* TX DMA Registers */ /* TX DMA Registers */
#define TXDMA_KICK 0x2000UL /* TX Kick Register */ #define TXDMA_KICK 0x2000UL /* TX Kick Register */
...@@ -986,6 +988,9 @@ struct gem { ...@@ -986,6 +988,9 @@ struct gem {
int mii_phy_addr; int mii_phy_addr;
int gigabit_capable; int gigabit_capable;
u32 mac_rx_cfg;
u32 swrst_base;
/* Autoneg & PHY control */ /* Autoneg & PHY control */
int link_cntl; int link_cntl;
int link_advertise; int link_advertise;
......
...@@ -34,6 +34,7 @@ static char version[] = ...@@ -34,6 +34,7 @@ static char version[] =
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/mii.h> #include <linux/mii.h>
#include <linux/crc32.h> #include <linux/crc32.h>
#include <linux/random.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/bitops.h> #include <asm/bitops.h>
#include <asm/io.h> #include <asm/io.h>
...@@ -2929,8 +2930,10 @@ static void get_hme_mac_nonsparc(struct pci_dev *pdev, unsigned char *dev_addr) ...@@ -2929,8 +2930,10 @@ static void get_hme_mac_nonsparc(struct pci_dev *pdev, unsigned char *dev_addr)
if (is_quattro_p(pdev)) if (is_quattro_p(pdev))
index = PCI_SLOT(pdev->devfn); index = PCI_SLOT(pdev->devfn);
if (pdev->resource[PCI_ROM_RESOURCE].parent == NULL) if (pdev->resource[PCI_ROM_RESOURCE].parent == NULL) {
pci_assign_resource(pdev, PCI_ROM_RESOURCE); if (pci_assign_resource(pdev, PCI_ROM_RESOURCE) < 0)
goto use_random;
}
pci_read_config_dword(pdev, pdev->rom_base_reg, &rom_reg_orig); pci_read_config_dword(pdev, pdev->rom_base_reg, &rom_reg_orig);
pci_write_config_dword(pdev, pdev->rom_base_reg, pci_write_config_dword(pdev, pdev->rom_base_reg,
...@@ -2944,6 +2947,15 @@ static void get_hme_mac_nonsparc(struct pci_dev *pdev, unsigned char *dev_addr) ...@@ -2944,6 +2947,15 @@ static void get_hme_mac_nonsparc(struct pci_dev *pdev, unsigned char *dev_addr)
iounmap(p); iounmap(p);
pci_write_config_dword(pdev, pdev->rom_base_reg, rom_reg_orig); pci_write_config_dword(pdev, pdev->rom_base_reg, rom_reg_orig);
return;
use_random:
/* Sun MAC prefix then 3 random bytes. */
dev_addr[0] = 0x08;
dev_addr[1] = 0x00;
dev_addr[2] = 0x20;
get_random_bytes(dev_addr, 3);
return;
} }
#endif /* !(__sparc__) */ #endif /* !(__sparc__) */
......
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