linux/drivers/soundwire/irq.h
Charles Keepax a5fef9baa8 soundwire: bus: Move irq mapping cleanup into devres
Currently the IRQ mapping is disposed off in sdw_drv_remove(), however
if the SoundWire device uses devres this can run before the actual device
clean up, potentially clearing the mapping whilst it is still in use.
Make this devres safe by also moving the sdw_irq_dispose_mapping into
devres.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20241205113315.2266313-1-ckeepax@opensource.cirrus.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2024-12-23 11:41:09 +05:30

38 lines
794 B
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2023 Cirrus Logic, Inc. and
* Cirrus Logic International Semiconductor Ltd.
*/
#ifndef __SDW_IRQ_H
#define __SDW_IRQ_H
#include <linux/soundwire/sdw.h>
#include <linux/fwnode.h>
#if IS_ENABLED(CONFIG_IRQ_DOMAIN)
int sdw_irq_create(struct sdw_bus *bus,
struct fwnode_handle *fwnode);
void sdw_irq_delete(struct sdw_bus *bus);
void sdw_irq_create_mapping(struct sdw_slave *slave);
#else /* CONFIG_IRQ_DOMAIN */
static inline int sdw_irq_create(struct sdw_bus *bus,
struct fwnode_handle *fwnode)
{
return 0;
}
static inline void sdw_irq_delete(struct sdw_bus *bus)
{
}
static inline void sdw_irq_create_mapping(struct sdw_slave *slave)
{
}
#endif /* CONFIG_IRQ_DOMAIN */
#endif /* __SDW_IRQ_H */