2016-03-29 09:57:03 +08:00
/*
* Analogix DP ( Display Port ) Core interface driver .
*
* Copyright ( C ) 2015 Rockchip Electronics Co . , Ltd .
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation ; either version 2 of the License , or ( at your
* option ) any later version .
*/
# ifndef _ANALOGIX_DP_H_
# define _ANALOGIX_DP_H_
# include <drm/drm_crtc.h>
2018-01-10 17:23:41 +01:00
struct analogix_dp_device ;
2016-03-29 09:57:03 +08:00
enum analogix_dp_devtype {
EXYNOS_DP ,
2016-03-29 09:57:30 +08:00
RK3288_DP ,
2016-06-29 17:15:26 +08:00
RK3399_EDP ,
2016-03-29 09:57:03 +08:00
} ;
2016-06-29 17:15:18 +08:00
static inline bool is_rockchip ( enum analogix_dp_devtype type )
{
2016-06-29 17:15:26 +08:00
return type = = RK3288_DP | | type = = RK3399_EDP ;
2016-06-29 17:15:18 +08:00
}
2016-03-29 09:57:03 +08:00
struct analogix_dp_plat_data {
enum analogix_dp_devtype dev_type ;
struct drm_panel * panel ;
struct drm_encoder * encoder ;
struct drm_connector * connector ;
2018-03-05 09:57:41 +01:00
bool skip_connector ;
2016-03-29 09:57:03 +08:00
2018-04-23 12:49:58 +02:00
int ( * power_on_start ) ( struct analogix_dp_plat_data * ) ;
int ( * power_on_end ) ( struct analogix_dp_plat_data * ) ;
2016-03-29 09:57:03 +08:00
int ( * power_off ) ( struct analogix_dp_plat_data * ) ;
int ( * attach ) ( struct analogix_dp_plat_data * , struct drm_bridge * ,
struct drm_connector * ) ;
2016-06-29 17:15:35 +08:00
int ( * get_modes ) ( struct analogix_dp_plat_data * ,
struct drm_connector * ) ;
2016-03-29 09:57:03 +08:00
} ;
2018-03-09 23:22:54 +01:00
int analogix_dp_psr_enabled ( struct analogix_dp_device * dp ) ;
2018-01-10 17:23:41 +01:00
int analogix_dp_enable_psr ( struct analogix_dp_device * dp ) ;
int analogix_dp_disable_psr ( struct analogix_dp_device * dp ) ;
2016-07-24 14:57:48 +08:00
2018-01-10 17:23:41 +01:00
int analogix_dp_resume ( struct analogix_dp_device * dp ) ;
int analogix_dp_suspend ( struct analogix_dp_device * dp ) ;
2016-03-29 09:57:03 +08:00
2018-01-10 17:23:41 +01:00
struct analogix_dp_device *
analogix_dp_bind ( struct device * dev , struct drm_device * drm_dev ,
struct analogix_dp_plat_data * plat_data ) ;
void analogix_dp_unbind ( struct analogix_dp_device * dp ) ;
2016-03-29 09:57:03 +08:00
2017-03-03 14:39:35 +01:00
int analogix_dp_start_crc ( struct drm_connector * connector ) ;
int analogix_dp_stop_crc ( struct drm_connector * connector ) ;
2016-03-29 09:57:03 +08:00
# endif /* _ANALOGIX_DP_H_ */