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>
This commit is contained in:
Raag Jadav 2026-01-05 13:37:50 +05:30 committed by Matt Roper
parent 0b075f8293
commit e70711be0d
2 changed files with 7 additions and 4 deletions

View File

@ -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;

View File

@ -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);