Linux Hardware Monitor development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Markus Stockhausen" <markus.stockhausen@gmx.de>
Cc: linux-hwmon@vger.kernel.org
Subject: Re: [PATCH v3 2/2] hwmon: (lm75) Support active-high alert polarity
Date: Mon, 04 May 2026 18:56:27 +0000	[thread overview]
Message-ID: <20260504185628.065FAC2BCB8@smtp.kernel.org> (raw)
In-Reply-To: <20260504151020.462342-3-markus.stockhausen@gmx.de>

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] The 16-bit polarity mask incorrectly targets a reserved bit instead of the alert polarity bit due to endianness.
- [High] Destructive overwrite of firmware-configured polarity introduces a backwards compatibility regression.
- [High] Pre-existing bug: `set_mask` default configurations are silently ignored by regmap update logic.
- [Medium] The patch contradicts and breaks the intended active-high default behavior of as6200 sensors.
--

commit 7a0047595dac47959119e869942835475ae3f348
Author: Markus Stockhausen <markus.stockhausen@gmx.de>

hwmon: (lm75) Support active-high alert polarity

This commit adds support for configuring the active-high alert polarity for
LM75 devices using the ti,alert-polarity-active-high devicetree property. It
also enforces the default polarity if the property is missing.

> hwmon: (lm75) Support active-high alert polarity
> 
> LM75 devices supported by this driver support configurable active-high
> alert polarity. This is already documented in the devicetree description.
> Add support for it to the driver.
> 
> Follow documentation and defensively enforce active-low if property is
> not set. This avoids possible inconsistencies for future devices with
> wrong parametrization. No API breakage as all current devices have
> their parameters set to active-low.

Is it accurate that all current devices have their parameters set to active-low?

Looking at the device_params array, the as6200 configuration sets
.set_mask = 0x94C0, which has the positive polarity bit set. By clearing this
bit when the devicetree property is not present, could this break the
established default behavior for as6200 sensors?

> diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
> index f1a1e5b888f64..af2d6cf370496 100644
> --- a/drivers/hwmon/lm75.c
> +++ b/drivers/hwmon/lm75.c
> @@ -123,7 +123,9 @@ struct lm75_data {
>  
>  static const u8 lm75_sample_set_masks[] = { 0 << 5, 1 << 5, 2 << 5, 3 << 5 };
>  
> -#define LM75_SAMPLE_CLEAR_MASK	(3 << 5)
> +#define LM75_ALERT_POLARITY_HIGH_8_BIT	(BIT(2))
> +#define LM75_ALERT_POLARITY_HIGH_16_BIT	(BIT(2) << 8)

Will this 16-bit mask target the correct bit?

For 16-bit devices, the driver reads the configuration register using
i2c_smbus_read_word_data(). Since LM75-compatible sensors send the Most
Significant Byte (MSB) first, the original 8-bit configuration (containing
the polarity bit) ends up in the lower 8 bits of the returned integer, while
the extended configuration is in the upper 8 bits.

By defining LM75_ALERT_POLARITY_HIGH_16_BIT as (BIT(2) << 8), does this
erroneously target a reserved bit in the extended configuration byte instead
of the actual alert polarity bit?

> +#define LM75_SAMPLE_CLEAR_MASK		(3 << 5)
>  
>  /* The structure below stores the configuration values of the supported devices.
>   * In case of being supported multiple configurations, the default one must

[ ... ]

> @@ -762,8 +765,18 @@ static int lm75_generic_probe(struct device *dev, const char *name,
>  		return err;
>  	data->orig_conf = status;
>  
> -	err = lm75_write_config(data, data->params->set_mask,
> -				data->params->clr_mask);
> +	/* Enforce polarity active-low (default) or active-high (devicetree) */
> +	if (!data->params->config_reg_16bits)
> +		pol_mask = LM75_ALERT_POLARITY_HIGH_8_BIT;
> +	else
> +		pol_mask = LM75_ALERT_POLARITY_HIGH_16_BIT;
> +
> +	clr_mask = data->params->clr_mask | pol_mask;
> +	set_mask = data->params->set_mask & ~pol_mask;
> +	if (device_property_read_bool(dev, "ti,alert-polarity-active-high"))
> +		set_mask |= pol_mask;

By always including pol_mask in clr_mask, will this actively clear the
polarity bit for all devices without the devicetree property?

Prior to this patch, the polarity bit was not included in clr_mask, allowing
the driver to inherit an active-high polarity if it was already correctly
initialized by a bootloader. Could this new behavior break existing working
embedded setups that rely on bootloader defaults?

> +
> +	err = lm75_write_config(data, set_mask, clr_mask);

Are the set_mask bits actually being applied here?

Looking at lm75_write_config(), it uses regmap_update_bits():

drivers/hwmon/lm75.c:lm75_write_config() {
	return regmap_update_bits(data->regmap, LM75_REG_CONF,
				  clr_mask | LM75_SHUTDOWN, set_mask);
}

Since regmap_update_bits() only modifies the bits explicitly defined in its
mask argument, any bits in set_mask that are not also in clr_mask will be
silently ignored. Should the mask argument be updated to include set_mask
(e.g., clr_mask | set_mask | LM75_SHUTDOWN) to ensure all intended
configuration bits are written?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260504151020.462342-1-markus.stockhausen@gmx.de?part=2

  reply	other threads:[~2026-05-04 18:56 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-04 15:10 [PATCH v3 0/2] Support active-high alert polarity for LM75 Markus Stockhausen
2026-05-04 15:10 ` [PATCH v3 1/2] dt-bindings: hwmon: lm75: Add ti,alert-polarity-active-high property Markus Stockhausen
2026-05-04 18:23   ` sashiko-bot
2026-05-05 13:24   ` Guenter Roeck
2026-05-04 15:10 ` [PATCH v3 2/2] hwmon: (lm75) Support active-high alert polarity Markus Stockhausen
2026-05-04 18:56   ` sashiko-bot [this message]
2026-05-05 13:25   ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260504185628.065FAC2BCB8@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=markus.stockhausen@gmx.de \
    --cc=sashiko@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox