mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-27 10:34:13 +00:00

Wire up suspend/resume handles for I2C controller to match its power state with SGUnit. Signed-off-by: Raag Jadav <raag.jadav@intel.com> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Reviewed-by: Karthik Poosa <karthik.poosa@intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Link: https://lore.kernel.org/r/20250701122252.2590230-5-heikki.krogerus@linux.intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
63 lines
1.4 KiB
C
63 lines
1.4 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
#ifndef _XE_I2C_H_
|
|
#define _XE_I2C_H_
|
|
|
|
#include <linux/bits.h>
|
|
#include <linux/notifier.h>
|
|
#include <linux/types.h>
|
|
#include <linux/workqueue.h>
|
|
|
|
struct device;
|
|
struct fwnode_handle;
|
|
struct i2c_adapter;
|
|
struct i2c_client;
|
|
struct irq_domain;
|
|
struct platform_device;
|
|
struct xe_device;
|
|
struct xe_mmio;
|
|
|
|
#define XE_I2C_MAX_CLIENTS 3
|
|
|
|
#define XE_I2C_EP_COOKIE_DEVICE 0xde
|
|
|
|
/* Endpoint Capabilities */
|
|
#define XE_I2C_EP_CAP_IRQ BIT(0)
|
|
|
|
struct xe_i2c_endpoint {
|
|
u8 cookie;
|
|
u8 capabilities;
|
|
u16 addr[XE_I2C_MAX_CLIENTS];
|
|
};
|
|
|
|
struct xe_i2c {
|
|
struct fwnode_handle *adapter_node;
|
|
struct platform_device *pdev;
|
|
struct i2c_adapter *adapter;
|
|
struct i2c_client *client[XE_I2C_MAX_CLIENTS];
|
|
|
|
struct notifier_block bus_notifier;
|
|
struct work_struct work;
|
|
|
|
struct irq_domain *irqdomain;
|
|
int adapter_irq;
|
|
|
|
struct xe_i2c_endpoint ep;
|
|
struct device *drm_dev;
|
|
|
|
struct xe_mmio *mmio;
|
|
};
|
|
|
|
#if IS_ENABLED(CONFIG_I2C)
|
|
int xe_i2c_probe(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 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) { }
|
|
#endif
|
|
|
|
#endif
|