Re: [PATCH v5 3/3] hwmon: pmbus: add MPQ8646 driver

Guenter Roeck <[email protected]>
Newsgroups org.kernel.vger.linux-hwmon,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On 7/23/26 16:55, Vincent Jardin via B4 Relay wrote:
...
> +
> +/* Adapted from lm90.c */
> +static void mpq8646_alarm_poll_work(struct work_struct *work)
> +{
> +	struct mpq8646_priv *priv = container_of(to_delayed_work(work),
> +						 struct mpq8646_priv,
> +						 alarm_poll_work);
> +	int rc;
> +	u16 cur, newly_set;
> +	size_t i;
> +
> +	if (priv->client->irq)
> +		return;	/* SMBALERT# wired; polling not needed */
> +
> +	if (!priv->alarm_poll_interval_ms)
> +		return;	/* polling disabled; don't re-arm */
> +
> +	if (!priv->hwmon_dev)
> +		goto rearm;	/* hwmon not ready yet; try again next tick */
> +
> +	/* Serialise with the pmbus core's own transactions on this client. */
> +	pmbus_lock(priv->client);
> +	rc = i2c_smbus_read_word_data(priv->client, PMBUS_STATUS_WORD);
> +	pmbus_unlock(priv->client);
> +	if (rc < 0)
> +		goto rearm;
> +
> +	cur = (u16)rc;
> +	newly_set = cur & ~priv->last_status_word;
> +	priv->last_status_word = cur;
> +
> +	if (!newly_set)
> +		goto rearm;
> +
> +	for (i = 0; i < ARRAY_SIZE(mpq8646_alarm_map); i++) {
> +		if (newly_set & mpq8646_alarm_map[i].mask)
> +			hwmon_notify_event(priv->hwmon_dev,
> +					   mpq8646_alarm_map[i].type,
> +					   mpq8646_alarm_map[i].attr,
> +					   mpq8646_alarm_map[i].channel);

This is wrong. This will require a new exported notification function
in pmbus code.

Guenter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.