mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
pwm: atmel-tcb: Don't track polarity in driver data
[ Upstream commit 28a1dadc49 ]
struct atmel_tcb_pwm_device::polarity is only used in atmel_tcb_pwm_enable
and atmel_tcb_pwm_disable(). These functions are only called by
atmel_tcb_pwm_apply() after the member variable was assigned to
state->polarity. So the value assigned in atmel_tcb_pwm_request() is
never used and the member can be dropped from struct atmel_tcb_pwm_device.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Stable-dep-of: 37f7707077f5 ("pwm: atmel-tcb: Fix race condition and convert to guards")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
cd2c4acaab
commit
cffe0ecfb3
@@ -34,7 +34,6 @@
|
|||||||
ATMEL_TC_BEEVT | ATMEL_TC_BSWTRG)
|
ATMEL_TC_BEEVT | ATMEL_TC_BSWTRG)
|
||||||
|
|
||||||
struct atmel_tcb_pwm_device {
|
struct atmel_tcb_pwm_device {
|
||||||
enum pwm_polarity polarity; /* PWM polarity */
|
|
||||||
unsigned div; /* PWM clock divider */
|
unsigned div; /* PWM clock divider */
|
||||||
unsigned duty; /* PWM duty expressed in clk cycles */
|
unsigned duty; /* PWM duty expressed in clk cycles */
|
||||||
unsigned period; /* PWM period expressed in clk cycles */
|
unsigned period; /* PWM period expressed in clk cycles */
|
||||||
@@ -80,7 +79,6 @@ static int atmel_tcb_pwm_request(struct pwm_chip *chip,
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
tcbpwm->polarity = PWM_POLARITY_NORMAL;
|
|
||||||
tcbpwm->duty = 0;
|
tcbpwm->duty = 0;
|
||||||
tcbpwm->period = 0;
|
tcbpwm->period = 0;
|
||||||
tcbpwm->div = 0;
|
tcbpwm->div = 0;
|
||||||
@@ -123,12 +121,12 @@ static void atmel_tcb_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
|
|||||||
clk_disable_unprepare(tcbpwmc->clk);
|
clk_disable_unprepare(tcbpwmc->clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void atmel_tcb_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
|
static void atmel_tcb_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||||
|
enum pwm_polarity polarity)
|
||||||
{
|
{
|
||||||
struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
|
struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
|
||||||
struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
|
struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
|
||||||
unsigned cmr;
|
unsigned cmr;
|
||||||
enum pwm_polarity polarity = tcbpwm->polarity;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If duty is 0 the timer will be stopped and we have to
|
* If duty is 0 the timer will be stopped and we have to
|
||||||
@@ -180,12 +178,12 @@ static void atmel_tcb_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
|
|||||||
spin_unlock(&tcbpwmc->lock);
|
spin_unlock(&tcbpwmc->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int atmel_tcb_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
|
static int atmel_tcb_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||||
|
enum pwm_polarity polarity)
|
||||||
{
|
{
|
||||||
struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
|
struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
|
||||||
struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
|
struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
|
||||||
u32 cmr;
|
u32 cmr;
|
||||||
enum pwm_polarity polarity = tcbpwm->polarity;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If duty is 0 the timer will be stopped and we have to
|
* If duty is 0 the timer will be stopped and we have to
|
||||||
@@ -345,15 +343,11 @@ static int atmel_tcb_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||||||
static int atmel_tcb_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
static int atmel_tcb_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||||
const struct pwm_state *state)
|
const struct pwm_state *state)
|
||||||
{
|
{
|
||||||
struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
|
|
||||||
struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
|
|
||||||
int duty_cycle, period;
|
int duty_cycle, period;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tcbpwm->polarity = state->polarity;
|
|
||||||
|
|
||||||
if (!state->enabled) {
|
if (!state->enabled) {
|
||||||
atmel_tcb_pwm_disable(chip, pwm);
|
atmel_tcb_pwm_disable(chip, pwm, state->polarity);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,7 +358,7 @@ static int atmel_tcb_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return atmel_tcb_pwm_enable(chip, pwm);
|
return atmel_tcb_pwm_enable(chip, pwm, state->polarity);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct pwm_ops atmel_tcb_pwm_ops = {
|
static const struct pwm_ops atmel_tcb_pwm_ops = {
|
||||||
|
|||||||
Reference in New Issue
Block a user