xref: /rk3399_rockchip-uboot/drivers/video/drm/rockchip_panel.h (revision a3dda7f4bf6bbece2100b16d2b632d6357ff044e)
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 (*prepare)(struct rockchip_panel *panel);
15 	void (*unprepare)(struct rockchip_panel *panel);
16 	void (*enable)(struct rockchip_panel *panel);
17 	void (*disable)(struct rockchip_panel *panel);
18 };
19 
20 struct rockchip_panel {
21 	struct udevice *dev;
22 	u32 bus_format;
23 	unsigned int bpc;
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 				       struct display_state *state)
32 {
33 	if (!panel)
34 		return;
35 
36 	panel->state = state;
37 
38 	if (panel->bus_format)
39 		state->conn_state.bus_format = panel->bus_format;
40 
41 	if (panel->bpc)
42 		state->conn_state.bpc = panel->bpc;
43 }
44 
45 static inline void rockchip_panel_prepare(struct rockchip_panel *panel)
46 {
47 	if (!panel)
48 		return;
49 
50 	if (panel->funcs && panel->funcs->prepare)
51 		panel->funcs->prepare(panel);
52 }
53 
54 static inline void rockchip_panel_enable(struct rockchip_panel *panel)
55 {
56 	if (!panel)
57 		return;
58 
59 	if (panel->funcs && panel->funcs->enable)
60 		panel->funcs->enable(panel);
61 }
62 
63 static inline void rockchip_panel_unprepare(struct rockchip_panel *panel)
64 {
65 	if (!panel)
66 		return;
67 
68 	if (panel->funcs && panel->funcs->unprepare)
69 		panel->funcs->unprepare(panel);
70 }
71 
72 static inline void rockchip_panel_disable(struct rockchip_panel *panel)
73 {
74 	if (!panel)
75 		return;
76 
77 	if (panel->funcs && panel->funcs->disable)
78 		panel->funcs->disable(panel);
79 }
80 
81 #endif	/* _ROCKCHIP_PANEL_H_ */
82