Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a030363e authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Greg Kroah-Hartman
Browse files

pwm: Clear chip_data in pwm_put()



commit e926b12c611c2095c7976e2ed31753ad6eb5ff1a upstream.

After a PWM is disposed by its user the per chip data becomes invalid.
Clear the data in common code instead of the device drivers to get
consistent behaviour. Before this patch only three of nine drivers
cleaned up here.

Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9e08b4b7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -874,6 +874,7 @@ void pwm_put(struct pwm_device *pwm)
	if (pwm->chip->ops->free)
		pwm->chip->ops->free(pwm->chip, pwm);

	pwm_set_chip_data(pwm, NULL);
	pwm->label = NULL;

	module_put(pwm->chip->ops->owner);
+0 −1
Original line number Diff line number Diff line
@@ -84,7 +84,6 @@ static void berlin_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
{
	struct berlin_pwm_channel *channel = pwm_get_chip_data(pwm);

	pwm_set_chip_data(pwm, NULL);
	kfree(channel);
}

+0 −1
Original line number Diff line number Diff line
@@ -176,7 +176,6 @@ static void pca9685_pwm_gpio_free(struct gpio_chip *gpio, unsigned int offset)
	pm_runtime_put(pca->chip.dev);
	mutex_lock(&pca->lock);
	pwm = &pca->chip.pwms[offset];
	pwm_set_chip_data(pwm, NULL);
	mutex_unlock(&pca->lock);
}

+0 −1
Original line number Diff line number Diff line
@@ -238,7 +238,6 @@ static int pwm_samsung_request(struct pwm_chip *chip, struct pwm_device *pwm)
static void pwm_samsung_free(struct pwm_chip *chip, struct pwm_device *pwm)
{
	devm_kfree(chip->dev, pwm_get_chip_data(pwm));
	pwm_set_chip_data(pwm, NULL);
}

static int pwm_samsung_enable(struct pwm_chip *chip, struct pwm_device *pwm)