Lines Matching +full:panel +full:- +full:dsi
1 // SPDX-License-Identifier: GPL-2.0-only
4 * Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree:
33 struct drm_panel panel; member
34 struct mipi_dsi_device *dsi; member
42 struct ebbg_ft8719 *to_ebbg_ft8719(struct drm_panel *panel) in to_ebbg_ft8719() argument
44 return container_of(panel, struct ebbg_ft8719, panel); in to_ebbg_ft8719()
49 gpiod_set_value_cansleep(ctx->reset_gpio, 0); in ebbg_ft8719_reset()
51 gpiod_set_value_cansleep(ctx->reset_gpio, 1); in ebbg_ft8719_reset()
53 gpiod_set_value_cansleep(ctx->reset_gpio, 0); in ebbg_ft8719_reset()
59 struct mipi_dsi_device *dsi = ctx->dsi; in ebbg_ft8719_on() local
60 struct device *dev = &dsi->dev; in ebbg_ft8719_on()
63 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in ebbg_ft8719_on()
65 ret = mipi_dsi_dcs_set_display_brightness(dsi, 0x00ff); in ebbg_ft8719_on()
71 mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_CONTROL_DISPLAY, 0x24); in ebbg_ft8719_on()
72 mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_POWER_SAVE, 0x00); in ebbg_ft8719_on()
74 ret = mipi_dsi_dcs_exit_sleep_mode(dsi); in ebbg_ft8719_on()
81 ret = mipi_dsi_dcs_set_display_on(dsi); in ebbg_ft8719_on()
92 struct mipi_dsi_device *dsi = ctx->dsi; in ebbg_ft8719_off() local
93 struct device *dev = &dsi->dev; in ebbg_ft8719_off()
96 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in ebbg_ft8719_off()
98 ret = mipi_dsi_dcs_set_display_off(dsi); in ebbg_ft8719_off()
105 ret = mipi_dsi_dcs_enter_sleep_mode(dsi); in ebbg_ft8719_off()
115 static int ebbg_ft8719_prepare(struct drm_panel *panel) in ebbg_ft8719_prepare() argument
117 struct ebbg_ft8719 *ctx = to_ebbg_ft8719(panel); in ebbg_ft8719_prepare()
118 struct device *dev = &ctx->dsi->dev; in ebbg_ft8719_prepare()
121 ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); in ebbg_ft8719_prepare()
129 dev_err(dev, "Failed to initialize panel: %d\n", ret); in ebbg_ft8719_prepare()
130 gpiod_set_value_cansleep(ctx->reset_gpio, 1); in ebbg_ft8719_prepare()
137 static int ebbg_ft8719_unprepare(struct drm_panel *panel) in ebbg_ft8719_unprepare() argument
139 struct ebbg_ft8719 *ctx = to_ebbg_ft8719(panel); in ebbg_ft8719_unprepare()
140 struct device *dev = &ctx->dsi->dev; in ebbg_ft8719_unprepare()
145 dev_err(dev, "Failed to un-initialize panel: %d\n", ret); in ebbg_ft8719_unprepare()
147 gpiod_set_value_cansleep(ctx->reset_gpio, 1); in ebbg_ft8719_unprepare()
149 ret = regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); in ebbg_ft8719_unprepare()
151 dev_err(panel->dev, "Failed to disable regulators: %d\n", ret); in ebbg_ft8719_unprepare()
170 static int ebbg_ft8719_get_modes(struct drm_panel *panel, in ebbg_ft8719_get_modes() argument
175 mode = drm_mode_duplicate(connector->dev, &ebbg_ft8719_mode); in ebbg_ft8719_get_modes()
177 return -ENOMEM; in ebbg_ft8719_get_modes()
181 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; in ebbg_ft8719_get_modes()
182 connector->display_info.width_mm = mode->width_mm; in ebbg_ft8719_get_modes()
183 connector->display_info.height_mm = mode->height_mm; in ebbg_ft8719_get_modes()
195 static int ebbg_ft8719_probe(struct mipi_dsi_device *dsi) in ebbg_ft8719_probe() argument
197 struct device *dev = &dsi->dev; in ebbg_ft8719_probe()
203 return -ENOMEM; in ebbg_ft8719_probe()
205 for (i = 0; i < ARRAY_SIZE(ctx->supplies); i++) in ebbg_ft8719_probe()
206 ctx->supplies[i].supply = regulator_names[i]; in ebbg_ft8719_probe()
208 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies), in ebbg_ft8719_probe()
209 ctx->supplies); in ebbg_ft8719_probe()
213 for (i = 0; i < ARRAY_SIZE(ctx->supplies); i++) { in ebbg_ft8719_probe()
214 ret = regulator_set_load(ctx->supplies[i].consumer, in ebbg_ft8719_probe()
221 ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); in ebbg_ft8719_probe()
222 if (IS_ERR(ctx->reset_gpio)) in ebbg_ft8719_probe()
223 return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), in ebbg_ft8719_probe()
224 "Failed to get reset-gpios\n"); in ebbg_ft8719_probe()
226 ctx->dsi = dsi; in ebbg_ft8719_probe()
227 mipi_dsi_set_drvdata(dsi, ctx); in ebbg_ft8719_probe()
229 dsi->lanes = 4; in ebbg_ft8719_probe()
230 dsi->format = MIPI_DSI_FMT_RGB888; in ebbg_ft8719_probe()
231 dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | in ebbg_ft8719_probe()
234 drm_panel_init(&ctx->panel, dev, &ebbg_ft8719_panel_funcs, in ebbg_ft8719_probe()
237 ret = drm_panel_of_backlight(&ctx->panel); in ebbg_ft8719_probe()
241 drm_panel_add(&ctx->panel); in ebbg_ft8719_probe()
243 ret = mipi_dsi_attach(dsi); in ebbg_ft8719_probe()
245 dev_err(dev, "Failed to attach to DSI host: %d\n", ret); in ebbg_ft8719_probe()
246 drm_panel_remove(&ctx->panel); in ebbg_ft8719_probe()
253 static void ebbg_ft8719_remove(struct mipi_dsi_device *dsi) in ebbg_ft8719_remove() argument
255 struct ebbg_ft8719 *ctx = mipi_dsi_get_drvdata(dsi); in ebbg_ft8719_remove()
258 ret = mipi_dsi_detach(dsi); in ebbg_ft8719_remove()
260 dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); in ebbg_ft8719_remove()
262 drm_panel_remove(&ctx->panel); in ebbg_ft8719_remove()
275 .name = "panel-ebbg-ft8719",
282 MODULE_DESCRIPTION("DRM driver for EBBG FT8719 video dsi panel");