mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-08-09 06:14:34 +02:00
Allow userspace to request dynamic address assignment, which is useful for i3cdev devices with broken hot-join support. This will assign dynamic addresses to all devices on the I3C bus which are currently unassigned. Signed-off-by: David Nyström <david.nystrom@est.tech> Reviewed-by: Frank Li <Frank.Li@nxp.com> Reviewed-by: Meagan Lloyd <meaganlloyd@linux.microsoft.com> Link: https://patch.msgid.link/20260219-i3c_rescan-v6-1-b81d6cc3cb30@est.tech Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
195 lines
7.2 KiB
Plaintext
195 lines
7.2 KiB
Plaintext
What: /sys/bus/i3c/devices/i3c-<bus-id>
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
An I3C bus. This directory will contain one sub-directory per
|
||
I3C device present on the bus.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/current_master
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
Expose the master that owns the bus (<bus-id>-<master-pid>) at
|
||
the time this file is read. Note that bus ownership can change
|
||
overtime, so there's no guarantee that when the read() call
|
||
returns, the value returned is still valid.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/mode
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
I3C bus mode. Can be "pure", "mixed-fast" or "mixed-slow". See
|
||
the I3C specification for a detailed description of what each
|
||
of these modes implies.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/i3c_scl_frequency
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
The frequency (expressed in Hz) of the SCL signal when
|
||
operating in I3C SDR mode.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/i2c_scl_frequency
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
The frequency (expressed in Hz) of the SCL signal when
|
||
operating in I2C mode.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/dynamic_address
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
Dynamic address assigned to the master controller. This
|
||
address may change if the bus is re-initialized.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/bcr
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
BCR stands for Bus Characteristics Register and express the
|
||
device capabilities in term of speed, maximum read/write
|
||
length, etc. See the I3C specification for more details.
|
||
This entry describes the BCR of the master controller driving
|
||
the bus.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/dcr
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
DCR stands for Device Characteristics Register and express the
|
||
device capabilities in term of exposed features. See the I3C
|
||
specification for more details.
|
||
This entry describes the DCR of the master controller driving
|
||
the bus.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/pid
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
PID stands for Provisioned ID and is used to uniquely identify
|
||
a device on a bus. This PID contains information about the
|
||
vendor, the part and an instance ID so that several devices of
|
||
the same type can be connected on the same bus.
|
||
See the I3C specification for more details.
|
||
This entry describes the PID of the master controller driving
|
||
the bus.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/hdrcap
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
Expose the HDR (High Data Rate) capabilities of a device.
|
||
Returns a list of supported HDR mode, each element is separated
|
||
by space. Modes can be "hdr-ddr", "hdr-tsp" and "hdr-tsl".
|
||
See the I3C specification for more details about these HDR
|
||
modes.
|
||
|
||
This entry describes the HDRCAP of the master controller
|
||
driving the bus.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/hotjoin
|
||
KernelVersion: 6.8
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
I3C’s Hot-Join mechanism allows an I3C Device to inform the
|
||
Active Controller that a newly-joined Target is present on the
|
||
I3C Bus and is ready to receive a Dynamic Address, in order to
|
||
become fully functional on the Bus. Hot-Join is used when the
|
||
Target is mounted on the same I3C bus and remains depowered
|
||
until needed or until the Target is physically inserted into the
|
||
I3C bus
|
||
|
||
This entry allows to enable or disable Hot-join of the Current
|
||
Controller driving the bus.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
An I3C device present on I3C bus identified by <bus-id>. Note
|
||
that all devices are represented including the master driving
|
||
the bus.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>/dynamic_address
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
Dynamic address assigned to device <bus-id>-<device-pid>. This
|
||
address may change if the bus is re-initialized.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>/bcr
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
BCR stands for Bus Characteristics Register and express the
|
||
device capabilities in term of speed, maximum read/write
|
||
length, etc. See the I3C specification for more details.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>/dcr
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
DCR stands for Device Characteristics Register and express the
|
||
device capabilities in term of exposed features. See the I3C
|
||
specification for more details.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>/pid
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
PID stands for Provisioned ID and is used to uniquely identify
|
||
a device on a bus. This PID contains information about the
|
||
vendor, the part and an instance ID so that several devices of
|
||
the same type can be connected on the same bus.
|
||
See the I3C specification for more details.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>/hdrcap
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
Expose the HDR (High Data Rate) capabilities of a device.
|
||
Returns a list of supported HDR mode, each element is separated
|
||
by space. Modes can be "hdr-ddr", "hdr-tsp" and "hdr-tsl".
|
||
|
||
See the I3C specification for more details about these HDR
|
||
modes.
|
||
|
||
What: /sys/bus/i3c/devices/<bus-id>-<device-pid>
|
||
KernelVersion: 5.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
These directories are just symbolic links to
|
||
/sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/<bus-id>-<device-pid>/dev_nack_retry_count
|
||
KernelVersion: 6.18
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
Expose the dev_nak_retry_count which controls the number of
|
||
automatic retries that will be performed by the controller when
|
||
the target device returns a NACK response. A value of 0 disables
|
||
the automatic retries. Exist only when I3C constroller supports
|
||
this retry on nack feature.
|
||
|
||
What: /sys/bus/i3c/devices/i3c-<bus-id>/do_daa
|
||
KernelVersion: 7.0
|
||
Contact: linux-i3c@vger.kernel.org
|
||
Description:
|
||
Write-only attribute that triggers a Dynamic Address Assignment
|
||
(DAA) procedure which discovers new I3C devices on the bus.
|
||
Writing a boolean true value (1, y, yes, true, on) to this
|
||
attribute causes the master controller to perform DAA, which
|
||
includes broadcasting an ENTDAA (Enter Dynamic Address Assignment)
|
||
Common Command Code (CCC) on the bus. Writing a false value
|
||
returns -EINVAL.
|
||
|
||
This is useful for discovering I3C devices that were not present
|
||
during initial bus initialization and are unable to issue
|
||
Hot-Join. Only devices without a currently assigned dynamic address
|
||
will respond to the ENTDAA broadcast and be assigned addresses.
|
||
|
||
Note that this mechanism is distinct from Hot-Join, since this is
|
||
controller-initiated discovery, while Hot-Join is device-initiated
|
||
method to provoke controller discovery procedure.
|