270270
271271#define DPTX_MAX_STREAMS 4
272272
273+
274+ //[email protected] set fixed resolution 275+ static const struct drm_display_mode dw_dp_default_modes [] = {
276+ /* 16 - 1920x1080@60Hz 16:9 */
277+ { DRM_MODE ("1920x1080" , DRM_MODE_TYPE_DRIVER , 148500 , 1920 , 2008 ,
278+ 2052 , 2200 , 0 , 1080 , 1084 , 1089 , 1125 , 0 ,
279+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC ),
280+ .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9 , },
281+ /* 2 - 720x480@60Hz 4:3 */
282+ { DRM_MODE ("720x480" , DRM_MODE_TYPE_DRIVER , 27000 , 720 , 736 ,
283+ 798 , 858 , 0 , 480 , 489 , 495 , 525 , 0 ,
284+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC ),
285+ .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3 , },
286+ /* 4 - 1280x720@60Hz 16:9 */
287+ { DRM_MODE ("1280x720" , DRM_MODE_TYPE_DRIVER , 74250 , 1280 , 1390 ,
288+ 1430 , 1650 , 0 , 720 , 725 , 730 , 750 , 0 ,
289+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC ),
290+ .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9 , },
291+ /* 31 - 1920x1080@50Hz 16:9 */
292+ { DRM_MODE ("1920x1080" , DRM_MODE_TYPE_DRIVER , 148500 , 1920 , 2448 ,
293+ 2492 , 2640 , 0 , 1080 , 1084 , 1089 , 1125 , 0 ,
294+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC ),
295+ .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9 , },
296+ /* 19 - 1280x720@50Hz 16:9 */
297+ { DRM_MODE ("1280x720" , DRM_MODE_TYPE_DRIVER , 74250 , 1280 , 1720 ,
298+ 1760 , 1980 , 0 , 720 , 725 , 730 , 750 , 0 ,
299+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC ),
300+ .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9 , },
301+ /* 17 - 720x576@50Hz 4:3 */
302+ { DRM_MODE ("720x576" , DRM_MODE_TYPE_DRIVER , 27000 , 720 , 732 ,
303+ 796 , 864 , 0 , 576 , 581 , 586 , 625 , 0 ,
304+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC ),
305+ .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3 , },
306+ /* 2 - 720x480@60Hz 4:3 */
307+ { DRM_MODE ("720x480" , DRM_MODE_TYPE_DRIVER , 27000 , 720 , 736 ,
308+ 798 , 858 , 0 , 480 , 489 , 495 , 525 , 0 ,
309+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC ),
310+ .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3 , },
311+ };
312+
313+
314+
273315enum {
274316 RK3576_DP ,
275317 RK3588_DP ,
@@ -1441,7 +1483,9 @@ static int dw_dp_connector_get_modes(struct drm_connector *connector)
14411483 struct dw_dp * dp = connector_to_dp (connector );
14421484 struct drm_display_info * di = & connector -> display_info ;
14431485 struct edid * edid ;
1486+ struct drm_display_mode * mode ;
14441487 int num_modes = 0 ;
1488+ int i ;
14451489
14461490 if (dp -> right && dp -> right -> next_bridge ) {
14471491 struct drm_bridge * bridge = dp -> right -> next_bridge ;
@@ -1462,7 +1506,21 @@ static int dw_dp_connector_get_modes(struct drm_connector *connector)
14621506 edid = drm_bridge_get_edid (& dp -> bridge , connector );
14631507 if (edid ) {
14641508 drm_connector_update_edid_property (connector , edid );
1465- num_modes = drm_add_edid_modes (connector , edid );
1509+ //[email protected] set fixed resolution 1510+ //num_modes = drm_add_edid_modes(connector, edid);
1511+ for (i = 0 ; i < ARRAY_SIZE (dw_dp_default_modes ); i ++ ) {
1512+ const struct drm_display_mode * ptr =
1513+ & dw_dp_default_modes [i ];
1514+
1515+ mode = drm_mode_duplicate (connector -> dev , ptr );
1516+ if (mode ) {
1517+ if (!i )
1518+ mode -> type = DRM_MODE_TYPE_PREFERRED ;
1519+ drm_mode_probed_add (connector , mode );
1520+ num_modes ++ ;
1521+
1522+ }
1523+ }
14661524 dw_dp_update_hdr_property (connector );
14671525 kfree (edid );
14681526 }
0 commit comments