xref: /rk3399_rockchip-uboot/drivers/video/drm/rockchip_panel.h (revision c2ba77d93f696c0ccb8f2b653571104e7b4afb4e)
1 /*
2  * (C) Copyright 2008-2017 Fuzhou Rockchip Electronics Co., Ltd
3  *
4  * SPDX-License-Identifier:	GPL-2.0+
5  */
6 
7 #ifndef _ROCKCHIP_PANEL_H_
8 #define _ROCKCHIP_PANEL_H_
9 
10 struct display_state;
11 struct rockchip_panel;
12 
13 struct rockchip_panel_funcs {
14 	void (*init)(struct rockchip_panel *panel);
15 	void (*prepare)(struct rockchip_panel *panel);
16 	void (*unprepare)(struct rockchip_panel *panel);
17 	void (*enable)(struct rockchip_panel *panel);
18 	void (*disable)(struct rockchip_panel *panel);
19 };
20 
21 struct rockchip_panel {
22 	struct udevice *dev;
23 	u32 bus_format;
24 	const struct rockchip_panel_funcs *funcs;
25 	const void *data;
26 
27 	struct display_state *state;
28 };
29 
30 static inline void rockchip_panel_init(struct rockchip_panel *panel)
31 {
32 	if (!panel)
33 		return;
34 
35 	if (panel->funcs && panel->funcs->init)
36 		panel->funcs->init(panel);
37 }
38 
39 static inline void rockchip_panel_prepare(struct rockchip_panel *panel)
40 {
41 	if (!panel)
42 		return;
43 
44 	if (panel->funcs && panel->funcs->prepare)
45 		panel->funcs->prepare(panel);
46 }
47 
48 static inline void rockchip_panel_enable(struct rockchip_panel *panel)
49 {
50 	if (!panel)
51 		return;
52 
53 	if (panel->funcs && panel->funcs->enable)
54 		panel->funcs->enable(panel);
55 }
56 
57 static inline void rockchip_panel_unprepare(struct rockchip_panel *panel)
58 {
59 	if (!panel)
60 		return;
61 
62 	if (panel->funcs && panel->funcs->unprepare)
63 		panel->funcs->unprepare(panel);
64 }
65 
66 static inline void rockchip_panel_disable(struct rockchip_panel *panel)
67 {
68 	if (!panel)
69 		return;
70 
71 	if (panel->funcs && panel->funcs->disable)
72 		panel->funcs->disable(panel);
73 }
74 
75 #endif	/* _ROCKCHIP_PANEL_H_ */
76