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