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])$":
+ 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>;
+ };
+ };
+ };
--
2.40.0.5.gf6e3b97ba6d2.dirty
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/
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
© 2016 - 2026 Red Hat, Inc.