xref: /rk3399_rockchip-uboot/drivers/video/drm/rockchip_bridge.h (revision 0e6acdbc527a4aeb5fd5966bf874dbe404baf433)
11a8d717cSWyon Bi /* SPDX-License-Identifier: GPL-2.0+ */
21a8d717cSWyon Bi /*
31a8d717cSWyon Bi  * (C) Copyright 2008-2018 Fuzhou Rockchip Electronics Co., Ltd
41a8d717cSWyon Bi  */
51a8d717cSWyon Bi 
61a8d717cSWyon Bi #ifndef _ROCKCHIP_BRIDGE_H_
71a8d717cSWyon Bi #define _ROCKCHIP_BRIDGE_H_
81a8d717cSWyon Bi 
91a8d717cSWyon Bi #include <config.h>
101a8d717cSWyon Bi #include <common.h>
111a8d717cSWyon Bi #include <dm/device.h>
121a8d717cSWyon Bi #include <errno.h>
131a8d717cSWyon Bi 
141a8d717cSWyon Bi struct display_state;
151a8d717cSWyon Bi struct rockchip_bridge;
16ee937701SWyon Bi struct drm_display_mode;
170594ce39SZhang Yubing struct rockchip_connector;
181a8d717cSWyon Bi 
191a8d717cSWyon Bi struct rockchip_bridge_funcs {
201a8d717cSWyon Bi 	void (*enable)(struct rockchip_bridge *bridge);
211a8d717cSWyon Bi 	void (*disable)(struct rockchip_bridge *bridge);
221a8d717cSWyon Bi 	void (*pre_enable)(struct rockchip_bridge *bridge);
231a8d717cSWyon Bi 	void (*post_disable)(struct rockchip_bridge *bridge);
24ee937701SWyon Bi 	void (*mode_set)(struct rockchip_bridge *bridge,
25ee937701SWyon Bi 			 const struct drm_display_mode *mode);
26daf8b0a0SWyon Bi 	bool (*detect)(struct rockchip_bridge *bridge);
271a8d717cSWyon Bi };
281a8d717cSWyon Bi 
291a8d717cSWyon Bi struct rockchip_bridge {
301a8d717cSWyon Bi 	struct udevice *dev;
311a8d717cSWyon Bi 	const struct rockchip_bridge_funcs *funcs;
323893d79dSWyon Bi 	struct rockchip_bridge *next_bridge;
330594ce39SZhang Yubing 	struct rockchip_connector *conn;
341a8d717cSWyon Bi 	struct display_state *state;
35*0e6acdbcSDamon Ding 	u32 bus_format;
361a8d717cSWyon Bi };
371a8d717cSWyon Bi 
383893d79dSWyon Bi void rockchip_bridge_init(struct rockchip_bridge *bridge,
390594ce39SZhang Yubing 			  struct rockchip_connector *conn,
403893d79dSWyon Bi 			  struct display_state *state);
411a8d717cSWyon Bi void rockchip_bridge_enable(struct rockchip_bridge *bridge);
421a8d717cSWyon Bi void rockchip_bridge_disable(struct rockchip_bridge *bridge);
431a8d717cSWyon Bi void rockchip_bridge_pre_enable(struct rockchip_bridge *bridge);
441a8d717cSWyon Bi void rockchip_bridge_post_disable(struct rockchip_bridge *bridge);
45ee937701SWyon Bi void rockchip_bridge_mode_set(struct rockchip_bridge *bridge,
46ee937701SWyon Bi 			      const struct drm_display_mode *mode);
47daf8b0a0SWyon Bi bool rockchip_bridge_detect(struct rockchip_bridge *bridge);
481a8d717cSWyon Bi 
491a8d717cSWyon Bi #endif
50