* [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