diff mbox series

[v2,3/4] pwm: Autodetect default value for of_pwm_n_cells from device tree

Message ID 20210424210718.2787498-4-u.kleine-koenig@pengutronix.de
State Superseded
Headers show
Series pwm: Simplify drivers with of_pwm_n_cells = 3 | expand

Commit Message

Uwe Kleine-König April 24, 2021, 9:07 p.m. UTC
This allows to simplify all drivers that use three pwm-cells.
The only ugly side effect is that if a driver specified of_pwm_n_cells = 2
it suddenly supports device trees that use #pwm-cells = <3>. This however
isn't a bad thing because the driver doesn't need explicit support for
three cells as the core handles all the details. Also there is no such
in-tree driver.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/pwm/core.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
index 821ee1959816..c165c5822703 100644
--- a/drivers/pwm/core.c
+++ b/drivers/pwm/core.c
@@ -158,8 +158,14 @@  static void of_pwmchip_add(struct pwm_chip *chip)
 		return;
 
 	if (!chip->of_xlate) {
+		u32 pwm_cells;
+
+		if (of_property_read_u32(chip->dev->of_node, "#pwm-cells",
+					 &pwm_cells))
+			pwm_cells = 2;
+
 		chip->of_xlate = of_pwm_xlate_with_flags;
-		chip->of_pwm_n_cells = 2;
+		chip->of_pwm_n_cells = pwm_cells;
 	}
 
 	of_node_get(chip->dev->of_node);