]> Pileus Git - ~andy/linux/blobdiff - drivers/ssb/main.c
Merge branch 'akpm' (Andrew's patch-bomb)
[~andy/linux] / drivers / ssb / main.c
index bb6317fb925ce922908e0053e9acc740cc7fe541..df0f145c22fc80c175d277cca0f68647fbfd90fd 100644 (file)
@@ -140,19 +140,6 @@ static void ssb_device_put(struct ssb_device *dev)
                put_device(dev->dev);
 }
 
-static inline struct ssb_driver *ssb_driver_get(struct ssb_driver *drv)
-{
-       if (drv)
-               get_driver(&drv->drv);
-       return drv;
-}
-
-static inline void ssb_driver_put(struct ssb_driver *drv)
-{
-       if (drv)
-               put_driver(&drv->drv);
-}
-
 static int ssb_device_resume(struct device *dev)
 {
        struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
@@ -250,11 +237,9 @@ int ssb_devices_freeze(struct ssb_bus *bus, struct ssb_freeze_context *ctx)
                        ssb_device_put(sdev);
                        continue;
                }
-               sdrv = ssb_driver_get(drv_to_ssb_drv(sdev->dev->driver));
-               if (!sdrv || SSB_WARN_ON(!sdrv->remove)) {
-                       ssb_device_put(sdev);
+               sdrv = drv_to_ssb_drv(sdev->dev->driver);
+               if (SSB_WARN_ON(!sdrv->remove))
                        continue;
-               }
                sdrv->remove(sdev);
                ctx->device_frozen[i] = 1;
        }
@@ -293,7 +278,6 @@ int ssb_devices_thaw(struct ssb_freeze_context *ctx)
                                   dev_name(sdev->dev));
                        result = err;
                }
-               ssb_driver_put(sdrv);
                ssb_device_put(sdev);
        }
 
@@ -1094,6 +1078,9 @@ u32 ssb_clockspeed(struct ssb_bus *bus)
        u32 plltype;
        u32 clkctl_n, clkctl_m;
 
+       if (bus->chipco.capabilities & SSB_CHIPCO_CAP_PMU)
+               return ssb_pmu_get_controlclock(&bus->chipco);
+
        if (ssb_extif_available(&bus->extif))
                ssb_extif_get_clockcontrol(&bus->extif, &plltype,
                                           &clkctl_n, &clkctl_m);