On 20/07/17 09:06, Pavel Machek wrote: > Hi! > >>> --- a/drivers/video/backlight/pwm_bl.c >>> +++ b/drivers/video/backlight/pwm_bl.c >>> @@ -10,6 +10,7 @@ >>> * published by the Free Software Foundation. >>> */ >>> +#include <linux/delay.h> >>> #include <linux/gpio/consumer.h> >>> #include <linux/gpio.h> >>> #include <linux/module.h> >>> @@ -35,6 +36,7 @@ struct pwm_bl_data { >>> struct gpio_desc *enable_gpio; >>> unsigned int scale; >>> bool legacy; >>> + unsigned int pwm_delay[2]; >> >> Two named members would be better here (eliminating the "magic" 0 >> and 1). > > My thought, too. > >>> @@ -56,6 +58,9 @@ static void pwm_backlight_power_on(struct pwm_bl_data *pb, int brightness) >>> pwm_enable(pb->pwm); >>> + if (pb->pwm_delay[0]) >>> + usleep_range(pb->pwm_delay[0], pb->pwm_delay[0] * 2); > > Plus I'd just do the delay unconditionally :-). ... does this still apply if this code is switched to msleep()? msleep() has no wait avoidance[1] and if lots of drivers are reckless about sleeping for 10ms it soon starts to show up in the boot time (especially optimized ones). Daniel. [1] As it happens I can't see that many early bail out paths in usleep_range() either.