blob: 6f8116dde918f8df3fc24a042b9866aa23807d27 (
plain)
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
|
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver kb9002
====================
Supported chips:
* Kandou KB9002
Prefix: 'kb9002'
Addresses scanned: -
Datasheet: KA-015171-PD (available from Kandou under NDA)
Author: Andy Chung <andy.chung@amd.com>
Description
-----------
The Kandou KB9002 is an 8-lane PCIe 5.0 retimer with an integrated
microcontroller. It exposes an SMBus 3.0 target (with mandatory PEC)
on its sideband interface. The internal firmware aggregates per-lane
die temperatures and publishes the maximum value through a 16-bit
addressed register window.
This driver reports that aggregated maximum as the only hwmon
temperature channel. The running firmware version and the firmware
boot status are exposed under debugfs.
sysfs interface
---------------
================== ===============================================
temp1_input Aggregated maximum die temperature across all
active lanes (millidegrees Celsius).
================== ===============================================
debugfs interface
-----------------
Files live in the per-client debugfs directory created by the I2C
core: ``/sys/kernel/debug/i2c/i2c-<bus>/<bus>-<addr>/``.
================== ===============================================
fw_ver Running firmware version in
"major.minor.patch.suffix" format. Read-only.
fw_load_status Firmware boot status: "normal" once firmware has
finished initialising, "abnormal" otherwise.
Read-only.
================== ===============================================
Notes
-----
The driver requires ``I2C_FUNC_SMBUS_BLOCK_DATA``,
``I2C_FUNC_SMBUS_PEC`` and ``I2C_FUNC_I2C`` from the host adapter. The
last is needed only during probe for the host-interface mode switch;
runtime accesses use SMBus block transactions exclusively.
The retimer's SMBus address is configurable on three strap pins and
ranges from 0x20 to 0x27. The address is selected through device tree
(or i2c board info) the same way as any other I2C device; the driver
does not auto-detect.
|