diff options
author | Matt Wagner <mwagner@nvidia.com> | 2011-12-02 16:41:05 -0800 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-08 18:05:44 +0530 |
commit | 555832c62b01485a0d5221cfc11c71da3513d070 (patch) | |
tree | be06aac5b911aa04012aa0d3634e4ef7cb4f9a63 /drivers/misc | |
parent | fdca632da6249827e54fa18bba4528d693e1fabb (diff) |
misc: nct1008: remove busy check
Reverts 664afa7de06d4c1df98f6cec50c2c850cd48fee6. Busy check was causing reads
of the temperature to block until conversion was completed.
This caused issues with higher level code perf.
Bug 909918
Change-Id: I57dd9d2ac1df8e3272aba03cd7f0c1e55bfd4eb8
Reviewed-on: http://git-master/r/68043
Tested-by: Matt Wagner <mwagner@nvidia.com>
Reviewed-by: Dan Willemsen <dwillemsen@nvidia.com>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/nct1008.c | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/drivers/misc/nct1008.c b/drivers/misc/nct1008.c index 86f4030b6317..9a4015e28c60 100644 --- a/drivers/misc/nct1008.c +++ b/drivers/misc/nct1008.c @@ -64,12 +64,6 @@ #define STANDBY_BIT BIT(6) #define ALERT_BIT BIT(7) -/* Status register bits */ -#define STATUS_BUSY BIT(7) - -/* Worst-case wait when nct1008 is busy */ -#define BUSY_TIMEOUT_MSEC 1000 - /* Max Temperature Measurements */ #define EXTENDED_RANGE_OFFSET 64U #define STANDARD_RANGE_MAX 127U @@ -94,41 +88,6 @@ static inline u8 temperature_to_value(bool extended, s8 temp) return extended ? (u8)(temp + EXTENDED_RANGE_OFFSET) : (u8)temp; } -/* Wait with timeout if busy */ -static int nct1008_wait_till_busy(struct i2c_client *client) -{ - int intr_status; - int msec_left = BUSY_TIMEOUT_MSEC; - bool is_busy; - - do { - intr_status = i2c_smbus_read_byte_data(client, STATUS_RD); - - if (intr_status < 0) { - dev_err(&client->dev, "%s, line=%d, i2c read error=%d\n" - , __func__, __LINE__, intr_status); - return intr_status; - } - - /* check for busy bit */ - is_busy = (intr_status & STATUS_BUSY) ? true : false; - if (is_busy) { - /* fastest nct1008 conversion rate ~15msec */ - /* using 20msec since msleep below 20 is not - * guaranteed to complete in specified duration */ - msleep(MIN_SLEEP_MSEC); - msec_left -= MIN_SLEEP_MSEC; - } - } while ((is_busy) && (msec_left > 0)); - - if (msec_left <= 0) { - dev_err(&client->dev, "error: nct1008 busy timed out\n"); - return -ETIMEDOUT; - } - - return 0; -} - static int nct1008_get_temp(struct device *dev, long *pTemp) { struct i2c_client *client = to_i2c_client(dev); @@ -140,10 +99,6 @@ static int nct1008_get_temp(struct device *dev, long *pTemp) long temp_local_milli; u8 value; - value = nct1008_wait_till_busy(client); - if (value < 0) - goto error; - /* Read Local Temp */ value = i2c_smbus_read_byte_data(client, LOCAL_TEMP_RD); if (value < 0) @@ -189,10 +144,6 @@ static ssize_t nct1008_show_temp(struct device *dev, if (!dev || !buf || !attr) return -EINVAL; - value = nct1008_wait_till_busy(client); - if (value < 0) - goto error; - value = i2c_smbus_read_byte_data(client, LOCAL_TEMP_RD); if (value < 0) goto error; @@ -380,10 +331,6 @@ static ssize_t nct1008_show_ext_temp(struct device *dev, if (!dev || !buf || !attr) return -EINVAL; - data = nct1008_wait_till_busy(client); - if (data < 0) - goto error; - /* When reading the full external temperature value, read the * LSB first. This causes the MSB to be locked (that is, the * ADC does not write to it) until it is read */ |