]>
Commit | Line | Data |
---|---|---|
87976ce2 SS |
1 | .. SPDX-License-Identifier: GPL-2.0-only |
2 | ||
3 | Kernel driver bt1-pvt | |
4 | ===================== | |
5 | ||
6 | Supported chips: | |
7 | ||
8 | * Baikal-T1 PVT sensor (in SoC) | |
9 | ||
10 | Prefix: 'bt1-pvt' | |
11 | ||
12 | Addresses scanned: - | |
13 | ||
14 | Datasheet: Provided by BAIKAL ELECTRONICS upon request and under NDA | |
15 | ||
16 | Authors: | |
17 | Maxim Kaurkin <maxim.kaurkin@baikalelectronics.ru> | |
18 | Serge Semin <Sergey.Semin@baikalelectronics.ru> | |
19 | ||
20 | Description | |
21 | ----------- | |
22 | ||
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. | |
42 | ||
43 | Temperature Monitoring | |
44 | ---------------------- | |
45 | ||
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 | |
52 | ranges):: | |
53 | ||
54 | temp1: CPU embedded diode -48.38C - +147.438C | |
55 | ||
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. | |
58 | ||
59 | Voltage Monitoring | |
60 | ------------------ | |
61 | ||
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):: | |
67 | ||
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 | |
72 | ||
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. | |
75 | ||
76 | Sysfs Attributes | |
77 | ---------------- | |
78 | ||
79 | Following is a list of all sysfs attributes that the driver provides, their | |
80 | permissions and a short description: | |
81 | ||
82 | =============================== ======= ======================================= | |
83 | Name Perm Description | |
84 | =============================== ======= ======================================= | |
85 | update_interval RW Measurements update interval per | |
86 | sensor. | |
87 | temp1_type RO Sensor type (always 1 as CPU embedded | |
88 | diode). | |
89 | temp1_label RO CPU Core Temperature sensor. | |
90 | temp1_input RO Measured temperature in millidegree | |
91 | Celsius. | |
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, | |
96 | 0 otherwise. | |
97 | temp1_max_alarm RO Temperature input alarm. Returns 1 if | |
98 | temperature input went above max limit, | |
99 | 0 otherwise. | |
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 | |
105 | degrees Celsius. | |
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, | |
113 | 0 otherwise. | |
114 | in[0-3]_max_alarm RO Voltage input alarm. Returns 1 if | |
115 | voltage input went above max limit, | |
116 | 0 otherwise. | |
117 | =============================== ======= ======================================= |