forked from mirrors/linux
		
	hwmon: (it87) Fix multi-line comments
Fix multi-line comments, and clean up some of the affected comments. Cc: Jean Delvare <khali@linux-fr.org> Acked-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
		
							parent
							
								
									86d566e58e
								
							
						
					
					
						commit
						4a0d71cfdc
					
				
					 1 changed files with 108 additions and 62 deletions
				
			
		|  | @ -176,12 +176,16 @@ static bool fix_pwm_polarity; | ||||||
| #define IT87_REG_ALARM2        0x02 | #define IT87_REG_ALARM2        0x02 | ||||||
| #define IT87_REG_ALARM3        0x03 | #define IT87_REG_ALARM3        0x03 | ||||||
| 
 | 
 | ||||||
| /* The IT8718F and IT8720F have the VID value in a different register, in
 | /*
 | ||||||
|    Super-I/O configuration space. */ |  * The IT8718F and IT8720F have the VID value in a different register, in | ||||||
|  |  * Super-I/O configuration space. | ||||||
|  |  */ | ||||||
| #define IT87_REG_VID           0x0a | #define IT87_REG_VID           0x0a | ||||||
| /* The IT8705F and IT8712F earlier than revision 0x08 use register 0x0b
 | /*
 | ||||||
|    for fan divisors. Later IT8712F revisions must use 16-bit tachometer |  * The IT8705F and IT8712F earlier than revision 0x08 use register 0x0b | ||||||
|    mode. */ |  * for fan divisors. Later IT8712F revisions must use 16-bit tachometer | ||||||
|  |  * mode. | ||||||
|  |  */ | ||||||
| #define IT87_REG_FAN_DIV       0x0b | #define IT87_REG_FAN_DIV       0x0b | ||||||
| #define IT87_REG_FAN_16BIT     0x0c | #define IT87_REG_FAN_16BIT     0x0c | ||||||
| 
 | 
 | ||||||
|  | @ -227,8 +231,10 @@ struct it87_sio_data { | ||||||
| 	u8 skip_pwm; | 	u8 skip_pwm; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* For each registered chip, we need to keep some data in memory.
 | /*
 | ||||||
|    The structure is dynamically allocated. */ |  * For each registered chip, we need to keep some data in memory. | ||||||
|  |  * The structure is dynamically allocated. | ||||||
|  |  */ | ||||||
| struct it87_data { | struct it87_data { | ||||||
| 	struct device *hwmon_dev; | 	struct device *hwmon_dev; | ||||||
| 	enum chips type; | 	enum chips type; | ||||||
|  | @ -259,14 +265,16 @@ struct it87_data { | ||||||
| 	u8 fan_main_ctrl;	/* Register value */ | 	u8 fan_main_ctrl;	/* Register value */ | ||||||
| 	u8 fan_ctl;		/* Register value */ | 	u8 fan_ctl;		/* Register value */ | ||||||
| 
 | 
 | ||||||
| 	/* The following 3 arrays correspond to the same registers up to
 | 	/*
 | ||||||
|  | 	 * The following 3 arrays correspond to the same registers up to | ||||||
| 	 * the IT8720F. The meaning of bits 6-0 depends on the value of bit | 	 * the IT8720F. The meaning of bits 6-0 depends on the value of bit | ||||||
| 	 * 7, and we want to preserve settings on mode changes, so we have | 	 * 7, and we want to preserve settings on mode changes, so we have | ||||||
| 	 * to track all values separately. | 	 * to track all values separately. | ||||||
| 	 * Starting with the IT8721F, the manual PWM duty cycles are stored | 	 * Starting with the IT8721F, the manual PWM duty cycles are stored | ||||||
| 	 * in separate registers (8-bit values), so the separate tracking | 	 * in separate registers (8-bit values), so the separate tracking | ||||||
| 	 * is no longer needed, but it is still done to keep the driver | 	 * is no longer needed, but it is still done to keep the driver | ||||||
| 	 * simple. */ | 	 * simple. | ||||||
|  | 	 */ | ||||||
| 	u8 pwm_ctrl[3];		/* Register value */ | 	u8 pwm_ctrl[3];		/* Register value */ | ||||||
| 	u8 pwm_duty[3];		/* Manual PWM value set by user */ | 	u8 pwm_duty[3];		/* Manual PWM value set by user */ | ||||||
| 	u8 pwm_temp_map[3];	/* PWM to temp. chan. mapping (bits 1-0) */ | 	u8 pwm_temp_map[3];	/* PWM to temp. chan. mapping (bits 1-0) */ | ||||||
|  | @ -388,9 +396,11 @@ static const unsigned int pwm_freq[8] = { | ||||||
| 
 | 
 | ||||||
| static inline int has_16bit_fans(const struct it87_data *data) | static inline int has_16bit_fans(const struct it87_data *data) | ||||||
| { | { | ||||||
| 	/* IT8705F Datasheet 0.4.1, 3h == Version G.
 | 	/*
 | ||||||
| 	   IT8712F Datasheet 0.9.1, section 8.3.5 indicates 8h == Version J. | 	 * IT8705F Datasheet 0.4.1, 3h == Version G. | ||||||
| 	   These are the first revisions with 16bit tachometer support. */ | 	 * IT8712F Datasheet 0.9.1, section 8.3.5 indicates 8h == Version J. | ||||||
|  | 	 * These are the first revisions with 16-bit tachometer support. | ||||||
|  | 	 */ | ||||||
| 	return (data->type == it87 && data->revision >= 0x03) | 	return (data->type == it87 && data->revision >= 0x03) | ||||||
| 	    || (data->type == it8712 && data->revision >= 0x08) | 	    || (data->type == it8712 && data->revision >= 0x08) | ||||||
| 	    || data->type == it8716 | 	    || data->type == it8716 | ||||||
|  | @ -402,9 +412,11 @@ static inline int has_16bit_fans(const struct it87_data *data) | ||||||
| 
 | 
 | ||||||
| static inline int has_old_autopwm(const struct it87_data *data) | static inline int has_old_autopwm(const struct it87_data *data) | ||||||
| { | { | ||||||
| 	/* The old automatic fan speed control interface is implemented
 | 	/*
 | ||||||
| 	   by IT8705F chips up to revision F and IT8712F chips up to | 	 * The old automatic fan speed control interface is implemented | ||||||
| 	   revision G. */ | 	 * by IT8705F chips up to revision F and IT8712F chips up to | ||||||
|  | 	 * revision G. | ||||||
|  | 	 */ | ||||||
| 	return (data->type == it87 && data->revision < 0x03) | 	return (data->type == it87 && data->revision < 0x03) | ||||||
| 	    || (data->type == it8712 && data->revision < 0x08); | 	    || (data->type == it8712 && data->revision < 0x08); | ||||||
| } | } | ||||||
|  | @ -606,10 +618,8 @@ static ssize_t show_sensor(struct device *dev, struct device_attribute *attr, | ||||||
| { | { | ||||||
| 	struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr); | 	struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr); | ||||||
| 	int nr = sensor_attr->index; | 	int nr = sensor_attr->index; | ||||||
| 
 |  | ||||||
| 	struct it87_data *data = it87_update_device(dev); | 	struct it87_data *data = it87_update_device(dev); | ||||||
| 	u8 reg = data->sensor;		/* In case the value is updated while
 | 	u8 reg = data->sensor;	    /* In case value is updated while used */ | ||||||
| 					   we use it */ |  | ||||||
| 
 | 
 | ||||||
| 	if (reg & (1 << nr)) | 	if (reg & (1 << nr)) | ||||||
| 		return sprintf(buf, "3\n");  /* thermal diode */ | 		return sprintf(buf, "3\n");  /* thermal diode */ | ||||||
|  | @ -894,8 +904,10 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr, | ||||||
| 
 | 
 | ||||||
| 	mutex_lock(&data->update_lock); | 	mutex_lock(&data->update_lock); | ||||||
| 	if (has_newer_autopwm(data)) { | 	if (has_newer_autopwm(data)) { | ||||||
| 		/* If we are in automatic mode, the PWM duty cycle register
 | 		/*
 | ||||||
| 		 * is read-only so we can't write the value */ | 		 * If we are in automatic mode, the PWM duty cycle register | ||||||
|  | 		 * is read-only so we can't write the value. | ||||||
|  | 		 */ | ||||||
| 		if (data->pwm_ctrl[nr] & 0x80) { | 		if (data->pwm_ctrl[nr] & 0x80) { | ||||||
| 			mutex_unlock(&data->update_lock); | 			mutex_unlock(&data->update_lock); | ||||||
| 			return -EBUSY; | 			return -EBUSY; | ||||||
|  | @ -905,8 +917,10 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr, | ||||||
| 				 data->pwm_duty[nr]); | 				 data->pwm_duty[nr]); | ||||||
| 	} else { | 	} else { | ||||||
| 		data->pwm_duty[nr] = pwm_to_reg(data, val); | 		data->pwm_duty[nr] = pwm_to_reg(data, val); | ||||||
| 		/* If we are in manual mode, write the duty cycle immediately;
 | 		/*
 | ||||||
| 		 * otherwise, just store it for later use. */ | 		 * If we are in manual mode, write the duty cycle immediately; | ||||||
|  | 		 * otherwise, just store it for later use. | ||||||
|  | 		 */ | ||||||
| 		if (!(data->pwm_ctrl[nr] & 0x80)) { | 		if (!(data->pwm_ctrl[nr] & 0x80)) { | ||||||
| 			data->pwm_ctrl[nr] = data->pwm_duty[nr]; | 			data->pwm_ctrl[nr] = data->pwm_duty[nr]; | ||||||
| 			it87_write_value(data, IT87_REG_PWM(nr), | 			it87_write_value(data, IT87_REG_PWM(nr), | ||||||
|  | @ -965,8 +979,10 @@ static ssize_t set_pwm_temp_map(struct device *dev, | ||||||
| 	long val; | 	long val; | ||||||
| 	u8 reg; | 	u8 reg; | ||||||
| 
 | 
 | ||||||
| 	/* This check can go away if we ever support automatic fan speed
 | 	/*
 | ||||||
| 	   control on newer chips. */ | 	 * This check can go away if we ever support automatic fan speed | ||||||
|  | 	 * control on newer chips. | ||||||
|  | 	 */ | ||||||
| 	if (!has_old_autopwm(data)) { | 	if (!has_old_autopwm(data)) { | ||||||
| 		dev_notice(dev, "Mapping change disabled for safety reasons\n"); | 		dev_notice(dev, "Mapping change disabled for safety reasons\n"); | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
|  | @ -991,8 +1007,10 @@ static ssize_t set_pwm_temp_map(struct device *dev, | ||||||
| 
 | 
 | ||||||
| 	mutex_lock(&data->update_lock); | 	mutex_lock(&data->update_lock); | ||||||
| 	data->pwm_temp_map[nr] = reg; | 	data->pwm_temp_map[nr] = reg; | ||||||
| 	/* If we are in automatic mode, write the temp mapping immediately;
 | 	/*
 | ||||||
| 	 * otherwise, just store it for later use. */ | 	 * If we are in automatic mode, write the temp mapping immediately; | ||||||
|  | 	 * otherwise, just store it for later use. | ||||||
|  | 	 */ | ||||||
| 	if (data->pwm_ctrl[nr] & 0x80) { | 	if (data->pwm_ctrl[nr] & 0x80) { | ||||||
| 		data->pwm_ctrl[nr] = 0x80 | data->pwm_temp_map[nr]; | 		data->pwm_ctrl[nr] = 0x80 | data->pwm_temp_map[nr]; | ||||||
| 		it87_write_value(data, IT87_REG_PWM(nr), data->pwm_ctrl[nr]); | 		it87_write_value(data, IT87_REG_PWM(nr), data->pwm_ctrl[nr]); | ||||||
|  | @ -1162,9 +1180,11 @@ static ssize_t set_fan16_min(struct device *dev, struct device_attribute *attr, | ||||||
| 	return count; | 	return count; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* We want to use the same sysfs file names as 8-bit fans, but we need
 | /*
 | ||||||
|    different variable names, so we have to use SENSOR_ATTR instead of |  * We want to use the same sysfs file names as 8-bit fans, but we need | ||||||
|    SENSOR_DEVICE_ATTR. */ |  * different variable names, so we have to use SENSOR_ATTR instead of | ||||||
|  |  * SENSOR_DEVICE_ATTR. | ||||||
|  |  */ | ||||||
| #define show_fan16_offset(offset) \ | #define show_fan16_offset(offset) \ | ||||||
| static struct sensor_device_attribute sensor_dev_attr_fan##offset##_input16 \ | static struct sensor_device_attribute sensor_dev_attr_fan##offset##_input16 \ | ||||||
| 	= SENSOR_ATTR(fan##offset##_input, S_IRUGO,		\ | 	= SENSOR_ATTR(fan##offset##_input, S_IRUGO,		\ | ||||||
|  | @ -1736,12 +1756,14 @@ static int __init it87_find(unsigned short *address, | ||||||
| 	if (board_vendor && board_name) { | 	if (board_vendor && board_name) { | ||||||
| 		if (strcmp(board_vendor, "nVIDIA") == 0 | 		if (strcmp(board_vendor, "nVIDIA") == 0 | ||||||
| 		 && strcmp(board_name, "FN68PT") == 0) { | 		 && strcmp(board_name, "FN68PT") == 0) { | ||||||
| 			/* On the Shuttle SN68PT, FAN_CTL2 is apparently not
 | 			/*
 | ||||||
| 			   connected to a fan, but to something else. One user | 			 * On the Shuttle SN68PT, FAN_CTL2 is apparently not | ||||||
| 			   has reported instant system power-off when changing | 			 * connected to a fan, but to something else. One user | ||||||
| 			   the PWM2 duty cycle, so we disable it. | 			 * has reported instant system power-off when changing | ||||||
| 			   I use the board name string as the trigger in case | 			 * the PWM2 duty cycle, so we disable it. | ||||||
| 			   the same board is ever used in other systems. */ | 			 * I use the board name string as the trigger in case | ||||||
|  | 			 * the same board is ever used in other systems. | ||||||
|  | 			 */ | ||||||
| 			pr_info("Disabling pwm2 due to hardware constraints\n"); | 			pr_info("Disabling pwm2 due to hardware constraints\n"); | ||||||
| 			sio_data->skip_pwm = (1 << 1); | 			sio_data->skip_pwm = (1 << 1); | ||||||
| 		} | 		} | ||||||
|  | @ -1879,9 +1901,11 @@ static int __devinit it87_probe(struct platform_device *pdev) | ||||||
| 			if (!fan_beep_need_rw) | 			if (!fan_beep_need_rw) | ||||||
| 				continue; | 				continue; | ||||||
| 
 | 
 | ||||||
| 			/* As we have a single beep enable bit for all fans,
 | 			/*
 | ||||||
|  | 			 * As we have a single beep enable bit for all fans, | ||||||
| 			 * only the first enabled fan has a writable attribute | 			 * only the first enabled fan has a writable attribute | ||||||
| 			 * for it. */ | 			 * for it. | ||||||
|  | 			 */ | ||||||
| 			if (sysfs_chmod_file(&dev->kobj, | 			if (sysfs_chmod_file(&dev->kobj, | ||||||
| 					     it87_attributes_fan_beep[i], | 					     it87_attributes_fan_beep[i], | ||||||
| 					     S_IRUGO | S_IWUSR)) | 					     S_IRUGO | S_IWUSR)) | ||||||
|  | @ -1961,18 +1985,22 @@ static int __devexit it87_remove(struct platform_device *pdev) | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Must be called with data->update_lock held, except during initialization.
 | /*
 | ||||||
|    We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks, |  * Must be called with data->update_lock held, except during initialization. | ||||||
|    would slow down the IT87 access and should not be necessary. */ |  * We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks, | ||||||
|  |  * would slow down the IT87 access and should not be necessary. | ||||||
|  |  */ | ||||||
| static int it87_read_value(struct it87_data *data, u8 reg) | static int it87_read_value(struct it87_data *data, u8 reg) | ||||||
| { | { | ||||||
| 	outb_p(reg, data->addr + IT87_ADDR_REG_OFFSET); | 	outb_p(reg, data->addr + IT87_ADDR_REG_OFFSET); | ||||||
| 	return inb_p(data->addr + IT87_DATA_REG_OFFSET); | 	return inb_p(data->addr + IT87_DATA_REG_OFFSET); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Must be called with data->update_lock held, except during initialization.
 | /*
 | ||||||
|    We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks, |  * Must be called with data->update_lock held, except during initialization. | ||||||
|    would slow down the IT87 access and should not be necessary. */ |  * We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks, | ||||||
|  |  * would slow down the IT87 access and should not be necessary. | ||||||
|  |  */ | ||||||
| static void it87_write_value(struct it87_data *data, u8 reg, u8 value) | static void it87_write_value(struct it87_data *data, u8 reg, u8 value) | ||||||
| { | { | ||||||
| 	outb_p(reg, data->addr + IT87_ADDR_REG_OFFSET); | 	outb_p(reg, data->addr + IT87_ADDR_REG_OFFSET); | ||||||
|  | @ -1983,15 +2011,19 @@ static void it87_write_value(struct it87_data *data, u8 reg, u8 value) | ||||||
| static int __devinit it87_check_pwm(struct device *dev) | static int __devinit it87_check_pwm(struct device *dev) | ||||||
| { | { | ||||||
| 	struct it87_data *data = dev_get_drvdata(dev); | 	struct it87_data *data = dev_get_drvdata(dev); | ||||||
| 	/* Some BIOSes fail to correctly configure the IT87 fans. All fans off
 | 	/*
 | ||||||
|  | 	 * Some BIOSes fail to correctly configure the IT87 fans. All fans off | ||||||
| 	 * and polarity set to active low is sign that this is the case so we | 	 * and polarity set to active low is sign that this is the case so we | ||||||
| 	 * disable pwm control to protect the user. */ | 	 * disable pwm control to protect the user. | ||||||
|  | 	 */ | ||||||
| 	int tmp = it87_read_value(data, IT87_REG_FAN_CTL); | 	int tmp = it87_read_value(data, IT87_REG_FAN_CTL); | ||||||
| 	if ((tmp & 0x87) == 0) { | 	if ((tmp & 0x87) == 0) { | ||||||
| 		if (fix_pwm_polarity) { | 		if (fix_pwm_polarity) { | ||||||
| 			/* The user asks us to attempt a chip reconfiguration.
 | 			/*
 | ||||||
|  | 			 * The user asks us to attempt a chip reconfiguration. | ||||||
| 			 * This means switching to active high polarity and | 			 * This means switching to active high polarity and | ||||||
| 			 * inverting all fan speed values. */ | 			 * inverting all fan speed values. | ||||||
|  | 			 */ | ||||||
| 			int i; | 			int i; | ||||||
| 			u8 pwm[3]; | 			u8 pwm[3]; | ||||||
| 
 | 
 | ||||||
|  | @ -1999,10 +2031,12 @@ static int __devinit it87_check_pwm(struct device *dev) | ||||||
| 				pwm[i] = it87_read_value(data, | 				pwm[i] = it87_read_value(data, | ||||||
| 							 IT87_REG_PWM(i)); | 							 IT87_REG_PWM(i)); | ||||||
| 
 | 
 | ||||||
| 			/* If any fan is in automatic pwm mode, the polarity
 | 			/*
 | ||||||
|  | 			 * If any fan is in automatic pwm mode, the polarity | ||||||
| 			 * might be correct, as suspicious as it seems, so we | 			 * might be correct, as suspicious as it seems, so we | ||||||
| 			 * better don't change anything (but still disable the | 			 * better don't change anything (but still disable the | ||||||
| 			 * PWM interface). */ | 			 * PWM interface). | ||||||
|  | 			 */ | ||||||
| 			if (!((pwm[0] | pwm[1] | pwm[2]) & 0x80)) { | 			if (!((pwm[0] | pwm[1] | pwm[2]) & 0x80)) { | ||||||
| 				dev_info(dev, "Reconfiguring PWM to " | 				dev_info(dev, "Reconfiguring PWM to " | ||||||
| 					 "active high polarity\n"); | 					 "active high polarity\n"); | ||||||
|  | @ -2038,7 +2072,8 @@ static void __devinit it87_init_device(struct platform_device *pdev) | ||||||
| 	int tmp, i; | 	int tmp, i; | ||||||
| 	u8 mask; | 	u8 mask; | ||||||
| 
 | 
 | ||||||
| 	/* For each PWM channel:
 | 	/*
 | ||||||
|  | 	 * For each PWM channel: | ||||||
| 	 * - If it is in automatic mode, setting to manual mode should set | 	 * - If it is in automatic mode, setting to manual mode should set | ||||||
| 	 *   the fan to full speed by default. | 	 *   the fan to full speed by default. | ||||||
| 	 * - If it is in manual mode, we need a mapping to temperature | 	 * - If it is in manual mode, we need a mapping to temperature | ||||||
|  | @ -2048,18 +2083,21 @@ static void __devinit it87_init_device(struct platform_device *pdev) | ||||||
| 	 * prior to switching to a different mode. | 	 * prior to switching to a different mode. | ||||||
| 	 * Note that this is no longer needed for the IT8721F and later, as | 	 * Note that this is no longer needed for the IT8721F and later, as | ||||||
| 	 * these have separate registers for the temperature mapping and the | 	 * these have separate registers for the temperature mapping and the | ||||||
| 	 * manual duty cycle. */ | 	 * manual duty cycle. | ||||||
|  | 	 */ | ||||||
| 	for (i = 0; i < 3; i++) { | 	for (i = 0; i < 3; i++) { | ||||||
| 		data->pwm_temp_map[i] = i; | 		data->pwm_temp_map[i] = i; | ||||||
| 		data->pwm_duty[i] = 0x7f;	/* Full speed */ | 		data->pwm_duty[i] = 0x7f;	/* Full speed */ | ||||||
| 		data->auto_pwm[i][3] = 0x7f;	/* Full speed, hard-coded */ | 		data->auto_pwm[i][3] = 0x7f;	/* Full speed, hard-coded */ | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* Some chips seem to have default value 0xff for all limit
 | 	/*
 | ||||||
|  | 	 * Some chips seem to have default value 0xff for all limit | ||||||
| 	 * registers. For low voltage limits it makes no sense and triggers | 	 * registers. For low voltage limits it makes no sense and triggers | ||||||
| 	 * alarms, so change to 0 instead. For high temperature limits, it | 	 * alarms, so change to 0 instead. For high temperature limits, it | ||||||
| 	 * means -1 degree C, which surprisingly doesn't trigger an alarm, | 	 * means -1 degree C, which surprisingly doesn't trigger an alarm, | ||||||
| 	 * but is still confusing, so change to 127 degrees C. */ | 	 * but is still confusing, so change to 127 degrees C. | ||||||
|  | 	 */ | ||||||
| 	for (i = 0; i < 8; i++) { | 	for (i = 0; i < 8; i++) { | ||||||
| 		tmp = it87_read_value(data, IT87_REG_VIN_MIN(i)); | 		tmp = it87_read_value(data, IT87_REG_VIN_MIN(i)); | ||||||
| 		if (tmp == 0xff) | 		if (tmp == 0xff) | ||||||
|  | @ -2071,10 +2109,12 @@ static void __devinit it87_init_device(struct platform_device *pdev) | ||||||
| 			it87_write_value(data, IT87_REG_TEMP_HIGH(i), 127); | 			it87_write_value(data, IT87_REG_TEMP_HIGH(i), 127); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* Temperature channels are not forcibly enabled, as they can be
 | 	/*
 | ||||||
|  | 	 * Temperature channels are not forcibly enabled, as they can be | ||||||
| 	 * set to two different sensor types and we can't guess which one | 	 * set to two different sensor types and we can't guess which one | ||||||
| 	 * is correct for a given system. These channels can be enabled at | 	 * is correct for a given system. These channels can be enabled at | ||||||
| 	 * run-time through the temp{1-3}_type sysfs accessors if needed. */ | 	 * run-time through the temp{1-3}_type sysfs accessors if needed. | ||||||
|  | 	 */ | ||||||
| 
 | 
 | ||||||
| 	/* Check if voltage monitors are reset manually or by some reason */ | 	/* Check if voltage monitors are reset manually or by some reason */ | ||||||
| 	tmp = it87_read_value(data, IT87_REG_VIN_ENABLE); | 	tmp = it87_read_value(data, IT87_REG_VIN_ENABLE); | ||||||
|  | @ -2157,8 +2197,10 @@ static struct it87_data *it87_update_device(struct device *dev) | ||||||
| 	if (time_after(jiffies, data->last_updated + HZ + HZ / 2) | 	if (time_after(jiffies, data->last_updated + HZ + HZ / 2) | ||||||
| 	    || !data->valid) { | 	    || !data->valid) { | ||||||
| 		if (update_vbat) { | 		if (update_vbat) { | ||||||
| 			/* Cleared after each update, so reenable.  Value
 | 			/*
 | ||||||
| 			   returned by this read will be previous value */ | 			 * Cleared after each update, so reenable.  Value | ||||||
|  | 			 * returned by this read will be previous value | ||||||
|  | 			 */ | ||||||
| 			it87_write_value(data, IT87_REG_CONFIG, | 			it87_write_value(data, IT87_REG_CONFIG, | ||||||
| 				it87_read_value(data, IT87_REG_CONFIG) | 0x40); | 				it87_read_value(data, IT87_REG_CONFIG) | 0x40); | ||||||
| 		} | 		} | ||||||
|  | @ -2220,13 +2262,17 @@ static struct it87_data *it87_update_device(struct device *dev) | ||||||
| 			it87_update_pwm_ctrl(data, i); | 			it87_update_pwm_ctrl(data, i); | ||||||
| 
 | 
 | ||||||
| 		data->sensor = it87_read_value(data, IT87_REG_TEMP_ENABLE); | 		data->sensor = it87_read_value(data, IT87_REG_TEMP_ENABLE); | ||||||
| 		/* The 8705 does not have VID capability.
 | 		/*
 | ||||||
| 		   The 8718 and later don't use IT87_REG_VID for the | 		 * The IT8705F does not have VID capability. | ||||||
| 		   same purpose. */ | 		 * The IT8718F and later don't use IT87_REG_VID for the | ||||||
|  | 		 * same purpose. | ||||||
|  | 		 */ | ||||||
| 		if (data->type == it8712 || data->type == it8716) { | 		if (data->type == it8712 || data->type == it8716) { | ||||||
| 			data->vid = it87_read_value(data, IT87_REG_VID); | 			data->vid = it87_read_value(data, IT87_REG_VID); | ||||||
| 			/* The older IT8712F revisions had only 5 VID pins,
 | 			/*
 | ||||||
| 			   but we assume it is always safe to read 6 bits. */ | 			 * The older IT8712F revisions had only 5 VID pins, | ||||||
|  | 			 * but we assume it is always safe to read 6 bits. | ||||||
|  | 			 */ | ||||||
| 			data->vid &= 0x3f; | 			data->vid &= 0x3f; | ||||||
| 		} | 		} | ||||||
| 		data->last_updated = jiffies; | 		data->last_updated = jiffies; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Guenter Roeck
						Guenter Roeck