Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/vc4: Add monochrome mode to the VEC.

The VEC supports not producing colour bursts for monochrome output.
It also has an option for disabling the chroma input to remove
chroma from the signal.

Now that there is a DRM_MODE_TV_MODE_MONOCHROME defined, plumb
this in.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240619153913.2804051-3-dave.stevenson@raspberrypi.com

authored by

Dave Stevenson and committed by
Maxime Ripard
53c5da85 f85376c8

+28 -1
+28 -1
drivers/gpu/drm/vc4/vc4_vec.c
··· 234 234 VC4_VEC_TV_MODE_PAL_60, 235 235 VC4_VEC_TV_MODE_PAL_N, 236 236 VC4_VEC_TV_MODE_SECAM, 237 + VC4_VEC_TV_MODE_MONOCHROME, 237 238 }; 238 239 239 240 struct vc4_vec_tv_mode { ··· 325 324 .config1 = VEC_CONFIG1_C_CVBS_CVBS, 326 325 .custom_freq = 0x29c71c72, 327 326 }, 327 + { 328 + /* 50Hz mono */ 329 + .mode = DRM_MODE_TV_MODE_MONOCHROME, 330 + .expected_htotal = 864, 331 + .config0 = VEC_CONFIG0_PAL_BDGHI_STD | VEC_CONFIG0_BURDIS | 332 + VEC_CONFIG0_CHRDIS, 333 + .config1 = VEC_CONFIG1_C_CVBS_CVBS, 334 + }, 335 + { 336 + /* 60Hz mono */ 337 + .mode = DRM_MODE_TV_MODE_MONOCHROME, 338 + .expected_htotal = 858, 339 + .config0 = VEC_CONFIG0_PAL_M_STD | VEC_CONFIG0_BURDIS | 340 + VEC_CONFIG0_CHRDIS, 341 + .config1 = VEC_CONFIG1_C_CVBS_CVBS, 342 + }, 328 343 }; 329 344 330 345 static inline const struct vc4_vec_tv_mode * ··· 368 351 { VC4_VEC_TV_MODE_PAL_M, "PAL-M", }, 369 352 { VC4_VEC_TV_MODE_PAL_N, "PAL-N", }, 370 353 { VC4_VEC_TV_MODE_SECAM, "SECAM", }, 354 + { VC4_VEC_TV_MODE_MONOCHROME, "Mono", }, 371 355 }; 372 356 373 357 static enum drm_connector_status ··· 424 406 state->tv.mode = DRM_MODE_TV_MODE_SECAM; 425 407 break; 426 408 409 + case VC4_VEC_TV_MODE_MONOCHROME: 410 + state->tv.mode = DRM_MODE_TV_MODE_MONOCHROME; 411 + break; 412 + 427 413 default: 428 414 return -EINVAL; 429 415 } ··· 473 451 474 452 case DRM_MODE_TV_MODE_SECAM: 475 453 *val = VC4_VEC_TV_MODE_SECAM; 454 + break; 455 + 456 + case DRM_MODE_TV_MODE_MONOCHROME: 457 + *val = VC4_VEC_TV_MODE_MONOCHROME; 476 458 break; 477 459 478 460 default: ··· 780 754 BIT(DRM_MODE_TV_MODE_PAL) | 781 755 BIT(DRM_MODE_TV_MODE_PAL_M) | 782 756 BIT(DRM_MODE_TV_MODE_PAL_N) | 783 - BIT(DRM_MODE_TV_MODE_SECAM)); 757 + BIT(DRM_MODE_TV_MODE_SECAM) | 758 + BIT(DRM_MODE_TV_MODE_MONOCHROME)); 784 759 if (ret) 785 760 return ret; 786 761