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 struct rockchip_conn; 13 14 struct rockchip_panel_funcs { 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 int (*get_mode)(struct rockchip_panel *panel, 20 struct drm_display_mode *mode); 21 }; 22 23 struct rockchip_panel { 24 struct udevice *dev; 25 u32 bus_format; 26 unsigned int bpc; 27 const struct rockchip_panel_funcs *funcs; 28 const void *data; 29 30 struct rockchip_connector *conn; 31 struct display_state *state; 32 }; 33 rockchip_panel_init(struct rockchip_panel * panel,struct rockchip_connector * conn,struct display_state * state)34static inline void rockchip_panel_init(struct rockchip_panel *panel, 35 struct rockchip_connector *conn, 36 struct display_state *state) 37 { 38 if (!panel) 39 return; 40 41 panel->conn = conn; 42 panel->state = state; 43 44 if (panel->bus_format) 45 state->conn_state.bus_format = panel->bus_format; 46 47 if (panel->bpc) 48 state->conn_state.bpc = panel->bpc; 49 } 50 rockchip_panel_prepare(struct rockchip_panel * panel)51static inline void rockchip_panel_prepare(struct rockchip_panel *panel) 52 { 53 if (!panel) 54 return; 55 56 if (panel->funcs && panel->funcs->prepare) 57 panel->funcs->prepare(panel); 58 } 59 rockchip_panel_enable(struct rockchip_panel * panel)60static inline void rockchip_panel_enable(struct rockchip_panel *panel) 61 { 62 if (!panel) 63 return; 64 65 if (panel->funcs && panel->funcs->enable) 66 panel->funcs->enable(panel); 67 } 68 rockchip_panel_unprepare(struct rockchip_panel * panel)69static inline void rockchip_panel_unprepare(struct rockchip_panel *panel) 70 { 71 if (!panel) 72 return; 73 74 if (panel->funcs && panel->funcs->unprepare) 75 panel->funcs->unprepare(panel); 76 } 77 rockchip_panel_disable(struct rockchip_panel * panel)78static inline void rockchip_panel_disable(struct rockchip_panel *panel) 79 { 80 if (!panel) 81 return; 82 83 if (panel->funcs && panel->funcs->disable) 84 panel->funcs->disable(panel); 85 } 86 87 #endif /* _ROCKCHIP_PANEL_H_ */ 88