]> err.no Git - linux-2.6/blobdiff - drivers/ssb/main.c
[Blackfin] arch: Add proper SW System Reset delay sequence
[linux-2.6] / drivers / ssb / main.c
index 74d5182db4b2b5fb2ea970b97777364e60984bec..85a20546e82777c169cecafa1d65f7a52dd921f5 100644 (file)
@@ -11,6 +11,7 @@
 #include "ssb_private.h"
 
 #include <linux/delay.h>
+#include <linux/io.h>
 #include <linux/ssb/ssb.h>
 #include <linux/ssb/ssb_regs.h>
 #include <linux/dma-mapping.h>
@@ -320,23 +321,17 @@ static int ssb_bus_match(struct device *dev, struct device_driver *drv)
        return 0;
 }
 
-static int ssb_device_uevent(struct device *dev, char **envp, int num_envp,
-                            char *buffer, int buffer_size)
+static int ssb_device_uevent(struct device *dev, struct kobj_uevent_env *env)
 {
        struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
-       int ret, i = 0, length = 0;
 
        if (!dev)
                return -ENODEV;
 
-       ret = add_uevent_var(envp, num_envp, &i,
-                            buffer, buffer_size, &length,
+       return add_uevent_var(env,
                             "MODALIAS=ssb:v%04Xid%04Xrev%02X",
                             ssb_dev->id.vendor, ssb_dev->id.coreid,
                             ssb_dev->id.revision);
-       envp[i] = NULL;
-
-       return ret;
 }
 
 static struct bus_type ssb_bustype = {
@@ -445,6 +440,7 @@ static int ssb_devices_register(struct ssb_bus *bus)
                        break;
                case SSB_BUSTYPE_PCMCIA:
 #ifdef CONFIG_SSB_PCMCIAHOST
+                       sdev->irq = bus->host_pcmcia->irq.AssignedIRQ;
                        dev->parent = &bus->host_pcmcia->dev;
 #endif
                        break;
@@ -1152,7 +1148,10 @@ static int __init ssb_modinit(void)
 
        return err;
 }
-subsys_initcall(ssb_modinit);
+/* ssb must be initialized after PCI but before the ssb drivers.
+ * That means we must use some initcall between subsys_initcall
+ * and device_initcall. */
+fs_initcall(ssb_modinit);
 
 static void __exit ssb_modexit(void)
 {