Documentation / devicetree / bindings / hwmon / moortec,mr75203.yaml


Based on kernel version 6.10. Page generated on 2024-07-16 09:00 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/moortec,mr75203.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Moortec Semiconductor MR75203 PVT Controller

maintainers:
  - Rahul Tanwar <rtanwar@maxlinear.com>

description: |
  A Moortec PVT (Process, Voltage, Temperature) monitoring logic design can
  include many different units.
  Such a design will usually consists of several Moortec's embedded analog IPs,
  and a single Moortec controller (mr75203) to configure and control the IPs.
 
  Some of the Moortec's analog hard IPs that can be used in a design:
  *) Temperature Sensor (TS) - used to monitor core temperature (e.g. mr74137).
  *) Voltage Monitor (VM) - used to monitor voltage levels (e.g. mr74138).
  *) Process Detector (PD) - used to assess silicon speed (e.g. mr74139).
  *) Delay Chain - ring oscillator connected to the PD, used to measure IO
     based transistors (e.g. mr76008 ring oscillator at 1.1V, mr76007 ring
     oscillator at 1.8V).
  *) Pre Scaler - provides divide-by-X scaling of input voltage, which can then
     be presented for VM for measurement within its range (e.g. mr76006 -
     divide by 2 pre-scaler).
 
  TS, VM & PD also include a digital interface, which consists of configuration
  inputs and measurement outputs.
 
  Some of the units have number of series, each series can have slightly
  different characteristics.
 
  The mr75203 binding describes configuration for the controller unit, but also
  for some of the analog IPs.

properties:
  compatible:
    const: moortec,mr75203

  reg:
    items:
      - description: PVT common registers
      - description: PVT temperature sensor registers
      - description: PVT process detector registers
      - description: PVT voltage monitor registers

  reg-names:
    items:
      - const: common
      - const: ts
      - const: pd
      - const: vm

  intel,vm-map:
    description:
      PVT controller has 5 VM (voltage monitor) sensors.
      vm-map defines CPU core to VM instance mapping. A
      value of 0xff means that VM sensor is unused.
    $ref: /schemas/types.yaml#/definitions/uint8-array
    maxItems: 5

  clocks:
    maxItems: 1

  resets:
    maxItems: 1
 
  "#thermal-sensor-cells":
    const: 1

  moortec,vm-active-channels:
    description:
      Defines the number of channels per VM that are actually used and are
      connected to some input source.
      Maximum number of items - number of VMs.
      Maximum value of each item - number of channels.
      Minimum value of each item - 0 (which means entire VM sensor is not used).
    $ref: /schemas/types.yaml#/definitions/uint8-array

  moortec,vm-pre-scaler-x2:
    description:
      Defines the channels that use a mr76006 pre-scaler to divide the input
      source by 2.
      The pre-scaler is used for input sources that exceed the VM input range.
      The driver uses this information to present to the user with the actual
      value of the voltage source.
      For channels that are not listed, no pre-scaler is assumed.
      Maximum number of items - total number of channels in all VMs.
      Each channel should not appear more than once.
    $ref: /schemas/types.yaml#/definitions/uint8-array

  moortec,ts-series:
    description:
      Definition of the temperature equation and coefficients that shall be
      used to convert the digital output to value in milli-Celsius.
    minimum: 5
    maximum: 6
    default: 5
    $ref: /schemas/types.yaml#/definitions/uint32

  moortec,ts-coeff-g:
    description:
      G coefficient for temperature equation.
      Default for series 5 = 60000
      Default for series 6 = 57400
    multipleOf: 100
    minimum: 1000
    $ref: /schemas/types.yaml#/definitions/uint32

  moortec,ts-coeff-h:
    description:
      H coefficient for temperature equation.
      Default for series 5 = 200000
      Default for series 6 = 249400
    multipleOf: 100
    minimum: 1000
    $ref: /schemas/types.yaml#/definitions/uint32

  moortec,ts-coeff-cal5:
    description:
      cal5 coefficient for temperature equation.
      Default for series 5 = 4094
      Default for series 6 = 4096
    minimum: 1
    $ref: /schemas/types.yaml#/definitions/uint32

  moortec,ts-coeff-j:
    description:
      J coefficient for temperature equation.
      Default for series 5 = -100
      Default for series 6 = 0
    multipleOf: 100
    maximum: 0
    $ref: /schemas/types.yaml#/definitions/int32

required:
  - compatible
  - reg
  - reg-names
  - clocks
  - "#thermal-sensor-cells"

additionalProperties: false

examples:
  - |
    pvt: pvt@e0680000 {
        compatible = "moortec,mr75203";
        reg = <0xe0680000 0x80>,
              <0xe0680080 0x180>,
              <0xe0680200 0x200>,
              <0xe0680400 0xc00>;
        reg-names = "common", "ts", "pd", "vm";
        intel,vm-map = [03 01 04 ff ff];
        clocks = <&osc0>;
        resets = <&rcu0 0x40 7>;
        moortec,vm-active-channels = /bits/ 8 <0x10 0x05>;
        moortec,vm-pre-scaler-x2 = /bits/ 8 <5 6 20>;
        moortec,ts-coeff-g = <61400>;
        moortec,ts-coeff-h = <253700>;
        #thermal-sensor-cells = <1>;
    };