Lines Matching full:panel

6  * Based on Panel Simple driver by Thierry Reding <treding@nvidia.com>
33 * @width: width (in millimeters) of the panel's active display area
34 * @height: height (in millimeters) of the panel's active display area
53 static inline struct seiko_panel *to_seiko_panel(struct drm_panel *panel) in to_seiko_panel() argument
55 return container_of(panel, struct seiko_panel, base); in to_seiko_panel()
58 static int seiko_panel_get_fixed_modes(struct seiko_panel *panel, in seiko_panel_get_fixed_modes() argument
64 if (!panel->desc) in seiko_panel_get_fixed_modes()
67 for (i = 0; i < panel->desc->num_timings; i++) { in seiko_panel_get_fixed_modes()
68 const struct display_timing *dt = &panel->desc->timings[i]; in seiko_panel_get_fixed_modes()
74 dev_err(panel->base.dev, "failed to add mode %ux%u\n", in seiko_panel_get_fixed_modes()
83 if (panel->desc->num_timings == 1) in seiko_panel_get_fixed_modes()
90 for (i = 0; i < panel->desc->num_modes; i++) { in seiko_panel_get_fixed_modes()
91 const struct drm_display_mode *m = &panel->desc->modes[i]; in seiko_panel_get_fixed_modes()
95 dev_err(panel->base.dev, "failed to add mode %ux%u@%u\n", in seiko_panel_get_fixed_modes()
103 if (panel->desc->num_modes == 1) in seiko_panel_get_fixed_modes()
112 connector->display_info.bpc = panel->desc->bpc; in seiko_panel_get_fixed_modes()
113 connector->display_info.width_mm = panel->desc->size.width; in seiko_panel_get_fixed_modes()
114 connector->display_info.height_mm = panel->desc->size.height; in seiko_panel_get_fixed_modes()
115 if (panel->desc->bus_format) in seiko_panel_get_fixed_modes()
117 &panel->desc->bus_format, 1); in seiko_panel_get_fixed_modes()
118 connector->display_info.bus_flags = panel->desc->bus_flags; in seiko_panel_get_fixed_modes()
123 static int seiko_panel_unprepare(struct drm_panel *panel) in seiko_panel_unprepare() argument
125 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_unprepare()
131 /* Add a 100ms delay as per the panel datasheet */ in seiko_panel_unprepare()
139 static int seiko_panel_prepare(struct drm_panel *panel) in seiko_panel_prepare() argument
141 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_prepare()
146 dev_err(panel->dev, "failed to enable dvdd: %d\n", err); in seiko_panel_prepare()
150 /* Add a 100ms delay as per the panel datasheet */ in seiko_panel_prepare()
155 dev_err(panel->dev, "failed to enable avdd: %d\n", err); in seiko_panel_prepare()
168 static int seiko_panel_get_modes(struct drm_panel *panel, in seiko_panel_get_modes() argument
171 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_get_modes()
173 /* add hard-coded panel modes */ in seiko_panel_get_modes()
177 static int seiko_panel_get_timings(struct drm_panel *panel, in seiko_panel_get_timings() argument
181 struct seiko_panel *p = to_seiko_panel(panel); in seiko_panel_get_timings()
204 struct seiko_panel *panel; in seiko_panel_probe() local
207 panel = devm_kzalloc(dev, sizeof(*panel), GFP_KERNEL); in seiko_panel_probe()
208 if (!panel) in seiko_panel_probe()
211 panel->desc = desc; in seiko_panel_probe()
213 panel->dvdd = devm_regulator_get(dev, "dvdd"); in seiko_panel_probe()
214 if (IS_ERR(panel->dvdd)) in seiko_panel_probe()
215 return PTR_ERR(panel->dvdd); in seiko_panel_probe()
217 panel->avdd = devm_regulator_get(dev, "avdd"); in seiko_panel_probe()
218 if (IS_ERR(panel->avdd)) in seiko_panel_probe()
219 return PTR_ERR(panel->avdd); in seiko_panel_probe()
221 panel->enable_gpio = devm_gpiod_get_optional(dev, "enable", in seiko_panel_probe()
223 if (IS_ERR(panel->enable_gpio)) in seiko_panel_probe()
224 return dev_err_probe(dev, PTR_ERR(panel->enable_gpio), in seiko_panel_probe()
227 drm_panel_init(&panel->base, dev, &seiko_panel_funcs, in seiko_panel_probe()
230 err = drm_panel_of_backlight(&panel->base); in seiko_panel_probe()
234 drm_panel_add(&panel->base); in seiko_panel_probe()
236 dev_set_drvdata(dev, panel); in seiko_panel_probe()
243 struct seiko_panel *panel = platform_get_drvdata(pdev); in seiko_panel_remove() local
245 drm_panel_remove(&panel->base); in seiko_panel_remove()
305 MODULE_DESCRIPTION("Seiko 43WVF1G panel driver");