Lines Matching +full:vcom +full:- +full:mode

1 // SPDX-License-Identifier: GPL-2.0+
5 * base on panel-kingdisplay-kd097d04.c
31 const struct drm_display_mode *mode;
52 { 0x80, 0x03 }, /* 0X03:4-LANE; 0X02:3-LANE; 0X01:2-LANE */
55 /* Set VCOM */
67 { 0x20, 0x28 }, /* VGL_R = -12V */
68 { 0x21, 0x28 }, /* VGL_R2 = -12V */
83 { 0x41, 0xA0 }, /* LN = 640->1280 line */
91 { 0x59, 0x0A }, /* VCL = -2.9V */
93 { 0x5B, 0x14 }, /* VGL = -11V */
232 .mode = &ltk101b4029w_mode,
477 .mode = &ltk500hd1829_mode,
491 struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
496 dev_err(panel->dev, "failed to set display off: %d\n", ret);
500 dev_err(panel->dev, "failed to enter sleep mode: %d\n", ret);
503 /* 120ms to enter sleep mode */
506 regulator_disable(ctx->iovcc);
507 regulator_disable(ctx->vcc);
515 struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
519 ret = regulator_enable(ctx->vcc);
521 dev_err(ctx->dev, "Failed to enable vci supply: %d\n", ret);
524 ret = regulator_enable(ctx->iovcc);
526 dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret);
530 gpiod_set_value_cansleep(ctx->reset_gpio, 1);
533 gpiod_set_value_cansleep(ctx->reset_gpio, 0);
538 for (i = 0; i < ctx->panel_desc->num_init; i++) {
539 ret = mipi_dsi_generic_write(dsi, &ctx->panel_desc->init[i],
542 dev_err(panel->dev, "failed to write init cmds: %d\n", ret);
549 dev_err(panel->dev, "failed to exit sleep mode: %d\n", ret);
553 /* 120ms to exit sleep mode */
558 dev_err(panel->dev, "failed to set display on: %d\n", ret);
565 regulator_disable(ctx->iovcc);
567 regulator_disable(ctx->vcc);
575 struct drm_display_mode *mode;
577 mode = drm_mode_duplicate(connector->dev, ctx->panel_desc->mode);
578 if (!mode) {
579 dev_err(ctx->dev, "failed to add mode %ux%u@%u\n",
580 ctx->panel_desc->mode->hdisplay, ctx->panel_desc->mode->vdisplay,
581 drm_mode_vrefresh(ctx->panel_desc->mode));
582 return -ENOMEM;
585 drm_mode_set_name(mode);
587 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
588 connector->display_info.width_mm = mode->width_mm;
589 connector->display_info.height_mm = mode->height_mm;
590 drm_mode_probed_add(connector, mode);
604 struct device *dev = &dsi->dev;
613 ctx->panel_desc = of_device_get_match_data(dev);
614 if (!ctx->panel_desc)
615 return -EINVAL;
617 ctx->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
618 if (IS_ERR(ctx->reset_gpio)) {
620 return PTR_ERR(ctx->reset_gpio);
623 ctx->vcc = devm_regulator_get(dev, "vcc");
624 if (IS_ERR(ctx->vcc)) {
625 ret = PTR_ERR(ctx->vcc);
626 if (ret != -EPROBE_DEFER)
631 ctx->iovcc = devm_regulator_get(dev, "iovcc");
632 if (IS_ERR(ctx->iovcc)) {
633 ret = PTR_ERR(ctx->iovcc);
634 if (ret != -EPROBE_DEFER)
641 ctx->dev = dev;
643 dsi->lanes = 4;
644 dsi->format = MIPI_DSI_FMT_RGB888;
645 dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
648 ret = drm_panel_of_backlight(&ctx->panel);
652 drm_panel_add(&ctx->panel);
657 drm_panel_remove(&ctx->panel);
671 dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret);
673 drm_panel_remove(&ctx->panel);
691 .name = "panel-leadtek-ltk500hd1829",
699 MODULE_AUTHOR("Heiko Stuebner <heiko.stuebner@theobroma-systems.com>");