drivers/irqchip/irq-apple-aic.c

Source file repositories/reference/linux-study-clean/drivers/irqchip/irq-apple-aic.c

File Facts

System
Linux kernel
Corpus path
drivers/irqchip/irq-apple-aic.c
Extension
.c
Size
29815 bytes
Lines
1137
Domain
Driver Families
Bucket
drivers/irqchip
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct aic_info {
	int version;

	/* Register offsets */
	u32 event;
	u32 target_cpu;
	u32 irq_cfg;
	u32 sw_set;
	u32 sw_clr;
	u32 mask_set;
	u32 mask_clr;

	u32 die_stride;

	/* Features */
	bool fast_ipi;
	bool local_fast_ipi;
};

static const struct aic_info aic1_info __initconst = {
	.version	= 1,

	.event		= AIC_EVENT,
	.target_cpu	= AIC_TARGET_CPU,
};

static const struct aic_info aic1_fipi_info __initconst = {
	.version	= 1,

	.event		= AIC_EVENT,
	.target_cpu	= AIC_TARGET_CPU,

	.fast_ipi	= true,
};

static const struct aic_info aic1_local_fipi_info __initconst = {
	.version	= 1,

	.event		= AIC_EVENT,
	.target_cpu	= AIC_TARGET_CPU,

	.fast_ipi	= true,
	.local_fast_ipi = true,
};

static const struct aic_info aic2_info __initconst = {
	.version	= 2,

	.irq_cfg	= AIC2_IRQ_CFG,

	.fast_ipi	= true,
	.local_fast_ipi = true,
};

static const struct aic_info aic3_info __initconst = {
	.version	= 3,

	.irq_cfg	= AIC3_IRQ_CFG,

	.fast_ipi	= true,
	.local_fast_ipi = true,
};

static const struct of_device_id aic_info_match[] = {
	{
		.compatible = "apple,t8103-aic",
		.data = &aic1_local_fipi_info,
	},
	{
		.compatible = "apple,t8015-aic",
		.data = &aic1_fipi_info,
	},
	{
		.compatible = "apple,aic",
		.data = &aic1_info,
	},
	{
		.compatible = "apple,aic2",
		.data = &aic2_info,
	},
	{
		.compatible = "apple,t8122-aic3",
		.data = &aic3_info,
	},
	{}
};

struct aic_irq_chip {
	void __iomem *base;
	void __iomem *event;

Annotation

Implementation Notes