pwm: Autodetect default value for of_pwm_n_cells from device tree
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 10 May 2021 14:06:39 +0000 (16:06 +0200)
committerThierry Reding <thierry.reding@gmail.com>
Tue, 25 May 2021 16:18:25 +0000 (18:18 +0200)
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>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
drivers/pwm/core.c

index 821ee19..c165c58 100644 (file)
@@ -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);