summaryrefslogtreecommitdiff
path: root/drivers/soundwire/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/soundwire/irq.c')
-rw-r--r--drivers/soundwire/irq.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/soundwire/irq.c b/drivers/soundwire/irq.c
index 0c08cebb1235..f18be37efef8 100644
--- a/drivers/soundwire/irq.c
+++ b/drivers/soundwire/irq.c
@@ -31,7 +31,7 @@ int sdw_irq_create(struct sdw_bus *bus,
{
bus->irq_chip.name = dev_name(bus->dev);
- bus->domain = irq_domain_create_linear(fwnode, SDW_MAX_DEVICES,
+ bus->domain = irq_domain_create_linear(fwnode, SDW_FW_MAX_DEVICES,
&sdw_domain_ops, bus);
if (!bus->domain) {
dev_err(bus->dev, "Failed to add IRQ domain\n");
@@ -46,14 +46,18 @@ void sdw_irq_delete(struct sdw_bus *bus)
irq_domain_remove(bus->domain);
}
+static void sdw_irq_dispose_mapping(void *data)
+{
+ struct sdw_slave *slave = data;
+
+ irq_dispose_mapping(slave->irq);
+}
+
void sdw_irq_create_mapping(struct sdw_slave *slave)
{
- slave->irq = irq_create_mapping(slave->bus->domain, slave->dev_num);
+ slave->irq = irq_create_mapping(slave->bus->domain, slave->index);
if (!slave->irq)
dev_warn(&slave->dev, "Failed to map IRQ\n");
-}
-void sdw_irq_dispose_mapping(struct sdw_slave *slave)
-{
- irq_dispose_mapping(irq_find_mapping(slave->bus->domain, slave->dev_num));
+ devm_add_action_or_reset(&slave->dev, sdw_irq_dispose_mapping, slave);
}