Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'backlight-next-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight

Pull backlight updates from Lee Jones:
"Fix-ups:
- Use new of_node_name_eq() API call

Bug Fixes:
- Internally track 'enabled' state in pwm_bl
- Fix auto-generated pwm_bl brightness tables parsed by DT

* tag 'backlight-next-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight:
backlight: 88pm860x_bl: Use of_node_name_eq for node name comparisons
backlight: pwm_bl: Fix devicetree parsing with auto-generated brightness tables
backlight: pwm_bl: Re-add driver internal enabled tracking

+18 -12
+1 -1
drivers/video/backlight/88pm860x_bl.c
··· 174 174 return -ENODEV; 175 175 } 176 176 for_each_child_of_node(nproot, np) { 177 - if (!of_node_cmp(np->name, name)) { 177 + if (of_node_name_eq(np, name)) { 178 178 of_property_read_u32(np, "marvell,88pm860x-iset", 179 179 &iset); 180 180 data->iset = PM8606_WLED_CURRENT(iset);
+17 -11
drivers/video/backlight/pwm_bl.c
··· 30 30 struct device *dev; 31 31 unsigned int lth_brightness; 32 32 unsigned int *levels; 33 + bool enabled; 33 34 struct regulator *power_supply; 34 35 struct gpio_desc *enable_gpio; 35 36 unsigned int scale; ··· 51 50 int err; 52 51 53 52 pwm_get_state(pb->pwm, &state); 54 - if (state.enabled) 53 + if (pb->enabled) 55 54 return; 56 55 57 56 err = regulator_enable(pb->power_supply); ··· 66 65 67 66 if (pb->enable_gpio) 68 67 gpiod_set_value_cansleep(pb->enable_gpio, 1); 68 + 69 + pb->enabled = true; 69 70 } 70 71 71 72 static void pwm_backlight_power_off(struct pwm_bl_data *pb) ··· 75 72 struct pwm_state state; 76 73 77 74 pwm_get_state(pb->pwm, &state); 78 - if (!state.enabled) 75 + if (!pb->enabled) 79 76 return; 80 77 81 78 if (pb->enable_gpio) ··· 89 86 pwm_apply_state(pb->pwm, &state); 90 87 91 88 regulator_disable(pb->power_supply); 89 + pb->enabled = false; 92 90 } 93 91 94 92 static int compute_duty_cycle(struct pwm_bl_data *pb, int brightness) ··· 273 269 memset(data, 0, sizeof(*data)); 274 270 275 271 /* 272 + * These values are optional and set as 0 by default, the out values 273 + * are modified only if a valid u32 value can be decoded. 274 + */ 275 + of_property_read_u32(node, "post-pwm-on-delay-ms", 276 + &data->post_pwm_on_delay); 277 + of_property_read_u32(node, "pwm-off-delay-ms", &data->pwm_off_delay); 278 + 279 + data->enable_gpio = -EINVAL; 280 + 281 + /* 276 282 * Determine the number of brightness levels, if this property is not 277 283 * set a default table of brightness levels will be used. 278 284 */ ··· 394 380 data->max_brightness--; 395 381 } 396 382 397 - /* 398 - * These values are optional and set as 0 by default, the out values 399 - * are modified only if a valid u32 value can be decoded. 400 - */ 401 - of_property_read_u32(node, "post-pwm-on-delay-ms", 402 - &data->post_pwm_on_delay); 403 - of_property_read_u32(node, "pwm-off-delay-ms", &data->pwm_off_delay); 404 - 405 - data->enable_gpio = -EINVAL; 406 383 return 0; 407 384 } 408 385 ··· 488 483 pb->check_fb = data->check_fb; 489 484 pb->exit = data->exit; 490 485 pb->dev = &pdev->dev; 486 + pb->enabled = false; 491 487 pb->post_pwm_on_delay = data->post_pwm_on_delay; 492 488 pb->pwm_off_delay = data->pwm_off_delay; 493 489