drm/rockchip: drv: Add helper function drm_mode_convert_to_{split,origin}_mode()

Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
Change-Id: I1a40d0d296c5e82cc5d40378af002132d9949e04
This commit is contained in:
Wyon Bi
2021-11-19 19:08:35 +08:00
committed by Tao Huang
parent 7cba838b19
commit 3cc26c4bbc
2 changed files with 37 additions and 0 deletions

View File

@@ -47,6 +47,41 @@
static bool is_support_iommu = true;
static struct drm_driver rockchip_drm_driver;
void drm_mode_convert_to_split_mode(struct drm_display_mode *mode)
{
u16 hactive, hfp, hsync, hbp;
hactive = mode->hdisplay;
hfp = mode->hsync_start - mode->hdisplay;
hsync = mode->hsync_end - mode->hsync_start;
hbp = mode->htotal - mode->hsync_end;
mode->clock *= 2;
mode->hdisplay = hactive * 2;
mode->hsync_start = mode->hdisplay + hfp * 2;
mode->hsync_end = mode->hsync_start + hsync * 2;
mode->htotal = mode->hsync_end + hbp * 2;
drm_mode_set_name(mode);
}
EXPORT_SYMBOL(drm_mode_convert_to_split_mode);
void drm_mode_convert_to_origin_mode(struct drm_display_mode *mode)
{
u16 hactive, hfp, hsync, hbp;
hactive = mode->hdisplay;
hfp = mode->hsync_start - mode->hdisplay;
hsync = mode->hsync_end - mode->hsync_start;
hbp = mode->htotal - mode->hsync_end;
mode->clock /= 2;
mode->hdisplay = hactive / 2;
mode->hsync_start = mode->hdisplay + hfp / 2;
mode->hsync_end = mode->hsync_start + hsync / 2;
mode->htotal = mode->hsync_end + hbp / 2;
}
EXPORT_SYMBOL(drm_mode_convert_to_origin_mode);
/**
* drm_connector_oob_hotplug_event - Report out-of-band hotplug event to connector
* @connector: connector to report the event on

View File

@@ -400,6 +400,8 @@ void rockchip_drm_register_sub_dev(struct rockchip_drm_sub_dev *sub_dev);
void rockchip_drm_unregister_sub_dev(struct rockchip_drm_sub_dev *sub_dev);
struct rockchip_drm_sub_dev *rockchip_drm_get_sub_dev(struct device_node *node);
int rockchip_drm_add_modes_noedid(struct drm_connector *connector);
void drm_mode_convert_to_split_mode(struct drm_display_mode *mode);
void drm_mode_convert_to_origin_mode(struct drm_display_mode *mode);
#if IS_ENABLED(CONFIG_DRM_ROCKCHIP)
int rockchip_drm_get_sub_dev_type(void);
#else