On 7/21/21 9:01 PM, Marek Vasut wrote:
[...]
@@ -486,18 +500,6 @@ static int pwm_backlight_probe(struct platform_device *pdev) goto err_alloc; } - /* - * If the GPIO is not known to be already configured as output, that - * is, if gpiod_get_direction returns either 1 or -EINVAL, change the - * direction to output and set the GPIO as active. - * Do not force the GPIO to active when it was already output as it - * could cause backlight flickering or we would enable the backlight too - * early. Leave the decision of the initial backlight state for later. - */ - if (pb->enable_gpio && - gpiod_get_direction(pb->enable_gpio) != 0) - gpiod_direction_output(pb->enable_gpio, 1);
pwm_backlight_initial_power_state() is still called after pwm_apply_state() in pwm_backlight_probe(), so that might still be too late, no ?
The initial pwm_apply_state() is essentially a nop or, perhaps, a sanity check if you prefer to think if it that way.
It can change the PWM period in some (non-DT) cases but only if the PWM is not already running... and the change of period should not start it running.
All right, let me give this a try.
ACK, for this case I have here, this works too. Can you submit a proper patch, including my AB/TB and I think also the Fixes tag ?