It is expected that board files would have: static unsigned int bl_levels[] = { 0, 50, 100, 150, 200, 250, }; static struct platform_pwm_backlight_data bl_data = { .levels = bl_levels, .max_brightness = ARRAY_SIZE(bl_levels), .dft_brightness = 4, .pwm_period_ns = 7812500, }; In this case the max_brightness would be out of range in the levels array. Decrement the received max_brightness in every case (DT or non DT) when the levels has been provided. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx> --- drivers/video/backlight/pwm_bl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c index 069983c..f0d6854 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c @@ -142,7 +142,6 @@ static int pwm_backlight_parse_dt(struct device *dev, } data->dft_brightness = value; - data->max_brightness--; } /* @@ -202,6 +201,7 @@ static int pwm_backlight_probe(struct platform_device *pdev) } if (data->levels) { + data->max_brightness--; max = data->levels[data->max_brightness]; pb->levels = data->levels; } else -- 1.8.1.1 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html