ssb: Fix SPROM writing
[profile/ivi/kernel-adaptation-intel-automotive.git] / drivers / ssb / sprom.c
index 8943015..580f779 100644 (file)
@@ -90,6 +90,7 @@ ssize_t ssb_attr_sprom_store(struct ssb_bus *bus,
        u16 *sprom;
        int res = 0, err = -ENOMEM;
        size_t sprom_size_words = bus->sprom_size;
+       struct ssb_freeze_context freeze;
 
        sprom = kcalloc(bus->sprom_size, sizeof(u16), GFP_KERNEL);
        if (!sprom)
@@ -111,18 +112,13 @@ ssize_t ssb_attr_sprom_store(struct ssb_bus *bus,
        err = -ERESTARTSYS;
        if (mutex_lock_interruptible(&bus->sprom_mutex))
                goto out_kfree;
-       err = ssb_devices_freeze(bus);
-       if (err == -EOPNOTSUPP) {
-               ssb_printk(KERN_ERR PFX "SPROM write: Could not freeze devices. "
-                          "No suspend support. Is CONFIG_PM enabled?\n");
-               goto out_unlock;
-       }
+       err = ssb_devices_freeze(bus, &freeze);
        if (err) {
                ssb_printk(KERN_ERR PFX "SPROM write: Could not freeze all devices\n");
                goto out_unlock;
        }
        res = sprom_write(bus, sprom);
-       err = ssb_devices_thaw(bus);
+       err = ssb_devices_thaw(&freeze);
        if (err)
                ssb_printk(KERN_ERR PFX "SPROM write: Could not thaw all devices\n");
 out_unlock: