]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
Staging: ipack: Switch to 8MHz operation before reading ID.
authorJens Taprogge <jens.taprogge@taprogge.org>
Tue, 11 Sep 2012 11:35:01 +0000 (13:35 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Sep 2012 19:16:35 +0000 (12:16 -0700)
Reading the ID space at 8 MHz is always supported.  Most carriers will
boot up in 8MHz mode.  Still, play it safe and ensure we are operating at
8Mhz.

Signed-off-by: Jens Taprogge <jens.taprogge@taprogge.org>
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/ipack/ipack.c

index 689542638aaea76d6f0d68cb744c75da104606f8..e2f819ca49c617e56a5c2dd4ed189660780718aa 100644 (file)
@@ -377,6 +377,9 @@ struct ipack_device *ipack_device_register(struct ipack_bus_device *bus,
        dev_set_name(&dev->dev,
                     "ipack-dev.%u.%u", dev->bus_nr, dev->slot);
 
+       if (bus->ops->set_clockrate(dev, 8))
+               dev_warn(&dev->dev, "failed to switch to 8 MHz operation for reading of device ID.\n");
+
        ret = ipack_device_read_id(dev);
        if (ret < 0) {
                dev_err(&dev->dev, "error reading device id section.\n");
@@ -385,9 +388,11 @@ struct ipack_device *ipack_device_register(struct ipack_bus_device *bus,
        }
 
        /* if the device supports 32 MHz operation, use it. */
-       ret = bus->ops->set_clockrate(dev, dev->speed_32mhz ? 32 : 8);
-       if (ret < 0)
-               dev_err(&dev->dev, "failed to perform set_clock_rate operation.\n");
+       if (dev->speed_32mhz) {
+               ret = bus->ops->set_clockrate(dev, 32);
+               if (ret < 0)
+                       dev_err(&dev->dev, "failed to switch to 32 MHz operation.\n");
+       }
 
        ret = device_register(&dev->dev);
        if (ret < 0) {