mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
drm/rockchip: add rockchip_drm_add_modes_noedid
rockchip_drm_add_modes_noedid() used to get the following recommend modes at rockchip platform when get edid failed: the recommend modes is: 480p60, 576p50, 720p50, 720p60, 1080p50, 1080p60 and 720p60 is the preferred mode. Change-Id: I9c82b3949506a616e8c98bfa2d77532bdb870390 Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
@@ -136,6 +136,65 @@ int rockchip_drm_get_sub_dev_type(void)
|
||||
}
|
||||
EXPORT_SYMBOL(rockchip_drm_get_sub_dev_type);
|
||||
|
||||
static const struct drm_display_mode rockchip_drm_default_modes[] = {
|
||||
/* 4 - 1280x720@60Hz 16:9 */
|
||||
{ DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
|
||||
1430, 1650, 0, 720, 725, 730, 750, 0,
|
||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
|
||||
.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
|
||||
/* 16 - 1920x1080@60Hz 16:9 */
|
||||
{ DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008,
|
||||
2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
|
||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
|
||||
.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
|
||||
/* 31 - 1920x1080@50Hz 16:9 */
|
||||
{ DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448,
|
||||
2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
|
||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
|
||||
.vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
|
||||
/* 19 - 1280x720@50Hz 16:9 */
|
||||
{ DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
|
||||
1760, 1980, 0, 720, 725, 730, 750, 0,
|
||||
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
|
||||
.vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
|
||||
/* 17 - 720x576@50Hz 4:3 */
|
||||
{ DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732,
|
||||
796, 864, 0, 576, 581, 586, 625, 0,
|
||||
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
|
||||
.vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, },
|
||||
/* 2 - 720x480@60Hz 4:3 */
|
||||
{ DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736,
|
||||
798, 858, 0, 480, 489, 495, 525, 0,
|
||||
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
|
||||
.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, },
|
||||
};
|
||||
|
||||
int rockchip_drm_add_modes_noedid(struct drm_connector *connector)
|
||||
{
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct drm_display_mode *mode;
|
||||
int i, count, num_modes = 0;
|
||||
|
||||
mutex_lock(&rockchip_drm_sub_dev_lock);
|
||||
count = ARRAY_SIZE(rockchip_drm_default_modes);
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
const struct drm_display_mode *ptr = &rockchip_drm_default_modes[i];
|
||||
|
||||
mode = drm_mode_duplicate(dev, ptr);
|
||||
if (mode) {
|
||||
if (!i)
|
||||
mode->type = DRM_MODE_TYPE_PREFERRED;
|
||||
drm_mode_probed_add(connector, mode);
|
||||
num_modes++;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&rockchip_drm_sub_dev_lock);
|
||||
|
||||
return num_modes;
|
||||
}
|
||||
EXPORT_SYMBOL(rockchip_drm_add_modes_noedid);
|
||||
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
struct drm_prime_callback_data {
|
||||
struct drm_gem_object *obj;
|
||||
|
||||
@@ -201,6 +201,7 @@ int rockchip_drm_wait_vact_end(struct drm_crtc *crtc, unsigned int mstimeout);
|
||||
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);
|
||||
#if IS_ENABLED(CONFIG_DRM_ROCKCHIP)
|
||||
int rockchip_drm_get_sub_dev_type(void);
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user