Lines Matching refs:auxdev

25 static int auxiliary_irq_dir_prepare(struct auxiliary_device *auxdev)  in auxiliary_irq_dir_prepare()  argument
29 guard(mutex)(&auxdev->sysfs.lock); in auxiliary_irq_dir_prepare()
30 if (auxdev->sysfs.irq_dir_exists) in auxiliary_irq_dir_prepare()
33 ret = devm_device_add_group(&auxdev->dev, &auxiliary_irqs_group); in auxiliary_irq_dir_prepare()
37 auxdev->sysfs.irq_dir_exists = true; in auxiliary_irq_dir_prepare()
38 xa_init(&auxdev->sysfs.irqs); in auxiliary_irq_dir_prepare()
56 int auxiliary_device_sysfs_irq_add(struct auxiliary_device *auxdev, int irq) in auxiliary_device_sysfs_irq_add() argument
59 struct device *dev = &auxdev->dev; in auxiliary_device_sysfs_irq_add()
62 ret = auxiliary_irq_dir_prepare(auxdev); in auxiliary_device_sysfs_irq_add()
73 ret = xa_insert(&auxdev->sysfs.irqs, irq, info, GFP_KERNEL); in auxiliary_device_sysfs_irq_add()
83 xa_store(&auxdev->sysfs.irqs, irq, no_free_ptr(info), GFP_KERNEL); in auxiliary_device_sysfs_irq_add()
87 xa_erase(&auxdev->sysfs.irqs, irq); in auxiliary_device_sysfs_irq_add()
100 void auxiliary_device_sysfs_irq_remove(struct auxiliary_device *auxdev, int irq) in auxiliary_device_sysfs_irq_remove() argument
102 struct auxiliary_irq_info *info __free(kfree) = xa_load(&auxdev->sysfs.irqs, irq); in auxiliary_device_sysfs_irq_remove()
103 struct device *dev = &auxdev->dev; in auxiliary_device_sysfs_irq_remove()
106 dev_err(&auxdev->dev, "IRQ %d doesn't exist\n", irq); in auxiliary_device_sysfs_irq_remove()
111 xa_erase(&auxdev->sysfs.irqs, irq); in auxiliary_device_sysfs_irq_remove()