static int hva40wv1_display_init(struct hva40wv1_lcd *lcd) { struct mcde_display_device *ddev = lcd->ddev; int ret = 0; dev_dbg(lcd->dev, "%s: Initialise display\n", __func__); /* Turn off backlight until display is initialised */ if (lcd->pd->bl_on_off) lcd->pd->bl_on_off(false); lcd->turn_on_backlight = false; ret |= hva40wv1_dsi_read_panel_id(lcd); ret |= hva40wv1_dsi_dcs_write_sequence(ddev, DCS_CMD_SEQ_PWR_ON_INIT); if (lcd->pd->bl_ctrl) ret |= hva40wv1_update_brightness(ddev, lcd->current_brightness); return 0; /* assume OK in case of manufacturing test */ }
static int hva40wv1_set_brightness(struct backlight_device *bd) { int ret = 0; int brightness = bd->props.brightness; struct hva40wv1_lcd *lcd = bl_get_data(bd); dev_dbg(&bd->dev, "lcd set brightness called with %d\n", brightness); if ((brightness < 0) || (brightness > bd->props.max_brightness)) { dev_err(&bd->dev, "lcd brightness should be 0 to %d.\n", bd->props.max_brightness); return -EINVAL; } mutex_lock(&lcd->lock); if (lcd->ddev->power_mode != MCDE_DISPLAY_PM_OFF) { ret = hva40wv1_update_brightness(lcd->ddev, brightness); if (ret) { dev_err(&bd->dev, "lcd brightness setting failed.\n"); return -EIO; } if (lcd->pd->bl_en_gpio != -1) gpio_set_value(lcd->pd->bl_en_gpio, 1); } else if (lcd->pd->bl_en_gpio != -1) { gpio_set_value(lcd->pd->bl_en_gpio, 0); } lcd->current_brightness = brightness; mutex_unlock(&lcd->lock); return ret; }