diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-6.1/950-0008-drm-vc4-Add-support-for-more-analog-TV-standards.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-6.1/950-0008-drm-vc4-Add-support-for-more-analog-TV-standards.patch | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/target/linux/bcm27xx/patches-6.1/950-0008-drm-vc4-Add-support-for-more-analog-TV-standards.patch b/target/linux/bcm27xx/patches-6.1/950-0008-drm-vc4-Add-support-for-more-analog-TV-standards.patch deleted file mode 100644 index e1c9170a55..0000000000 --- a/target/linux/bcm27xx/patches-6.1/950-0008-drm-vc4-Add-support-for-more-analog-TV-standards.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 5040ce6a1488fb6bf43d10172e0209c13de99a80 Mon Sep 17 00:00:00 2001 -From: Mateusz Kwiatkowski <kfyatek+publicgit@gmail.com> -Date: Thu, 15 Jul 2021 01:07:58 +0200 -Subject: [PATCH] drm/vc4: Add support for more analog TV standards - -Add support for the following composite output modes (all of them are -somewhat more obscure than the previously defined ones): - -- NTSC_443 - NTSC-style signal with the chroma subcarrier shifted to - 4.43361875 MHz (the PAL subcarrier frequency). Never used for - broadcasting, but sometimes used as a hack to play NTSC content in PAL - regions (e.g. on VCRs). -- PAL_N - PAL with alternative chroma subcarrier frequency, - 3.58205625 MHz. Used as a broadcast standard in Argentina, Paraguay - and Uruguay to fit 576i50 with colour in 6 MHz channel raster. -- PAL60 - 480i60 signal with PAL-style color at normal European PAL - frequency. Another non-standard, non-broadcast mode, used in similar - contexts as NTSC_443. Some displays support one but not the other. -- SECAM - French frequency-modulated analog color standard; also have - been broadcast in Eastern Europe and various parts of Africa and Asia. - Uses the same 576i50 timings as PAL. - -Also added some comments explaining color subcarrier frequency -registers. - -Signed-off-by: Mateusz Kwiatkowski <kfyatek+publicgit@gmail.com> ---- - drivers/gpu/drm/vc4/vc4_vec.c | 63 +++++++++++++++++++++++++++++++++++ - 1 file changed, 63 insertions(+) - ---- a/drivers/gpu/drm/vc4/vc4_vec.c -+++ b/drivers/gpu/drm/vc4/vc4_vec.c -@@ -46,6 +46,7 @@ - #define VEC_CONFIG0_YDEL(x) ((x) << 26) - #define VEC_CONFIG0_CDEL_MASK GENMASK(25, 24) - #define VEC_CONFIG0_CDEL(x) ((x) << 24) -+#define VEC_CONFIG0_SECAM_STD BIT(21) - #define VEC_CONFIG0_PBPR_FIL BIT(18) - #define VEC_CONFIG0_CHROMA_GAIN_MASK GENMASK(17, 16) - #define VEC_CONFIG0_CHROMA_GAIN_UNITY (0 << 16) -@@ -76,6 +77,27 @@ - #define VEC_SOFT_RESET 0x10c - #define VEC_CLMP0_START 0x144 - #define VEC_CLMP0_END 0x148 -+ -+/* -+ * These set the color subcarrier frequency -+ * if VEC_CONFIG1_CUSTOM_FREQ is enabled. -+ * -+ * VEC_FREQ1_0 contains the most significant 16-bit half-word, -+ * VEC_FREQ3_2 contains the least significant 16-bit half-word. -+ * 0x80000000 seems to be equivalent to the pixel clock -+ * (which itself is the VEC clock divided by 8). -+ * -+ * Reference values (with the default pixel clock of 13.5 MHz): -+ * -+ * NTSC (3579545.[45] Hz) - 0x21F07C1F -+ * PAL (4433618.75 Hz) - 0x2A098ACB -+ * PAL-M (3575611.[888111] Hz) - 0x21E6EFE3 -+ * PAL-N (3582056.25 Hz) - 0x21F69446 -+ * -+ * NOTE: For SECAM, it is used as the Dr center frequency, -+ * regardless of whether VEC_CONFIG1_CUSTOM_FREQ is enabled or not; -+ * that is specified as 4406250 Hz, which corresponds to 0x29C71C72. -+ */ - #define VEC_FREQ3_2 0x180 - #define VEC_FREQ1_0 0x184 - -@@ -118,6 +140,14 @@ - - #define VEC_INTERRUPT_CONTROL 0x190 - #define VEC_INTERRUPT_STATUS 0x194 -+ -+/* -+ * Db center frequency for SECAM; the clock for this is the same as for -+ * VEC_FREQ3_2/VEC_FREQ1_0, which is used for Dr center frequency. -+ * -+ * This is specified as 4250000 Hz, which corresponds to 0x284BDA13. -+ * That is also the default value, so no need to set it explicitly. -+ */ - #define VEC_FCW_SECAM_B 0x198 - #define VEC_SECAM_GAIN_VAL 0x19c - -@@ -187,8 +217,12 @@ encoder_to_vc4_vec(struct drm_encoder *e - enum vc4_vec_tv_mode_id { - VC4_VEC_TV_MODE_NTSC, - VC4_VEC_TV_MODE_NTSC_J, -+ VC4_VEC_TV_MODE_NTSC_443, - VC4_VEC_TV_MODE_PAL, - VC4_VEC_TV_MODE_PAL_M, -+ VC4_VEC_TV_MODE_PAL_N, -+ VC4_VEC_TV_MODE_PAL60, -+ VC4_VEC_TV_MODE_SECAM, - }; - - struct vc4_vec_tv_mode { -@@ -250,6 +284,13 @@ static const struct vc4_vec_tv_mode vc4_ - .config0 = VEC_CONFIG0_NTSC_STD, - .config1 = VEC_CONFIG1_C_CVBS_CVBS, - }, -+ [VC4_VEC_TV_MODE_NTSC_443] = { -+ /* NTSC with PAL chroma frequency */ -+ .mode = &drm_mode_480i, -+ .config0 = VEC_CONFIG0_NTSC_STD, -+ .config1 = VEC_CONFIG1_C_CVBS_CVBS | VEC_CONFIG1_CUSTOM_FREQ, -+ .custom_freq = 0x2a098acb, -+ }, - [VC4_VEC_TV_MODE_PAL] = { - .mode = &drm_mode_576i, - .config0 = VEC_CONFIG0_PAL_BDGHI_STD, -@@ -260,6 +301,24 @@ static const struct vc4_vec_tv_mode vc4_ - .config0 = VEC_CONFIG0_PAL_M_STD, - .config1 = VEC_CONFIG1_C_CVBS_CVBS, - }, -+ [VC4_VEC_TV_MODE_PAL_N] = { -+ .mode = &drm_mode_576i, -+ .config0 = VEC_CONFIG0_PAL_N_STD, -+ .config1 = VEC_CONFIG1_C_CVBS_CVBS, -+ }, -+ [VC4_VEC_TV_MODE_PAL60] = { -+ /* PAL-M with chroma frequency of regular PAL */ -+ .mode = &drm_mode_480i, -+ .config0 = VEC_CONFIG0_PAL_M_STD, -+ .config1 = VEC_CONFIG1_C_CVBS_CVBS | VEC_CONFIG1_CUSTOM_FREQ, -+ .custom_freq = 0x2a098acb, -+ }, -+ [VC4_VEC_TV_MODE_SECAM] = { -+ .mode = &drm_mode_576i, -+ .config0 = VEC_CONFIG0_SECAM_STD, -+ .config1 = VEC_CONFIG1_C_CVBS_CVBS, -+ .custom_freq = 0x29c71c72, -+ }, - }; - - static enum drm_connector_status -@@ -503,8 +562,12 @@ static const struct of_device_id vc4_vec - static const char * const tv_mode_names[] = { - [VC4_VEC_TV_MODE_NTSC] = "NTSC", - [VC4_VEC_TV_MODE_NTSC_J] = "NTSC-J", -+ [VC4_VEC_TV_MODE_NTSC_443] = "NTSC-443", - [VC4_VEC_TV_MODE_PAL] = "PAL", - [VC4_VEC_TV_MODE_PAL_M] = "PAL-M", -+ [VC4_VEC_TV_MODE_PAL_N] = "PAL-N", -+ [VC4_VEC_TV_MODE_PAL60] = "PAL60", -+ [VC4_VEC_TV_MODE_SECAM] = "SECAM", - }; - - static int vc4_vec_bind(struct device *dev, struct device *master, void *data) |