* pwm_get() in core.c does not save best match before setting period and polarity
@ 2014-09-09 12:15 Ralph Hempel
0 siblings, 0 replies; only message in thread
From: Ralph Hempel @ 2014-09-09 12:15 UTC (permalink / raw)
To: s.hauer; +Cc: linux-kernel
The PWM core does not appear to respect the settings in the pwm_lookup
table in the ev3dev projects implementation of a board file. Root cause
is that pwm_get() does not save the pwm_lookup entry for the best
matching device, and therefore ends up using period and polarity from a
pointer that's past the end of the table.
These values are often 0, which translates to PWM_POLARITY_NORMAL, but
it can be anything really...
First patch ever submitted - fun times finding this one - the bug was in
the last place I looked
-----------------------------------------------------------------------
Make the match loop save the best match so that period and polarity can
be set correctly
-----------------------------------------------------------------------
diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
index 4b66bf0..f244e2c 100644
--- a/drivers/pwm/core.c
+++ b/drivers/pwm/core.c
@@ -605,6 +605,7 @@ struct pwm_device *pwm_get(struct device *dev, const
char *con_id)
unsigned int index = 0;
unsigned int best = 0;
struct pwm_lookup *p;
+ struct pwm_lookup *pl = NULL;
unsigned int match;
/* look up via DT first */
@@ -651,6 +652,7 @@ struct pwm_device *pwm_get(struct device *dev, const
char *con_id)
}
if (match > best) {
+ pl = p;
chip = pwmchip_find_by_name(p->provider);
index = p->index;
@@ -668,8 +670,8 @@ struct pwm_device *pwm_get(struct device *dev, const
char *con_id)
if (IS_ERR(pwm))
return pwm;
- pwm_set_period(pwm, p->period);
- pwm_set_polarity(pwm, p->polarity);
+ pwm_set_period(pwm, pl->period);
+ pwm_set_polarity(pwm, pl->polarity);
return pwm;
Ralph Hempel (rhempel@hempeldesigngroup.com)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2014-09-09 12:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-09 12:15 pwm_get() in core.c does not save best match before setting period and polarity Ralph Hempel
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.