• Konrad Knitter's avatar
    ice: read internal temperature sensor · 4da71a77
    Konrad Knitter authored
    Since 4.30 firmware exposes internal thermal sensor reading via admin
    queue commands. Expose those readouts via hwmon API when supported.
    
    Datasheet:
    
    Get Sensor Reading Command (Opcode: 0x0632)
    
    +--------------------+--------+--------------------+-------------------------+
    | Name               | Bytes  | Value              |          Remarks        |
    +--------------------+--------+--------------------+-------------------------+
    | Flags              | 1-0    |                    |                         |
    | Opcode             | 2-3    | 0x0632             | Command opcode          |
    | Datalen            | 4-5    | 0                  | No external buffer.     |
    | Return value       | 6-7    |                    | Return value.           |
    | Cookie High        | 8-11   | Cookie             |                         |
    | Cookie Low         | 12-15  | Cookie             |                         |
    | Sensor             | 16     |                    | 0x00: Internal temp     |
    |                    |        |                    | 0x01-0xFF: Reserved.    |
    | Format             | 17     | Requested response | Only 0x00 is supported. |
    |                    |        | format             | 0x01-0xFF: Reserved.    |
    | Reserved           | 18-23  |                    |                         |
    | Data Address high  | 24-27  | Response buffer    |                         |
    |                    |        | address            |                         |
    | Data Address low   | 28-31  | Response buffer    |                         |
    |                    |        | address            |                         |
    +--------------------+--------+--------------------+-------------------------+
    
    Get Sensor Reading Response (Opcode: 0x0632)
    
    +--------------------+--------+--------------------+-------------------------+
    | Name               | Bytes  | Value              |          Remarks        |
    +--------------------+--------+--------------------+-------------------------+
    | Flags              | 1-0    |                    |                         |
    | Opcode             | 2-3    | 0x0632             | Command opcode          |
    | Datalen            | 4-5    | 0                  | No external buffer      |
    | Return value       | 6-7    |                    | Return value.           |
    |                    |        |                    | EINVAL: Invalid         |
    |                    |        |                    | parameters              |
    |                    |        |                    | ENOENT: Unsupported     |
    |                    |        |                    | sensor                  |
    |                    |        |                    | EIO: Sensor access      |
    |                    |        |                    | error                   |
    | Cookie High        | 8-11   | Cookie             |                         |
    | Cookie Low         | 12-15  | Cookie             |                         |
    | Sensor Reading     | 16-23  |                    | Format of the reading   |
    |                    |        |                    | is dependent on request |
    | Data Address high  | 24-27  | Response buffer    |                         |
    |                    |        | address            |                         |
    | Data Address low   | 28-31  | Response buffer    |                         |
    |                    |        | address            |                         |
    +--------------------+--------+--------------------+-------------------------+
    
    Sensor Reading for Sensor 0x00 (Internal Chip Temperature):
    
    +--------------------+--------+--------------------+-------------------------+
    | Name               | Bytes  | Value              |          Remarks        |
    +--------------------+--------+--------------------+-------------------------+
    | Thermal Sensor     | 0      |                    | Reading in degrees      |
    | reading            |        |                    | Celsius. Signed int8    |
    | Warning High       | 1      |                    | Warning High threshold  |
    | threshold          |        |                    | in degrees Celsius.     |
    |                    |        |                    | Unsigned int8.          |
    |                    |        |                    | 0xFF when unsupported   |
    | Critical High      | 2      |                    | Critical High threshold |
    | threshold          |        |                    | in degrees Celsius.     |
    |                    |        |                    | Unsigned int8.          |
    |                    |        |                    | 0xFF when unsupported   |
    | Fatal High         | 3      |                    | Fatal High threshold    |
    | threshold          |        |                    | in degrees Celsius.     |
    |                    |        |                    | Unsigned int8.          |
    |                    |        |                    | 0xFF when unsupported   |
    | Reserved           | 4-7    |                    |                         |
    +--------------------+--------+--------------------+-------------------------+
    
    Driver provides current reading from HW as well as device specific
    thresholds for thermal alarm (Warning, Critical, Fatal) events.
    
    $ sensors
    
    Output
    =========================================================
    ice-pci-b100
    Adapter: PCI adapter
    temp1:        +62.0°C  (high = +95.0°C, crit = +105.0°C)
                           (emerg = +115.0°C)
    
    Tested on Intel Corporation Ethernet Controller E810-C for SFP
    Co-developed-by: default avatarMarcin Domagala <marcinx.domagala@intel.com>
    Signed-off-by: default avatarMarcin Domagala <marcinx.domagala@intel.com>
    Co-developed-by: default avatarEric Joyner <eric.joyner@intel.com>
    Signed-off-by: default avatarEric Joyner <eric.joyner@intel.com>
    Reviewed-by: default avatarMarcin Szycik <marcin.szycik@linux.intel.com>
    Reviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: default avatarKonrad Knitter <konrad.knitter@intel.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    4da71a77
ice_common.h 10.2 KB