drivers/soc/renesas/rzn1_irqmux.c

Source file repositories/reference/linux-study-clean/drivers/soc/renesas/rzn1_irqmux.c

File Facts

System
Linux kernel
Corpus path
drivers/soc/renesas/rzn1_irqmux.c
Extension
.c
Size
3371 bytes
Lines
128
Domain
Driver Families
Bucket
drivers/soc
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

if (index < 0) {
			of_node_put(imap_item.parent_args.np);
			return index;
		}

		if (test_and_set_bit(index, index_done)) {
			of_node_put(imap_item.parent_args.np);
			dev_err(dev, "Mux output line %d already defined in interrupt-map\n",
				index);
			return -EINVAL;
		}

		/*
		 * The child #address-cells is 0 (already checked). The first
		 * value in imap item is the src hwirq.
		 */
		writel(imap_item.child_imap[0], regs + index);
	}

	return 0;
}

static const struct of_device_id rzn1_irqmux_of_match[] = {
	{ .compatible = "renesas,rzn1-gpioirqmux", },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, rzn1_irqmux_of_match);

static struct platform_driver rzn1_irqmux_driver = {
	.probe = rzn1_irqmux_probe,
	.driver = {
		.name = "rzn1_irqmux",
		.of_match_table = rzn1_irqmux_of_match,
	},
};
module_platform_driver(rzn1_irqmux_driver);

MODULE_AUTHOR("Herve Codina <herve.codina@bootlin.com>");
MODULE_DESCRIPTION("Renesas RZ/N1 GPIO IRQ Multiplexer Driver");
MODULE_LICENSE("GPL");

Annotation

Implementation Notes