@@ -1568,6 +1568,57 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
1568
1568
KUNIT_EXPECT_EQ (test , conn_state -> hdmi .output_format , HDMI_COLORSPACE_RGB );
1569
1569
}
1570
1570
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
+
1571
1622
static struct kunit_case drm_atomic_helper_connector_hdmi_check_tests [] = {
1572
1623
KUNIT_CASE (drm_test_check_broadcast_rgb_auto_cea_mode ),
1573
1624
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[] = {
1582
1633
*/
1583
1634
KUNIT_CASE (drm_test_check_broadcast_rgb_crtc_mode_changed ),
1584
1635
KUNIT_CASE (drm_test_check_broadcast_rgb_crtc_mode_not_changed ),
1636
+ KUNIT_CASE (drm_test_check_disable_connector ),
1585
1637
KUNIT_CASE (drm_test_check_hdmi_funcs_reject_rate ),
1586
1638
KUNIT_CASE (drm_test_check_max_tmds_rate_bpc_fallback ),
1587
1639
KUNIT_CASE (drm_test_check_max_tmds_rate_format_fallback ),
0 commit comments