Add 'delay' module param to the driver.

From: Cumulus Networks <support@cumulusnetworks.com>

This is needed on S6000 for safe PMBUS access.
Without setting the 'delay', the ismt driver throws 'completion wait
timed out' error message.
---
 drivers/i2c/busses/i2c-ismt.c |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/busses/i2c-ismt.c b/drivers/i2c/busses/i2c-ismt.c
index d9ee43c..b2b3856 100644
--- a/drivers/i2c/busses/i2c-ismt.c
+++ b/drivers/i2c/busses/i2c-ismt.c
@@ -70,6 +70,7 @@
 #include <linux/i2c.h>
 #include <linux/acpi.h>
 #include <linux/interrupt.h>
+#include <linux/delay.h>
 
 #include <asm-generic/io-64-nonatomic-lo-hi.h>
 
@@ -192,9 +193,12 @@ static const struct pci_device_id ismt_ids[] = {
 MODULE_DEVICE_TABLE(pci, ismt_ids);
 
 /* Bus speed control bits for slow debuggers - refer to the docs for usage */
-static unsigned int bus_speed;
+static unsigned int bus_speed = 100;
+static unsigned int delay = 0;
 module_param(bus_speed, uint, S_IRUGO);
-MODULE_PARM_DESC(bus_speed, "Bus Speed in kHz (0 = BIOS default)");
+MODULE_PARM_DESC(bus_speed, "Bus Speed in kHz (1000 by default)");
+module_param(delay, uint, S_IRUGO);
+MODULE_PARM_DESC(delay, "Delay in microsecs before access (0 by default)");
 
 /**
  * __ismt_desc_dump() - dump the contents of a specific descriptor
@@ -391,6 +395,9 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr,
 	struct ismt_priv *priv = i2c_get_adapdata(adap);
 	struct device *dev = &priv->pci_dev->dev;
 
+	if (delay > 0)
+		udelay(delay);
+
 	desc = &priv->hw[priv->head];
 
 	/* Initialize the DMA buffer */
@@ -756,7 +763,7 @@ static void ismt_hw_init(struct ismt_priv *priv)
 		bus_speed = 1000;
 		break;
 	}
-	dev_dbg(dev, "SMBus clock is running at %d kHz\n", bus_speed);
+	dev_info(dev, "SMBus clock is running at %d kHz with delay %d us\n", bus_speed, delay);
 }
 
 /**
