mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	drm/tests: Add tests for the new Monochrome value of tv_mode
Adds test for the cmdline parser, connector property, and drm_analog_tv_mode to ensure the behaviour of the new value is correct. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Signed-off-by: Maxime Ripard <mripard@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240620110947.3615207-1-dave.stevenson@raspberrypi.com
This commit is contained in:
		
							parent
							
								
									0c94f58cef
								
							
						
					
					
						commit
						e315384899
					
				
					 3 changed files with 43 additions and 0 deletions
				
			
		|  | @ -992,6 +992,17 @@ static const struct drm_cmdline_tv_option_test drm_cmdline_tv_option_tests[] = { | |||
| 	TV_OPT_TEST(PAL_M, "720x480i,tv_mode=PAL-M", drm_mode_analog_ntsc_480i), | ||||
| 	TV_OPT_TEST(PAL_N, "720x576i,tv_mode=PAL-N", drm_mode_analog_pal_576i), | ||||
| 	TV_OPT_TEST(SECAM, "720x576i,tv_mode=SECAM", drm_mode_analog_pal_576i), | ||||
| 	{ | ||||
| 		.name = "MONO_525", | ||||
| 		.cmdline = "720x480i,tv_mode=Mono", | ||||
| 		.mode_fn = drm_mode_analog_ntsc_480i, | ||||
| 		.tv_mode = DRM_MODE_TV_MODE_MONOCHROME, | ||||
| 	}, { | ||||
| 		.name = "MONO_625", | ||||
| 		.cmdline = "720x576i,tv_mode=Mono", | ||||
| 		.mode_fn = drm_mode_analog_pal_576i, | ||||
| 		.tv_mode = DRM_MODE_TV_MODE_MONOCHROME, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static void drm_cmdline_tv_option_desc(const struct drm_cmdline_tv_option_test *t, | ||||
|  |  | |||
|  | @ -777,6 +777,7 @@ struct drm_get_tv_mode_from_name_test drm_get_tv_mode_from_name_valid_tests[] = | |||
| 	TV_MODE_NAME("PAL-M", DRM_MODE_TV_MODE_PAL_M), | ||||
| 	TV_MODE_NAME("PAL-N", DRM_MODE_TV_MODE_PAL_N), | ||||
| 	TV_MODE_NAME("SECAM", DRM_MODE_TV_MODE_SECAM), | ||||
| 	TV_MODE_NAME("Mono", DRM_MODE_TV_MODE_MONOCHROME), | ||||
| }; | ||||
| 
 | ||||
| static void | ||||
|  |  | |||
|  | @ -130,7 +130,38 @@ static void drm_test_modes_analog_tv_pal_576i_inlined(struct kunit *test) | |||
| 	KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected, mode)); | ||||
| } | ||||
| 
 | ||||
| static void drm_test_modes_analog_tv_mono_576i(struct kunit *test) | ||||
| { | ||||
| 	struct drm_test_modes_priv *priv = test->priv; | ||||
| 	struct drm_display_mode *mode; | ||||
| 
 | ||||
| 	mode = drm_analog_tv_mode(priv->drm, | ||||
| 				  DRM_MODE_TV_MODE_MONOCHROME, | ||||
| 				  13500 * HZ_PER_KHZ, 720, 576, | ||||
| 				  true); | ||||
| 	KUNIT_ASSERT_NOT_NULL(test, mode); | ||||
| 
 | ||||
| 	KUNIT_EXPECT_EQ(test, drm_mode_vrefresh(mode), 50); | ||||
| 	KUNIT_EXPECT_EQ(test, mode->hdisplay, 720); | ||||
| 
 | ||||
| 	/* BT.601 defines hsync_start at 732 for 576i */ | ||||
| 	KUNIT_EXPECT_EQ(test, mode->hsync_start, 732); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * The PAL standard expects a line to take 64us. With a pixel | ||||
| 	 * clock of 13.5 MHz, a pixel takes around 74ns, so we need to | ||||
| 	 * have 64000ns / 74ns = 864. | ||||
| 	 * | ||||
| 	 * This is also mandated by BT.601. | ||||
| 	 */ | ||||
| 	KUNIT_EXPECT_EQ(test, mode->htotal, 864); | ||||
| 
 | ||||
| 	KUNIT_EXPECT_EQ(test, mode->vdisplay, 576); | ||||
| 	KUNIT_EXPECT_EQ(test, mode->vtotal, 625); | ||||
| } | ||||
| 
 | ||||
| static struct kunit_case drm_modes_analog_tv_tests[] = { | ||||
| 	KUNIT_CASE(drm_test_modes_analog_tv_mono_576i), | ||||
| 	KUNIT_CASE(drm_test_modes_analog_tv_ntsc_480i), | ||||
| 	KUNIT_CASE(drm_test_modes_analog_tv_ntsc_480i_inlined), | ||||
| 	KUNIT_CASE(drm_test_modes_analog_tv_pal_576i), | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Dave Stevenson
						Dave Stevenson