// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES */ #include <linux/auxiliary_bus.h> #include <linux/slab.h> #define AUXILIARY_MAX_IRQ_NAME … struct auxiliary_irq_info { … }; static struct attribute *auxiliary_irq_attrs[] = …; static const struct attribute_group auxiliary_irqs_group = …; static int auxiliary_irq_dir_prepare(struct auxiliary_device *auxdev) { … } /** * auxiliary_device_sysfs_irq_add - add a sysfs entry for the given IRQ * @auxdev: auxiliary bus device to add the sysfs entry. * @irq: The associated interrupt number. * * This function should be called after auxiliary device have successfully * received the irq. * The driver is responsible to add a unique irq for the auxiliary device. The * driver can invoke this function from multiple thread context safely for * unique irqs of the auxiliary devices. The driver must not invoke this API * multiple times if the irq is already added previously. * * Return: zero on success or an error code on failure. */ int auxiliary_device_sysfs_irq_add(struct auxiliary_device *auxdev, int irq) { … } EXPORT_SYMBOL_GPL(…); /** * auxiliary_device_sysfs_irq_remove - remove a sysfs entry for the given IRQ * @auxdev: auxiliary bus device to add the sysfs entry. * @irq: the IRQ to remove. * * This function should be called to remove an IRQ sysfs entry. * The driver must invoke this API when IRQ is released by the device. */ void auxiliary_device_sysfs_irq_remove(struct auxiliary_device *auxdev, int irq) { … } EXPORT_SYMBOL_GPL(…);