drm/modes: Introduce more named modes
authorMaxime Ripard <maxime@cerno.tech>
Thu, 17 Nov 2022 09:28:54 +0000 (10:28 +0100)
committerMaxime Ripard <maxime@cerno.tech>
Thu, 24 Nov 2022 11:42:40 +0000 (12:42 +0100)
Now that we can easily extend the named modes list, let's add a few more
analog TV modes that were used in the wild, and some unit tests to make
sure it works as intended.

Reviewed-by: Noralf Trønnes <noralf@tronnes.org>
Tested-by: Mateusz Kwiatkowski <kfyatek+publicgit@gmail.com>
Acked-in-principle-or-something-like-that-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v10-11-256dad125326@cerno.tech
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Documentation/fb/modedb.rst
drivers/gpu/drm/drm_modes.c
drivers/gpu/drm/tests/drm_client_modeset_test.c

index bebfe61caa77fd0a0e55bb59c2ff5af0abc28dc9..bb2889c6ea27eead2b6ea2bf1730aa7094ddf540 100644 (file)
@@ -29,7 +29,10 @@ Things between square brackets are optional.
 Valid names are::
 
   - NSTC: 480i output, with the CCIR System-M TV mode and NTSC color encoding
+  - NTSC-J: 480i output, with the CCIR System-M TV mode, the NTSC color
+    encoding, and a black level equal to the blanking level.
   - PAL: 576i output, with the CCIR System-B TV mode and PAL color encoding
+  - PAL-M: 480i output, with the CCIR System-M TV mode and PAL color encoding
 
 If 'M' is specified in the mode_option argument (after <yres> and before
 <bpp> and <refresh>, if specified) the timings will be calculated using
index 3d410be8db69aef96fbeb166258dc5cb79311b0f..699c66e54668848d76ae6f286740622e955e8ba1 100644 (file)
@@ -2274,7 +2274,9 @@ struct drm_named_mode {
 
 static const struct drm_named_mode drm_named_modes[] = {
        NAMED_MODE("NTSC", 13500, 720, 480, DRM_MODE_FLAG_INTERLACE, DRM_MODE_TV_MODE_NTSC),
+       NAMED_MODE("NTSC-J", 13500, 720, 480, DRM_MODE_FLAG_INTERLACE, DRM_MODE_TV_MODE_NTSC_J),
        NAMED_MODE("PAL", 13500, 720, 576, DRM_MODE_FLAG_INTERLACE, DRM_MODE_TV_MODE_PAL),
+       NAMED_MODE("PAL-M", 13500, 720, 480, DRM_MODE_FLAG_INTERLACE, DRM_MODE_TV_MODE_PAL_M),
 };
 
 static int drm_mode_parse_cmdline_named_mode(const char *name,
index fe1f6be097a282a87cd367b5a96f8f069ba002a9..52929536a158265c8eb5f97283facc411ac8ea3c 100644 (file)
@@ -150,7 +150,9 @@ static void drm_test_pick_cmdline_named(struct kunit *test)
 static const
 struct drm_connector_pick_cmdline_mode_test drm_connector_pick_cmdline_mode_tests[] = {
        TEST_CMDLINE("NTSC", drm_mode_analog_ntsc_480i),
+       TEST_CMDLINE("NTSC-J", drm_mode_analog_ntsc_480i),
        TEST_CMDLINE("PAL", drm_mode_analog_pal_576i),
+       TEST_CMDLINE("PAL-M", drm_mode_analog_ntsc_480i),
 };
 
 static void