Lines Matching full:panel

6  * Based on Panel Simple driver by Thierry Reding <treding@nvidia.com>
32 * @width: width (in millimeters) of the panel's active display area
33 * @height: height (in millimeters) of the panel's active display area
54 static inline struct seiko_panel *to_seiko_panel(struct drm_panel *panel) in to_seiko_panel() argument
56 return container_of(panel, struct seiko_panel, base); in to_seiko_panel()
59 static int seiko_panel_get_fixed_modes(struct seiko_panel *panel) in seiko_panel_get_fixed_modes() argument
61 struct drm_connector *connector = panel->base.connector; in seiko_panel_get_fixed_modes()
62 struct drm_device *drm = panel->base.drm; in seiko_panel_get_fixed_modes()
66 if (!panel->desc) in seiko_panel_get_fixed_modes()
69 for (i = 0; i < panel->desc->num_timings; i++) { in seiko_panel_get_fixed_modes()
70 const struct display_timing *dt = &panel->desc->timings[i]; in seiko_panel_get_fixed_modes()
85 if (panel->desc->num_timings == 1) in seiko_panel_get_fixed_modes()
92 for (i = 0; i < panel->desc->num_modes; i++) { in seiko_panel_get_fixed_modes()
93 const struct drm_display_mode *m = &panel->desc->modes[i]; in seiko_panel_get_fixed_modes()
104 if (panel->desc->num_modes == 1) in seiko_panel_get_fixed_modes()
113 connector->display_info.bpc = panel->desc->bpc; in seiko_panel_get_fixed_modes()
114 connector->display_info.width_mm = panel->desc->size.width; in seiko_panel_get_fixed_modes()
115 connector->display_info.height_mm = panel->desc->size.height; in seiko_panel_get_fixed_modes()
116 if (panel->desc->bus_format) in seiko_panel_get_fixed_modes()
118 &panel->desc->bus_format, 1); in seiko_panel_get_fixed_modes()
119 connector->display_info.bus_flags = panel->desc->bus_flags; in seiko_panel_get_fixed_modes()
124 static int seiko_panel_disable(struct drm_panel *panel) in seiko_panel_disable() argument
126 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_disable()
142 static int seiko_panel_unprepare(struct drm_panel *panel) in seiko_panel_unprepare() argument
144 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_unprepare()
151 /* Add a 100ms delay as per the panel datasheet */ in seiko_panel_unprepare()
161 static int seiko_panel_prepare(struct drm_panel *panel) in seiko_panel_prepare() argument
163 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_prepare()
171 dev_err(panel->dev, "failed to enable dvdd: %d\n", err); in seiko_panel_prepare()
175 /* Add a 100ms delay as per the panel datasheet */ in seiko_panel_prepare()
180 dev_err(panel->dev, "failed to enable avdd: %d\n", err); in seiko_panel_prepare()
193 static int seiko_panel_enable(struct drm_panel *panel) in seiko_panel_enable() argument
195 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_enable()
211 static int seiko_panel_get_modes(struct drm_panel *panel) in seiko_panel_get_modes() argument
213 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_get_modes()
215 /* add hard-coded panel modes */ in seiko_panel_get_modes()
219 static int seiko_panel_get_timings(struct drm_panel *panel, in seiko_panel_get_timings() argument
223 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_get_timings()
249 struct seiko_panel *panel; in seiko_panel_probe() local
252 panel = devm_kzalloc(dev, sizeof(*panel), GFP_KERNEL); in seiko_panel_probe()
253 if (!panel) in seiko_panel_probe()
256 panel->enabled = false; in seiko_panel_probe()
257 panel->prepared = false; in seiko_panel_probe()
258 panel->desc = desc; in seiko_panel_probe()
260 panel->dvdd = devm_regulator_get(dev, "dvdd"); in seiko_panel_probe()
261 if (IS_ERR(panel->dvdd)) in seiko_panel_probe()
262 return PTR_ERR(panel->dvdd); in seiko_panel_probe()
264 panel->avdd = devm_regulator_get(dev, "avdd"); in seiko_panel_probe()
265 if (IS_ERR(panel->avdd)) in seiko_panel_probe()
266 return PTR_ERR(panel->avdd); in seiko_panel_probe()
270 panel->backlight = of_find_backlight_by_node(backlight); in seiko_panel_probe()
273 if (!panel->backlight) in seiko_panel_probe()
277 drm_panel_init(&panel->base); in seiko_panel_probe()
278 panel->base.dev = dev; in seiko_panel_probe()
279 panel->base.funcs = &seiko_panel_funcs; in seiko_panel_probe()
281 err = drm_panel_add(&panel->base); in seiko_panel_probe()
285 dev_set_drvdata(dev, panel); in seiko_panel_probe()
292 struct seiko_panel *panel = dev_get_drvdata(&pdev->dev); in seiko_panel_remove() local
294 drm_panel_remove(&panel->base); in seiko_panel_remove()
296 seiko_panel_disable(&panel->base); in seiko_panel_remove()
298 if (panel->backlight) in seiko_panel_remove()
299 put_device(&panel->backlight->dev); in seiko_panel_remove()
306 struct seiko_panel *panel = dev_get_drvdata(&pdev->dev); in seiko_panel_shutdown() local
308 seiko_panel_disable(&panel->base); in seiko_panel_shutdown()
369 MODULE_DESCRIPTION("Seiko 43WVF1G panel driver");