/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __LINUX_DEVM_HELPERS_H
#define __LINUX_DEVM_HELPERS_H

/*
 * Functions which do automatically cancel operations or release resources upon
 * driver detach.
 *
 * These should be helpful to avoid mixing the manual and devm-based resource
 * management which can be source of annoying, rarely occurring,
 * hard-to-reproduce bugs.
 *
 * Please take into account that devm based cancellation may be performed some
 * time after the remove() is ran.
 *
 * Thus mixing devm and manual resource management can easily cause problems
 * when unwinding operations with dependencies. IRQ scheduling a work in a queue
 * is typical example where IRQs are often devm-managed and WQs are manually
 * cleaned at remove(). If IRQs are not manually freed at remove() (and this is
 * often the case when we use devm for IRQs) we have a period of time after
 * remove() - and before devm managed IRQs are freed - where new IRQ may fire
 * and schedule a work item which won't be cancelled because remove() was
 * already ran.
 */

#include <linux/device.h>
#include <linux/workqueue.h>

static inline void devm_delayed_work_drop(void *res)
{
	cancel_delayed_work_sync(res);
}

/**
 * devm_delayed_work_autocancel - Resource-managed delayed work allocation
 * @dev:	Device which lifetime work is bound to
 * @w:		Work item to be queued
 * @worker:	Worker function
 *
 * Initialize delayed work which is automatically cancelled when driver is
 * detached. A few drivers need delayed work which must be cancelled before
 * driver is detached to avoid accessing removed resources.
 * devm_delayed_work_autocancel() can be used to omit the explicit
 * cancelleation when driver is detached.
 */
static inline int devm_delayed_work_autocancel(struct device *dev,
					       struct delayed_work *w,
					       work_func_t worker)
{
	INIT_DELAYED_WORK(w, worker);
	return devm_add_action(dev, devm_delayed_work_drop, w);
}

#endif
