]> 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 cfd13eb866b87258acf5e0cc145ebcc8c58231bf..85a20546e82777c169cecafa1d65f7a52dd921f5 100644 (file)
@@ -321,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 = {
@@ -446,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;
@@ -1153,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)
 {