mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
drm/rockchip: drv: 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, 768p60, 1080p50, 1080p60 and 720p60 is the preferred mode. Signed-off-by: Sandy Huang <hjc@rock-chips.com> Change-Id: I9c82b3949506a616e8c98bfa2d77532bdb870390
This commit is contained in:
@@ -138,6 +138,69 @@ struct rockchip_drm_sub_dev *rockchip_drm_get_sub_dev(struct device_node *node)
|
||||
}
|
||||
EXPORT_SYMBOL(rockchip_drm_get_sub_dev);
|
||||
|
||||
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),
|
||||
.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),
|
||||
.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),
|
||||
.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),
|
||||
.picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
|
||||
/* 0x10 - 1024x768@60Hz */
|
||||
{ DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048,
|
||||
1184, 1344, 0, 768, 771, 777, 806, 0,
|
||||
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
/* 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),
|
||||
.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),
|
||||
.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);
|
||||
|
||||
int rockchip_register_crtc_funcs(struct drm_crtc *crtc,
|
||||
const struct rockchip_crtc_funcs *crtc_funcs)
|
||||
{
|
||||
|
||||
@@ -191,6 +191,7 @@ void rockchip_unregister_crtc_funcs(struct drm_crtc *crtc);
|
||||
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);
|
||||
|
||||
int rockchip_drm_endpoint_is_subdriver(struct device_node *ep);
|
||||
uint32_t rockchip_drm_of_find_possible_crtcs(struct drm_device *dev,
|
||||
|
||||
Reference in New Issue
Block a user