[1/2] dt-bindings: hwmon: Add Nuvoton NCT7362Y binding
Commit Message
This binding describes the NCT7362Y, a 16-channel fan/GPIO controller.
Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
---
.../bindings/hwmon/nuvoton,nct7362.yaml | 123 ++++++++++++++++++
1 file changed, 123 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml
Comments
On 07/06/2023 12:18, Zev Weiss wrote:
> This binding describes the NCT7362Y, a 16-channel fan/GPIO controller.
A nit, subject: drop second/last, redundant "binding". The "dt-bindings"
prefix is already stating that these are bindings.
>
> Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
> ---
> .../bindings/hwmon/nuvoton,nct7362.yaml | 123 ++++++++++++++++++
> 1 file changed, 123 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml
>
> diff --git a/Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml b/Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml
> new file mode 100644
> index 000000000000..630dcce7a14c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml
> @@ -0,0 +1,123 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/nuvoton,nct7362.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Nuvoton NCT7362Y fan controller
> +
> +maintainers:
> + - Zev Weiss <zev@bewilderbeest.net>
> +
> +description: |
> + The Nuvoton NCT7362Y is an I2C fan controller with 16 pins that can
> + be independently configured for PWM, fan tach, or GPIO
> + functionality. Each pin's functionality is represented by a child
> + node.
> +
> + The datasheet is not publicly available but can be requested from
> + Nuvoton via their web site.
> +
> +properties:
> + compatible:
> + enum:
> + - nuvoton,nct7362
> +
> + reg:
> + maxItems: 1
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> +
> + gpio-line-names:
> + minItems: 1
> + maxItems: 16
> +
> +patternProperties:
> + "^tach@([1-8]|1[0-7])$":
@9 is not valid? Aren't you using some non-numerical values?
> + type: object
> + properties:
> + reg:
> + maxItems: 1
> + description: The pin number.
> +
> + nuvoton,pulses-per-revolution:
Just "pulses-per-revolution"
https://lore.kernel.org/linux-devicetree/20221116213615.1256297-2-Naresh.Solanki@9elements.com/
> + description: |
> + The number of tach pulses per revolution of the fan.
> + $ref: /schemas/types.yaml#/definitions/uint32
> + minimum: 1
> + default: 2
> +
> + required:
> + - reg
> +
> + "^pwm@([1-8]|1[0-7])$":
> + type: object
> + properties:
> + reg:
> + maxItems: 1
> + description: The pin number.
This is some plague of single-property-nodes... Aspeed also sends
something similar. Why the heck do you need empty nodes?
Drop entire node pwm.
> + required:
> + - reg
> +
> + "^gpio@([1-8]|1[0-7])$":
> + type: object
> + properties:
> + reg:
> + maxItems: 1
> + description: The pin number.
Drop entire node gpio.
If this is pinctrl, then make it a pinctrl.
> + required:
> + - reg
> +
> +required:
> + - compatible
> + - reg
> + - "#address-cells"
> + - "#size-cells"
Best regards,
Krzysztof
On Wed, Jun 07, 2023 at 03:18:29AM -0700, Zev Weiss wrote:
> This binding describes the NCT7362Y, a 16-channel fan/GPIO controller.
>
> Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
> ---
> .../bindings/hwmon/nuvoton,nct7362.yaml | 123 ++++++++++++++++++
> 1 file changed, 123 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml
>
> diff --git a/Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml b/Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml
> new file mode 100644
> index 000000000000..630dcce7a14c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/nuvoton,nct7362.yaml
> @@ -0,0 +1,123 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/nuvoton,nct7362.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Nuvoton NCT7362Y fan controller
> +
> +maintainers:
> + - Zev Weiss <zev@bewilderbeest.net>
> +
> +description: |
> + The Nuvoton NCT7362Y is an I2C fan controller with 16 pins that can
> + be independently configured for PWM, fan tach, or GPIO
> + functionality. Each pin's functionality is represented by a child
> + node.
> +
> + The datasheet is not publicly available but can be requested from
> + Nuvoton via their web site.
> +
> +properties:
> + compatible:
> + enum:
> + - nuvoton,nct7362
> +
> + reg:
> + maxItems: 1
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> +
> + gpio-line-names:
> + minItems: 1
> + maxItems: 16
> +
> +patternProperties:
> + "^tach@([1-8]|1[0-7])$":
Unit-addresses are hex typically.
Why do you need a child node for tach. Is that a separate h/w block.
> + type: object
> + properties:
> + reg:
> + maxItems: 1
> + description: The pin number.
> +
> + nuvoton,pulses-per-revolution:
This is a property of the fan attached and belongs in a fan node
describing the fan(s) properties. Until a common binding exists, further
fan controller bindings are going to be rejected.
The furthest attempt was here[1]. And there's the Aspeed effort[2] which
keeps ignoring our feedback. Please work together on these.
Rob
[1] https://lore.kernel.org/all/20221121122932.2493174-2-Naresh.Solanki@9elements.com/
[2] https://lore.kernel.org/all/20230608021839.12769-1-billy_tsai@aspeedtech.com/
new file mode 100644
@@ -0,0 +1,123 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/nuvoton,nct7362.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NCT7362Y fan controller
+
+maintainers:
+ - Zev Weiss <zev@bewilderbeest.net>
+
+description: |
+ The Nuvoton NCT7362Y is an I2C fan controller with 16 pins that can
+ be independently configured for PWM, fan tach, or GPIO
+ functionality. Each pin's functionality is represented by a child
+ node.
+
+ The datasheet is not publicly available but can be requested from
+ Nuvoton via their web site.
+
+properties:
+ compatible:
+ enum:
+ - nuvoton,nct7362
+
+ reg:
+ maxItems: 1
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+
+ gpio-line-names:
+ minItems: 1
+ maxItems: 16
+
+patternProperties:
+ "^tach@([1-8]|1[0-7])$":
+ type: object
+ properties:
+ reg:
+ maxItems: 1
+ description: The pin number.
+
+ nuvoton,pulses-per-revolution:
+ description: |
+ The number of tach pulses per revolution of the fan.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ minimum: 1
+ default: 2
+
+ required:
+ - reg
+
+ "^pwm@([1-8]|1[0-7])$":
+ type: object
+ properties:
+ reg:
+ maxItems: 1
+ description: The pin number.
+ required:
+ - reg
+
+ "^gpio@([1-8]|1[0-7])$":
+ type: object
+ properties:
+ reg:
+ maxItems: 1
+ description: The pin number.
+ required:
+ - reg
+
+required:
+ - compatible
+ - reg
+ - "#address-cells"
+ - "#size-cells"
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ fanctl@22 {
+ compatible = "nuvoton,nct7362";
+ gpio-controller;
+ #gpio-cells = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x22>;
+ gpio-line-names = "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "led1", "led2";
+
+ tach@1 {
+ reg = <1>;
+ };
+ tach@2 {
+ reg = <2>;
+ nuvoton,pulses-per-revolution = <1>;
+ };
+ pwm@10 {
+ reg = <10>;
+ };
+ pwm@11 {
+ reg = <11>;
+ };
+ gpio@16 {
+ reg = <16>;
+ };
+ gpio@17 {
+ reg = <17>;
+ };
+ };
+ };