@@ -1568,6 +1568,57 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
15681568 KUNIT_EXPECT_EQ (test , conn_state -> hdmi .output_format , HDMI_COLORSPACE_RGB );
15691569}
15701570
1571+ /* Test that atomic check succeeds when disabling a connector. */
1572+ static void drm_test_check_disable_connector (struct kunit * test )
1573+ {
1574+ struct drm_atomic_helper_connector_hdmi_priv * priv ;
1575+ struct drm_modeset_acquire_ctx * ctx ;
1576+ struct drm_connector_state * conn_state ;
1577+ struct drm_crtc_state * crtc_state ;
1578+ struct drm_atomic_state * state ;
1579+ struct drm_display_mode * preferred ;
1580+ struct drm_connector * conn ;
1581+ struct drm_device * drm ;
1582+ struct drm_crtc * crtc ;
1583+ int ret ;
1584+
1585+ priv = drm_kunit_helper_connector_hdmi_init (test ,
1586+ BIT (HDMI_COLORSPACE_RGB ),
1587+ 8 );
1588+ KUNIT_ASSERT_NOT_NULL (test , priv );
1589+
1590+ ctx = drm_kunit_helper_acquire_ctx_alloc (test );
1591+ KUNIT_ASSERT_NOT_ERR_OR_NULL (test , ctx );
1592+
1593+ conn = & priv -> connector ;
1594+ preferred = find_preferred_mode (conn );
1595+ KUNIT_ASSERT_NOT_NULL (test , preferred );
1596+
1597+ drm = & priv -> drm ;
1598+ crtc = priv -> crtc ;
1599+ ret = light_up_connector (test , drm , crtc , conn , preferred , ctx );
1600+ KUNIT_ASSERT_EQ (test , ret , 0 );
1601+
1602+ state = drm_kunit_helper_atomic_state_alloc (test , drm , ctx );
1603+ KUNIT_ASSERT_NOT_ERR_OR_NULL (test , state );
1604+
1605+ crtc_state = drm_atomic_get_crtc_state (state , crtc );
1606+ KUNIT_ASSERT_NOT_ERR_OR_NULL (test , crtc_state );
1607+
1608+ crtc_state -> active = false;
1609+ ret = drm_atomic_set_mode_for_crtc (crtc_state , NULL );
1610+ KUNIT_EXPECT_EQ (test , ret , 0 );
1611+
1612+ conn_state = drm_atomic_get_connector_state (state , conn );
1613+ KUNIT_ASSERT_NOT_ERR_OR_NULL (test , conn_state );
1614+
1615+ ret = drm_atomic_set_crtc_for_connector (conn_state , NULL );
1616+ KUNIT_EXPECT_EQ (test , ret , 0 );
1617+
1618+ ret = drm_atomic_check_only (state );
1619+ KUNIT_ASSERT_EQ (test , ret , 0 );
1620+ }
1621+
15711622static struct kunit_case drm_atomic_helper_connector_hdmi_check_tests [] = {
15721623 KUNIT_CASE (drm_test_check_broadcast_rgb_auto_cea_mode ),
15731624 KUNIT_CASE (drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 ),
@@ -1582,6 +1633,7 @@ static struct kunit_case drm_atomic_helper_connector_hdmi_check_tests[] = {
15821633 */
15831634 KUNIT_CASE (drm_test_check_broadcast_rgb_crtc_mode_changed ),
15841635 KUNIT_CASE (drm_test_check_broadcast_rgb_crtc_mode_not_changed ),
1636+ KUNIT_CASE (drm_test_check_disable_connector ),
15851637 KUNIT_CASE (drm_test_check_hdmi_funcs_reject_rate ),
15861638 KUNIT_CASE (drm_test_check_max_tmds_rate_bpc_fallback ),
15871639 KUNIT_CASE (drm_test_check_max_tmds_rate_format_fallback ),
0 commit comments