Lines Matching full:panel

6  * Based on Panel Simple driver by Thierry Reding <treding@nvidia.com>
31 * @width: width (in millimeters) of the panel's active display area
32 * @height: height (in millimeters) of the panel's active display area
52 static inline struct seiko_panel *to_seiko_panel(struct drm_panel *panel) in to_seiko_panel() argument
54 return container_of(panel, struct seiko_panel, base); in to_seiko_panel()
57 static int seiko_panel_get_fixed_modes(struct seiko_panel *panel, in seiko_panel_get_fixed_modes() argument
63 if (!panel->desc) in seiko_panel_get_fixed_modes()
66 for (i = 0; i < panel->desc->num_timings; i++) { in seiko_panel_get_fixed_modes()
67 const struct display_timing *dt = &panel->desc->timings[i]; in seiko_panel_get_fixed_modes()
73 dev_err(panel->base.dev, "failed to add mode %ux%u\n", in seiko_panel_get_fixed_modes()
82 if (panel->desc->num_timings == 1) in seiko_panel_get_fixed_modes()
89 for (i = 0; i < panel->desc->num_modes; i++) { in seiko_panel_get_fixed_modes()
90 const struct drm_display_mode *m = &panel->desc->modes[i]; in seiko_panel_get_fixed_modes()
94 dev_err(panel->base.dev, "failed to add mode %ux%u@%u\n", in seiko_panel_get_fixed_modes()
102 if (panel->desc->num_modes == 1) in seiko_panel_get_fixed_modes()
111 connector->display_info.bpc = panel->desc->bpc; in seiko_panel_get_fixed_modes()
112 connector->display_info.width_mm = panel->desc->size.width; in seiko_panel_get_fixed_modes()
113 connector->display_info.height_mm = panel->desc->size.height; in seiko_panel_get_fixed_modes()
114 if (panel->desc->bus_format) in seiko_panel_get_fixed_modes()
116 &panel->desc->bus_format, 1); in seiko_panel_get_fixed_modes()
117 connector->display_info.bus_flags = panel->desc->bus_flags; in seiko_panel_get_fixed_modes()
122 static int seiko_panel_disable(struct drm_panel *panel) in seiko_panel_disable() argument
124 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_disable()
134 static int seiko_panel_unprepare(struct drm_panel *panel) in seiko_panel_unprepare() argument
136 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_unprepare()
143 /* Add a 100ms delay as per the panel datasheet */ in seiko_panel_unprepare()
153 static int seiko_panel_prepare(struct drm_panel *panel) in seiko_panel_prepare() argument
155 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_prepare()
163 dev_err(panel->dev, "failed to enable dvdd: %d\n", err); in seiko_panel_prepare()
167 /* Add a 100ms delay as per the panel datasheet */ in seiko_panel_prepare()
172 dev_err(panel->dev, "failed to enable avdd: %d\n", err); in seiko_panel_prepare()
185 static int seiko_panel_enable(struct drm_panel *panel) in seiko_panel_enable() argument
187 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_enable()
197 static int seiko_panel_get_modes(struct drm_panel *panel, in seiko_panel_get_modes() argument
200 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_get_modes()
202 /* add hard-coded panel modes */ in seiko_panel_get_modes()
206 static int seiko_panel_get_timings(struct drm_panel *panel, in seiko_panel_get_timings() argument
210 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_get_timings()
235 struct seiko_panel *panel; in seiko_panel_probe() local
238 panel = devm_kzalloc(dev, sizeof(*panel), GFP_KERNEL); in seiko_panel_probe()
239 if (!panel) in seiko_panel_probe()
242 panel->enabled = false; in seiko_panel_probe()
243 panel->prepared = false; in seiko_panel_probe()
244 panel->desc = desc; in seiko_panel_probe()
246 panel->dvdd = devm_regulator_get(dev, "dvdd"); in seiko_panel_probe()
247 if (IS_ERR(panel->dvdd)) in seiko_panel_probe()
248 return PTR_ERR(panel->dvdd); in seiko_panel_probe()
250 panel->avdd = devm_regulator_get(dev, "avdd"); in seiko_panel_probe()
251 if (IS_ERR(panel->avdd)) in seiko_panel_probe()
252 return PTR_ERR(panel->avdd); in seiko_panel_probe()
254 drm_panel_init(&panel->base, dev, &seiko_panel_funcs, in seiko_panel_probe()
257 err = drm_panel_of_backlight(&panel->base); in seiko_panel_probe()
261 drm_panel_add(&panel->base); in seiko_panel_probe()
263 dev_set_drvdata(dev, panel); in seiko_panel_probe()
270 struct seiko_panel *panel = dev_get_drvdata(&pdev->dev); in seiko_panel_remove() local
272 drm_panel_remove(&panel->base); in seiko_panel_remove()
273 drm_panel_disable(&panel->base); in seiko_panel_remove()
280 struct seiko_panel *panel = dev_get_drvdata(&pdev->dev); in seiko_panel_shutdown() local
282 drm_panel_disable(&panel->base); in seiko_panel_shutdown()
343 MODULE_DESCRIPTION("Seiko 43WVF1G panel driver");