-diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
-index c27cfce..99a1c61 100644
---- a/drivers/net/au1000_eth.c
-+++ b/drivers/net/au1000_eth.c
-@@ -1316,12 +1316,20 @@ static void set_rx_mode(struct net_device *dev)
+--- linux-2.6.22.1.orig/drivers/net/au1000_eth.c 2007-07-24 18:43:25.527583520 +0200
++++ linux-2.6.22.1/drivers/net/au1000_eth.c 2007-07-24 23:07:00.388821102 +0200
+@@ -1320,9 +1320,12 @@
+ }
+ }
+
++#define AU1000_KNOWN_PHY_IOCTLS (SIOCGMIIPHY & 0xfff0)
static int au1000_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
{
struct au1000_private *aup = (struct au1000_private *)dev->priv;
-+ struct mii_ioctl_data *data = if_mii(rq);
-+ int rc = -EOPNOTSUPP;
++ if((cmd & AU1000_KNOWN_PHY_IOCTLS) != AU1000_KNOWN_PHY_IOCTLS)
++ return -EINVAL;
if (!netif_running(dev)) return -EINVAL;
- if (!aup->phy_dev) return -EINVAL; // PHY not controllable
-
-- return phy_mii_ioctl(aup->phy_dev, if_mii(rq), cmd);
-+ switch (cmd) {
-+ default:
-+ rc = phy_mii_ioctl(aup->phy_dev, data, cmd);
-+ break;
-+ }
-+
-+ return rc;
- }
-
- static struct net_device_stats *au1000_get_stats(struct net_device *dev)
--- /dev/null
+--- linux-2.6.22.1.orig/include/asm-mips/mach-au1x00/au1000.h 2007-07-24 18:44:21.598778839 +0200
++++ linux-2.6.22.1/include/asm-mips/mach-au1x00/au1000.h 2007-07-24 22:08:49.761901610 +0200
+@@ -1680,9 +1680,9 @@
+ #define PCI_LAST_DEVFN (19<<3)
+
+ #define IOPORT_RESOURCE_START 0x00001000 /* skip legacy probing */
+-#define IOPORT_RESOURCE_END 0xffffffff
++#define IOPORT_RESOURCE_END 0xfffffffffULL
+ #define IOMEM_RESOURCE_START 0x10000000
+-#define IOMEM_RESOURCE_END 0xffffffff
++#define IOMEM_RESOURCE_END 0xfffffffffULL
+
+ /*
+ * Borrowed from the PPC arch:
--- /dev/null
+--- linux-2.6.22.1.orig/arch/mips/au1000/common/pci.c 2007-07-24 18:42:21.031908123 +0200
++++ linux-2.6.22.1/arch/mips/au1000/common/pci.c 2007-07-24 22:12:07.373162835 +0200
+@@ -74,6 +74,7 @@
+ printk(KERN_ERR "Unable to ioremap pci space\n");
+ return 1;
+ }
++ au1x_controller.io_map_base = virt_io_addr;
+
+ #ifdef CONFIG_DMA_NONCOHERENT
+ {