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 (*init)(struct rockchip_panel *panel); 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 display_state *state; 29 }; 30 31 static inline void rockchip_panel_init(struct rockchip_panel *panel) 32 { 33 if (!panel) 34 return; 35 36 if (panel->funcs && panel->funcs->init) 37 panel->funcs->init(panel); 38 } 39 40 static inline void rockchip_panel_prepare(struct rockchip_panel *panel) 41 { 42 if (!panel) 43 return; 44 45 if (panel->funcs && panel->funcs->prepare) 46 panel->funcs->prepare(panel); 47 } 48 49 static inline void rockchip_panel_enable(struct rockchip_panel *panel) 50 { 51 if (!panel) 52 return; 53 54 if (panel->funcs && panel->funcs->enable) 55 panel->funcs->enable(panel); 56 } 57 58 static inline void rockchip_panel_unprepare(struct rockchip_panel *panel) 59 { 60 if (!panel) 61 return; 62 63 if (panel->funcs && panel->funcs->unprepare) 64 panel->funcs->unprepare(panel); 65 } 66 67 static inline void rockchip_panel_disable(struct rockchip_panel *panel) 68 { 69 if (!panel) 70 return; 71 72 if (panel->funcs && panel->funcs->disable) 73 panel->funcs->disable(panel); 74 } 75 76 #endif /* _ROCKCHIP_PANEL_H_ */ 77