drivers/gpu/drm/xe/xe_i2c.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/xe_i2c.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/xe/xe_i2c.h- Extension
.h- Size
- 1799 bytes
- Lines
- 69
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bits.hlinux/notifier.hlinux/types.hlinux/workqueue.h
Detected Declarations
struct devicestruct fwnode_handlestruct i2c_adapterstruct i2c_clientstruct irq_domainstruct platform_devicestruct xe_devicestruct xe_mmiostruct xe_i2c_endpointstruct xe_i2cfunction xe_i2c_probefunction xe_i2c_presentfunction xe_i2c_irq_handler
Annotated Snippet
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);
bool xe_i2c_present(struct xe_device *xe);
void xe_i2c_irq_handler(struct xe_device *xe, u32 master_ctl);
void xe_i2c_irq_postinstall(struct xe_device *xe);
void xe_i2c_irq_reset(struct xe_device *xe);
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_irq_postinstall(struct xe_device *xe) { }
static inline void xe_i2c_irq_reset(struct xe_device *xe) { }
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
Annotation
- Immediate include surface: `linux/bits.h`, `linux/notifier.h`, `linux/types.h`, `linux/workqueue.h`.
- Detected declarations: `struct device`, `struct fwnode_handle`, `struct i2c_adapter`, `struct i2c_client`, `struct irq_domain`, `struct platform_device`, `struct xe_device`, `struct xe_mmio`, `struct xe_i2c_endpoint`, `struct xe_i2c`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.