Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f899ff47 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qcom: ssr: Free interrupts during subsys_unregister"

parents 56db8e79 4a194a45
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -1378,6 +1378,20 @@ static int subsys_setup_irqs(struct subsys_device *subsys)
	return 0;
	return 0;
}
}


static void subsys_free_irqs(struct subsys_device *subsys)
{
	struct subsys_desc *desc = subsys->desc;

	if (desc->err_fatal_irq && desc->err_fatal_handler)
		devm_free_irq(desc->dev, desc->err_fatal_irq, desc);
	if (desc->stop_ack_irq && desc->stop_ack_handler)
		devm_free_irq(desc->dev, desc->stop_ack_irq, desc);
	if (desc->wdog_bite_irq && desc->wdog_bite_handler)
		devm_free_irq(desc->dev, desc->wdog_bite_irq, desc);
	if (desc->err_ready_irq)
		devm_free_irq(desc->dev, desc->err_ready_irq, subsys);
}

struct subsys_device *subsys_register(struct subsys_desc *desc)
struct subsys_device *subsys_register(struct subsys_desc *desc)
{
{
	struct subsys_device *subsys;
	struct subsys_device *subsys;
@@ -1479,8 +1493,10 @@ void subsys_unregister(struct subsys_device *subsys)
				list_del(&subsys->list);
				list_del(&subsys->list);
		mutex_unlock(&subsys_list_lock);
		mutex_unlock(&subsys_list_lock);


		if (device)
		if (device) {
			subsys_free_irqs(subsys);
			subsys_remove_restart_order(device);
			subsys_remove_restart_order(device);
		}
		mutex_lock(&subsys->track.lock);
		mutex_lock(&subsys->track.lock);
		WARN_ON(subsys->count);
		WARN_ON(subsys->count);
		device_unregister(&subsys->dev);
		device_unregister(&subsys->dev);