[26.04_linux-nvidia-bos] Backport Vera I3C v7 support - #519
Conversation
7702fa0 to
f1d8a38
Compare
BaseOS Kernel ReviewSummaryThe series has two I3C build blockers: ACPI code accesses a missing lvr member, and SETAASA calls an undefined helper. It also regresses SPD5118 devices using 16-bit legacy addressing. Findings: Critical: 0, High: 3, Medium: 1, Low: 4 Latest watcher review: open review Generated test plan: open test plan Kernel deb build: failed (failure log, build artifacts) Head: This comment is maintained by nv-pr-bot. It is updated when the GitHub watcher publishes a newer review. |
|
@nirmoy: You should target these at the 26.04 branches rather than the 24.04 ones. |
And only 7.0-bos since this is a Vera-only item. |
|
Ack @jamieNguyenNVIDIA @nvmochs Thanks I didn't notice it. Moved to draft. |
f1d8a38 to
362a669
Compare
PR Validation ReportPatchscan ✅ No Missing FixesAll cherry-picked commits checked — no missing upstream fixes found. PR Lint ❌ Errors foundDetailsChecking 12 commits...
Cherry-pick digest:
┌──────────────┬──────────────────────────────────────────────────────────────────┬────────────┬─────────┬───────────────────────────┐
│ Local │ Referenced upstream / Patch subject │ Patch-ID │ Subject │ SoB chain │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 1d895edca704 │ [SAUCE] [config] enable i3c and spd5118 for tegra410 │ N/A │ N/A │ nirmoyd │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ b3f6323a2407 │ [SAUCE] hwmon: spd5118: add i3c support │ N/A │ N/A │ akhilraj, belloni, nirmoy │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 5811b07da3ae │ [SAUCE] i3c: dw-i3c-master: add acpi id for tegra410 │ N/A │ N/A │ akhilraj, belloni │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 7d56e779b41e │ [SAUCE] i3c: dw-i3c-master: add acpi core clock frequency quirk │ N/A │ N/A │ akhilraj, belloni │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 602308a9ffe3 │ [SAUCE] i3c: dw-i3c-master: add setaasa as supported ccc │ N/A │ N/A │ akhilraj, belloni │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ f9bc9fa94ac5 │ [SAUCE] i3c: master: match i3c device through dt and acpi │ N/A │ N/A │ akhilraj, belloni, nirmoy │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 4ddb0d80a0e8 │ [SAUCE] i3c: master: add support for devices without pid │ N/A │ N/A │ akhilraj, belloni │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 4ab3465d3d92 │ [SAUCE] i3c: master: add support for devices using setaasa │ N/A │ N/A │ akhilraj, belloni, nirmoy │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 66d4b620fde8 │ [SAUCE] i3c: master: support acpi enumeration of child devices │ N/A │ N/A │ akhilraj, belloni │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ ba4c9565bc82 │ f0ee0b0927f7 ACPICA: Add LVR to acrestyp.h │ match │ match │ preserved + nirmoyd added │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 6eec0b5e55e0 │ [SAUCE] i3c: master: use unified device property interface │ N/A │ N/A │ akhilraj, belloni │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 0a766992fe35 │ [SAUCE] dt-bindings: i3c: add mipi-i3c-static-method to support │ N/A │ N/A │ akhilraj, belloni │
└──────────────┴──────────────────────────────────────────────────────────────────┴────────────┴─────────┴───────────────────────────┘
Lint results:
E: b3f6323a2407 ("hwmon: spd5118: Add I3C support"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 5811b07da3ae ("i3c: dw-i3c-master: Add ACPI ID for Tegra410"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 7d56e779b41e ("i3c: dw-i3c-master: Add ACPI core clock frequency "): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 602308a9ffe3 ("i3c: dw-i3c-master: Add SETAASA as supported CCC"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: f9bc9fa94ac5 ("i3c: master: match I3C device through DT and ACPI"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 4ddb0d80a0e8 ("i3c: master: Add support for devices without PID"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 4ab3465d3d92 ("i3c: master: Add support for devices using SETAASA"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 66d4b620fde8 ("i3c: master: Support ACPI enumeration of child dev"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 6eec0b5e55e0 ("i3c: master: Use unified device property interface"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 0a766992fe35 ("dt-bindings: i3c: Add mipi-i3c-static-method to su"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
|
362a669 to
f4c5a13
Compare
|
Move to |
Can you provide more details? For "NVIDIA: SAUCE: i3c: master: match I3C device through DT and ACPI" where you have added the modalias support, would it be better for that to be submitted as a separate patch that is also submitted upstream? One codex finding on the annotations patch...
Relevant mismatches I saw: CONFIG_DW_I3C_MASTER at debian.nvidia-bos/config/annotations:171 should likely use amd64: '-', not n, and the other inherited I3C-dependent policies need amd64 BOS overrides too. Arm64 resolves as intended: |
f4c5a13 to
4842b44
Compare
4842b44 to
338320b
Compare
338320b to
a25c399
Compare
Add the 'mipi-i3c-static-method' property mentioned in the MIPI I3C Discovery and Configuration Specification [1] to specify which discovery method an I3C device supports during bus initialization. The property is a bitmap, where a bit value of 1 indicates support for that method, and 0 indicates lack of support. Bit 0: SETDASA CCC (Direct) Bit 1: SETAASA CCC (Broadcast) Bit 2: Other CCC (vendor / standards extension) All other bits are reserved. It is specifically needed when an I3C device requires SETAASA for the address assignment. SETDASA will be supported by default if this property is absent, which means for now the property just serves as a flag to enable SETAASA, but keep the property as a bitmap to align with the specifications. [1] https://www.mipi.org/mipi-disco-for-i3c-download Reviewed-by: Frank Li <Frank.Li@nxp.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-2-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 81e7c27b0d5cb3029fc01374c3a96019d3a9e673 linux-next)
Replace all OF-specific functions with unified device property functions as a prerequisite to support both ACPI and device tree. Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-3-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit ee170021bee17124c13f42813607bca553a6b48a linux-next)
Add a new field called lvr to struct acpi_resource_i2c_serialbus. Link: acpica/acpica@e62e74baf7e0 Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Link: https://patch.msgid.link/2354060.iZASKD2KPV@rafael.j.wysocki (cherry picked from commit f0ee0b0) Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
Although the existing subsystem allows host controllers to register through the ACPI table, it was not possible to describe I3C or I2C devices when using ACPI. This is because the driver relied on the reg property to retrieve the PID, static address, etc., whereas ACPI uses _ADR or serial resources to describe such devices. Read _ADR and LVR from ACPI resources and extract the data as per the ACPI specification for an I3C bus. Also read mipi-i3c-static-address as per the MIPI DISCO specifications [1] to get the static address to be used. Enable describing I3C or I2C devices in the ACPI table. This is required if the device uses a static address or if it needs device-specific properties. [1] https://www.mipi.org/mipi-disco-for-i3c-download Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-4-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit b46a4b3c5d1e312e74e5364a04c283a5c88e0916 linux-next)
Add support for devices using SETAASA, such as SPD5118 and SPD5108 attached to DDR5 memory modules that do not support ENTDAA. Follow the guidelines proposed by the MIPI Discovery and Configuration Specification [1] for discovering such devices. SETAASA (Set All Addresses to Static Address) differs from standard I3C address assignment that uses ENTDAA or SETDASA to assign dynamic addresses. Devices using SETAASA assign their pre-defined static addresses as their dynamic addresses during DAA, and it is not mandatory for these devices to implement standard CCC commands like GETPID, GETDCR, or GETBCR. For such devices, it is generally recommended to issue SETHID (specified by JEDEC JESD300) as a prerequisite for SETAASA to stop HID bit flipping. [1] https://www.mipi.org/mipi-disco-for-i3c-download Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://www.mipi.org/mipi-disco-for-i3c-download Link: https://patch.msgid.link/20260728065955.809445-5-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit bbaf8733b84846897d2d3b997ce650dd2d2539a4 linux-next) [nirmoy: use the pre-8d8afa428318 static reattach helper name] Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
Devices using SETAASA for address assignment are not required to have a 48-bit PID according to the I3C specification. Allow such devices to register and use the static address where PID was required. Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-6-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit a1dd42fb82fa71bf4cb6462b4803b55d844c1286 linux-next)
SETAASA-based devices cannot always be identified by PID or DCR; the standard I3C id_table matching may not be applicable. Allow such devices to match through Device Tree or ACPI. Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-7-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 3456baa2110c1fa31e7609ace50117346b99c3d4 linux-next) Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
Add SETAASA and SETHID to the supported list of CCC commands for DesignWare I3C host controller. SETAASA is a broadcast command that assigns predefined static addresses to all I3C devices on the bus. SETHID is to stop HID bit flipping by the SPD Hub to which the SPD devices are connected. It is a prerequisite command to be sent before SETAASA as recommended by JESD300-5 and JESD403 sideband bus specifications. Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-8-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit fc6963aad560aebeb926e677aa26746c42c6223b linux-next)
Some ACPI-enumerated devices like Tegra410 do not expose the controller core clock through the clk framework. Unlike device tree, ACPI on Arm does not model clock providers. The hardware is expected to have its clocks enabled by firmware before the OS takes over. Make the core clock optional and allow selected ACPI devices to provide the core clock rate through the "clock-frequency" _DSD property when the core clock is absent. Resolve device quirks before acquiring the core clock so platforms without the ACPI skip-clock quirk still fail probe immediately when the clock is missing, before any MMIO access. Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-9-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 0fd9549975b5b8186a78b654e02518113cc2ac93 linux-next)
Update variable names to generic names and add Tegra410 ACPI ID to support the I3C controller in Tegra410, which is a DesignWare I3C host controller. Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-10-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 97d7cfb62a215ed5c64c6e7772545be4afab167f linux-next)
Add a regmap config and a probe function to support I3C-based communication with SPD5118 devices. On an I3C bus, SPD5118 devices are enumerated via SETAASA and always require an ACPI or device tree entry. Device matching is hence through the OF match tables only and does not need an I3C class match table. The device identity is verified in the type registers before proceeding to the common probe function. Acked-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Akhil R <akhilrajeev@nvidia.com> Link: https://patch.msgid.link/20260728065955.809445-12-akhilrajeev@nvidia.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 9cd3db0cda4741befa6de8af94eb371b9ec6d057 linux-next) [nirmoy: retain legacy 16-bit addressing support for I2C devices] Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
BugLink: https://bugs.launchpad.net/bugs/2139154 Vera uses the Tegra410 DesignWare I3C controller to access SPD5118 temperature sensors on DDR5 memory modules. Enable CONFIG_I3C, CONFIG_DW_I3C_MASTER, and CONFIG_SENSORS_SPD5118 as modules for the arm64 NVIDIA BOS flavours. Keep them disabled on amd64, where the hardware is not present. Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
a25c399 to
1d895ed
Compare
Backport the Vera I3C v7 series to the 26.04 BOS 7.0 kernel. The series
adds the I3C core and DesignWare changes needed for Vera/Tegra410, ACPI
matching for the controller, and SPD5118 hwmon support for DDR5
temperature monitoring.
This PR is only for
26.04_linux-nvidia-bos; Vera does not require acompanion non-BOS kernel PR.
The PR contains 10 commits from the series landed in
i3c/next, therequired ACPICA LVR prerequisite, and one downstream config commit. It
intentionally omits
7bf5a11dde2c("hwmon: spd5118: Remove 16-bitaddressing") and adapts the following I3C patch to retain existing
16-bit legacy-addressing support for I2C SPD5118 devices.
Source series: https://lore.kernel.org/r/20260728065955.809445-1-akhilrajeev@nvidia.com
Landed range:
81e7c27b0d5c^..9cd3db0cda47fromi3c/nextAdditional prerequisite:
f0ee0b0927f7("ACPICA: Add LVR toacrestyp.h")
Backport adaptations for the Linux 7.0 target:
8d8afa428318static I3C reattach helper nameaddr_methodValidation:
git diff --checkpasses against26.04_linux-nvidia-bosW=1builds pass fordrivers/i3c/i3c.o,drivers/i3c/master/dw-i3c-master.o, anddrivers/hwmon/spd5118.olvrcompiler errors are fixedCONFIG_I3C,CONFIG_DW_I3C_MASTER, andCONFIG_SENSORS_SPD5118tomfor both arm64 BOS flavours andnfor amd64Runtime validation is waiting for Vera hardware with a valid SBIOS for I3C.
LP: https://bugs.launchpad.net/bugs/2139154