diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2021-07-05 18:55:10 +0200 |
---|---|---|
committer | Thierry Reding <thierry.reding@gmail.com> | 2021-09-02 21:35:09 +0200 |
commit | eb41f334589d66b9da6f2b1acf7963ef8ca8d94e (patch) | |
tree | a348174037fce5aa845a143141336a7407722478 /drivers/pwm/pwm-stm32-lp.c | |
parent | 52eaba4cedbda728f78d7083a05725e537b3df91 (diff) | |
download | linux-eb41f334589d66b9da6f2b1acf7963ef8ca8d94e.tar.gz linux-eb41f334589d66b9da6f2b1acf7963ef8ca8d94e.tar.bz2 linux-eb41f334589d66b9da6f2b1acf7963ef8ca8d94e.zip |
pwm: ab8500: Fix register offset calculation to not depend on probe order
The assumption that lead to commit 5e5da1e9fbee ("pwm: ab8500:
Explicitly allocate pwm chip base dynamically") was wrong: The
pwm-ab8500 devices are not directly instantiated from device tree, but
from the ab8500 mfd driver. So the pdev->id isn't -1, but a number
between 1 and 3. Now that pwmchip ids are always allocated dynamically,
this cannot easily be reverted.
Introduce a new member in the driver data struct that tracks the
hardware id and use this to calculate the register offset.
Side-note: Using chip->base to calculate the offset was never robust
because if there was already a PWM with id 1 at the time ab8500-pwm.1
was probed, the associated pwmchip would get assigned chip->base = 2 (or
something bigger).
Fixes: 5e5da1e9fbee ("pwm: ab8500: Explicitly allocate pwm chip base dynamically")
Fixes: 6173f8f4ed9c ("pwm: Move AB8500 PWM driver to PWM framework")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Diffstat (limited to 'drivers/pwm/pwm-stm32-lp.c')
0 files changed, 0 insertions, 0 deletions