コード例 #1
0
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 */
}
コード例 #2
0
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;
}