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