18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Analogix DP (Display Port) Core interface driver. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2015 Rockchip Electronics Co., Ltd. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#ifndef _ANALOGIX_DP_H_ 88c2ecf20Sopenharmony_ci#define _ANALOGIX_DP_H_ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <drm/drm_crtc.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistruct analogix_dp_device; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cienum analogix_dp_devtype { 158c2ecf20Sopenharmony_ci EXYNOS_DP, 168c2ecf20Sopenharmony_ci RK3288_DP, 178c2ecf20Sopenharmony_ci RK3399_EDP, 188c2ecf20Sopenharmony_ci}; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic inline bool is_rockchip(enum analogix_dp_devtype type) 218c2ecf20Sopenharmony_ci{ 228c2ecf20Sopenharmony_ci return type == RK3288_DP || type == RK3399_EDP; 238c2ecf20Sopenharmony_ci} 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistruct analogix_dp_plat_data { 268c2ecf20Sopenharmony_ci enum analogix_dp_devtype dev_type; 278c2ecf20Sopenharmony_ci struct drm_panel *panel; 288c2ecf20Sopenharmony_ci struct drm_encoder *encoder; 298c2ecf20Sopenharmony_ci struct drm_connector *connector; 308c2ecf20Sopenharmony_ci bool skip_connector; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci int (*power_on_start)(struct analogix_dp_plat_data *); 338c2ecf20Sopenharmony_ci int (*power_on_end)(struct analogix_dp_plat_data *); 348c2ecf20Sopenharmony_ci int (*power_off)(struct analogix_dp_plat_data *); 358c2ecf20Sopenharmony_ci int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *, 368c2ecf20Sopenharmony_ci struct drm_connector *); 378c2ecf20Sopenharmony_ci int (*get_modes)(struct analogix_dp_plat_data *, 388c2ecf20Sopenharmony_ci struct drm_connector *); 398c2ecf20Sopenharmony_ci}; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciint analogix_dp_resume(struct analogix_dp_device *dp); 428c2ecf20Sopenharmony_ciint analogix_dp_suspend(struct analogix_dp_device *dp); 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_cistruct analogix_dp_device * 458c2ecf20Sopenharmony_cianalogix_dp_probe(struct device *dev, struct analogix_dp_plat_data *plat_data); 468c2ecf20Sopenharmony_ciint analogix_dp_bind(struct analogix_dp_device *dp, struct drm_device *drm_dev); 478c2ecf20Sopenharmony_civoid analogix_dp_unbind(struct analogix_dp_device *dp); 488c2ecf20Sopenharmony_civoid analogix_dp_remove(struct analogix_dp_device *dp); 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciint analogix_dp_start_crc(struct drm_connector *connector); 518c2ecf20Sopenharmony_ciint analogix_dp_stop_crc(struct drm_connector *connector); 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci#endif /* _ANALOGIX_DP_H_ */ 54