mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

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>
38 lines
794 B
C
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 */
|