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