Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 1 | Kernel driver occ-hwmon |
| 2 | ======================= |
| 3 | |
| 4 | Supported chips: |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 5 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 6 | * POWER8 |
| 7 | * POWER9 |
| 8 | |
| 9 | Author: Eddie James <eajames@linux.ibm.com> |
| 10 | |
| 11 | Description |
| 12 | ----------- |
| 13 | |
| 14 | This driver supports hardware monitoring for the On-Chip Controller (OCC) |
| 15 | embedded on POWER processors. The OCC is a device that collects and aggregates |
| 16 | sensor data from the processor and the system. The OCC can provide the raw |
| 17 | sensor data as well as perform thermal and power management on the system. |
| 18 | |
| 19 | The P8 version of this driver is a client driver of I2C. It may be probed |
| 20 | manually if an "ibm,p8-occ-hwmon" compatible device is found under the |
| 21 | appropriate I2C bus node in the device-tree. |
| 22 | |
| 23 | The P9 version of this driver is a client driver of the FSI-based OCC driver. |
| 24 | It will be probed automatically by the FSI-based OCC driver. |
| 25 | |
| 26 | Sysfs entries |
| 27 | ------------- |
| 28 | |
| 29 | The following attributes are supported. All attributes are read-only unless |
| 30 | specified. |
| 31 | |
| 32 | The OCC sensor ID is an integer that represents the unique identifier of the |
| 33 | sensor with respect to the OCC. For example, a temperature sensor for the third |
| 34 | DIMM slot in the system may have a sensor ID of 7. This mapping is unavailable |
| 35 | to the device driver, which must therefore export the sensor ID as-is. |
| 36 | |
| 37 | Some entries are only present with certain OCC sensor versions or only on |
| 38 | certain OCCs in the system. The version number is not exported to the user |
| 39 | but can be inferred. |
| 40 | |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 41 | temp[1-n]_label |
| 42 | OCC sensor ID. |
| 43 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 44 | [with temperature sensor version 1] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 45 | |
| 46 | temp[1-n]_input |
| 47 | Measured temperature of the component in millidegrees |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 48 | Celsius. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 49 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 50 | [with temperature sensor version >= 2] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 51 | |
| 52 | temp[1-n]_type |
| 53 | The FRU (Field Replaceable Unit) type |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 54 | (represented by an integer) for the component |
| 55 | that this sensor measures. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 56 | temp[1-n]_fault |
| 57 | Temperature sensor fault boolean; 1 to indicate |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 58 | that a fault is present or 0 to indicate that |
| 59 | no fault is present. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 60 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 61 | [with type == 3 (FRU type is VRM)] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 62 | |
| 63 | temp[1-n]_alarm |
| 64 | VRM temperature alarm boolean; 1 to indicate |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 65 | alarm, 0 to indicate no alarm |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 66 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 67 | [else] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 68 | |
| 69 | temp[1-n]_input |
| 70 | Measured temperature of the component in |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 71 | millidegrees Celsius. |
| 72 | |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 73 | freq[1-n]_label |
| 74 | OCC sensor ID. |
| 75 | freq[1-n]_input |
| 76 | Measured frequency of the component in MHz. |
| 77 | power[1-n]_input |
| 78 | Latest measured power reading of the component in |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 79 | microwatts. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 80 | power[1-n]_average |
| 81 | Average power of the component in microwatts. |
| 82 | power[1-n]_average_interval |
| 83 | The amount of time over which the power average |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 84 | was taken in microseconds. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 85 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 86 | [with power sensor version < 2] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 87 | |
| 88 | power[1-n]_label |
| 89 | OCC sensor ID. |
| 90 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 91 | [with power sensor version >= 2] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 92 | |
| 93 | power[1-n]_label |
| 94 | OCC sensor ID + function ID + channel in the form |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 95 | of a string, delimited by underscores, i.e. "0_15_1". |
| 96 | Both the function ID and channel are integers that |
| 97 | further identify the power sensor. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 98 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 99 | [with power sensor version 0xa0] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 100 | |
| 101 | power[1-n]_label |
| 102 | OCC sensor ID + sensor type in the form of a string, |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 103 | delimited by an underscore, i.e. "0_system". Sensor |
| 104 | type will be one of "system", "proc", "vdd" or "vdn". |
| 105 | For this sensor version, OCC sensor ID will be the same |
| 106 | for all power sensors. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 107 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 108 | [present only on "master" OCC; represents the whole system power; only one of |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 109 | this type of power sensor will be present] |
| 110 | |
| 111 | power[1-n]_label |
| 112 | "system" |
| 113 | power[1-n]_input |
| 114 | Latest system output power in microwatts. |
| 115 | power[1-n]_cap |
| 116 | Current system power cap in microwatts. |
| 117 | power[1-n]_cap_not_redundant |
| 118 | System power cap in microwatts when |
| 119 | there is not redundant power. |
| 120 | power[1-n]_cap_max |
| 121 | Maximum power cap that the OCC can enforce in |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 122 | microwatts. |
| 123 | power[1-n]_cap_min Minimum power cap that the OCC can enforce in |
| 124 | microwatts. |
| 125 | power[1-n]_cap_user The power cap set by the user, in microwatts. |
| 126 | This attribute will return 0 if no user power |
| 127 | cap has been set. This attribute is read-write, |
| 128 | but writing any precision below watts will be |
| 129 | ignored, i.e. requesting a power cap of |
| 130 | 500900000 microwatts will result in a power cap |
| 131 | request of 500 watts. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 132 | |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 133 | [with caps sensor version > 1] |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 134 | |
| 135 | power[1-n]_cap_user_source |
| 136 | Indicates how the user power cap was |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 137 | set. This is an integer that maps to |
| 138 | system or firmware components that can |
| 139 | set the user power cap. |
| 140 | |
| 141 | The following "extn" sensors are exported as a way for the OCC to provide data |
| 142 | that doesn't fit anywhere else. The meaning of these sensors is entirely |
| 143 | dependent on their data, and cannot be statically defined. |
| 144 | |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 145 | extn[1-n]_label |
| 146 | ASCII ID or OCC sensor ID. |
| 147 | extn[1-n]_flags |
| 148 | This is one byte hexadecimal value. Bit 7 indicates the |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 149 | type of the label attribute; 1 for sensor ID, 0 for |
| 150 | ASCII ID. Other bits are reserved. |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 151 | extn[1-n]_input |
| 152 | 6 bytes of hexadecimal data, with a meaning defined by |
Eddie James | cd261c9 | 2018-11-08 15:05:22 -0600 | [diff] [blame] | 153 | the sensor ID. |