diff mbox series

[v2,1/3] hwmon: (it87) Split temperature sensor detection to separate function

Message ID 20230707123005.956415-2-frank@crawford.emu.id.au (mailing list archive)
State Accepted
Headers show
Series hwmon: (it87) Separate temperature type to separate funtion and detect AMDTSI | expand

Commit Message

Frank Crawford July 7, 2023, 12:29 p.m. UTC
The temperature sensor type will need to be used in multiple places, so
split it out into its own function.

Signed-off-by: Frank Crawford <frank@crawford.emu.id.au>
---

v2:
 * Split single patch into multi-patch set following review.

---
 drivers/hwmon/it87.c | 43 ++++++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 13 deletions(-)

Comments

Guenter Roeck July 19, 2023, 2:51 a.m. UTC | #1
On Fri, Jul 07, 2023 at 10:29:50PM +1000, Frank Crawford wrote:
> The temperature sensor type will need to be used in multiple places, so
> split it out into its own function.
> 
> Signed-off-by: Frank Crawford <frank@crawford.emu.id.au>

Applied. Nit inline.

> ---
> 
> v2:
>  * Split single patch into multi-patch set following review.
> 
> ---
>  drivers/hwmon/it87.c | 43 ++++++++++++++++++++++++++++++-------------
>  1 file changed, 30 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
> index 5deff5e5f693..7a1224ddc8b1 100644
> --- a/drivers/hwmon/it87.c
> +++ b/drivers/hwmon/it87.c
> @@ -1159,28 +1159,45 @@ static SENSOR_DEVICE_ATTR_2(temp4_input, S_IRUGO, show_temp, NULL, 3, 0);
>  static SENSOR_DEVICE_ATTR_2(temp5_input, S_IRUGO, show_temp, NULL, 4, 0);
>  static SENSOR_DEVICE_ATTR_2(temp6_input, S_IRUGO, show_temp, NULL, 5, 0);
>  
> +static int get_temp_type(struct it87_data *data, int index)
> +{
> +	/*
> +	 * 2 is deprecated;
> +	 * 3 = thermal diode;
> +	 * 4 = thermistor;
> +	 * 5 = AMDTSI;
> +	 * 6 = Intel PECI;
> +	 * 0 = disabled
> +	 */
> +	u8 reg, extra;
> +	int type = 0;
> +
> +	reg = data->sensor;	/* In case value is updated while used */
> +	extra = data->extra;
> +
> +	if ((has_temp_peci(data, index) && (reg >> 6 == index + 1)) ||
> +	    (has_temp_old_peci(data, index) && (extra & 0x80)))
> +		type = 6;	/* Intel PECI */
> +	else if (reg & BIT(index))
> +		type = 3;	/* thermal diode */
> +	else if (reg & BIT(index + 3))
> +		type = 4;	/* thermistor */
> +
> +	return type;
> +}
> +
>  static ssize_t show_temp_type(struct device *dev, struct device_attribute *attr,
>  			      char *buf)
>  {
>  	struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr);
> -	int nr = sensor_attr->index;
>  	struct it87_data *data = it87_update_device(dev);
> -	u8 reg, extra;
> +	int type;
>  
>  	if (IS_ERR(data))
>  		return PTR_ERR(data);
>  
> -	reg = data->sensor;	/* In case value is updated while used */
> -	extra = data->extra;
> -
> -	if ((has_temp_peci(data, nr) && (reg >> 6 == nr + 1)) ||
> -	    (has_temp_old_peci(data, nr) && (extra & 0x80)))
> -		return sprintf(buf, "6\n");  /* Intel PECI */
> -	if (reg & (1 << nr))
> -		return sprintf(buf, "3\n");  /* thermal diode */
> -	if (reg & (8 << nr))
> -		return sprintf(buf, "4\n");  /* thermistor */
> -	return sprintf(buf, "0\n");      /* disabled */
> +	type = get_temp_type(data, sensor_attr->index);
> +	return sprintf(buf, "%d\n", type);

The type variable is really unnecessary. I dropped that while applying.

Thanks,
Guenter
diff mbox series

Patch

diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index 5deff5e5f693..7a1224ddc8b1 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -1159,28 +1159,45 @@  static SENSOR_DEVICE_ATTR_2(temp4_input, S_IRUGO, show_temp, NULL, 3, 0);
 static SENSOR_DEVICE_ATTR_2(temp5_input, S_IRUGO, show_temp, NULL, 4, 0);
 static SENSOR_DEVICE_ATTR_2(temp6_input, S_IRUGO, show_temp, NULL, 5, 0);
 
+static int get_temp_type(struct it87_data *data, int index)
+{
+	/*
+	 * 2 is deprecated;
+	 * 3 = thermal diode;
+	 * 4 = thermistor;
+	 * 5 = AMDTSI;
+	 * 6 = Intel PECI;
+	 * 0 = disabled
+	 */
+	u8 reg, extra;
+	int type = 0;
+
+	reg = data->sensor;	/* In case value is updated while used */
+	extra = data->extra;
+
+	if ((has_temp_peci(data, index) && (reg >> 6 == index + 1)) ||
+	    (has_temp_old_peci(data, index) && (extra & 0x80)))
+		type = 6;	/* Intel PECI */
+	else if (reg & BIT(index))
+		type = 3;	/* thermal diode */
+	else if (reg & BIT(index + 3))
+		type = 4;	/* thermistor */
+
+	return type;
+}
+
 static ssize_t show_temp_type(struct device *dev, struct device_attribute *attr,
 			      char *buf)
 {
 	struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr);
-	int nr = sensor_attr->index;
 	struct it87_data *data = it87_update_device(dev);
-	u8 reg, extra;
+	int type;
 
 	if (IS_ERR(data))
 		return PTR_ERR(data);
 
-	reg = data->sensor;	/* In case value is updated while used */
-	extra = data->extra;
-
-	if ((has_temp_peci(data, nr) && (reg >> 6 == nr + 1)) ||
-	    (has_temp_old_peci(data, nr) && (extra & 0x80)))
-		return sprintf(buf, "6\n");  /* Intel PECI */
-	if (reg & (1 << nr))
-		return sprintf(buf, "3\n");  /* thermal diode */
-	if (reg & (8 << nr))
-		return sprintf(buf, "4\n");  /* thermistor */
-	return sprintf(buf, "0\n");      /* disabled */
+	type = get_temp_type(data, sensor_attr->index);
+	return sprintf(buf, "%d\n", type);
 }
 
 static ssize_t set_temp_type(struct device *dev, struct device_attribute *attr,