2222#include <linux/jiffies.h>
2323
2424/* commands (high precision mode) */
25- static const unsigned char sht3x_cmd_measure_blocking_hpm [] = { 0x2c , 0x06 };
26- static const unsigned char sht3x_cmd_measure_nonblocking_hpm [] = { 0x24 , 0x00 };
25+ static const unsigned char sht3x_cmd_measure_single_hpm [] = { 0x24 , 0x00 };
2726
2827/* commands (low power mode) */
29- static const unsigned char sht3x_cmd_measure_blocking_lpm [] = { 0x2c , 0x10 };
30- static const unsigned char sht3x_cmd_measure_nonblocking_lpm [] = { 0x24 , 0x16 };
28+ static const unsigned char sht3x_cmd_measure_single_lpm [] = { 0x24 , 0x16 };
3129
3230/* commands for periodic mode */
3331static const unsigned char sht3x_cmd_measure_periodic_mode [] = { 0xe0 , 0x00 };
@@ -41,9 +39,9 @@ static const unsigned char sht3x_cmd_heater_off[] = { 0x30, 0x66 };
4139static const unsigned char sht3x_cmd_read_status_reg [] = { 0xf3 , 0x2d };
4240static const unsigned char sht3x_cmd_clear_status_reg [] = { 0x30 , 0x41 };
4341
44- /* delays for non-blocking i2c commands, both in us */
45- #define SHT3X_NONBLOCKING_WAIT_TIME_HPM 15000
46- #define SHT3X_NONBLOCKING_WAIT_TIME_LPM 4000
42+ /* delays for single-shot mode i2c commands, both in us */
43+ #define SHT3X_SINGLE_WAIT_TIME_HPM 15000
44+ #define SHT3X_SINGLE_WAIT_TIME_LPM 4000
4745
4846#define SHT3X_WORD_LEN 2
4947#define SHT3X_CMD_LENGTH 2
@@ -134,7 +132,6 @@ struct sht3x_data {
134132 const unsigned char * command ;
135133 u32 wait_time ; /* in us*/
136134 unsigned long last_update ; /* last update in periodic mode*/
137- bool blocking_io ;
138135 bool high_precision ;
139136
140137 /*
@@ -432,26 +429,19 @@ static ssize_t humidity1_limit_store(struct device *dev,
432429static void sht3x_select_command (struct sht3x_data * data )
433430{
434431 /*
435- * In blocking mode (clock stretching mode) the I2C bus
436- * is blocked for other traffic, thus the call to i2c_master_recv()
437- * will wait until the data is ready. For non blocking mode, we
438- * have to wait ourselves.
432+ * For single-shot mode, only non blocking mode is support,
433+ * we have to wait ourselves for result.
439434 */
440435 if (data -> mode > 0 ) {
441436 data -> command = sht3x_cmd_measure_periodic_mode ;
442437 data -> wait_time = 0 ;
443- } else if (data -> blocking_io ) {
444- data -> command = data -> high_precision ?
445- sht3x_cmd_measure_blocking_hpm :
446- sht3x_cmd_measure_blocking_lpm ;
447- data -> wait_time = 0 ;
448438 } else {
449439 if (data -> high_precision ) {
450- data -> command = sht3x_cmd_measure_nonblocking_hpm ;
451- data -> wait_time = SHT3X_NONBLOCKING_WAIT_TIME_HPM ;
440+ data -> command = sht3x_cmd_measure_single_hpm ;
441+ data -> wait_time = SHT3X_SINGLE_WAIT_TIME_HPM ;
452442 } else {
453- data -> command = sht3x_cmd_measure_nonblocking_lpm ;
454- data -> wait_time = SHT3X_NONBLOCKING_WAIT_TIME_LPM ;
443+ data -> command = sht3x_cmd_measure_single_lpm ;
444+ data -> wait_time = SHT3X_SINGLE_WAIT_TIME_LPM ;
455445 }
456446 }
457447}
@@ -689,7 +679,6 @@ static int sht3x_probe(struct i2c_client *client)
689679 if (!data )
690680 return - ENOMEM ;
691681
692- data -> blocking_io = false;
693682 data -> high_precision = true;
694683 data -> mode = 0 ;
695684 data -> last_update = jiffies - msecs_to_jiffies (3000 );
0 commit comments