162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/hwmon/moortec,mr75203.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Moortec Semiconductor MR75203 PVT Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Rahul Tanwar <rtanwar@maxlinear.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  A Moortec PVT (Process, Voltage, Temperature) monitoring logic design can
1462306a36Sopenharmony_ci  include many different units.
1562306a36Sopenharmony_ci  Such a design will usually consists of several Moortec's embedded analog IPs,
1662306a36Sopenharmony_ci  and a single Moortec controller (mr75203) to configure and control the IPs.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  Some of the Moortec's analog hard IPs that can be used in a design:
1962306a36Sopenharmony_ci  *) Temperature Sensor (TS) - used to monitor core temperature (e.g. mr74137).
2062306a36Sopenharmony_ci  *) Voltage Monitor (VM) - used to monitor voltage levels (e.g. mr74138).
2162306a36Sopenharmony_ci  *) Process Detector (PD) - used to assess silicon speed (e.g. mr74139).
2262306a36Sopenharmony_ci  *) Delay Chain - ring oscillator connected to the PD, used to measure IO
2362306a36Sopenharmony_ci     based transistors (e.g. mr76008 ring oscillator at 1.1V, mr76007 ring
2462306a36Sopenharmony_ci     oscillator at 1.8V).
2562306a36Sopenharmony_ci  *) Pre Scaler - provides divide-by-X scaling of input voltage, which can then
2662306a36Sopenharmony_ci     be presented for VM for measurement within its range (e.g. mr76006 -
2762306a36Sopenharmony_ci     divide by 2 pre-scaler).
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  TS, VM & PD also include a digital interface, which consists of configuration
3062306a36Sopenharmony_ci  inputs and measurement outputs.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  Some of the units have number of series, each series can have slightly
3362306a36Sopenharmony_ci  different characteristics.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  The mr75203 binding describes configuration for the controller unit, but also
3662306a36Sopenharmony_ci  for some of the analog IPs.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciproperties:
3962306a36Sopenharmony_ci  compatible:
4062306a36Sopenharmony_ci    const: moortec,mr75203
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  reg:
4362306a36Sopenharmony_ci    items:
4462306a36Sopenharmony_ci      - description: PVT common registers
4562306a36Sopenharmony_ci      - description: PVT temperature sensor registers
4662306a36Sopenharmony_ci      - description: PVT process detector registers
4762306a36Sopenharmony_ci      - description: PVT voltage monitor registers
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  reg-names:
5062306a36Sopenharmony_ci    items:
5162306a36Sopenharmony_ci      - const: common
5262306a36Sopenharmony_ci      - const: ts
5362306a36Sopenharmony_ci      - const: pd
5462306a36Sopenharmony_ci      - const: vm
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  intel,vm-map:
5762306a36Sopenharmony_ci    description:
5862306a36Sopenharmony_ci      PVT controller has 5 VM (voltage monitor) sensors.
5962306a36Sopenharmony_ci      vm-map defines CPU core to VM instance mapping. A
6062306a36Sopenharmony_ci      value of 0xff means that VM sensor is unused.
6162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint8-array
6262306a36Sopenharmony_ci    maxItems: 5
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci  clocks:
6562306a36Sopenharmony_ci    maxItems: 1
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  resets:
6862306a36Sopenharmony_ci    maxItems: 1
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci  "#thermal-sensor-cells":
7162306a36Sopenharmony_ci    const: 1
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  moortec,vm-active-channels:
7462306a36Sopenharmony_ci    description:
7562306a36Sopenharmony_ci      Defines the number of channels per VM that are actually used and are
7662306a36Sopenharmony_ci      connected to some input source.
7762306a36Sopenharmony_ci      Maximum number of items - number of VMs.
7862306a36Sopenharmony_ci      Maximum value of each item - number of channels.
7962306a36Sopenharmony_ci      Minimum value of each item - 0 (which means entire VM sensor is not used).
8062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint8-array
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci  moortec,vm-pre-scaler-x2:
8362306a36Sopenharmony_ci    description:
8462306a36Sopenharmony_ci      Defines the channels that use a mr76006 pre-scaler to divide the input
8562306a36Sopenharmony_ci      source by 2.
8662306a36Sopenharmony_ci      The pre-scaler is used for input sources that exceed the VM input range.
8762306a36Sopenharmony_ci      The driver uses this information to present to the user with the actual
8862306a36Sopenharmony_ci      value of the voltage source.
8962306a36Sopenharmony_ci      For channels that are not listed, no pre-scaler is assumed.
9062306a36Sopenharmony_ci      Maximum number of items - total number of channels in all VMs.
9162306a36Sopenharmony_ci      Each channel should not appear more than once.
9262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint8-array
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci  moortec,ts-series:
9562306a36Sopenharmony_ci    description:
9662306a36Sopenharmony_ci      Definition of the temperature equation and coefficients that shall be
9762306a36Sopenharmony_ci      used to convert the digital output to value in milli-Celsius.
9862306a36Sopenharmony_ci    minimum: 5
9962306a36Sopenharmony_ci    maximum: 6
10062306a36Sopenharmony_ci    default: 5
10162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci  moortec,ts-coeff-g:
10462306a36Sopenharmony_ci    description:
10562306a36Sopenharmony_ci      G coefficient for temperature equation.
10662306a36Sopenharmony_ci      Default for series 5 = 60000
10762306a36Sopenharmony_ci      Default for series 6 = 57400
10862306a36Sopenharmony_ci    multipleOf: 100
10962306a36Sopenharmony_ci    minimum: 1000
11062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci  moortec,ts-coeff-h:
11362306a36Sopenharmony_ci    description:
11462306a36Sopenharmony_ci      H coefficient for temperature equation.
11562306a36Sopenharmony_ci      Default for series 5 = 200000
11662306a36Sopenharmony_ci      Default for series 6 = 249400
11762306a36Sopenharmony_ci    multipleOf: 100
11862306a36Sopenharmony_ci    minimum: 1000
11962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci  moortec,ts-coeff-cal5:
12262306a36Sopenharmony_ci    description:
12362306a36Sopenharmony_ci      cal5 coefficient for temperature equation.
12462306a36Sopenharmony_ci      Default for series 5 = 4094
12562306a36Sopenharmony_ci      Default for series 6 = 4096
12662306a36Sopenharmony_ci    minimum: 1
12762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci  moortec,ts-coeff-j:
13062306a36Sopenharmony_ci    description:
13162306a36Sopenharmony_ci      J coefficient for temperature equation.
13262306a36Sopenharmony_ci      Default for series 5 = -100
13362306a36Sopenharmony_ci      Default for series 6 = 0
13462306a36Sopenharmony_ci    multipleOf: 100
13562306a36Sopenharmony_ci    maximum: 0
13662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/int32
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_cirequired:
13962306a36Sopenharmony_ci  - compatible
14062306a36Sopenharmony_ci  - reg
14162306a36Sopenharmony_ci  - reg-names
14262306a36Sopenharmony_ci  - clocks
14362306a36Sopenharmony_ci  - "#thermal-sensor-cells"
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ciadditionalProperties: false
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciexamples:
14862306a36Sopenharmony_ci  - |
14962306a36Sopenharmony_ci    pvt: pvt@e0680000 {
15062306a36Sopenharmony_ci        compatible = "moortec,mr75203";
15162306a36Sopenharmony_ci        reg = <0xe0680000 0x80>,
15262306a36Sopenharmony_ci              <0xe0680080 0x180>,
15362306a36Sopenharmony_ci              <0xe0680200 0x200>,
15462306a36Sopenharmony_ci              <0xe0680400 0xc00>;
15562306a36Sopenharmony_ci        reg-names = "common", "ts", "pd", "vm";
15662306a36Sopenharmony_ci        intel,vm-map = [03 01 04 ff ff];
15762306a36Sopenharmony_ci        clocks = <&osc0>;
15862306a36Sopenharmony_ci        resets = <&rcu0 0x40 7>;
15962306a36Sopenharmony_ci        moortec,vm-active-channels = /bits/ 8 <0x10 0x05>;
16062306a36Sopenharmony_ci        moortec,vm-pre-scaler-x2 = /bits/ 8 <5 6 20>;
16162306a36Sopenharmony_ci        moortec,ts-coeff-g = <61400>;
16262306a36Sopenharmony_ci        moortec,ts-coeff-h = <253700>;
16362306a36Sopenharmony_ci        #thermal-sensor-cells = <1>;
16462306a36Sopenharmony_ci    };
165