aboutsummaryrefslogtreecommitdiff
path: root/include/linux/pwm.h
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2024-02-14 10:33:28 +0100
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2024-04-26 21:29:16 +0200
commit05947224ff469bf17b3791fd009bc27ce5151997 (patch)
treef0de00606652bfd6cc833e32ba5090198626f8de /include/linux/pwm.h
parent79dedfadb79e527ca4dc6f3727dace96e3333f82 (diff)
pwm: Ensure that pwm_chips are allocated using pwmchip_alloc()
Memory holding a struct device must not be freed before the reference count drops to zero. So a struct pwm_chip must not live in memory freed by a driver on unbind. All in-tree drivers were fixed accordingly, but as out-of-tree drivers, that were not adapted, still compile fine, catch these in pwmchip_add(). Link: https://lore.kernel.org/r/35f5b229c98f78b2f6ce2397259a4a936be477c0.1707900770.git.u.kleine-koenig@pengutronix.de Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'include/linux/pwm.h')
-rw-r--r--include/linux/pwm.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/pwm.h b/include/linux/pwm.h
index 4a6568dfdf3f..94a642a88817 100644
--- a/include/linux/pwm.h
+++ b/include/linux/pwm.h
@@ -272,6 +272,7 @@ struct pwm_ops {
* @npwm: number of PWMs controlled by this chip
* @of_xlate: request a PWM device given a device tree PWM specifier
* @atomic: can the driver's ->apply() be called in atomic context
+ * @uses_pwmchip_alloc: signals if pwmchip_allow was used to allocate this chip
* @driver_data: Private pointer for driver specific info
* @pwms: array of PWM devices allocated by the framework
*/
@@ -287,6 +288,7 @@ struct pwm_chip {
bool atomic;
/* only used internally by the PWM framework */
+ bool uses_pwmchip_alloc;
void *driver_data;
struct pwm_device *pwms;
};