Lines Matching +full:panel +full:- +full:dsi
8 * From internet archives, the panel for Nexus 7 2nd Gen, 2013 model is a
10 * http://panelone.net/en/7-0-inch/JDI_LT070ME05000_7.0_inch-datasheet
44 struct mipi_dsi_device *dsi; member
59 static inline struct jdi_panel *to_jdi_panel(struct drm_panel *panel) in to_jdi_panel() argument
61 return container_of(panel, struct jdi_panel, base); in to_jdi_panel()
66 struct mipi_dsi_device *dsi = jdi->dsi; in jdi_panel_init() local
67 struct device *dev = &jdi->dsi->dev; in jdi_panel_init()
70 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in jdi_panel_init()
72 ret = mipi_dsi_dcs_soft_reset(dsi); in jdi_panel_init()
78 ret = mipi_dsi_dcs_set_pixel_format(dsi, MIPI_DCS_PIXEL_FMT_24BIT << 4); in jdi_panel_init()
84 ret = mipi_dsi_dcs_set_column_address(dsi, 0, jdi->mode->hdisplay - 1); in jdi_panel_init()
90 ret = mipi_dsi_dcs_set_page_address(dsi, 0, jdi->mode->vdisplay - 1); in jdi_panel_init()
102 ret = mipi_dsi_dcs_write(dsi, MIPI_DCS_WRITE_CONTROL_DISPLAY, in jdi_panel_init()
110 ret = mipi_dsi_dcs_write(dsi, MIPI_DCS_WRITE_POWER_SAVE, in jdi_panel_init()
117 ret = mipi_dsi_dcs_exit_sleep_mode(dsi); in jdi_panel_init()
125 ret = mipi_dsi_generic_write(dsi, (u8[]){0xB0, 0x00}, 2); in jdi_panel_init()
134 ret = mipi_dsi_generic_write(dsi, (u8[]) in jdi_panel_init()
144 ret = mipi_dsi_generic_write(dsi, (u8[]){0xB0, 0x03}, 2); in jdi_panel_init()
156 struct mipi_dsi_device *dsi = jdi->dsi; in jdi_panel_on() local
157 struct device *dev = &jdi->dsi->dev; in jdi_panel_on()
160 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in jdi_panel_on()
162 ret = mipi_dsi_dcs_set_display_on(dsi); in jdi_panel_on()
171 struct mipi_dsi_device *dsi = jdi->dsi; in jdi_panel_off() local
172 struct device *dev = &jdi->dsi->dev; in jdi_panel_off()
175 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in jdi_panel_off()
177 ret = mipi_dsi_dcs_set_display_off(dsi); in jdi_panel_off()
181 ret = mipi_dsi_dcs_enter_sleep_mode(dsi); in jdi_panel_off()
188 static int jdi_panel_disable(struct drm_panel *panel) in jdi_panel_disable() argument
190 struct jdi_panel *jdi = to_jdi_panel(panel); in jdi_panel_disable()
192 if (!jdi->enabled) in jdi_panel_disable()
195 backlight_disable(jdi->backlight); in jdi_panel_disable()
197 jdi->enabled = false; in jdi_panel_disable()
202 static int jdi_panel_unprepare(struct drm_panel *panel) in jdi_panel_unprepare() argument
204 struct jdi_panel *jdi = to_jdi_panel(panel); in jdi_panel_unprepare()
205 struct device *dev = &jdi->dsi->dev; in jdi_panel_unprepare()
208 if (!jdi->prepared) in jdi_panel_unprepare()
213 ret = regulator_bulk_disable(ARRAY_SIZE(jdi->supplies), jdi->supplies); in jdi_panel_unprepare()
217 gpiod_set_value(jdi->enable_gpio, 0); in jdi_panel_unprepare()
219 gpiod_set_value(jdi->reset_gpio, 1); in jdi_panel_unprepare()
221 gpiod_set_value(jdi->dcdc_en_gpio, 0); in jdi_panel_unprepare()
223 jdi->prepared = false; in jdi_panel_unprepare()
228 static int jdi_panel_prepare(struct drm_panel *panel) in jdi_panel_prepare() argument
230 struct jdi_panel *jdi = to_jdi_panel(panel); in jdi_panel_prepare()
231 struct device *dev = &jdi->dsi->dev; in jdi_panel_prepare()
234 if (jdi->prepared) in jdi_panel_prepare()
237 ret = regulator_bulk_enable(ARRAY_SIZE(jdi->supplies), jdi->supplies); in jdi_panel_prepare()
245 gpiod_set_value(jdi->dcdc_en_gpio, 1); in jdi_panel_prepare()
248 gpiod_set_value(jdi->reset_gpio, 0); in jdi_panel_prepare()
251 gpiod_set_value(jdi->enable_gpio, 1); in jdi_panel_prepare()
256 dev_err(dev, "failed to init panel: %d\n", ret); in jdi_panel_prepare()
262 dev_err(dev, "failed to set panel on: %d\n", ret); in jdi_panel_prepare()
266 jdi->prepared = true; in jdi_panel_prepare()
271 ret = regulator_bulk_disable(ARRAY_SIZE(jdi->supplies), jdi->supplies); in jdi_panel_prepare()
275 gpiod_set_value(jdi->enable_gpio, 0); in jdi_panel_prepare()
277 gpiod_set_value(jdi->reset_gpio, 1); in jdi_panel_prepare()
279 gpiod_set_value(jdi->dcdc_en_gpio, 0); in jdi_panel_prepare()
284 static int jdi_panel_enable(struct drm_panel *panel) in jdi_panel_enable() argument
286 struct jdi_panel *jdi = to_jdi_panel(panel); in jdi_panel_enable()
288 if (jdi->enabled) in jdi_panel_enable()
291 backlight_enable(jdi->backlight); in jdi_panel_enable()
293 jdi->enabled = true; in jdi_panel_enable()
312 static int jdi_panel_get_modes(struct drm_panel *panel) in jdi_panel_get_modes() argument
315 struct jdi_panel *jdi = to_jdi_panel(panel); in jdi_panel_get_modes()
316 struct device *dev = &jdi->dsi->dev; in jdi_panel_get_modes()
318 mode = drm_mode_duplicate(panel->drm, &default_mode); in jdi_panel_get_modes()
323 return -ENOMEM; in jdi_panel_get_modes()
328 drm_mode_probed_add(panel->connector, mode); in jdi_panel_get_modes()
330 panel->connector->display_info.width_mm = 95; in jdi_panel_get_modes()
331 panel->connector->display_info.height_mm = 151; in jdi_panel_get_modes()
338 struct mipi_dsi_device *dsi = bl_get_data(bl); in dsi_dcs_bl_get_brightness() local
340 u16 brightness = bl->props.brightness; in dsi_dcs_bl_get_brightness()
342 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in dsi_dcs_bl_get_brightness()
344 ret = mipi_dsi_dcs_get_display_brightness(dsi, &brightness); in dsi_dcs_bl_get_brightness()
348 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in dsi_dcs_bl_get_brightness()
355 struct mipi_dsi_device *dsi = bl_get_data(bl); in dsi_dcs_bl_update_status() local
358 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in dsi_dcs_bl_update_status()
360 ret = mipi_dsi_dcs_set_display_brightness(dsi, bl->props.brightness); in dsi_dcs_bl_update_status()
364 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in dsi_dcs_bl_update_status()
375 drm_panel_create_dsi_backlight(struct mipi_dsi_device *dsi) in drm_panel_create_dsi_backlight() argument
377 struct device *dev = &dsi->dev; in drm_panel_create_dsi_backlight()
385 return devm_backlight_device_register(dev, dev_name(dev), dev, dsi, in drm_panel_create_dsi_backlight()
405 struct device *dev = &jdi->dsi->dev; in jdi_panel_add()
409 jdi->mode = &default_mode; in jdi_panel_add()
411 for (i = 0; i < ARRAY_SIZE(jdi->supplies); i++) in jdi_panel_add()
412 jdi->supplies[i].supply = regulator_names[i]; in jdi_panel_add()
414 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(jdi->supplies), in jdi_panel_add()
415 jdi->supplies); in jdi_panel_add()
421 jdi->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW); in jdi_panel_add()
422 if (IS_ERR(jdi->enable_gpio)) { in jdi_panel_add()
423 ret = PTR_ERR(jdi->enable_gpio); in jdi_panel_add()
424 dev_err(dev, "cannot get enable-gpio %d\n", ret); in jdi_panel_add()
428 jdi->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); in jdi_panel_add()
429 if (IS_ERR(jdi->reset_gpio)) { in jdi_panel_add()
430 ret = PTR_ERR(jdi->reset_gpio); in jdi_panel_add()
431 dev_err(dev, "cannot get reset-gpios %d\n", ret); in jdi_panel_add()
435 jdi->dcdc_en_gpio = devm_gpiod_get(dev, "dcdc-en", GPIOD_OUT_LOW); in jdi_panel_add()
436 if (IS_ERR(jdi->dcdc_en_gpio)) { in jdi_panel_add()
437 ret = PTR_ERR(jdi->dcdc_en_gpio); in jdi_panel_add()
438 dev_err(dev, "cannot get dcdc-en-gpio %d\n", ret); in jdi_panel_add()
442 jdi->backlight = drm_panel_create_dsi_backlight(jdi->dsi); in jdi_panel_add()
443 if (IS_ERR(jdi->backlight)) { in jdi_panel_add()
444 ret = PTR_ERR(jdi->backlight); in jdi_panel_add()
449 drm_panel_init(&jdi->base); in jdi_panel_add()
450 jdi->base.funcs = &jdi_panel_funcs; in jdi_panel_add()
451 jdi->base.dev = &jdi->dsi->dev; in jdi_panel_add()
453 ret = drm_panel_add(&jdi->base); in jdi_panel_add()
460 if (jdi->base.dev) in jdi_panel_del()
461 drm_panel_remove(&jdi->base); in jdi_panel_del()
464 static int jdi_panel_probe(struct mipi_dsi_device *dsi) in jdi_panel_probe() argument
469 dsi->lanes = 4; in jdi_panel_probe()
470 dsi->format = MIPI_DSI_FMT_RGB888; in jdi_panel_probe()
471 dsi->mode_flags = MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_MODE_VIDEO | in jdi_panel_probe()
474 jdi = devm_kzalloc(&dsi->dev, sizeof(*jdi), GFP_KERNEL); in jdi_panel_probe()
476 return -ENOMEM; in jdi_panel_probe()
478 mipi_dsi_set_drvdata(dsi, jdi); in jdi_panel_probe()
480 jdi->dsi = dsi; in jdi_panel_probe()
486 return mipi_dsi_attach(dsi); in jdi_panel_probe()
489 static int jdi_panel_remove(struct mipi_dsi_device *dsi) in jdi_panel_remove() argument
491 struct jdi_panel *jdi = mipi_dsi_get_drvdata(dsi); in jdi_panel_remove()
494 ret = jdi_panel_disable(&jdi->base); in jdi_panel_remove()
496 dev_err(&dsi->dev, "failed to disable panel: %d\n", ret); in jdi_panel_remove()
498 ret = mipi_dsi_detach(dsi); in jdi_panel_remove()
500 dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", in jdi_panel_remove()
508 static void jdi_panel_shutdown(struct mipi_dsi_device *dsi) in jdi_panel_shutdown() argument
510 struct jdi_panel *jdi = mipi_dsi_get_drvdata(dsi); in jdi_panel_shutdown()
512 jdi_panel_disable(&jdi->base); in jdi_panel_shutdown()
517 .name = "panel-jdi-lt070me05000",