#endif
 
+static struct platform_device au1x00_pcmcia_device = {
+       .name           = "au1x00-pcmcia",
+       .id             = 0,
+};
+
 static struct platform_device *au1xxx_platform_devices[] __initdata = {
        &au1xxx_usb_ohci_device,
+       &au1x00_pcmcia_device,
 #ifdef CONFIG_FB_AU1100
        &au1100_lcd_device,
 #endif
 
 #include <linux/mm.h>
 #include <linux/delay.h>
 #include <linux/interrupt.h>
+#include <linux/module.h>
 
 #include <asm/cpu.h>
 #include <asm/bootinfo.h>
        /* default nop */
        return phys_addr;
 }
+EXPORT_SYMBOL(__fixup_bigphys_addr);
 #endif
 
                flush_scheduled_work();
                skt->ops->hw_shutdown(skt);
                au1x00_pcmcia_config_skt(skt, &dead_socket);
-               iounmap(skt->virt_io);
+               iounmap(skt->virt_io + (u32)mips_io_port_base);
                skt->virt_io = NULL;
        }
 
        .resume         = pcmcia_socket_dev_resume,
 };
 
-static struct platform_device au1x00_device = {
-       .name = "au1x00-pcmcia",
-       .id = 0,
-};
 
 /* au1x00_pcmcia_init()
  *
        int error = 0;
        if ((error = driver_register(&au1x00_pcmcia_driver)))
                return error;
-       platform_device_register(&au1x00_device);
        return error;
 }
 
 static void __exit au1x00_pcmcia_exit(void)
 {
        driver_unregister(&au1x00_pcmcia_driver);
-       platform_device_unregister(&au1x00_device);
 }
 
 module_init(au1x00_pcmcia_init);