summaryrefslogtreecommitdiff
path: root/drivers/staging/ipack
diff options
context:
space:
mode:
authorJens Taprogge <jens.taprogge@taprogge.org>2012-09-11 11:35:01 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-11 19:16:35 (GMT)
commit07766ab0256c0870746dae2362625e64e8968fc7 (patch)
tree59c53be2fa476a49d40282ce1533f8581450c3ae /drivers/staging/ipack
parent939c37a3c9da8bc23edbbfc01674c1c472a3ad1d (diff)
downloadlinux-07766ab0256c0870746dae2362625e64e8968fc7.tar.xz
Staging: ipack: Switch to 8MHz operation before reading ID.
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>
Diffstat (limited to 'drivers/staging/ipack')
-rw-r--r--drivers/staging/ipack/ipack.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/staging/ipack/ipack.c b/drivers/staging/ipack/ipack.c
index 6895426..e2f819ca 100644
--- a/drivers/staging/ipack/ipack.c
+++ b/drivers/staging/ipack/ipack.c
@@ -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) {