Lines Matching refs:sharp
42 static void sharp_wait_frames(struct sharp_panel *sharp, unsigned int frames) in sharp_wait_frames() argument
44 unsigned int refresh = drm_mode_vrefresh(sharp->mode); in sharp_wait_frames()
52 static int sharp_panel_write(struct sharp_panel *sharp, u16 offset, u8 value) in sharp_panel_write() argument
55 struct mipi_dsi_device *dsi = sharp->link1; in sharp_panel_write()
76 static __maybe_unused int sharp_panel_read(struct sharp_panel *sharp, in sharp_panel_read() argument
83 err = mipi_dsi_generic_read(sharp->link1, &offset, sizeof(offset), in sharp_panel_read()
86 dev_err(&sharp->link1->dev, "failed to read from %04x: %zd\n", in sharp_panel_read()
94 struct sharp_panel *sharp = to_sharp_panel(panel); in sharp_panel_disable() local
96 if (!sharp->enabled) in sharp_panel_disable()
99 if (sharp->backlight) { in sharp_panel_disable()
100 sharp->backlight->props.power = FB_BLANK_POWERDOWN; in sharp_panel_disable()
101 backlight_update_status(sharp->backlight); in sharp_panel_disable()
104 sharp->enabled = false; in sharp_panel_disable()
111 struct sharp_panel *sharp = to_sharp_panel(panel); in sharp_panel_unprepare() local
114 if (!sharp->prepared) in sharp_panel_unprepare()
117 sharp_wait_frames(sharp, 4); in sharp_panel_unprepare()
119 err = mipi_dsi_dcs_set_display_off(sharp->link1); in sharp_panel_unprepare()
123 err = mipi_dsi_dcs_enter_sleep_mode(sharp->link1); in sharp_panel_unprepare()
129 regulator_disable(sharp->supply); in sharp_panel_unprepare()
131 sharp->prepared = false; in sharp_panel_unprepare()
172 struct sharp_panel *sharp = to_sharp_panel(panel); in sharp_panel_prepare() local
176 if (sharp->prepared) in sharp_panel_prepare()
179 err = regulator_enable(sharp->supply); in sharp_panel_prepare()
191 err = mipi_dsi_dcs_exit_sleep_mode(sharp->link1); in sharp_panel_prepare()
207 err = sharp_panel_write(sharp, 0x1000, 0x2a); in sharp_panel_prepare()
214 err = sharp_panel_write(sharp, 0x1001, 0x01); in sharp_panel_prepare()
220 err = mipi_dsi_dcs_set_pixel_format(sharp->link1, format); in sharp_panel_prepare()
233 err = sharp_setup_symmetrical_split(sharp->link1, sharp->link2, in sharp_panel_prepare()
234 sharp->mode); in sharp_panel_prepare()
241 err = mipi_dsi_dcs_set_display_on(sharp->link1); in sharp_panel_prepare()
247 sharp->prepared = true; in sharp_panel_prepare()
250 sharp_wait_frames(sharp, 6); in sharp_panel_prepare()
255 regulator_disable(sharp->supply); in sharp_panel_prepare()
261 struct sharp_panel *sharp = to_sharp_panel(panel); in sharp_panel_enable() local
263 if (sharp->enabled) in sharp_panel_enable()
266 if (sharp->backlight) { in sharp_panel_enable()
267 sharp->backlight->props.power = FB_BLANK_UNBLANK; in sharp_panel_enable()
268 backlight_update_status(sharp->backlight); in sharp_panel_enable()
271 sharp->enabled = true; in sharp_panel_enable()
325 static int sharp_panel_add(struct sharp_panel *sharp) in sharp_panel_add() argument
330 sharp->mode = &default_mode; in sharp_panel_add()
332 sharp->supply = devm_regulator_get(&sharp->link1->dev, "power"); in sharp_panel_add()
333 if (IS_ERR(sharp->supply)) in sharp_panel_add()
334 return PTR_ERR(sharp->supply); in sharp_panel_add()
336 np = of_parse_phandle(sharp->link1->dev.of_node, "backlight", 0); in sharp_panel_add()
338 sharp->backlight = of_find_backlight_by_node(np); in sharp_panel_add()
341 if (!sharp->backlight) in sharp_panel_add()
345 drm_panel_init(&sharp->base); in sharp_panel_add()
346 sharp->base.funcs = &sharp_panel_funcs; in sharp_panel_add()
347 sharp->base.dev = &sharp->link1->dev; in sharp_panel_add()
349 err = drm_panel_add(&sharp->base); in sharp_panel_add()
356 if (sharp->backlight) in sharp_panel_add()
357 put_device(&sharp->backlight->dev); in sharp_panel_add()
362 static void sharp_panel_del(struct sharp_panel *sharp) in sharp_panel_del() argument
364 if (sharp->base.dev) in sharp_panel_del()
365 drm_panel_remove(&sharp->base); in sharp_panel_del()
367 if (sharp->backlight) in sharp_panel_del()
368 put_device(&sharp->backlight->dev); in sharp_panel_del()
370 if (sharp->link2) in sharp_panel_del()
371 put_device(&sharp->link2->dev); in sharp_panel_del()
377 struct sharp_panel *sharp; in sharp_panel_probe() local
397 sharp = devm_kzalloc(&dsi->dev, sizeof(*sharp), GFP_KERNEL); in sharp_panel_probe()
398 if (!sharp) { in sharp_panel_probe()
403 mipi_dsi_set_drvdata(dsi, sharp); in sharp_panel_probe()
405 sharp->link2 = secondary; in sharp_panel_probe()
406 sharp->link1 = dsi; in sharp_panel_probe()
408 err = sharp_panel_add(sharp); in sharp_panel_probe()
418 sharp_panel_del(sharp); in sharp_panel_probe()
428 struct sharp_panel *sharp = mipi_dsi_get_drvdata(dsi); in sharp_panel_remove() local
432 if (!sharp) { in sharp_panel_remove()
437 err = sharp_panel_disable(&sharp->base); in sharp_panel_remove()
445 drm_panel_detach(&sharp->base); in sharp_panel_remove()
446 sharp_panel_del(sharp); in sharp_panel_remove()
453 struct sharp_panel *sharp = mipi_dsi_get_drvdata(dsi); in sharp_panel_shutdown() local
456 if (!sharp) in sharp_panel_shutdown()
459 sharp_panel_disable(&sharp->base); in sharp_panel_shutdown()