]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
soc/tegra: cbb: Set ERD on resume for err interrupt
authorSumit Gupta <sumitg@nvidia.com>
Wed, 21 Jan 2026 10:12:03 +0000 (15:42 +0530)
committerThierry Reding <treding@nvidia.com>
Fri, 27 Mar 2026 14:30:46 +0000 (15:30 +0100)
Set the Error Response Disable (ERD) bit to mask SError responses
and use interrupt-based error reporting. When the ERD bit is set,
inband error responses to the initiator via SError are suppressed,
and fabric errors are reported via an interrupt instead.

The register is set during boot but the info is lost during system
suspend and needs to be set again on resume.

Fixes: fc2f151d2314 ("soc/tegra: cbb: Add driver for Tegra234 CBB 2.0")
Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/cbb/tegra234-cbb.c

index 30f421c8e90c62739d2e09d9f3bd7153199ae4f2..6276a9603e5f043c61dbb3a23d95a37c2ebf7a71 100644 (file)
@@ -1720,6 +1720,10 @@ static int __maybe_unused tegra234_cbb_resume_noirq(struct device *dev)
 {
        struct tegra234_cbb *cbb = dev_get_drvdata(dev);
 
+       /* set ERD bit to mask SError and generate interrupt to report error */
+       if (cbb->fabric->off_mask_erd)
+               tegra234_cbb_mask_serror(cbb);
+
        tegra234_cbb_error_enable(&cbb->base);
 
        dev_dbg(dev, "%s resumed\n", cbb->fabric->fab_list[cbb->fabric->fab_id].name);