xref: /linux/include/drm/bridge/inno_hdmi.h (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1969325a2SAndy Yan /* SPDX-License-Identifier: GPL-2.0-or-later */
2969325a2SAndy Yan /*
3969325a2SAndy Yan  * Copyright (c) 2025 Rockchip Electronics Co., Ltd.
4969325a2SAndy Yan  */
5969325a2SAndy Yan 
6969325a2SAndy Yan #ifndef __INNO_HDMI__
7969325a2SAndy Yan #define __INNO_HDMI__
8969325a2SAndy Yan 
9*a8bdd931SJani Nikula #include <linux/types.h>
10*a8bdd931SJani Nikula 
11969325a2SAndy Yan struct device;
12969325a2SAndy Yan struct drm_encoder;
13969325a2SAndy Yan struct drm_display_mode;
14969325a2SAndy Yan struct inno_hdmi;
15969325a2SAndy Yan 
16969325a2SAndy Yan struct inno_hdmi_plat_ops {
17969325a2SAndy Yan 	void (*enable)(struct device *pdev, struct drm_display_mode *mode);
18969325a2SAndy Yan };
19969325a2SAndy Yan 
20969325a2SAndy Yan struct inno_hdmi_phy_config {
21969325a2SAndy Yan 	unsigned long pixelclock;
22969325a2SAndy Yan 	u8 pre_emphasis;
23969325a2SAndy Yan 	u8 voltage_level_control;
24969325a2SAndy Yan };
25969325a2SAndy Yan 
26969325a2SAndy Yan struct inno_hdmi_plat_data {
27969325a2SAndy Yan 	const struct inno_hdmi_plat_ops *ops;
28969325a2SAndy Yan 	struct inno_hdmi_phy_config *phy_configs;
29969325a2SAndy Yan 	struct inno_hdmi_phy_config *default_phy_config;
30969325a2SAndy Yan };
31969325a2SAndy Yan 
32969325a2SAndy Yan struct inno_hdmi *inno_hdmi_bind(struct device *pdev,
33969325a2SAndy Yan 				 struct drm_encoder *encoder,
34969325a2SAndy Yan 				 const struct inno_hdmi_plat_data *plat_data);
35969325a2SAndy Yan #endif /* __INNO_HDMI__ */
36