1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * (C) Copyright 2008-2018 Fuzhou Rockchip Electronics Co., Ltd 4 */ 5 6 #include "rockchip_bridge.h" 7 8 void rockchip_bridge_init(struct rockchip_bridge *bridge, 9 struct display_state *state) 10 { 11 if (!bridge) 12 return; 13 14 bridge->state = state; 15 16 if (bridge->next_bridge) 17 rockchip_bridge_init(bridge->next_bridge, state); 18 } 19 20 void rockchip_bridge_pre_enable(struct rockchip_bridge *bridge) 21 { 22 if (!bridge) 23 return; 24 25 if (bridge->funcs && bridge->funcs->pre_enable) 26 bridge->funcs->pre_enable(bridge); 27 28 if (bridge->next_bridge) 29 rockchip_bridge_pre_enable(bridge->next_bridge); 30 } 31 32 void rockchip_bridge_post_disable(struct rockchip_bridge *bridge) 33 { 34 if (!bridge) 35 return; 36 37 if (bridge->next_bridge) 38 rockchip_bridge_post_disable(bridge->next_bridge); 39 40 if (bridge->funcs && bridge->funcs->post_disable) 41 bridge->funcs->post_disable(bridge); 42 } 43 44 void rockchip_bridge_enable(struct rockchip_bridge *bridge) 45 { 46 if (!bridge) 47 return; 48 49 if (bridge->funcs && bridge->funcs->enable) 50 bridge->funcs->enable(bridge); 51 52 if (bridge->next_bridge) 53 rockchip_bridge_enable(bridge->next_bridge); 54 } 55 56 void rockchip_bridge_disable(struct rockchip_bridge *bridge) 57 { 58 if (!bridge) 59 return; 60 61 if (bridge->next_bridge) 62 rockchip_bridge_disable(bridge->next_bridge); 63 64 if (bridge->funcs && bridge->funcs->disable) 65 bridge->funcs->disable(bridge); 66 } 67 68 void rockchip_bridge_mode_set(struct rockchip_bridge *bridge, 69 const struct drm_display_mode *mode) 70 { 71 if (!bridge || !mode) 72 return; 73 74 if (bridge->funcs && bridge->funcs->mode_set) 75 bridge->funcs->mode_set(bridge, mode); 76 77 if (bridge->next_bridge) 78 rockchip_bridge_mode_set(bridge->next_bridge, mode); 79 } 80