Lines Matching full:innolux

32 	int (*init)(struct innolux_panel *innolux);
56 struct innolux_panel *innolux = to_innolux_panel(panel); in innolux_panel_unprepare() local
59 err = mipi_dsi_dcs_set_display_off(innolux->link); in innolux_panel_unprepare()
63 err = mipi_dsi_dcs_enter_sleep_mode(innolux->link); in innolux_panel_unprepare()
69 if (innolux->desc->sleep_mode_delay) in innolux_panel_unprepare()
70 msleep(innolux->desc->sleep_mode_delay); in innolux_panel_unprepare()
72 gpiod_set_value_cansleep(innolux->enable_gpio, 0); in innolux_panel_unprepare()
74 if (innolux->desc->power_down_delay) in innolux_panel_unprepare()
75 msleep(innolux->desc->power_down_delay); in innolux_panel_unprepare()
77 err = regulator_bulk_disable(innolux->desc->num_supplies, in innolux_panel_unprepare()
78 innolux->supplies); in innolux_panel_unprepare()
87 struct innolux_panel *innolux = to_innolux_panel(panel); in innolux_panel_prepare() local
90 gpiod_set_value_cansleep(innolux->enable_gpio, 0); in innolux_panel_prepare()
92 err = regulator_bulk_enable(innolux->desc->num_supplies, in innolux_panel_prepare()
93 innolux->supplies); in innolux_panel_prepare()
100 gpiod_set_value_cansleep(innolux->enable_gpio, 1); in innolux_panel_prepare()
105 if (innolux->desc->init) { in innolux_panel_prepare()
106 err = innolux->desc->init(innolux); in innolux_panel_prepare()
111 err = mipi_dsi_dcs_exit_sleep_mode(innolux->link); in innolux_panel_prepare()
120 err = mipi_dsi_dcs_set_display_on(innolux->link); in innolux_panel_prepare()
132 gpiod_set_value_cansleep(innolux->enable_gpio, 0); in innolux_panel_prepare()
133 regulator_bulk_disable(innolux->desc->num_supplies, innolux->supplies); in innolux_panel_prepare()
214 static int innolux_p097pfg_init(struct innolux_panel *innolux) in innolux_p097pfg_init() argument
216 struct mipi_dsi_multi_context ctx = { .dsi = innolux->link }; in innolux_p097pfg_init()
339 struct innolux_panel *innolux = to_innolux_panel(panel); in innolux_panel_get_modes() local
340 const struct drm_display_mode *m = innolux->desc->mode; in innolux_panel_get_modes()
354 connector->display_info.width_mm = innolux->desc->size.width; in innolux_panel_get_modes()
355 connector->display_info.height_mm = innolux->desc->size.height; in innolux_panel_get_modes()
356 connector->display_info.bpc = innolux->desc->bpc; in innolux_panel_get_modes()
368 { .compatible = "innolux,p079zca",
371 { .compatible = "innolux,p097pfg",
381 struct innolux_panel *innolux; in innolux_panel_add() local
385 innolux = devm_kzalloc(dev, sizeof(*innolux), GFP_KERNEL); in innolux_panel_add()
386 if (!innolux) in innolux_panel_add()
389 innolux->desc = desc; in innolux_panel_add()
391 innolux->supplies = devm_kcalloc(dev, desc->num_supplies, in innolux_panel_add()
392 sizeof(*innolux->supplies), in innolux_panel_add()
394 if (!innolux->supplies) in innolux_panel_add()
398 innolux->supplies[i].supply = desc->supply_names[i]; in innolux_panel_add()
401 innolux->supplies); in innolux_panel_add()
405 innolux->enable_gpio = devm_gpiod_get_optional(dev, "enable", in innolux_panel_add()
407 if (IS_ERR(innolux->enable_gpio)) { in innolux_panel_add()
408 err = PTR_ERR(innolux->enable_gpio); in innolux_panel_add()
410 innolux->enable_gpio = NULL; in innolux_panel_add()
413 drm_panel_init(&innolux->base, dev, &innolux_panel_funcs, in innolux_panel_add()
416 err = drm_panel_of_backlight(&innolux->base); in innolux_panel_add()
420 drm_panel_add(&innolux->base); in innolux_panel_add()
422 mipi_dsi_set_drvdata(dsi, innolux); in innolux_panel_add()
423 innolux->link = dsi; in innolux_panel_add()
428 static void innolux_panel_del(struct innolux_panel *innolux) in innolux_panel_del() argument
430 drm_panel_remove(&innolux->base); in innolux_panel_del()
436 struct innolux_panel *innolux; in innolux_panel_probe() local
450 innolux = mipi_dsi_get_drvdata(dsi); in innolux_panel_probe()
451 innolux_panel_del(innolux); in innolux_panel_probe()
460 struct innolux_panel *innolux = mipi_dsi_get_drvdata(dsi); in innolux_panel_remove() local
468 innolux_panel_del(innolux); in innolux_panel_remove()
473 .name = "panel-innolux-p079zca",
483 MODULE_DESCRIPTION("Innolux P079ZCA panel driver");