[PATCH v1] drm/xe/i2c: Introduce xe_i2c_present()
Heikki Krogerus
heikki.krogerus at linux.intel.com
Tue Aug 12 13:05:27 UTC 2025
On Tue, Aug 12, 2025 at 05:56:46PM +0530, Raag Jadav wrote:
> In preparation of wider usecases which require checking for I2C
> controller presence, introduce xe_i2c_present() helper.
>
> Suggested-by: Riana Tauro <riana.tauro at intel.com>
> Signed-off-by: Raag Jadav <raag.jadav at intel.com>
LGTM. FWIW:
Reviewed-by: Heikki Krogerus <heikki.krogerus at linux.intel.com>
> ---
> drivers/gpu/drm/xe/xe_i2c.c | 18 ++++++++++++++++--
> drivers/gpu/drm/xe/xe_i2c.h | 2 ++
> 2 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c
> index bc7dc2099470..6534ec5de6dc 100644
> --- a/drivers/gpu/drm/xe/xe_i2c.c
> +++ b/drivers/gpu/drm/xe/xe_i2c.c
> @@ -146,6 +146,20 @@ static void xe_i2c_unregister_adapter(struct xe_i2c *i2c)
> fwnode_remove_software_node(i2c->adapter_node);
> }
>
> +/**
> + * xe_i2c_present: I2C controller is present and functional
> + * @xe: xe device instance
> + *
> + * Check whether the I2C controller is present and functioning with valid
> + * endpoint cookie.
> + *
> + * Return: %true if present, %false otherwise.
> + */
> +bool xe_i2c_present(struct xe_device *xe)
> +{
> + return xe->i2c && xe->i2c->ep.cookie == XE_I2C_EP_COOKIE_DEVICE;
> +}
> +
> /**
> * xe_i2c_irq_handler: Handler for I2C interrupts
> * @xe: xe device instance
> @@ -230,7 +244,7 @@ void xe_i2c_pm_suspend(struct xe_device *xe)
> {
> struct xe_mmio *mmio = xe_root_tile_mmio(xe);
>
> - if (!xe->i2c || xe->i2c->ep.cookie != XE_I2C_EP_COOKIE_DEVICE)
> + if (!xe_i2c_present(xe))
> return;
>
> xe_mmio_rmw32(mmio, I2C_CONFIG_PMCSR, PCI_PM_CTRL_STATE_MASK, (__force u32)PCI_D3hot);
> @@ -241,7 +255,7 @@ void xe_i2c_pm_resume(struct xe_device *xe, bool d3cold)
> {
> struct xe_mmio *mmio = xe_root_tile_mmio(xe);
>
> - if (!xe->i2c || xe->i2c->ep.cookie != XE_I2C_EP_COOKIE_DEVICE)
> + if (!xe_i2c_present(xe))
> return;
>
> if (d3cold)
> diff --git a/drivers/gpu/drm/xe/xe_i2c.h b/drivers/gpu/drm/xe/xe_i2c.h
> index b767ed8ce52b..ecd5f10358e2 100644
> --- a/drivers/gpu/drm/xe/xe_i2c.h
> +++ b/drivers/gpu/drm/xe/xe_i2c.h
> @@ -49,11 +49,13 @@ struct xe_i2c {
>
> #if IS_ENABLED(CONFIG_I2C)
> int xe_i2c_probe(struct xe_device *xe);
> +bool xe_i2c_present(struct xe_device *xe);
> void xe_i2c_irq_handler(struct xe_device *xe, u32 master_ctl);
> void xe_i2c_pm_suspend(struct xe_device *xe);
> void xe_i2c_pm_resume(struct xe_device *xe, bool d3cold);
> #else
> static inline int xe_i2c_probe(struct xe_device *xe) { return 0; }
> +static inline bool xe_i2c_present(struct xe_device *xe) { return false; }
> static inline void xe_i2c_irq_handler(struct xe_device *xe, u32 master_ctl) { }
> static inline void xe_i2c_pm_suspend(struct xe_device *xe) { }
> static inline void xe_i2c_pm_resume(struct xe_device *xe, bool d3cold) { }
> --
> 2.34.1
--
heikki
More information about the Intel-xe
mailing list