Lines Matching +full:pps +full:- +full:gpio
1 // SPDX-License-Identifier: GPL-2.0-only
6 #include <linux/gpio/consumer.h>
41 gpiod_set_value_cansleep(ctx->reset_gpio, 0); in novatek_nt37801_reset()
43 gpiod_set_value_cansleep(ctx->reset_gpio, 1); in novatek_nt37801_reset()
45 gpiod_set_value_cansleep(ctx->reset_gpio, 0); in novatek_nt37801_reset()
57 struct mipi_dsi_device *dsi = ctx->dsi; in novatek_nt37801_on()
60 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in novatek_nt37801_on()
114 struct mipi_dsi_device *dsi = ctx->dsi; in novatek_nt37801_off()
117 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in novatek_nt37801_off()
131 struct device *dev = &ctx->dsi->dev; in novatek_nt37801_prepare()
132 struct drm_dsc_picture_parameter_set pps; in novatek_nt37801_prepare() local
136 ctx->supplies); in novatek_nt37801_prepare()
146 drm_dsc_pps_payload_pack(&pps, &ctx->dsc); in novatek_nt37801_prepare()
148 ret = mipi_dsi_picture_parameter_set(ctx->dsi, &pps); in novatek_nt37801_prepare()
150 dev_err(panel->dev, "failed to transmit PPS: %d\n", ret); in novatek_nt37801_prepare()
154 ret = mipi_dsi_compression_mode(ctx->dsi, true); in novatek_nt37801_prepare()
165 gpiod_set_value_cansleep(ctx->reset_gpio, 1); in novatek_nt37801_prepare()
167 ctx->supplies); in novatek_nt37801_prepare()
175 struct device *dev = &ctx->dsi->dev; in novatek_nt37801_unprepare()
180 dev_err(dev, "Failed to un-initialize panel: %d\n", ret); in novatek_nt37801_unprepare()
182 gpiod_set_value_cansleep(ctx->reset_gpio, 1); in novatek_nt37801_unprepare()
185 ctx->supplies); in novatek_nt37801_unprepare()
222 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in novatek_nt37801_bl_update_status()
228 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in novatek_nt37801_bl_update_status()
240 struct device *dev = &dsi->dev; in novatek_nt37801_create_backlight()
253 struct device *dev = &dsi->dev; in novatek_nt37801_probe()
266 &ctx->supplies); in novatek_nt37801_probe()
270 ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in novatek_nt37801_probe()
271 if (IS_ERR(ctx->reset_gpio)) in novatek_nt37801_probe()
272 return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), in novatek_nt37801_probe()
273 "Failed to get reset-gpios\n"); in novatek_nt37801_probe()
275 ctx->dsi = dsi; in novatek_nt37801_probe()
278 dsi->lanes = 4; in novatek_nt37801_probe()
279 dsi->format = MIPI_DSI_FMT_RGB888; in novatek_nt37801_probe()
280 dsi->mode_flags = MIPI_DSI_MODE_NO_EOT_PACKET | MIPI_DSI_CLOCK_NON_CONTINUOUS; in novatek_nt37801_probe()
282 ctx->panel.prepare_prev_first = true; in novatek_nt37801_probe()
283 ctx->panel.backlight = novatek_nt37801_create_backlight(dsi); in novatek_nt37801_probe()
284 if (IS_ERR(ctx->panel.backlight)) in novatek_nt37801_probe()
285 return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight), in novatek_nt37801_probe()
288 drm_panel_add(&ctx->panel); in novatek_nt37801_probe()
291 dsi->dsc = &ctx->dsc; in novatek_nt37801_probe()
292 ctx->dsc.dsc_version_major = 1; in novatek_nt37801_probe()
293 ctx->dsc.dsc_version_minor = 1; in novatek_nt37801_probe()
294 ctx->dsc.slice_height = 40; in novatek_nt37801_probe()
295 ctx->dsc.slice_width = 720; in novatek_nt37801_probe()
296 ctx->dsc.slice_count = 1440 / ctx->dsc.slice_width; in novatek_nt37801_probe()
297 ctx->dsc.bits_per_component = 8; in novatek_nt37801_probe()
298 ctx->dsc.bits_per_pixel = 8 << 4; /* 4 fractional bits */ in novatek_nt37801_probe()
299 ctx->dsc.block_pred_enable = true; in novatek_nt37801_probe()
303 drm_panel_remove(&ctx->panel); in novatek_nt37801_probe()
317 dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); in novatek_nt37801_remove()
319 drm_panel_remove(&ctx->panel); in novatek_nt37801_remove()
332 .name = "panel-novatek-nt37801",