xref: /linux/Documentation/devicetree/bindings/hwmon/baikal,bt1-pvt.yaml (revision b7f8f259896f669f131713b0c74ba4d008daa71d)
1ddc65caaSSerge Semin# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2ddc65caaSSerge Semin# Copyright (C) 2020 BAIKAL ELECTRONICS, JSC
3ddc65caaSSerge Semin%YAML 1.2
4ddc65caaSSerge Semin---
5ddc65caaSSerge Semin$id: http://devicetree.org/schemas/hwmon/baikal,bt1-pvt.yaml#
6ddc65caaSSerge Semin$schema: http://devicetree.org/meta-schemas/core.yaml#
7ddc65caaSSerge Semin
8ddc65caaSSerge Semintitle: Baikal-T1 PVT Sensor
9ddc65caaSSerge Semin
10ddc65caaSSerge Seminmaintainers:
11ddc65caaSSerge Semin  - Serge Semin <fancer.lancer@gmail.com>
12ddc65caaSSerge Semin
13ddc65caaSSerge Semindescription: |
14ddc65caaSSerge Semin  Baikal-T1 SoC provides an embedded process, voltage and temperature
15ddc65caaSSerge Semin  sensor to monitor an internal SoC environment (chip temperature, supply
16ddc65caaSSerge Semin  voltage and process monitor) and on time detect critical situations,
17ddc65caaSSerge Semin  which may cause the system instability and even damages. The IP-block
18ddc65caaSSerge Semin  is based on the Analog Bits PVT sensor, but is equipped with a dedicated
19ddc65caaSSerge Semin  control wrapper, which provides a MMIO registers-based access to the
20ddc65caaSSerge Semin  sensor core functionality (APB3-bus based) and exposes an additional
21ddc65caaSSerge Semin  functions like thresholds/data ready interrupts, its status and masks,
22ddc65caaSSerge Semin  measurements timeout. Its internal structure is depicted on the next
23ddc65caaSSerge Semin  diagram:
24ddc65caaSSerge Semin
25ddc65caaSSerge Semin     Analog Bits core                     Bakal-T1 PVT control block
26ddc65caaSSerge Semin  +--------------------+                  +------------------------+
27ddc65caaSSerge Semin  | Temperature sensor |-+         +------| Sensors control        |
28ddc65caaSSerge Semin  |--------------------| |<---En---|      |------------------------|
29ddc65caaSSerge Semin  | Voltage sensor     |-|<--Mode--| +--->| Sampled data           |
30ddc65caaSSerge Semin  |--------------------| |<--Trim--+ |    |------------------------|
31ddc65caaSSerge Semin  | Low-Vt sensor      |-|           | +--| Thresholds comparator  |
32ddc65caaSSerge Semin  |--------------------| |---Data----| |  |------------------------|
33ddc65caaSSerge Semin  | High-Vt sensor     |-|           | +->| Interrupts status      |
34ddc65caaSSerge Semin  |--------------------| |--Valid--+-+ |  |------------------------|
35ddc65caaSSerge Semin  | Standard-Vt sensor |-+         +---+--| Interrupts mask        |
36ddc65caaSSerge Semin  +--------------------+                  |------------------------|
37ddc65caaSSerge Semin           ^                              | Interrupts timeout     |
38ddc65caaSSerge Semin           |                              +------------------------+
39ddc65caaSSerge Semin           |                                        ^  ^
40ddc65caaSSerge Semin  Rclk-----+----------------------------------------+  |
41ddc65caaSSerge Semin  APB3-------------------------------------------------+
42ddc65caaSSerge Semin
43ddc65caaSSerge Semin  This bindings describes the external Baikal-T1 PVT control interfaces
44ddc65caaSSerge Semin  like MMIO registers space, interrupt request number and clocks source.
45ddc65caaSSerge Semin  These are then used by the corresponding hwmon device driver to
46ddc65caaSSerge Semin  implement the sysfs files-based access to the sensors functionality.
47ddc65caaSSerge Semin
48ddc65caaSSerge Seminproperties:
49ddc65caaSSerge Semin  compatible:
50ddc65caaSSerge Semin    const: baikal,bt1-pvt
51ddc65caaSSerge Semin
52ddc65caaSSerge Semin  reg:
53ddc65caaSSerge Semin    maxItems: 1
54ddc65caaSSerge Semin
55ddc65caaSSerge Semin  interrupts:
56ddc65caaSSerge Semin    maxItems: 1
57ddc65caaSSerge Semin
58ddc65caaSSerge Semin  clocks:
59ddc65caaSSerge Semin    items:
60ddc65caaSSerge Semin      - description: PVT reference clock
61ddc65caaSSerge Semin      - description: APB3 interface clock
62ddc65caaSSerge Semin
63ddc65caaSSerge Semin  clock-names:
64ddc65caaSSerge Semin    items:
65ddc65caaSSerge Semin      - const: ref
66ddc65caaSSerge Semin      - const: pclk
67ddc65caaSSerge Semin
68ddc65caaSSerge Semin  "#thermal-sensor-cells":
69ddc65caaSSerge Semin    description: Baikal-T1 can be referenced as the CPU thermal-sensor
70ddc65caaSSerge Semin    const: 0
71ddc65caaSSerge Semin
72ddc65caaSSerge Semin  baikal,pvt-temp-offset-millicelsius:
73ddc65caaSSerge Semin    description: |
74ddc65caaSSerge Semin      Temperature sensor trimming factor. It can be used to manually adjust the
75ddc65caaSSerge Semin      temperature measurements within 7.130 degrees Celsius.
76ddc65caaSSerge Semin    default: 0
77ddc65caaSSerge Semin    minimum: 0
78ddc65caaSSerge Semin    maximum: 7130
79ddc65caaSSerge Semin
80*4828556dSRob HerringadditionalProperties: false
81ddc65caaSSerge Semin
82ddc65caaSSerge Seminrequired:
83ddc65caaSSerge Semin  - compatible
84ddc65caaSSerge Semin  - reg
85ddc65caaSSerge Semin  - interrupts
86ddc65caaSSerge Semin  - clocks
87ddc65caaSSerge Semin  - clock-names
88ddc65caaSSerge Semin
89ddc65caaSSerge Seminexamples:
90ddc65caaSSerge Semin  - |
91ddc65caaSSerge Semin    #include <dt-bindings/interrupt-controller/mips-gic.h>
92ddc65caaSSerge Semin
93ddc65caaSSerge Semin    pvt@1f200000 {
94ddc65caaSSerge Semin      compatible = "baikal,bt1-pvt";
95ddc65caaSSerge Semin      reg = <0x1f200000 0x1000>;
96ddc65caaSSerge Semin      #thermal-sensor-cells = <0>;
97ddc65caaSSerge Semin
98ddc65caaSSerge Semin      interrupts = <GIC_SHARED 31 IRQ_TYPE_LEVEL_HIGH>;
99ddc65caaSSerge Semin
100*4828556dSRob Herring      baikal,pvt-temp-offset-millicelsius = <1000>;
101ddc65caaSSerge Semin
102ddc65caaSSerge Semin      clocks = <&ccu_sys>, <&ccu_sys>;
103ddc65caaSSerge Semin      clock-names = "ref", "pclk";
104ddc65caaSSerge Semin    };
105ddc65caaSSerge Semin...
106