mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v5 0/2] hwmon: add support for MC33XS2410 hardware
@ 2025-07-23 17:34 Dimitri Fedrau via B4 Relay
  2025-07-23 17:34 ` [PATCH v5 1/2] pwm: mc33xs2410: add hwmon support Dimitri Fedrau via B4 Relay
  2025-07-23 17:34 ` [PATCH v5 2/2] hwmon: add support for MC33XS2410 hardware monitoring Dimitri Fedrau via B4 Relay
  0 siblings, 2 replies; 6+ messages in thread
From: Dimitri Fedrau via B4 Relay @ 2025-07-23 17:34 UTC (permalink / raw)
  To: Uwe Kleine-König, Jean Delvare, Guenter Roeck, Jonathan Corbet
  Cc: linux-pwm, linux-kernel, linux-hwmon, linux-doc, Dimitri Fedrau,
	Dimitri Fedrau

The device is able to monitor temperature, voltage and current of each of
the four outputs. Add basic support for monitoring the temperature of the
four outputs and the die temperature.

Signed-off-by: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
---
Changes in v5:
- Define DEFAULT_SYMBOL_NAMESPACE
- Replace mc33xs2410_hwmon_register with devm_auxiliary_device_create
- Add MODULE_IMPORT_NS("PWM_MC33XS2410") to mc33xs2410.h
- Add documentation for HWMON driver
- Link to v4: https://lore.kernel.org/r/20250708-mc33xs2410-hwmon-v4-0-95b9e3ea5f5c@liebherr.com

Changes in v4:
- Move hwmon functionality into separate driver residing in hwmon subsystem
  (auxiliary device)
- Link to v3: https://lore.kernel.org/r/20250619-mc33xs2410-hwmon-v3-1-301731e49f8f@liebherr.com

Changes in v3:
- Add changes suggested by Uwe Kleine-König.
  Remove "#if IS_ENABLED(CONFIG_HWMON)" and add
  "if (IS_REACHABLE(CONFIG_HWMON))" in mc33xs2410_hwmon_probe.
- Link to v2: https://lore.kernel.org/r/20250515-mc33xs2410-hwmon-v2-1-8d2e78f7e30d@liebherr.com

Changes in v2:
- Remove helper mc33xs2410_hwmon_read_out_status and report the last
  latched status.
- Link to v1: https://lore.kernel.org/r/20250512-mc33xs2410-hwmon-v1-1-addba77c78f9@liebherr.com

---
Dimitri Fedrau (2):
      pwm: mc33xs2410: add hwmon support
      hwmon: add support for MC33XS2410 hardware monitoring

 Documentation/hwmon/index.rst            |   1 +
 Documentation/hwmon/mc33xs2410_hwmon.rst |  34 ++++++
 drivers/hwmon/Kconfig                    |  10 ++
 drivers/hwmon/Makefile                   |   1 +
 drivers/hwmon/mc33xs2410_hwmon.c         | 178 +++++++++++++++++++++++++++++++
 drivers/pwm/Kconfig                      |   1 +
 drivers/pwm/pwm-mc33xs2410.c             |  20 +++-
 include/linux/mc33xs2410.h               |  16 +++
 8 files changed, 259 insertions(+), 2 deletions(-)
---
base-commit: 3b85883a9a7751ab198696f33f94afa428b43722
change-id: 20250507-mc33xs2410-hwmon-a5ff9efec005

Best regards,
-- 
Dimitri Fedrau <dimitri.fedrau@liebherr.com>



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v5 1/2] pwm: mc33xs2410: add hwmon support
  2025-07-23 17:34 [PATCH v5 0/2] hwmon: add support for MC33XS2410 hardware Dimitri Fedrau via B4 Relay
@ 2025-07-23 17:34 ` Dimitri Fedrau via B4 Relay
  2025-07-24  7:30   ` Uwe Kleine-König
  2025-07-23 17:34 ` [PATCH v5 2/2] hwmon: add support for MC33XS2410 hardware monitoring Dimitri Fedrau via B4 Relay
  1 sibling, 1 reply; 6+ messages in thread
From: Dimitri Fedrau via B4 Relay @ 2025-07-23 17:34 UTC (permalink / raw)
  To: Uwe Kleine-König, Jean Delvare, Guenter Roeck, Jonathan Corbet
  Cc: linux-pwm, linux-kernel, linux-hwmon, linux-doc, Dimitri Fedrau,
	Dimitri Fedrau

From: Dimitri Fedrau <dimitri.fedrau@liebherr.com>

Support for hwmon is provided by a separate driver residing in hwmon
subsystem which is implemented as auxiliary device. Add handling of this
device.

Signed-off-by: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
---
 drivers/pwm/Kconfig          |  1 +
 drivers/pwm/pwm-mc33xs2410.c | 20 ++++++++++++++++++--
 include/linux/mc33xs2410.h   | 16 ++++++++++++++++
 3 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
index 3ef1757502ebd92b30584cd10611311a0fbfc03b..64f1c86340fdc7d0ef41bf14be5f6f0623a2bd31 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -436,6 +436,7 @@ config PWM_MC33XS2410
 	tristate "MC33XS2410 PWM support"
 	depends on OF
 	depends on SPI
+	select AUXILIARY_BUS
 	help
 	  NXP MC33XS2410 high-side switch driver. The MC33XS2410 is a four
 	  channel high-side switch. The device is operational from 3.0 V
diff --git a/drivers/pwm/pwm-mc33xs2410.c b/drivers/pwm/pwm-mc33xs2410.c
index a1ac3445ccdb4709d92e0075d424a8abc1416eee..6d99e3ff7239891d87711d98aa463ac158af70e1 100644
--- a/drivers/pwm/pwm-mc33xs2410.c
+++ b/drivers/pwm/pwm-mc33xs2410.c
@@ -17,11 +17,14 @@
  *   behavior of the output pin that is neither the old nor the new state,
  *   rather something in between.
  */
+#define DEFAULT_SYMBOL_NAMESPACE		"PWM_MC33XS2410"
 
+#include <linux/auxiliary_bus.h>
 #include <linux/bitfield.h>
 #include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/math64.h>
+#include <linux/mc33xs2410.h>
 #include <linux/minmax.h>
 #include <linux/module.h>
 #include <linux/of.h>
@@ -120,12 +123,19 @@ static int mc33xs2410_read_reg(struct spi_device *spi, u8 reg, u16 *val, u8 flag
 	return mc33xs2410_read_regs(spi, &reg, flag, val, 1);
 }
 
-static int mc33xs2410_read_reg_ctrl(struct spi_device *spi, u8 reg, u16 *val)
+int mc33xs2410_read_reg_ctrl(struct spi_device *spi, u8 reg, u16 *val)
 {
 	return mc33xs2410_read_reg(spi, reg, val, MC33XS2410_FRAME_IN_DATA_RD);
 }
+EXPORT_SYMBOL_GPL(mc33xs2410_read_reg_ctrl);
 
-static int mc33xs2410_modify_reg(struct spi_device *spi, u8 reg, u8 mask, u8 val)
+int mc33xs2410_read_reg_diag(struct spi_device *spi, u8 reg, u16 *val)
+{
+	return mc33xs2410_read_reg(spi, reg, val, 0);
+}
+EXPORT_SYMBOL_GPL(mc33xs2410_read_reg_diag);
+
+int mc33xs2410_modify_reg(struct spi_device *spi, u8 reg, u8 mask, u8 val)
 {
 	u16 tmp;
 	int ret;
@@ -139,6 +149,7 @@ static int mc33xs2410_modify_reg(struct spi_device *spi, u8 reg, u8 mask, u8 val
 
 	return mc33xs2410_write_reg(spi, reg, tmp);
 }
+EXPORT_SYMBOL_GPL(mc33xs2410_modify_reg);
 
 static u8 mc33xs2410_pwm_get_freq(u64 period)
 {
@@ -314,6 +325,7 @@ static int mc33xs2410_reset(struct device *dev)
 static int mc33xs2410_probe(struct spi_device *spi)
 {
 	struct device *dev = &spi->dev;
+	struct auxiliary_device *adev;
 	struct pwm_chip *chip;
 	int ret;
 
@@ -361,6 +373,10 @@ static int mc33xs2410_probe(struct spi_device *spi)
 	if (ret < 0)
 		return dev_err_probe(dev, ret, "Failed to add pwm chip\n");
 
+	adev = devm_auxiliary_device_create(dev, "hwmon", NULL);
+	if (!adev)
+		return dev_err_probe(dev, -ENODEV, "Failed to register hwmon device\n");
+
 	return 0;
 }
 
diff --git a/include/linux/mc33xs2410.h b/include/linux/mc33xs2410.h
new file mode 100644
index 0000000000000000000000000000000000000000..31c0edf10dd7370a0c3e603947256577d4d40854
--- /dev/null
+++ b/include/linux/mc33xs2410.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2024 Liebherr-Electronics and Drives GmbH
+ */
+#ifndef _MC33XS2410_H
+#define _MC33XS2410_H
+
+#include <linux/spi/spi.h>
+
+MODULE_IMPORT_NS("PWM_MC33XS2410");
+
+int mc33xs2410_read_reg_ctrl(struct spi_device *spi, u8 reg, u16 *val);
+int mc33xs2410_read_reg_diag(struct spi_device *spi, u8 reg, u16 *val);
+int mc33xs2410_modify_reg(struct spi_device *spi, u8 reg, u8 mask, u8 val);
+
+#endif /* _MC33XS2410_H */

-- 
2.39.5



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v5 2/2] hwmon: add support for MC33XS2410 hardware monitoring
  2025-07-23 17:34 [PATCH v5 0/2] hwmon: add support for MC33XS2410 hardware Dimitri Fedrau via B4 Relay
  2025-07-23 17:34 ` [PATCH v5 1/2] pwm: mc33xs2410: add hwmon support Dimitri Fedrau via B4 Relay
@ 2025-07-23 17:34 ` Dimitri Fedrau via B4 Relay
  2025-07-23 22:38   ` Guenter Roeck
  1 sibling, 1 reply; 6+ messages in thread
From: Dimitri Fedrau via B4 Relay @ 2025-07-23 17:34 UTC (permalink / raw)
  To: Uwe Kleine-König, Jean Delvare, Guenter Roeck, Jonathan Corbet
  Cc: linux-pwm, linux-kernel, linux-hwmon, linux-doc, Dimitri Fedrau,
	Dimitri Fedrau

From: Dimitri Fedrau <dimitri.fedrau@liebherr.com>

The device is able to monitor temperature, voltage and current of each of
the four outputs. Add basic support for monitoring the temperature of the
four outputs and the die temperature.

Signed-off-by: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
---
 Documentation/hwmon/index.rst            |   1 +
 Documentation/hwmon/mc33xs2410_hwmon.rst |  34 ++++++
 drivers/hwmon/Kconfig                    |  10 ++
 drivers/hwmon/Makefile                   |   1 +
 drivers/hwmon/mc33xs2410_hwmon.c         | 178 +++++++++++++++++++++++++++++++
 5 files changed, 224 insertions(+)

diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
index b45bfb4ebf30823094fe82726d2237f90be17642..d292a86ac5da902cad02c1965c90f5de530489df 100644
--- a/Documentation/hwmon/index.rst
+++ b/Documentation/hwmon/index.rst
@@ -167,6 +167,7 @@ Hardware Monitoring Kernel Drivers
    max77705
    max8688
    mc13783-adc
+   mc33xs2410_hwmon
    mc34vr500
    mcp3021
    menf21bmc
diff --git a/Documentation/hwmon/mc33xs2410_hwmon.rst b/Documentation/hwmon/mc33xs2410_hwmon.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8a2136ef913911851874179620815f4e74e6e5e9
--- /dev/null
+++ b/Documentation/hwmon/mc33xs2410_hwmon.rst
@@ -0,0 +1,34 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+Kernel driver mc33xs2410_hwmon
+==============================
+
+Supported devices:
+
+  * NXPs MC33XS2410
+
+    Datasheet: https://www.nxp.com/docs/en/data-sheet/MC33XS2410.pdf
+
+Authors:
+
+	Dimitri Fedrau <dimitri.fedrau@liebherr.com>
+
+Description
+-----------
+
+The MC33XS2410 is a four channel self-protected high-side switch featuring
+hardware monitoring functions such as temperature, current and voltages for each
+of the four channels.
+
+Sysfs entries
+-------------
+
+======================= ======================================================
+temp1_label		"Central die temperature"
+temp1_input		Measured temperature of central die
+
+temp[2-5]_label		"Channel [1-4] temperature"
+temp[2-5]_input		Measured temperature of a single channel
+temp[2-5]_alarm		Temperature alarm
+temp[2-5]_max		Maximal temperature
+======================= ======================================================
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 079620dd42862ef5e026697e9e1b1fcd5b8be298..9d28fcf7cd2a6f9e2f54694a717bd85ff4047b46 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -700,6 +700,16 @@ config SENSORS_MC13783_ADC
         help
           Support for the A/D converter on MC13783 and MC13892 PMIC.
 
+config SENSORS_MC33XS2410
+	tristate "MC33XS2410 HWMON support"
+	depends on PWM_MC33XS2410
+	help
+	  If you say yes here you get hardware monitoring support for
+	  MC33XS2410.
+
+	  This driver can also be built as a module. If so, the module
+	  will be called mc33xs2410_hwmon.
+
 config SENSORS_FSCHMD
 	tristate "Fujitsu Siemens Computers sensor chips"
 	depends on (X86 || COMPILE_TEST) && I2C
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 48e5866c0c9a7677089d1001a9c5ae4adebff5d5..cd8bc4752b4dbf015c6eb46157626f4e8f87dfae 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -165,6 +165,7 @@ obj-$(CONFIG_SENSORS_MAX31790)	+= max31790.o
 obj-$(CONFIG_MAX31827) += max31827.o
 obj-$(CONFIG_SENSORS_MAX77705) += max77705-hwmon.o
 obj-$(CONFIG_SENSORS_MC13783_ADC)+= mc13783-adc.o
+obj-$(CONFIG_SENSORS_MC33XS2410) += mc33xs2410_hwmon.o
 obj-$(CONFIG_SENSORS_MC34VR500)	+= mc34vr500.o
 obj-$(CONFIG_SENSORS_MCP3021)	+= mcp3021.o
 obj-$(CONFIG_SENSORS_TC654)	+= tc654.o
diff --git a/drivers/hwmon/mc33xs2410_hwmon.c b/drivers/hwmon/mc33xs2410_hwmon.c
new file mode 100644
index 0000000000000000000000000000000000000000..23eb90e337091724c5562703df7d77a5fae6253b
--- /dev/null
+++ b/drivers/hwmon/mc33xs2410_hwmon.c
@@ -0,0 +1,178 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Liebherr-Electronics and Drives GmbH
+ */
+
+#include <linux/auxiliary_bus.h>
+#include <linux/bitfield.h>
+#include <linux/bitops.h>
+#include <linux/hwmon.h>
+#include <linux/mc33xs2410.h>
+#include <linux/module.h>
+
+/* ctrl registers */
+
+#define MC33XS2410_TEMP_WT			0x29
+#define MC33XS2410_TEMP_WT_MASK			GENMASK(7, 0)
+
+/* diag registers */
+
+/* chan in { 1 ... 4 } */
+#define MC33XS2410_OUT_STA(chan)		(0x02 + (chan) - 1)
+#define MC33XS2410_OUT_STA_OTW			BIT(8)
+
+#define MC33XS2410_TS_TEMP_DIE			0x26
+#define MC33XS2410_TS_TEMP_MASK			GENMASK(9, 0)
+
+/* chan in { 1 ... 4 } */
+#define MC33XS2410_TS_TEMP(chan)		(0x2f + (chan) - 1)
+
+static const struct hwmon_channel_info * const mc33xs2410_hwmon_info[] = {
+	HWMON_CHANNEL_INFO(temp,
+			   HWMON_T_LABEL | HWMON_T_INPUT,
+			   HWMON_T_LABEL | HWMON_T_INPUT | HWMON_T_MAX |
+			   HWMON_T_ALARM,
+			   HWMON_T_LABEL | HWMON_T_INPUT | HWMON_T_MAX |
+			   HWMON_T_ALARM,
+			   HWMON_T_LABEL | HWMON_T_INPUT | HWMON_T_MAX |
+			   HWMON_T_ALARM,
+			   HWMON_T_LABEL | HWMON_T_INPUT | HWMON_T_MAX |
+			   HWMON_T_ALARM),
+	NULL,
+};
+
+static umode_t mc33xs2410_hwmon_is_visible(const void *data,
+					   enum hwmon_sensor_types type,
+					   u32 attr, int channel)
+{
+	switch (attr) {
+	case hwmon_temp_input:
+	case hwmon_temp_alarm:
+	case hwmon_temp_label:
+		return 0444;
+	case hwmon_temp_max:
+		return 0644;
+	default:
+		return 0;
+	}
+}
+
+static int mc33xs2410_hwmon_read(struct device *dev,
+				 enum hwmon_sensor_types type,
+				 u32 attr, int channel, long *val)
+{
+	struct spi_device *spi = dev_get_drvdata(dev);
+	u16 reg_val;
+	int ret;
+	u8 reg;
+
+	switch (attr) {
+	case hwmon_temp_input:
+		reg = (channel == 0) ? MC33XS2410_TS_TEMP_DIE :
+				       MC33XS2410_TS_TEMP(channel);
+		ret = mc33xs2410_read_reg_diag(spi, reg, &reg_val);
+		if (ret < 0)
+			return ret;
+
+		/* LSB is 0.25 degree celsius */
+		*val = FIELD_GET(MC33XS2410_TS_TEMP_MASK, reg_val) * 250 - 40000;
+		return 0;
+	case hwmon_temp_alarm:
+		ret = mc33xs2410_read_reg_diag(spi, MC33XS2410_OUT_STA(channel),
+					       &reg_val);
+		if (ret < 0)
+			return ret;
+
+		*val = FIELD_GET(MC33XS2410_OUT_STA_OTW, reg_val);
+		return 0;
+	case hwmon_temp_max:
+		ret = mc33xs2410_read_reg_ctrl(spi, MC33XS2410_TEMP_WT, &reg_val);
+		if (ret < 0)
+			return ret;
+
+		/* LSB is 1 degree celsius */
+		*val = FIELD_GET(MC33XS2410_TEMP_WT_MASK, reg_val) * 1000 - 40000;
+		return 0;
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static int mc33xs2410_hwmon_write(struct device *dev,
+				  enum hwmon_sensor_types type, u32 attr,
+				  int channel, long val)
+{
+	struct spi_device *spi = dev_get_drvdata(dev);
+
+	switch (attr) {
+	case hwmon_temp_max:
+		val = clamp_val(val, -40000, 215000);
+
+		/* LSB is 1 degree celsius */
+		val = (val / 1000) + 40;
+		return mc33xs2410_modify_reg(spi, MC33XS2410_TEMP_WT,
+					     MC33XS2410_TEMP_WT_MASK, val);
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static const char *const mc33xs2410_temp_label[] = {
+	"Central die temperature",
+	"Channel 1 temperature",
+	"Channel 2 temperature",
+	"Channel 3 temperature",
+	"Channel 4 temperature",
+};
+
+static int mc33xs2410_read_string(struct device *dev,
+				  enum hwmon_sensor_types type,
+				  u32 attr, int channel, const char **str)
+{
+	*str = mc33xs2410_temp_label[channel];
+
+	return 0;
+}
+
+static const struct hwmon_ops mc33xs2410_hwmon_hwmon_ops = {
+	.is_visible = mc33xs2410_hwmon_is_visible,
+	.read = mc33xs2410_hwmon_read,
+	.read_string = mc33xs2410_read_string,
+	.write = mc33xs2410_hwmon_write,
+};
+
+static const struct hwmon_chip_info mc33xs2410_hwmon_chip_info = {
+	.ops = &mc33xs2410_hwmon_hwmon_ops,
+	.info = mc33xs2410_hwmon_info,
+};
+
+static int mc33xs2410_hwmon_probe(struct auxiliary_device *adev,
+				  const struct auxiliary_device_id *id)
+{
+	struct device *dev = &adev->dev;
+	struct spi_device *spi = container_of(dev->parent, struct spi_device, dev);
+	struct device *hwmon;
+
+	hwmon = devm_hwmon_device_register_with_info(dev, NULL, spi,
+						     &mc33xs2410_hwmon_chip_info,
+						     NULL);
+	return PTR_ERR_OR_ZERO(hwmon);
+}
+
+static const struct auxiliary_device_id mc33xs2410_hwmon_ids[] = {
+	{
+		.name = "pwm_mc33xs2410.hwmon",
+	},
+	{ }
+};
+MODULE_DEVICE_TABLE(auxiliary, mc33xs2410_hwmon_ids);
+
+static struct auxiliary_driver mc33xs2410_hwmon_driver = {
+	.probe = mc33xs2410_hwmon_probe,
+	.id_table = mc33xs2410_hwmon_ids,
+};
+module_auxiliary_driver(mc33xs2410_hwmon_driver);
+
+MODULE_DESCRIPTION("NXP MC33XS2410 hwmon driver");
+MODULE_AUTHOR("Dimitri Fedrau <dimitri.fedrau@liebherr.com>");
+MODULE_LICENSE("GPL");

-- 
2.39.5



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v5 2/2] hwmon: add support for MC33XS2410 hardware monitoring
  2025-07-23 17:34 ` [PATCH v5 2/2] hwmon: add support for MC33XS2410 hardware monitoring Dimitri Fedrau via B4 Relay
@ 2025-07-23 22:38   ` Guenter Roeck
  0 siblings, 0 replies; 6+ messages in thread
From: Guenter Roeck @ 2025-07-23 22:38 UTC (permalink / raw)
  To: dimitri.fedrau, Uwe Kleine-König, Jean Delvare, Jonathan Corbet
  Cc: linux-pwm, linux-kernel, linux-hwmon, linux-doc, Dimitri Fedrau

On 7/23/25 10:34, Dimitri Fedrau via B4 Relay wrote:
> From: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
> 
> The device is able to monitor temperature, voltage and current of each of
> the four outputs. Add basic support for monitoring the temperature of the
> four outputs and the die temperature.
> 
> Signed-off-by: Dimitri Fedrau <dimitri.fedrau@liebherr.com>

Acked-by: Guenter Roeck <linux@roeck-us.net>

I am not sure what the plan is, but for now I'll assume that
the series will be applied through the pwm subsystem.

Thanks,
Guenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v5 1/2] pwm: mc33xs2410: add hwmon support
  2025-07-23 17:34 ` [PATCH v5 1/2] pwm: mc33xs2410: add hwmon support Dimitri Fedrau via B4 Relay
@ 2025-07-24  7:30   ` Uwe Kleine-König
  2025-07-24 12:59     ` Guenter Roeck
  0 siblings, 1 reply; 6+ messages in thread
From: Uwe Kleine-König @ 2025-07-24  7:30 UTC (permalink / raw)
  To: dimitri.fedrau, Guenter Roeck
  Cc: Jean Delvare, Jonathan Corbet, linux-pwm, linux-kernel,
	linux-hwmon, linux-doc, Dimitri Fedrau

[-- Attachment #1: Type: text/plain, Size: 1125 bytes --]

Hello Dimitri,

On Wed, Jul 23, 2025 at 07:34:56PM +0200, Dimitri Fedrau via B4 Relay wrote:
> @@ -361,6 +373,10 @@ static int mc33xs2410_probe(struct spi_device *spi)
>  	if (ret < 0)
>  		return dev_err_probe(dev, ret, "Failed to add pwm chip\n");
>  
> +	adev = devm_auxiliary_device_create(dev, "hwmon", NULL);
> +	if (!adev)
> +		return dev_err_probe(dev, -ENODEV, "Failed to register hwmon device\n");

Not so nice that you have to make up an error code here. But that's not
your fault but devm_auxiliary_device_create()'s which returns NULL on
error instead of an error pointer.

> +
>  	return 0;
>  }

I applied the patch for the upcoming merge window to

https://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux.git pwm/for-next

. Expecting the merge window to open on Sunday that's a bit tight
because I like drivers to be in next for a bit before they enter the
mainline. The major code change is in drivers/hwmon and I assume Guenter
is ok with me taking it for 6.17-rc1. If not, please object, then I'll
not send it to Linus and wait for the 6.18-rc1 PR.

Best regards
Uwe

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v5 1/2] pwm: mc33xs2410: add hwmon support
  2025-07-24  7:30   ` Uwe Kleine-König
@ 2025-07-24 12:59     ` Guenter Roeck
  0 siblings, 0 replies; 6+ messages in thread
From: Guenter Roeck @ 2025-07-24 12:59 UTC (permalink / raw)
  To: Uwe Kleine-König, dimitri.fedrau
  Cc: Jean Delvare, Jonathan Corbet, linux-pwm, linux-kernel,
	linux-hwmon, linux-doc, Dimitri Fedrau

On 7/24/25 00:30, Uwe Kleine-König wrote:
> Hello Dimitri,
> 
> On Wed, Jul 23, 2025 at 07:34:56PM +0200, Dimitri Fedrau via B4 Relay wrote:
>> @@ -361,6 +373,10 @@ static int mc33xs2410_probe(struct spi_device *spi)
>>   	if (ret < 0)
>>   		return dev_err_probe(dev, ret, "Failed to add pwm chip\n");
>>   
>> +	adev = devm_auxiliary_device_create(dev, "hwmon", NULL);
>> +	if (!adev)
>> +		return dev_err_probe(dev, -ENODEV, "Failed to register hwmon device\n");
> 
> Not so nice that you have to make up an error code here. But that's not
> your fault but devm_auxiliary_device_create()'s which returns NULL on
> error instead of an error pointer.
> 
>> +
>>   	return 0;
>>   }
> 
> I applied the patch for the upcoming merge window to
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux.git pwm/for-next
> 
> . Expecting the merge window to open on Sunday that's a bit tight
> because I like drivers to be in next for a bit before they enter the
> mainline. The major code change is in drivers/hwmon and I assume Guenter
> is ok with me taking it for 6.17-rc1. If not, please object, then I'll
> not send it to Linus and wait for the 6.18-rc1 PR.
> 

Please go ahead and apply both patches.

Thanks,
Guenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-07-24 12:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-23 17:34 [PATCH v5 0/2] hwmon: add support for MC33XS2410 hardware Dimitri Fedrau via B4 Relay
2025-07-23 17:34 ` [PATCH v5 1/2] pwm: mc33xs2410: add hwmon support Dimitri Fedrau via B4 Relay
2025-07-24  7:30   ` Uwe Kleine-König
2025-07-24 12:59     ` Guenter Roeck
2025-07-23 17:34 ` [PATCH v5 2/2] hwmon: add support for MC33XS2410 hardware monitoring Dimitri Fedrau via B4 Relay
2025-07-23 22:38   ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®