Lines Matching defs:panel

33 	 * @width: width (in millimeters) of the panel's active display area
34 * @height: height (in millimeters) of the panel's active display area
55 static inline struct seiko_panel *to_seiko_panel(struct drm_panel *panel)
57 return container_of(panel, struct seiko_panel, base);
60 static int seiko_panel_get_fixed_modes(struct seiko_panel *panel,
66 if (!panel->desc)
69 for (i = 0; i < panel->desc->num_timings; i++) {
70 const struct display_timing *dt = &panel->desc->timings[i];
76 dev_err(panel->base.dev, "failed to add mode %ux%u\n",
85 if (panel->desc->num_timings == 1)
92 for (i = 0; i < panel->desc->num_modes; i++) {
93 const struct drm_display_mode *m = &panel->desc->modes[i];
97 dev_err(panel->base.dev, "failed to add mode %ux%u@%u\n",
105 if (panel->desc->num_modes == 1)
114 connector->display_info.bpc = panel->desc->bpc;
115 connector->display_info.width_mm = panel->desc->size.width;
116 connector->display_info.height_mm = panel->desc->size.height;
117 if (panel->desc->bus_format)
119 &panel->desc->bus_format, 1);
120 connector->display_info.bus_flags = panel->desc->bus_flags;
125 static int seiko_panel_disable(struct drm_panel *panel)
127 struct seiko_panel *p = to_seiko_panel(panel);
137 static int seiko_panel_unprepare(struct drm_panel *panel)
139 struct seiko_panel *p = to_seiko_panel(panel);
148 /* Add a 100ms delay as per the panel datasheet */
158 static int seiko_panel_prepare(struct drm_panel *panel)
160 struct seiko_panel *p = to_seiko_panel(panel);
168 dev_err(panel->dev, "failed to enable dvdd: %d\n", err);
172 /* Add a 100ms delay as per the panel datasheet */
177 dev_err(panel->dev, "failed to enable avdd: %d\n", err);
192 static int seiko_panel_enable(struct drm_panel *panel)
194 struct seiko_panel *p = to_seiko_panel(panel);
204 static int seiko_panel_get_modes(struct drm_panel *panel,
207 struct seiko_panel *p = to_seiko_panel(panel);
209 /* add hard-coded panel modes */
213 static int seiko_panel_get_timings(struct drm_panel *panel,
217 struct seiko_panel *p = to_seiko_panel(panel);
242 struct seiko_panel *panel;
245 panel = devm_kzalloc(dev, sizeof(*panel), GFP_KERNEL);
246 if (!panel)
249 panel->enabled = false;
250 panel->prepared = false;
251 panel->desc = desc;
253 panel->dvdd = devm_regulator_get(dev, "dvdd");
254 if (IS_ERR(panel->dvdd))
255 return PTR_ERR(panel->dvdd);
257 panel->avdd = devm_regulator_get(dev, "avdd");
258 if (IS_ERR(panel->avdd))
259 return PTR_ERR(panel->avdd);
261 panel->enable_gpio = devm_gpiod_get_optional(dev, "enable",
263 if (IS_ERR(panel->enable_gpio))
264 return dev_err_probe(dev, PTR_ERR(panel->enable_gpio),
267 drm_panel_init(&panel->base, dev, &seiko_panel_funcs,
270 err = drm_panel_of_backlight(&panel->base);
274 drm_panel_add(&panel->base);
276 dev_set_drvdata(dev, panel);
283 struct seiko_panel *panel = platform_get_drvdata(pdev);
285 drm_panel_remove(&panel->base);
286 drm_panel_disable(&panel->base);
291 struct seiko_panel *panel = platform_get_drvdata(pdev);
293 drm_panel_disable(&panel->base);
354 MODULE_DESCRIPTION("Seiko 43WVF1G panel driver");