From: Jens Taprogge Date: Tue, 11 Sep 2012 11:35:01 +0000 (+0200) Subject: Staging: ipack: Switch to 8MHz operation before reading ID. X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=07766ab0256c0870746dae2362625e64e8968fc7;p=deliverable%2Flinux.git 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 Signed-off-by: Samuel Iglesias Gonsálvez Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/ipack/ipack.c b/drivers/staging/ipack/ipack.c index 689542638aae..e2f819ca49c6 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) {