1186f8572SMark Yao /* 2186f8572SMark Yao * (C) Copyright 2008-2017 Fuzhou Rockchip Electronics Co., Ltd 3186f8572SMark Yao * 4186f8572SMark Yao * SPDX-License-Identifier: GPL-2.0+ 5186f8572SMark Yao */ 6186f8572SMark Yao 7186f8572SMark Yao #ifndef _ROCKCHIP_PANEL_H_ 8186f8572SMark Yao #define _ROCKCHIP_PANEL_H_ 9186f8572SMark Yao 101a8d717cSWyon Bi struct display_state; 11*7cacd0a8SWyon Bi struct rockchip_panel; 121a8d717cSWyon Bi 13186f8572SMark Yao struct rockchip_panel_funcs { 14*7cacd0a8SWyon Bi void (*init)(struct rockchip_panel *panel); 15*7cacd0a8SWyon Bi void (*prepare)(struct rockchip_panel *panel); 16*7cacd0a8SWyon Bi void (*unprepare)(struct rockchip_panel *panel); 17*7cacd0a8SWyon Bi void (*enable)(struct rockchip_panel *panel); 18*7cacd0a8SWyon Bi void (*disable)(struct rockchip_panel *panel); 19186f8572SMark Yao }; 20186f8572SMark Yao 21186f8572SMark Yao struct rockchip_panel { 221a8d717cSWyon Bi struct udevice *dev; 231a8d717cSWyon Bi u32 bus_format; 24186f8572SMark Yao const struct rockchip_panel_funcs *funcs; 25186f8572SMark Yao const void *data; 26*7cacd0a8SWyon Bi 27*7cacd0a8SWyon Bi struct display_state *state; 28186f8572SMark Yao }; 29186f8572SMark Yao 30*7cacd0a8SWyon Bi static inline void rockchip_panel_init(struct rockchip_panel *panel) 31*7cacd0a8SWyon Bi { 32*7cacd0a8SWyon Bi if (!panel) 33*7cacd0a8SWyon Bi return; 34*7cacd0a8SWyon Bi 35*7cacd0a8SWyon Bi if (panel->funcs && panel->funcs->init) 36*7cacd0a8SWyon Bi panel->funcs->init(panel); 37*7cacd0a8SWyon Bi } 38*7cacd0a8SWyon Bi 39*7cacd0a8SWyon Bi static inline void rockchip_panel_prepare(struct rockchip_panel *panel) 40*7cacd0a8SWyon Bi { 41*7cacd0a8SWyon Bi if (!panel) 42*7cacd0a8SWyon Bi return; 43*7cacd0a8SWyon Bi 44*7cacd0a8SWyon Bi if (panel->funcs && panel->funcs->prepare) 45*7cacd0a8SWyon Bi panel->funcs->prepare(panel); 46*7cacd0a8SWyon Bi } 47*7cacd0a8SWyon Bi 48*7cacd0a8SWyon Bi static inline void rockchip_panel_enable(struct rockchip_panel *panel) 49*7cacd0a8SWyon Bi { 50*7cacd0a8SWyon Bi if (!panel) 51*7cacd0a8SWyon Bi return; 52*7cacd0a8SWyon Bi 53*7cacd0a8SWyon Bi if (panel->funcs && panel->funcs->enable) 54*7cacd0a8SWyon Bi panel->funcs->enable(panel); 55*7cacd0a8SWyon Bi } 56*7cacd0a8SWyon Bi 57*7cacd0a8SWyon Bi static inline void rockchip_panel_unprepare(struct rockchip_panel *panel) 58*7cacd0a8SWyon Bi { 59*7cacd0a8SWyon Bi if (!panel) 60*7cacd0a8SWyon Bi return; 61*7cacd0a8SWyon Bi 62*7cacd0a8SWyon Bi if (panel->funcs && panel->funcs->unprepare) 63*7cacd0a8SWyon Bi panel->funcs->unprepare(panel); 64*7cacd0a8SWyon Bi } 65*7cacd0a8SWyon Bi 66*7cacd0a8SWyon Bi static inline void rockchip_panel_disable(struct rockchip_panel *panel) 67*7cacd0a8SWyon Bi { 68*7cacd0a8SWyon Bi if (!panel) 69*7cacd0a8SWyon Bi return; 70*7cacd0a8SWyon Bi 71*7cacd0a8SWyon Bi if (panel->funcs && panel->funcs->disable) 72*7cacd0a8SWyon Bi panel->funcs->disable(panel); 73*7cacd0a8SWyon Bi } 74*7cacd0a8SWyon Bi 75186f8572SMark Yao #endif /* _ROCKCHIP_PANEL_H_ */ 76