xref: /rk3399_rockchip-uboot/drivers/video/drm/rockchip_panel.h (revision 7cacd0a8516f2e79a1c4e40e194eae58a9777655)
1186f8572SMark Yao /*
2186f8572SMark Yao  * (C) Copyright 2008-2017 Fuzhou Rockchip Electronics Co., Ltd
3186f8572SMark Yao  *
4186f8572SMark Yao  * SPDX-License-Identifier:	GPL-2.0+
5186f8572SMark Yao  */
6186f8572SMark Yao 
7186f8572SMark Yao #ifndef _ROCKCHIP_PANEL_H_
8186f8572SMark Yao #define _ROCKCHIP_PANEL_H_
9186f8572SMark Yao 
101a8d717cSWyon Bi struct display_state;
11*7cacd0a8SWyon Bi struct rockchip_panel;
121a8d717cSWyon Bi 
13186f8572SMark Yao struct rockchip_panel_funcs {
14*7cacd0a8SWyon Bi 	void (*init)(struct rockchip_panel *panel);
15*7cacd0a8SWyon Bi 	void (*prepare)(struct rockchip_panel *panel);
16*7cacd0a8SWyon Bi 	void (*unprepare)(struct rockchip_panel *panel);
17*7cacd0a8SWyon Bi 	void (*enable)(struct rockchip_panel *panel);
18*7cacd0a8SWyon Bi 	void (*disable)(struct rockchip_panel *panel);
19186f8572SMark Yao };
20186f8572SMark Yao 
21186f8572SMark Yao struct rockchip_panel {
221a8d717cSWyon Bi 	struct udevice *dev;
231a8d717cSWyon Bi 	u32 bus_format;
24186f8572SMark Yao 	const struct rockchip_panel_funcs *funcs;
25186f8572SMark Yao 	const void *data;
26*7cacd0a8SWyon Bi 
27*7cacd0a8SWyon Bi 	struct display_state *state;
28186f8572SMark Yao };
29186f8572SMark Yao 
30*7cacd0a8SWyon Bi static inline void rockchip_panel_init(struct rockchip_panel *panel)
31*7cacd0a8SWyon Bi {
32*7cacd0a8SWyon Bi 	if (!panel)
33*7cacd0a8SWyon Bi 		return;
34*7cacd0a8SWyon Bi 
35*7cacd0a8SWyon Bi 	if (panel->funcs && panel->funcs->init)
36*7cacd0a8SWyon Bi 		panel->funcs->init(panel);
37*7cacd0a8SWyon Bi }
38*7cacd0a8SWyon Bi 
39*7cacd0a8SWyon Bi static inline void rockchip_panel_prepare(struct rockchip_panel *panel)
40*7cacd0a8SWyon Bi {
41*7cacd0a8SWyon Bi 	if (!panel)
42*7cacd0a8SWyon Bi 		return;
43*7cacd0a8SWyon Bi 
44*7cacd0a8SWyon Bi 	if (panel->funcs && panel->funcs->prepare)
45*7cacd0a8SWyon Bi 		panel->funcs->prepare(panel);
46*7cacd0a8SWyon Bi }
47*7cacd0a8SWyon Bi 
48*7cacd0a8SWyon Bi static inline void rockchip_panel_enable(struct rockchip_panel *panel)
49*7cacd0a8SWyon Bi {
50*7cacd0a8SWyon Bi 	if (!panel)
51*7cacd0a8SWyon Bi 		return;
52*7cacd0a8SWyon Bi 
53*7cacd0a8SWyon Bi 	if (panel->funcs && panel->funcs->enable)
54*7cacd0a8SWyon Bi 		panel->funcs->enable(panel);
55*7cacd0a8SWyon Bi }
56*7cacd0a8SWyon Bi 
57*7cacd0a8SWyon Bi static inline void rockchip_panel_unprepare(struct rockchip_panel *panel)
58*7cacd0a8SWyon Bi {
59*7cacd0a8SWyon Bi 	if (!panel)
60*7cacd0a8SWyon Bi 		return;
61*7cacd0a8SWyon Bi 
62*7cacd0a8SWyon Bi 	if (panel->funcs && panel->funcs->unprepare)
63*7cacd0a8SWyon Bi 		panel->funcs->unprepare(panel);
64*7cacd0a8SWyon Bi }
65*7cacd0a8SWyon Bi 
66*7cacd0a8SWyon Bi static inline void rockchip_panel_disable(struct rockchip_panel *panel)
67*7cacd0a8SWyon Bi {
68*7cacd0a8SWyon Bi 	if (!panel)
69*7cacd0a8SWyon Bi 		return;
70*7cacd0a8SWyon Bi 
71*7cacd0a8SWyon Bi 	if (panel->funcs && panel->funcs->disable)
72*7cacd0a8SWyon Bi 		panel->funcs->disable(panel);
73*7cacd0a8SWyon Bi }
74*7cacd0a8SWyon Bi 
75186f8572SMark Yao #endif	/* _ROCKCHIP_PANEL_H_ */
76