public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] Add OF support for Microchip emc2305 fan controller
@ 2025-03-04 16:21 florin.leotescu
  2025-03-04 16:21 ` [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema florin.leotescu
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: florin.leotescu @ 2025-03-04 16:21 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel
  Cc: viorel.suman, carlos.song, linux-arm-kernel, imx, festevam,
	Florin Leotescu

From: Florin Leotescu <florin.leotescu@nxp.com>

This patch series add initial OF support for Microchip emc2305 fan controller.

Changes since v2:
- Removed the introduction of new properties for now and we only 
  enable basic OF support.
- Link to previous version: 
  https://lore.kernel.org/linux-arm-kernel/20250219133221.2641041-3-florin.leotescu@oss.nxp.com/T/

Florin Leotescu (3):
  dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  hwmon: emc2305: Add OF support
  hwmon: emc2305: Use devm_thermal_of_cooling_device_register

 .../bindings/hwmon/microchip,emc2305.yaml     | 43 +++++++++++++++++++
 drivers/hwmon/emc2305.c                       | 36 ++++++----------
 2 files changed, 55 insertions(+), 24 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml

-- 
2.34.1



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

* [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-04 16:21 [PATCH v3 0/3] Add OF support for Microchip emc2305 fan controller florin.leotescu
@ 2025-03-04 16:21 ` florin.leotescu
  2025-03-04 16:27   ` Frank Li
                     ` (2 more replies)
  2025-03-04 16:21 ` [PATCH v3 2/3] hwmon: emc2305: Add OF support florin.leotescu
  2025-03-04 16:21 ` [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register florin.leotescu
  2 siblings, 3 replies; 14+ messages in thread
From: florin.leotescu @ 2025-03-04 16:21 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel
  Cc: viorel.suman, carlos.song, linux-arm-kernel, imx, festevam,
	Florin Leotescu

From: Florin Leotescu <florin.leotescu@nxp.com>

Introduce yaml schema for Microchip emc2305 pwm fan controller.

Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
---
 .../bindings/hwmon/microchip,emc2305.yaml     | 43 +++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml

diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
new file mode 100644
index 000000000000..cac0075a65bb
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/microchip,emc2305.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip EMC2305 SMBus compliant PWM fan controller
+
+maintainers:
+  - Michael Shych <michaelsh@nvidia.com>
+
+description: |
+  Microchip EMC2301/2/3/5 pwm controller which supports up
+  to five programmable fan control circuits
+
+properties:
+  compatible:
+    enum:
+      - microchip,emc2301
+      - microchip,emc2302
+      - microchip,emc2303
+      - microchip,emc2305
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        emc2301: pwm@2f {
+            compatible = "microchip,emc2301";
+            reg = <0x2f>;
+        };
+    };
-- 
2.34.1



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

* [PATCH v3 2/3] hwmon: emc2305: Add OF support
  2025-03-04 16:21 [PATCH v3 0/3] Add OF support for Microchip emc2305 fan controller florin.leotescu
  2025-03-04 16:21 ` [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema florin.leotescu
@ 2025-03-04 16:21 ` florin.leotescu
  2025-03-04 16:27   ` Frank Li
  2025-03-04 16:21 ` [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register florin.leotescu
  2 siblings, 1 reply; 14+ messages in thread
From: florin.leotescu @ 2025-03-04 16:21 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel
  Cc: viorel.suman, carlos.song, linux-arm-kernel, imx, festevam,
	Florin Leotescu

From: Florin Leotescu <florin.leotescu@nxp.com>

Introduce OF support for Microchip emc2301/2/3/5 pwm fan controller.

Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
---
 drivers/hwmon/emc2305.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
index 4d39fbd83769..a236f27c75bc 100644
--- a/drivers/hwmon/emc2305.c
+++ b/drivers/hwmon/emc2305.c
@@ -607,9 +607,19 @@ static void emc2305_remove(struct i2c_client *client)
 		emc2305_unset_tz(dev);
 }
 
+static const struct of_device_id of_emc2305_match_table[] = {
+	{ .compatible = "microchip,emc2301", },
+	{ .compatible = "microchip,emc2302", },
+	{ .compatible = "microchip,emc2303", },
+	{ .compatible = "microchip,emc2305", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, of_emc2305_match_table);
+
 static struct i2c_driver emc2305_driver = {
 	.driver = {
 		.name = "emc2305",
+		.of_match_table = of_emc2305_match_table,
 	},
 	.probe = emc2305_probe,
 	.remove	  = emc2305_remove,
-- 
2.34.1



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

* [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register
  2025-03-04 16:21 [PATCH v3 0/3] Add OF support for Microchip emc2305 fan controller florin.leotescu
  2025-03-04 16:21 ` [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema florin.leotescu
  2025-03-04 16:21 ` [PATCH v3 2/3] hwmon: emc2305: Add OF support florin.leotescu
@ 2025-03-04 16:21 ` florin.leotescu
  2025-03-04 16:33   ` Frank Li
  2025-03-05 16:54   ` Guenter Roeck
  2 siblings, 2 replies; 14+ messages in thread
From: florin.leotescu @ 2025-03-04 16:21 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel
  Cc: viorel.suman, carlos.song, linux-arm-kernel, imx, festevam,
	Florin Leotescu

From: Florin Leotescu <florin.leotescu@nxp.com>

This prepares emc2305 driver to use configuration from Device Tree nodes.
Using devm_thermal_of_cooling_device_register also simplifies cleanup
procedure, so we are able to remove the emc2305_unset_tz and emc2305_remove
functions which are no longer used.

Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
---
 drivers/hwmon/emc2305.c | 28 +++-------------------------
 1 file changed, 3 insertions(+), 25 deletions(-)

diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
index a236f27c75bc..5f3f06308826 100644
--- a/drivers/hwmon/emc2305.c
+++ b/drivers/hwmon/emc2305.c
@@ -112,8 +112,6 @@ static char *emc2305_fan_name[] = {
 	"emc2305_fan5",
 };
 
-static void emc2305_unset_tz(struct device *dev);
-
 static int emc2305_get_max_channel(const struct emc2305_data *data)
 {
 	return data->pwm_num;
@@ -293,8 +291,9 @@ static int emc2305_set_single_tz(struct device *dev, int idx)
 	pwm = data->pwm_min[cdev_idx];
 
 	data->cdev_data[cdev_idx].cdev =
-		thermal_cooling_device_register(emc2305_fan_name[idx], data,
-						&emc2305_cooling_ops);
+		devm_thermal_of_cooling_device_register(dev, dev->of_node,
+							emc2305_fan_name[idx], data,
+							&emc2305_cooling_ops);
 
 	if (IS_ERR(data->cdev_data[cdev_idx].cdev)) {
 		dev_err(dev, "Failed to register cooling device %s\n", emc2305_fan_name[idx]);
@@ -337,21 +336,9 @@ static int emc2305_set_tz(struct device *dev)
 	return 0;
 
 thermal_cooling_device_register_fail:
-	emc2305_unset_tz(dev);
 	return ret;
 }
 
-static void emc2305_unset_tz(struct device *dev)
-{
-	struct emc2305_data *data = dev_get_drvdata(dev);
-	int i;
-
-	/* Unregister cooling device. */
-	for (i = 0; i < EMC2305_PWM_MAX; i++)
-		if (data->cdev_data[i].cdev)
-			thermal_cooling_device_unregister(data->cdev_data[i].cdev);
-}
-
 static umode_t
 emc2305_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr, int channel)
 {
@@ -599,14 +586,6 @@ static int emc2305_probe(struct i2c_client *client)
 	return 0;
 }
 
-static void emc2305_remove(struct i2c_client *client)
-{
-	struct device *dev = &client->dev;
-
-	if (IS_REACHABLE(CONFIG_THERMAL))
-		emc2305_unset_tz(dev);
-}
-
 static const struct of_device_id of_emc2305_match_table[] = {
 	{ .compatible = "microchip,emc2301", },
 	{ .compatible = "microchip,emc2302", },
@@ -622,7 +601,6 @@ static struct i2c_driver emc2305_driver = {
 		.of_match_table = of_emc2305_match_table,
 	},
 	.probe = emc2305_probe,
-	.remove	  = emc2305_remove,
 	.id_table = emc2305_ids,
 };
 
-- 
2.34.1



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

* Re: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-04 16:21 ` [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema florin.leotescu
@ 2025-03-04 16:27   ` Frank Li
  2025-03-05 12:47     ` Daniel Baluta
  2025-03-04 16:29   ` Conor Dooley
  2025-03-04 16:33   ` Krzysztof Kozlowski
  2 siblings, 1 reply; 14+ messages in thread
From: Frank Li @ 2025-03-04 16:27 UTC (permalink / raw)
  To: florin.leotescu
  Cc: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel, viorel.suman, carlos.song, linux-arm-kernel, imx,
	festevam, Florin Leotescu

On Tue, Mar 04, 2025 at 06:21:34PM +0200, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
>
> Introduce yaml schema for Microchip emc2305 pwm fan controller.
>
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> ---
>  .../bindings/hwmon/microchip,emc2305.yaml     | 43 +++++++++++++++++++
>  1 file changed, 43 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
>
> diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> new file mode 100644
> index 000000000000..cac0075a65bb
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> @@ -0,0 +1,43 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/microchip,emc2305.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Microchip EMC2305 SMBus compliant PWM fan controller
> +
> +maintainers:
> +  - Michael Shych <michaelsh@nvidia.com>

who is it? look like not Microchip and hwmon maintainer.

> +
> +description: |

Needn't |

> +  Microchip EMC2301/2/3/5 pwm controller which supports up
> +  to five programmable fan control circuits
> +
> +properties:
> +  compatible:
> +    enum:
> +      - microchip,emc2301
> +      - microchip,emc2302
> +      - microchip,emc2303
> +      - microchip,emc2305

According to your driver code look like all compatible with microchip,emc2301

oneOf:
  - enum:
      - microchip,emc2301
  - items:
      - enum:
          - microchip,emc2302
          - microchip,emc2303
          - microchip,emc2305
      - const: microchip,emc2301

So your driver just need one "microchip,emc2301" compatible string.

> +
> +  reg:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        emc2301: pwm@2f {
> +            compatible = "microchip,emc2301";
> +            reg = <0x2f>;

If only one reg:
You can go through trivial-devices.yaml

Frank

> +        };
> +    };
> --
> 2.34.1
>


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

* Re: [PATCH v3 2/3] hwmon: emc2305: Add OF support
  2025-03-04 16:21 ` [PATCH v3 2/3] hwmon: emc2305: Add OF support florin.leotescu
@ 2025-03-04 16:27   ` Frank Li
  0 siblings, 0 replies; 14+ messages in thread
From: Frank Li @ 2025-03-04 16:27 UTC (permalink / raw)
  To: florin.leotescu
  Cc: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel, viorel.suman, carlos.song, linux-arm-kernel, imx,
	festevam, Florin Leotescu

On Tue, Mar 04, 2025 at 06:21:35PM +0200, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
>
> Introduce OF support for Microchip emc2301/2/3/5 pwm fan controller.
>
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>

Reviewed-by: Frank Li <Frank.Li@nxp.com>

> ---
>  drivers/hwmon/emc2305.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
> index 4d39fbd83769..a236f27c75bc 100644
> --- a/drivers/hwmon/emc2305.c
> +++ b/drivers/hwmon/emc2305.c
> @@ -607,9 +607,19 @@ static void emc2305_remove(struct i2c_client *client)
>  		emc2305_unset_tz(dev);
>  }
>
> +static const struct of_device_id of_emc2305_match_table[] = {
> +	{ .compatible = "microchip,emc2301", },
> +	{ .compatible = "microchip,emc2302", },
> +	{ .compatible = "microchip,emc2303", },
> +	{ .compatible = "microchip,emc2305", },
> +	{},
> +};
> +MODULE_DEVICE_TABLE(of, of_emc2305_match_table);
> +
>  static struct i2c_driver emc2305_driver = {
>  	.driver = {
>  		.name = "emc2305",
> +		.of_match_table = of_emc2305_match_table,
>  	},
>  	.probe = emc2305_probe,
>  	.remove	  = emc2305_remove,
> --
> 2.34.1
>


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

* Re: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-04 16:21 ` [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema florin.leotescu
  2025-03-04 16:27   ` Frank Li
@ 2025-03-04 16:29   ` Conor Dooley
  2025-03-04 16:31     ` Krzysztof Kozlowski
  2025-03-04 16:33   ` Krzysztof Kozlowski
  2 siblings, 1 reply; 14+ messages in thread
From: Conor Dooley @ 2025-03-04 16:29 UTC (permalink / raw)
  To: florin.leotescu
  Cc: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel, viorel.suman, carlos.song, linux-arm-kernel, imx,
	festevam, Florin Leotescu

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

On Tue, Mar 04, 2025 at 06:21:34PM +0200, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
> 
> Introduce yaml schema for Microchip emc2305 pwm fan controller.
> 
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> ---
>  .../bindings/hwmon/microchip,emc2305.yaml     | 43 +++++++++++++++++++
>  1 file changed, 43 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> 
> diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> new file mode 100644
> index 000000000000..cac0075a65bb
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> @@ -0,0 +1,43 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/microchip,emc2305.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Microchip EMC2305 SMBus compliant PWM fan controller
> +
> +maintainers:
> +  - Michael Shych <michaelsh@nvidia.com>
> +
> +description: |
> +  Microchip EMC2301/2/3/5 pwm controller which supports up
> +  to five programmable fan control circuits
> +
> +properties:
> +  compatible:
> +    enum:
> +      - microchip,emc2301
> +      - microchip,emc2302
> +      - microchip,emc2303
> +      - microchip,emc2305

Driver has no match data etc, suggesting all of these are compatible.
Please pick one as a fallback compatible.

> +
> +  reg:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg

Missing descriptions of the fans, no?
See max6639 for an example.

> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        emc2301: pwm@2f {

The emc2301 label here can be dropped, it is not used.
The nodename should be "fan-controller", not pwm here I guess.

Cheers,
Conor.

> +            compatible = "microchip,emc2301";
> +            reg = <0x2f>;
> +        };
> +    };
> -- 
> 2.34.1
> 

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

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

* Re: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-04 16:29   ` Conor Dooley
@ 2025-03-04 16:31     ` Krzysztof Kozlowski
  2025-03-04 16:32       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-04 16:31 UTC (permalink / raw)
  To: Conor Dooley, florin.leotescu
  Cc: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel, viorel.suman, carlos.song, linux-arm-kernel, imx,
	festevam, Florin Leotescu

On 04/03/2025 17:29, Conor Dooley wrote:
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - microchip,emc2301
>> +      - microchip,emc2302
>> +      - microchip,emc2303
>> +      - microchip,emc2305
> 
> Driver has no match data etc, suggesting all of these are compatible.
> Please pick one as a fallback compatible.
> 
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +required:
>> +  - compatible
>> +  - reg
> 
> Missing descriptions of the fans, no?
> See max6639 for an example.

Yes and missing $ref to fan-controller schema.

Best regards,
Krzysztof


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

* Re: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-04 16:31     ` Krzysztof Kozlowski
@ 2025-03-04 16:32       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-04 16:32 UTC (permalink / raw)
  To: Conor Dooley, florin.leotescu
  Cc: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel, viorel.suman, carlos.song, linux-arm-kernel, imx,
	festevam, Florin Leotescu

On 04/03/2025 17:31, Krzysztof Kozlowski wrote:
> On 04/03/2025 17:29, Conor Dooley wrote:
>>> +properties:
>>> +  compatible:
>>> +    enum:
>>> +      - microchip,emc2301
>>> +      - microchip,emc2302
>>> +      - microchip,emc2303
>>> +      - microchip,emc2305
>>
>> Driver has no match data etc, suggesting all of these are compatible.
>> Please pick one as a fallback compatible.
>>
>>> +
>>> +  reg:
>>> +    maxItems: 1
>>> +
>>> +required:
>>> +  - compatible
>>> +  - reg
>>
>> Missing descriptions of the fans, no?
>> See max6639 for an example.
> 
> Yes and missing $ref to fan-controller schema.
About which I asked at v2...

Best regards,
Krzysztof


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

* Re: [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register
  2025-03-04 16:21 ` [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register florin.leotescu
@ 2025-03-04 16:33   ` Frank Li
  2025-03-05 16:54   ` Guenter Roeck
  1 sibling, 0 replies; 14+ messages in thread
From: Frank Li @ 2025-03-04 16:33 UTC (permalink / raw)
  To: florin.leotescu
  Cc: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel, viorel.suman, carlos.song, linux-arm-kernel, imx,
	festevam, Florin Leotescu

On Tue, Mar 04, 2025 at 06:21:36PM +0200, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
>
> This prepares emc2305 driver to use configuration from Device Tree nodes.
> Using devm_thermal_of_cooling_device_register also simplifies cleanup
> procedure, so we are able to remove the emc2305_unset_tz and emc2305_remove
> functions which are no longer used.

Kernel doc suggest use imperative mode:

Prepare the emc2305 driver to use configuration from Device Tree nodes.
Switch to devm_thermal_of_cooling_device_register to simplify the cleanup
procedure, allowing the removal of emc2305_unset_tz and emc2305_remove, which
are no longer needed.

nice cleanup

Reviewed-by: Frank Li <Frank.Li@nxp.com>
>
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> ---
>  drivers/hwmon/emc2305.c | 28 +++-------------------------
>  1 file changed, 3 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
> index a236f27c75bc..5f3f06308826 100644
> --- a/drivers/hwmon/emc2305.c
> +++ b/drivers/hwmon/emc2305.c
> @@ -112,8 +112,6 @@ static char *emc2305_fan_name[] = {
>  	"emc2305_fan5",
>  };
>
> -static void emc2305_unset_tz(struct device *dev);
> -
>  static int emc2305_get_max_channel(const struct emc2305_data *data)
>  {
>  	return data->pwm_num;
> @@ -293,8 +291,9 @@ static int emc2305_set_single_tz(struct device *dev, int idx)
>  	pwm = data->pwm_min[cdev_idx];
>
>  	data->cdev_data[cdev_idx].cdev =
> -		thermal_cooling_device_register(emc2305_fan_name[idx], data,
> -						&emc2305_cooling_ops);
> +		devm_thermal_of_cooling_device_register(dev, dev->of_node,
> +							emc2305_fan_name[idx], data,
> +							&emc2305_cooling_ops);
>
>  	if (IS_ERR(data->cdev_data[cdev_idx].cdev)) {
>  		dev_err(dev, "Failed to register cooling device %s\n", emc2305_fan_name[idx]);
> @@ -337,21 +336,9 @@ static int emc2305_set_tz(struct device *dev)
>  	return 0;
>
>  thermal_cooling_device_register_fail:
> -	emc2305_unset_tz(dev);
>  	return ret;
>  }
>
> -static void emc2305_unset_tz(struct device *dev)
> -{
> -	struct emc2305_data *data = dev_get_drvdata(dev);
> -	int i;
> -
> -	/* Unregister cooling device. */
> -	for (i = 0; i < EMC2305_PWM_MAX; i++)
> -		if (data->cdev_data[i].cdev)
> -			thermal_cooling_device_unregister(data->cdev_data[i].cdev);
> -}
> -
>  static umode_t
>  emc2305_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr, int channel)
>  {
> @@ -599,14 +586,6 @@ static int emc2305_probe(struct i2c_client *client)
>  	return 0;
>  }
>
> -static void emc2305_remove(struct i2c_client *client)
> -{
> -	struct device *dev = &client->dev;
> -
> -	if (IS_REACHABLE(CONFIG_THERMAL))
> -		emc2305_unset_tz(dev);
> -}
> -
>  static const struct of_device_id of_emc2305_match_table[] = {
>  	{ .compatible = "microchip,emc2301", },
>  	{ .compatible = "microchip,emc2302", },
> @@ -622,7 +601,6 @@ static struct i2c_driver emc2305_driver = {
>  		.of_match_table = of_emc2305_match_table,
>  	},
>  	.probe = emc2305_probe,
> -	.remove	  = emc2305_remove,
>  	.id_table = emc2305_ids,
>  };
>
> --
> 2.34.1
>


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

* Re: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-04 16:21 ` [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema florin.leotescu
  2025-03-04 16:27   ` Frank Li
  2025-03-04 16:29   ` Conor Dooley
@ 2025-03-04 16:33   ` Krzysztof Kozlowski
  2 siblings, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-04 16:33 UTC (permalink / raw)
  To: florin.leotescu, Jean Delvare, Guenter Roeck, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Michael Shych, linux-hwmon,
	devicetree, linux-kernel
  Cc: viorel.suman, carlos.song, linux-arm-kernel, imx, festevam,
	Florin Leotescu

On 04/03/2025 17:21, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
> 
> Introduce yaml schema for Microchip emc2305 pwm fan controller.
> 
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> ---
>  .../bindings/hwmon/microchip,emc2305.yaml     | 43 +++++++++++++++++++

I do not see improvements in the subject nor in missing $ref to common
schema for fans.

<form letter>
This is a friendly reminder during the review process.

It looks like you received a tag and forgot to add it.

If you do not know the process, here is a short explanation:
Please add Acked-by/Reviewed-by/Tested-by tags when posting new versions
of patchset, under or above your Signed-off-by tag, unless patch changed
significantly (e.g. new properties added to the DT bindings). Tag is
"received", when provided in a message replied to you on the mailing
list. Tools like b4 can help here. However, there's no need to repost
patches *only* to add the tags. The upstream maintainer will do that for
tags received on the version they apply.

Please read:
https://elixir.bootlin.com/linux/v6.12-rc3/source/Documentation/process/submitting-patches.rst#L577

If a tag was not added on purpose, please state why and what changed.
</form letter>

Best regards,
Krzysztof


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

* Re: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-04 16:27   ` Frank Li
@ 2025-03-05 12:47     ` Daniel Baluta
  2025-03-05 14:49       ` Florin Leotescu (OSS)
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Baluta @ 2025-03-05 12:47 UTC (permalink / raw)
  To: Frank Li, Krzysztof Kozlowski
  Cc: florin.leotescu, Jean Delvare, Guenter Roeck, Rob Herring,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel, viorel.suman, carlos.song, linux-arm-kernel, imx,
	festevam, Florin Leotescu

Hello Frank, Conor, Krzysztof,

Thanks a lot for your comments and help.

In this initial patchseries we only add minimal OF support and
introduce a minimal binding.

> How did you pickup the maintainer entry?

We got the author of the first commit for
See 0d8400c5a2ce ("hwmon: (emc2305) add support for EMC2301/2/3/5 RPM-based")

> If only one reg You can go through trivial-devices.yaml

This is not a trivial device as we will add some specific properties
with our next patches
(e.g polarity etc)

> Missing descriptions of the fans, no?
> missing $ref to fan-controller schema.

Do we need to add this now? As this is only the minimal binding
support. We want to add that
in a follow up patch when we go into specifics.

> The emc2301 label here can be dropped, it is not used.

Will fix.

> The nodename should be "fan-controller", not pwm here I guess.

Sure, will fix.

On Tue, Mar 4, 2025 at 6:56 PM Frank Li <Frank.li@nxp.com> wrote:
>
> On Tue, Mar 04, 2025 at 06:21:34PM +0200, florin.leotescu@oss.nxp.com wrote:
> > From: Florin Leotescu <florin.leotescu@nxp.com>
> >
> > Introduce yaml schema for Microchip emc2305 pwm fan controller.
> >
> > Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> > ---
> >  .../bindings/hwmon/microchip,emc2305.yaml     | 43 +++++++++++++++++++
> >  1 file changed, 43 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > new file mode 100644
> > index 000000000000..cac0075a65bb
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > @@ -0,0 +1,43 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/hwmon/microchip,emc2305.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Microchip EMC2305 SMBus compliant PWM fan controller
> > +
> > +maintainers:
> > +  - Michael Shych <michaelsh@nvidia.com>
>
> who is it? look like not Microchip and hwmon maintainer.
>
> > +
> > +description: |
>
> Needn't |
>
> > +  Microchip EMC2301/2/3/5 pwm controller which supports up
> > +  to five programmable fan control circuits
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - microchip,emc2301
> > +      - microchip,emc2302
> > +      - microchip,emc2303
> > +      - microchip,emc2305
>
> According to your driver code look like all compatible with microchip,emc2301
>
> oneOf:
>   - enum:
>       - microchip,emc2301
>   - items:
>       - enum:
>           - microchip,emc2302
>           - microchip,emc2303
>           - microchip,emc2305
>       - const: microchip,emc2301
>
> So your driver just need one "microchip,emc2301" compatible string.
>
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    i2c {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        emc2301: pwm@2f {
> > +            compatible = "microchip,emc2301";
> > +            reg = <0x2f>;
>
> If only one reg:
> You can go through trivial-devices.yaml
>
> Frank
>
> > +        };
> > +    };
> > --
> > 2.34.1
> >
>


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

* RE: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema
  2025-03-05 12:47     ` Daniel Baluta
@ 2025-03-05 14:49       ` Florin Leotescu (OSS)
  0 siblings, 0 replies; 14+ messages in thread
From: Florin Leotescu (OSS) @ 2025-03-05 14:49 UTC (permalink / raw)
  To: Daniel Baluta, Frank Li, Krzysztof Kozlowski
  Cc: Florin Leotescu (OSS), Jean Delvare, Guenter Roeck, Rob Herring,
	Conor Dooley, Michael Shych, linux-hwmon@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Viorel Suman, Carlos Song, linux-arm-kernel@lists.infradead.org,
	imx@lists.linux.dev, festevam@gmail.com, Florin Leotescu

Hello Frank, Conor, Krzysztof,

Thanks a lot for your feedback, time and patience. 
We will address the changes in V4.

Regards,
Florin

-----Original Message-----
From: Daniel Baluta <daniel.baluta@gmail.com> 
Sent: Wednesday, March 5, 2025 2:48 PM
To: Frank Li <frank.li@nxp.com>; Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Florin Leotescu (OSS) <florin.leotescu@oss.nxp.com>; Jean Delvare <jdelvare@suse.com>; Guenter Roeck <linux@roeck-us.net>; Rob Herring <robh@kernel.org>; Conor Dooley <conor+dt@kernel.org>; Michael Shych <michaelsh@nvidia.com>; linux-hwmon@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Viorel Suman <viorel.suman@nxp.com>; Carlos Song <carlos.song@nxp.com>; linux-arm-kernel@lists.infradead.org; imx@lists.linux.dev; festevam@gmail.com; Florin Leotescu <florin.leotescu@nxp.com>
Subject: Re: [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema

Hello Frank, Conor, Krzysztof,

Thanks a lot for your comments and help.

In this initial patchseries we only add minimal OF support and introduce a minimal binding.

> How did you pickup the maintainer entry?

We got the author of the first commit for See 0d8400c5a2ce ("hwmon: (emc2305) add support for EMC2301/2/3/5 RPM-based")

> If only one reg You can go through trivial-devices.yaml

This is not a trivial device as we will add some specific properties with our next patches (e.g polarity etc)

> Missing descriptions of the fans, no?
> missing $ref to fan-controller schema.

Do we need to add this now? As this is only the minimal binding support. We want to add that in a follow up patch when we go into specifics.

> The emc2301 label here can be dropped, it is not used.

Will fix.

> The nodename should be "fan-controller", not pwm here I guess.

Sure, will fix.

On Tue, Mar 4, 2025 at 6:56 PM Frank Li <Frank.li@nxp.com> wrote:
>
> On Tue, Mar 04, 2025 at 06:21:34PM +0200, florin.leotescu@oss.nxp.com wrote:
> > From: Florin Leotescu <florin.leotescu@nxp.com>
> >
> > Introduce yaml schema for Microchip emc2305 pwm fan controller.
> >
> > Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> > ---
> >  .../bindings/hwmon/microchip,emc2305.yaml     | 43 +++++++++++++++++++
> >  1 file changed, 43 insertions(+)
> >  create mode 100644 
> > Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> >
> > diff --git 
> > a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml 
> > b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > new file mode 100644
> > index 000000000000..cac0075a65bb
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > @@ -0,0 +1,43 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/hwmon/microchip,emc2305.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Microchip EMC2305 SMBus compliant PWM fan controller
> > +
> > +maintainers:
> > +  - Michael Shych <michaelsh@nvidia.com>
>
> who is it? look like not Microchip and hwmon maintainer.
>
> > +
> > +description: |
>
> Needn't |
>
> > +  Microchip EMC2301/2/3/5 pwm controller which supports up  to five 
> > + programmable fan control circuits
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - microchip,emc2301
> > +      - microchip,emc2302
> > +      - microchip,emc2303
> > +      - microchip,emc2305
>
> According to your driver code look like all compatible with 
> microchip,emc2301
>
> oneOf:
>   - enum:
>       - microchip,emc2301
>   - items:
>       - enum:
>           - microchip,emc2302
>           - microchip,emc2303
>           - microchip,emc2305
>       - const: microchip,emc2301
>
> So your driver just need one "microchip,emc2301" compatible string.
>
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    i2c {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        emc2301: pwm@2f {
> > +            compatible = "microchip,emc2301";
> > +            reg = <0x2f>;
>
> If only one reg:
> You can go through trivial-devices.yaml
>
> Frank
>
> > +        };
> > +    };
> > --
> > 2.34.1
> >
>

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

* Re: [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register
  2025-03-04 16:21 ` [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register florin.leotescu
  2025-03-04 16:33   ` Frank Li
@ 2025-03-05 16:54   ` Guenter Roeck
  1 sibling, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2025-03-05 16:54 UTC (permalink / raw)
  To: florin.leotescu, Jean Delvare, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Shych, linux-hwmon, devicetree,
	linux-kernel
  Cc: viorel.suman, carlos.song, linux-arm-kernel, imx, festevam,
	Florin Leotescu

On 3/4/25 08:21, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
> 
> This prepares emc2305 driver to use configuration from Device Tree nodes.
> Using devm_thermal_of_cooling_device_register also simplifies cleanup
> procedure, so we are able to remove the emc2305_unset_tz and emc2305_remove
> functions which are no longer used.
> 
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> ---
>   drivers/hwmon/emc2305.c | 28 +++-------------------------
>   1 file changed, 3 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
> index a236f27c75bc..5f3f06308826 100644
> --- a/drivers/hwmon/emc2305.c
> +++ b/drivers/hwmon/emc2305.c
> @@ -112,8 +112,6 @@ static char *emc2305_fan_name[] = {
>   	"emc2305_fan5",
>   };
>   
> -static void emc2305_unset_tz(struct device *dev);
> -
>   static int emc2305_get_max_channel(const struct emc2305_data *data)
>   {
>   	return data->pwm_num;
> @@ -293,8 +291,9 @@ static int emc2305_set_single_tz(struct device *dev, int idx)
>   	pwm = data->pwm_min[cdev_idx];
>   
>   	data->cdev_data[cdev_idx].cdev =
> -		thermal_cooling_device_register(emc2305_fan_name[idx], data,
> -						&emc2305_cooling_ops);
> +		devm_thermal_of_cooling_device_register(dev, dev->of_node,
> +							emc2305_fan_name[idx], data,
> +							&emc2305_cooling_ops);
>   
>   	if (IS_ERR(data->cdev_data[cdev_idx].cdev)) {
>   		dev_err(dev, "Failed to register cooling device %s\n", emc2305_fan_name[idx]);
> @@ -337,21 +336,9 @@ static int emc2305_set_tz(struct device *dev)
>   	return 0;
>   
>   thermal_cooling_device_register_fail:

This label is no longer necessary. Instead, any goto can be replaced with
an immediate return statement.

> -	emc2305_unset_tz(dev);
>   	return ret;
>   }
>   
> -static void emc2305_unset_tz(struct device *dev)
> -{
> -	struct emc2305_data *data = dev_get_drvdata(dev);
> -	int i;
> -
> -	/* Unregister cooling device. */
> -	for (i = 0; i < EMC2305_PWM_MAX; i++)
> -		if (data->cdev_data[i].cdev)
> -			thermal_cooling_device_unregister(data->cdev_data[i].cdev);
> -}
> -
>   static umode_t
>   emc2305_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr, int channel)
>   {
> @@ -599,14 +586,6 @@ static int emc2305_probe(struct i2c_client *client)
>   	return 0;
>   }
>   
> -static void emc2305_remove(struct i2c_client *client)
> -{
> -	struct device *dev = &client->dev;
> -
> -	if (IS_REACHABLE(CONFIG_THERMAL))
> -		emc2305_unset_tz(dev);
> -}
> -
>   static const struct of_device_id of_emc2305_match_table[] = {
>   	{ .compatible = "microchip,emc2301", },
>   	{ .compatible = "microchip,emc2302", },
> @@ -622,7 +601,6 @@ static struct i2c_driver emc2305_driver = {
>   		.of_match_table = of_emc2305_match_table,
>   	},
>   	.probe = emc2305_probe,
> -	.remove	  = emc2305_remove,
>   	.id_table = emc2305_ids,
>   };
>   



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

end of thread, other threads:[~2025-03-05 16:56 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-04 16:21 [PATCH v3 0/3] Add OF support for Microchip emc2305 fan controller florin.leotescu
2025-03-04 16:21 ` [PATCH v3 1/3] dt-bindings: hwmon: Add Microchip emc2305 yaml schema florin.leotescu
2025-03-04 16:27   ` Frank Li
2025-03-05 12:47     ` Daniel Baluta
2025-03-05 14:49       ` Florin Leotescu (OSS)
2025-03-04 16:29   ` Conor Dooley
2025-03-04 16:31     ` Krzysztof Kozlowski
2025-03-04 16:32       ` Krzysztof Kozlowski
2025-03-04 16:33   ` Krzysztof Kozlowski
2025-03-04 16:21 ` [PATCH v3 2/3] hwmon: emc2305: Add OF support florin.leotescu
2025-03-04 16:27   ` Frank Li
2025-03-04 16:21 ` [PATCH v3 3/3] hwmon: emc2305: Use devm_thermal_of_cooling_device_register florin.leotescu
2025-03-04 16:33   ` Frank Li
2025-03-05 16:54   ` Guenter Roeck

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