Files
2026-09-06 12:53:21 -06:00

140 lines
3.5 KiB
YAML

# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/nuvoton,npcm750-pwm-fan.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Nuvoton NPCM7xx/NPCM8xx PWM and Fan Tach Controller
maintainers:
- Tomer Maimon <tmaimon77@gmail.com>
description:
The NPCM7xx/NPCM8xx family includes a PWM and Fan Tachometer controller.
The controller provides up to 8 (NPCM7xx) or 12 (NPCM8xx) PWM channels and up
to 16 tachometer inputs. It is used for fan speed control and monitoring.
properties:
compatible:
enum:
- nuvoton,npcm750-pwm-fan
- nuvoton,npcm845-pwm-fan
reg:
maxItems: 2
description: Register addresses for PWM and Fan Tach units.
reg-names:
items:
- const: pwm
- const: fan
clocks:
maxItems: 2
description: Clocks for the PWM and Fan Tach modules.
clock-names:
items:
- const: pwm
- const: fan
interrupts:
description:
Contains the Fan interrupts with flags for falling edge.
For NPCM7XX, 8 interrupt lines are expected (one per PWM channel).
For NPCM8XX, 12 interrupt lines are expected (one per PWM channel).
minItems: 8
maxItems: 12
"#address-cells":
const: 1
"#size-cells":
const: 0
patternProperties:
"^fan@[0-9a-f]+$":
type: object
$ref: fan-common.yaml#
unevaluatedProperties: false
properties:
reg:
description:
Specify the PWM output channel. Integer value in the range 0-7 for
NPCM7XX or 0-11 for NPCM8XX, representing the PWM channel number.
maximum: 11
fan-tach-ch:
$ref: /schemas/types.yaml#/definitions/uint8-array
description:
The tach channel(s) used for the fan.
Integer values in the range 0-15.
items:
maximum: 15
cooling-levels:
description:
PWM duty cycle values in a range from 0 to 255 which
correspond to thermal cooling states. This property enables
thermal zone integration for automatic fan speed control
based on temperature.
items:
maximum: 255
required:
- reg
- fan-tach-ch
required:
- compatible
- reg
- reg-names
- clocks
- clock-names
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/nuvoton,npcm7xx-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
pwm_fan: pwm-fan@103000 {
compatible = "nuvoton,npcm750-pwm-fan";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x103000 0x2000>, <0x180000 0x8000>;
reg-names = "pwm", "fan";
clocks = <&clk NPCM7XX_CLK_APB3>, <&clk NPCM7XX_CLK_APB4>;
clock-names = "pwm", "fan";
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pwm0_pins &fanin0_pins>;
fan@0 {
reg = <0>;
fan-tach-ch = <0 1>;
cooling-levels = <64 128 192 255>;
};
fan@1 {
reg = <1>;
fan-tach-ch = <2>;
};
};