/* Except for the extra @dev argument, this function takes the same arguments and performs the same function as free_irq(). This function instead of free_irq() should be used to manually free IRQs allocated with dev_request_irq().  */
void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id)
/* Except for the extra @dev argument, this function takes the same arguments and performs the same function as free_irq(). This function instead of free_irq() should be used to manually free IRQs allocated with dev_request_irq().  */
void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id)
{
	struct irq_devres match_data = { irq, dev_id };
	free_irq(irq, dev_id);
	WARN_ON(devres_destroy(dev, devm_irq_release, devm_irq_match,
			       &match_data));
}