1 .. SPDX-License-Identifier: GPL-2.0-only
8 * Baikal-T1 PVT sensor (in SoC)
14 Datasheet: Provided by BAIKAL ELECTRONICS upon request and under NDA
17 Maxim Kaurkin <maxim.kaurkin@baikalelectronics.ru>
18 Serge Semin <Sergey.Semin@baikalelectronics.ru>
23 This driver implements support for the hardware monitoring capabilities of the
24 embedded into Baikal-T1 process, voltage and temperature sensors. PVT IP-core
25 consists of one temperature and four voltage sensors, which can be used to
26 monitor the chip internal environment like heating, supply voltage and
27 transistors performance. The driver can optionally provide the hwmon alarms
28 for each sensor the PVT controller supports. The alarms functionality is made
29 compile-time configurable due to the hardware interface implementation
30 peculiarity, which is connected with an ability to convert data from only one
31 sensor at a time. Additional limitation is that the controller performs the
32 thresholds checking synchronously with the data conversion procedure. Due to
33 these in order to have the hwmon alarms automatically detected the driver code
34 must switch from one sensor to another, read converted data and manually check
35 the threshold status bits. Depending on the measurements timeout settings
36 (update_interval sysfs node value) this design may cause additional burden on
37 the system performance. So in case if alarms are unnecessary in your system
38 design it's recommended to have them disabled to prevent the PVT IRQs being
39 periodically raised to get the data cache/alarms status up to date. By default
40 in alarm-less configuration the data conversion is performed by the driver
41 on demand when read operation is requested via corresponding _input-file.
43 Temperature Monitoring
44 ----------------------
46 Temperature is measured with 10-bit resolution and reported in millidegree
47 Celsius. The driver performs all the scaling by itself therefore reports true
48 temperatures that don't need any user-space adjustments. While the data
49 translation formulae isn't linear, which gives us non-linear discreteness,
50 it's close to one, but giving a bit better accuracy for higher temperatures.
51 The temperature input is mapped as follows (the last column indicates the input
54 temp1: CPU embedded diode -48.38C - +147.438C
56 In case if the alarms kernel config is enabled in the driver the temperature input
57 has associated min and max limits which trigger an alarm when crossed.
62 The voltage inputs are also sampled with 10-bit resolution and reported in
63 millivolts. But in this case the data translation formulae is linear, which
64 provides a constant measurements discreteness. The data scaling is also
65 performed by the driver, so returning true millivolts. The voltage inputs are
66 mapped as follows (the last column indicates the input ranges)::
68 in0: VDD (processor core) 0.62V - 1.168V
69 in1: Low-Vt (low voltage threshold) 0.62V - 1.168V
70 in2: High-Vt (high voltage threshold) 0.62V - 1.168V
71 in3: Standard-Vt (standard voltage threshold) 0.62V - 1.168V
73 In case if the alarms config is enabled in the driver the voltage inputs
74 have associated min and max limits which trigger an alarm when crossed.
79 Following is a list of all sysfs attributes that the driver provides, their
80 permissions and a short description:
82 =============================== ======= =======================================
84 =============================== ======= =======================================
85 update_interval RW Measurements update interval per
87 temp1_type RO Sensor type (always 1 as CPU embedded
89 temp1_label RO CPU Core Temperature sensor.
90 temp1_input RO Measured temperature in millidegree
92 temp1_min RW Low limit for temp input.
93 temp1_max RW High limit for temp input.
94 temp1_min_alarm RO Temperature input alarm. Returns 1 if
95 temperature input went below min limit,
97 temp1_max_alarm RO Temperature input alarm. Returns 1 if
98 temperature input went above max limit,
100 temp1_offset RW Temperature offset in millidegree
101 Celsius which is added to the
102 temperature reading by the chip. It can
103 be used to manually adjust the
104 temperature measurements within 7.130
106 in[0-3]_label RO CPU Voltage sensor (either core or
107 low/high/standard thresholds).
108 in[0-3]_input RO Measured voltage in millivolts.
109 in[0-3]_min RW Low limit for voltage input.
110 in[0-3]_max RW High limit for voltage input.
111 in[0-3]_min_alarm RO Voltage input alarm. Returns 1 if
112 voltage input went below min limit,
114 in[0-3]_max_alarm RO Voltage input alarm. Returns 1 if
115 voltage input went above max limit,
117 =============================== ======= =======================================