]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/xe_i2c: Add support for i2c in survivability mode
authorRiana Tauro <riana.tauro@intel.com>
Tue, 1 Jul 2025 12:22:52 +0000 (15:22 +0300)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 10 Jul 2025 14:19:41 +0000 (10:19 -0400)
Initialize i2c in survivability mode to allow firmware
update of Add-In Management Controller (AMC) in
survivability mode.

Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://lore.kernel.org/r/20250701122252.2590230-6-heikki.krogerus@linux.intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_survivability_mode.c

index 1f710b3fc599b5c0aae12d315d742557605df479..41705f5d52e3a3ab697396decd68830e2f38e8f0 100644 (file)
@@ -14,6 +14,7 @@
 #include "xe_device.h"
 #include "xe_gt.h"
 #include "xe_heci_gsc.h"
+#include "xe_i2c.h"
 #include "xe_mmio.h"
 #include "xe_pcode_api.h"
 #include "xe_vsec.h"
@@ -173,20 +174,22 @@ static int enable_survivability_mode(struct pci_dev *pdev)
        survivability->mode = true;
 
        ret = xe_heci_gsc_init(xe);
-       if (ret) {
-               /*
-                * But if it fails, device can't enter survivability
-                * so move it back for correct error handling
-                */
-               survivability->mode = false;
-               return ret;
-       }
+       if (ret)
+               goto err;
 
        xe_vsec_init(xe);
 
+       ret = xe_i2c_probe(xe);
+       if (ret)
+               goto err;
+
        dev_err(dev, "In Survivability Mode\n");
 
        return 0;
+
+err:
+       survivability->mode = false;
+       return ret;
 }
 
 /**