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