summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRaag Jadav <raag.jadav@intel.com>2026-01-05 13:37:50 +0530
committerMatt Roper <matthew.d.roper@intel.com>2026-01-05 07:43:22 -0800
commite70711be0d0ebdd0a9213446b657fe0815e38017 (patch)
tree8098f8d652381b1d4ba2d9f35ff09f8560b4ddb2 /drivers
parent0b075f82935e82fc9fff90d06d2a161caaebd9c3 (diff)
drm/xe/i2c: Force polling mode in survivability
SGUnit interrupts are not initialized in survivability. Force I2C controller to polling mode while in survivability. v2: Use helper function instead of manual check (Riana) Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://patch.msgid.link/20260105080750.16605-1-raag.jadav@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/xe/xe_i2c.c9
-rw-r--r--drivers/gpu/drm/xe/xe_survivability_mode.c2
2 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c
index 8eccbae05705..befc77e46eae 100644
--- a/drivers/gpu/drm/xe/xe_i2c.c
+++ b/drivers/gpu/drm/xe/xe_i2c.c
@@ -31,6 +31,7 @@
#include "xe_i2c.h"
#include "xe_mmio.h"
#include "xe_platform_types.h"
+#include "xe_survivability_mode.h"
/**
* DOC: Xe I2C devices
@@ -213,11 +214,13 @@ static const struct irq_domain_ops xe_i2c_irq_ops = {
.map = xe_i2c_irq_map,
};
-static int xe_i2c_create_irq(struct xe_i2c *i2c)
+static int xe_i2c_create_irq(struct xe_device *xe)
{
+ struct xe_i2c *i2c = xe->i2c;
struct irq_domain *domain;
- if (!(i2c->ep.capabilities & XE_I2C_EP_CAP_IRQ))
+ if (!(i2c->ep.capabilities & XE_I2C_EP_CAP_IRQ) ||
+ xe_survivability_mode_is_boot_enabled(xe))
return 0;
domain = irq_domain_create_linear(dev_fwnode(i2c->drm_dev), 1, &xe_i2c_irq_ops, NULL);
@@ -351,7 +354,7 @@ int xe_i2c_probe(struct xe_device *xe)
if (ret)
return ret;
- ret = xe_i2c_create_irq(i2c);
+ ret = xe_i2c_create_irq(xe);
if (ret)
goto err_unregister_notifier;
diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c
index 4c716182ad3b..31456f432fc8 100644
--- a/drivers/gpu/drm/xe/xe_survivability_mode.c
+++ b/drivers/gpu/drm/xe/xe_survivability_mode.c
@@ -321,7 +321,7 @@ static int enable_boot_survivability_mode(struct pci_dev *pdev)
if (ret)
return ret;
- /* Make sure xe_heci_gsc_init() knows about survivability mode */
+ /* Make sure xe_heci_gsc_init() and xe_i2c_probe() are aware of survivability */
survivability->mode = true;
xe_heci_gsc_init(xe);