@@ -669,178 +669,24 @@ diff -Naur a/drivers/gpu/drm/meson/meson_venc.c b/drivers/gpu/drm/meson/meson_ve
669
669
670
670
return MODE_OK;
671
671
diff -Naur a/drivers/gpu/drm/meson/meson_viu.c b/drivers/gpu/drm/meson/meson_viu.c
672
- --- a/drivers/gpu/drm/meson/meson_viu.c 2021-10-18 02:00:13.000000000 -0400
673
- +++ b/drivers/gpu/drm/meson/meson_viu.c 2021-10-19 00:24:08.000000000 -0400
674
- @@ -78,32 +78,52 @@
675
- EOTF_COEFF_RIGHTSHIFT /* right shift */
676
- };
677
-
678
- - static void meson_viu_set_g12a_osd1_matrix(struct meson_drm *priv,
679
- - int *m, bool csc_on)
680
- + static void meson_viu_set_g12a_osd_matrix(struct meson_drm *priv,
681
- + int *m, bool csc_on)
682
- {
683
- /* VPP WRAP OSD1 matrix */
684
- writel(((m[0] & 0xfff) << 16) | (m[1] & 0xfff),
685
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_PRE_OFFSET0_1));
686
- + writel(((m[0] & 0xfff) << 16) | (m[1] & 0xfff),
687
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_PRE_OFFSET0_1));
688
- writel(m[2] & 0xfff,
689
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_PRE_OFFSET2));
690
- + writel(m[2] & 0xfff,
691
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_PRE_OFFSET2));
692
- writel(((m[3] & 0x1fff) << 16) | (m[4] & 0x1fff),
693
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_COEF00_01));
694
- + writel(((m[3] & 0x1fff) << 16) | (m[4] & 0x1fff),
695
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_COEF00_01));
696
- writel(((m[5] & 0x1fff) << 16) | (m[6] & 0x1fff),
697
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_COEF02_10));
698
- + writel(((m[5] & 0x1fff) << 16) | (m[6] & 0x1fff),
699
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_COEF02_10));
700
- writel(((m[7] & 0x1fff) << 16) | (m[8] & 0x1fff),
701
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_COEF11_12));
702
- + writel(((m[7] & 0x1fff) << 16) | (m[8] & 0x1fff),
703
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_COEF11_12));
704
- writel(((m[9] & 0x1fff) << 16) | (m[10] & 0x1fff),
705
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_COEF20_21));
706
- + writel(((m[9] & 0x1fff) << 16) | (m[10] & 0x1fff),
707
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_COEF20_21));
708
- writel((m[11] & 0x1fff) << 16,
709
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_COEF22));
710
- + writel((m[11] & 0x1fff) << 16,
711
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_COEF22));
712
-
713
- writel(((m[18] & 0xfff) << 16) | (m[19] & 0xfff),
714
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_OFFSET0_1));
715
- + writel(((m[18] & 0xfff) << 16) | (m[19] & 0xfff),
716
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_OFFSET0_1));
717
- writel(m[20] & 0xfff,
718
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_OFFSET2));
719
- + writel(m[20] & 0xfff,
720
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_OFFSET2));
721
-
722
- writel_bits_relaxed(BIT(0), csc_on ? BIT(0) : 0,
723
- priv->io_base + _REG(VPP_WRAP_OSD1_MATRIX_EN_CTRL));
724
- + writel_bits_relaxed(BIT(0), csc_on ? BIT(0) : 0,
725
- + priv->io_base + _REG(VPP_WRAP_OSD2_MATRIX_EN_CTRL));
726
- }
727
-
728
- static void meson_viu_set_osd_matrix(struct meson_drm *priv,
729
- @@ -114,21 +134,36 @@
730
- /* osd matrix, VIU_MATRIX_0 */
731
- writel(((m[0] & 0xfff) << 16) | (m[1] & 0xfff),
732
- priv->io_base + _REG(VIU_OSD1_MATRIX_PRE_OFFSET0_1));
733
- + writel(((m[0] & 0xfff) << 16) | (m[1] & 0xfff),
734
- + priv->io_base + _REG(VIU_OSD2_MATRIX_PRE_OFFSET0_1));
735
- writel(m[2] & 0xfff,
736
- priv->io_base + _REG(VIU_OSD1_MATRIX_PRE_OFFSET2));
737
- + writel(m[2] & 0xfff,
738
- + priv->io_base + _REG(VIU_OSD2_MATRIX_PRE_OFFSET2));
739
- writel(((m[3] & 0x1fff) << 16) | (m[4] & 0x1fff),
740
- priv->io_base + _REG(VIU_OSD1_MATRIX_COEF00_01));
741
- + writel(((m[3] & 0x1fff) << 16) | (m[4] & 0x1fff),
742
- + priv->io_base + _REG(VIU_OSD2_MATRIX_COEF00_01));
743
- writel(((m[5] & 0x1fff) << 16) | (m[6] & 0x1fff),
744
- priv->io_base + _REG(VIU_OSD1_MATRIX_COEF02_10));
745
- + writel(((m[5] & 0x1fff) << 16) | (m[6] & 0x1fff),
746
- + priv->io_base + _REG(VIU_OSD2_MATRIX_COEF02_10));
747
- writel(((m[7] & 0x1fff) << 16) | (m[8] & 0x1fff),
748
- priv->io_base + _REG(VIU_OSD1_MATRIX_COEF11_12));
749
- + writel(((m[7] & 0x1fff) << 16) | (m[8] & 0x1fff),
750
- + priv->io_base + _REG(VIU_OSD2_MATRIX_COEF11_12));
751
- writel(((m[9] & 0x1fff) << 16) | (m[10] & 0x1fff),
752
- priv->io_base + _REG(VIU_OSD1_MATRIX_COEF20_21));
753
- + writel(((m[9] & 0x1fff) << 16) | (m[10] & 0x1fff),
754
- + priv->io_base + _REG(VIU_OSD2_MATRIX_COEF20_21));
755
-
756
- if (m[21]) {
757
- writel(((m[11] & 0x1fff) << 16) | (m[12] & 0x1fff),
758
- priv->io_base +
759
- _REG(VIU_OSD1_MATRIX_COEF22_30));
760
- + writel(((m[11] & 0x1fff) << 16),
761
- + priv->io_base +
762
- + _REG(VIU_OSD2_MATRIX_COEF22));
763
- writel(((m[13] & 0x1fff) << 16) | (m[14] & 0x1fff),
764
- priv->io_base +
765
- _REG(VIU_OSD1_MATRIX_COEF31_32));
766
- @@ -137,14 +172,21 @@
767
- _REG(VIU_OSD1_MATRIX_COEF40_41));
768
- writel(m[17] & 0x1fff, priv->io_base +
769
- _REG(VIU_OSD1_MATRIX_COLMOD_COEF42));
770
- - } else
771
- + } else {
772
- writel((m[11] & 0x1fff) << 16, priv->io_base +
773
- _REG(VIU_OSD1_MATRIX_COEF22_30));
774
- + writel((m[11] & 0x1fff) << 16, priv->io_base +
775
- + _REG(VIU_OSD2_MATRIX_COEF22));
776
- + }
777
-
778
- writel(((m[18] & 0xfff) << 16) | (m[19] & 0xfff),
779
- priv->io_base + _REG(VIU_OSD1_MATRIX_OFFSET0_1));
780
- + writel(((m[18] & 0xfff) << 16) | (m[19] & 0xfff),
781
- + priv->io_base + _REG(VIU_OSD2_MATRIX_OFFSET0_1));
782
- writel(m[20] & 0xfff,
783
- priv->io_base + _REG(VIU_OSD1_MATRIX_OFFSET2));
784
- + writel(m[20] & 0xfff,
785
- + priv->io_base + _REG(VIU_OSD2_MATRIX_OFFSET2));
786
-
787
- writel_bits_relaxed(3 << 30, m[21] << 30,
788
- priv->io_base + _REG(VIU_OSD1_MATRIX_COLMOD_COEF42));
789
- @@ -154,8 +196,12 @@
790
- /* 23 reserved for clipping control */
791
- writel_bits_relaxed(BIT(0), csc_on ? BIT(0) : 0,
792
- priv->io_base + _REG(VIU_OSD1_MATRIX_CTRL));
793
- + writel_bits_relaxed(BIT(0), csc_on ? BIT(0) : 0,
794
- + priv->io_base + _REG(VIU_OSD2_MATRIX_CTRL));
795
- writel_bits_relaxed(BIT(1), 0,
796
- priv->io_base + _REG(VIU_OSD1_MATRIX_CTRL));
797
- + writel_bits_relaxed(BIT(1), 0,
798
- + priv->io_base + _REG(VIU_OSD2_MATRIX_CTRL));
799
- } else if (m_select == VIU_MATRIX_OSD_EOTF) {
800
- int i;
801
-
802
- @@ -425,14 +471,12 @@
672
+ --- a/drivers/gpu/drm/meson/meson_viu.c 2022-08-17 09:16:21.000000000 -0400
673
+ +++ b/drivers/gpu/drm/meson/meson_viu.c 2022-08-18 21:44:58.000000000 -0400
674
+ @@ -425,6 +425,7 @@
803
675
if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXM) ||
804
676
meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXL))
805
677
meson_viu_load_matrix(priv);
806
- - else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) {
807
- - meson_viu_set_g12a_osd1_matrix(priv, RGB709_to_YUV709l_coeff,
808
678
+ #if 0
809
- + /* FIXME: */
810
- + else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A))
811
- + meson_viu_set_g12a_osd_matrix(priv, RGB709_to_YUV709l_coeff,
679
+ else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) {
680
+ meson_viu_set_g12a_osd1_matrix(priv, RGB709_to_YUV709l_coeff,
812
681
true);
813
- - /* fix green/pink color distortion from vendor u-boot */
814
- - writel_bits_relaxed(OSD1_HDR2_CTRL_REG_ONLY_MAT |
815
- - OSD1_HDR2_CTRL_VDIN0_HDR2_TOP_EN, 0,
816
- - priv->io_base + _REG(OSD1_HDR2_CTRL));
817
- - }
682
+ @@ -433,6 +434,7 @@
683
+ OSD1_HDR2_CTRL_VDIN0_HDR2_TOP_EN, 0,
684
+ priv->io_base + _REG(OSD1_HDR2_CTRL));
685
+ }
818
686
+ #endif
819
687
820
688
/* Initialize OSD1 fifo control register */
821
689
reg = VIU_OSD_DDR_PRIORITY_URGENT |
822
- @@ -469,14 +513,13 @@
823
- priv->io_base + _REG(VD2_IF0_LUMA_FIFO_SIZE));
824
-
825
- if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) {
826
- - writel_relaxed(VIU_OSD_BLEND_REORDER(0, 1) |
827
- - VIU_OSD_BLEND_REORDER(1, 0) |
828
- - VIU_OSD_BLEND_REORDER(2, 0) |
829
- - VIU_OSD_BLEND_REORDER(3, 0) |
830
- - VIU_OSD_BLEND_DIN_EN(1) |
831
- - VIU_OSD_BLEND1_DIN3_BYPASS_TO_DOUT1 |
832
- - VIU_OSD_BLEND1_DOUT_BYPASS_TO_BLEND2 |
833
- - VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 |
834
- + /* setup bypass to have OSD1->DOUT0 + OSD2->DOUT1 */
835
- + writel_relaxed(VIU_OSD_BLEND_REORDER(0, 1) | /* OSD1 to DIN0 */
836
- + VIU_OSD_BLEND_REORDER(1, 4) |
837
- + VIU_OSD_BLEND_REORDER(2, 4) |
838
- + VIU_OSD_BLEND_REORDER(3, 2) | /* OSD2 to DIN3 */
839
- + VIU_OSD_BLEND_DIN_EN(9) | /* Enable DIN0 & DIN3 */
840
- + VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 | /* DIN0 to DOUT0 */
841
- VIU_OSD_BLEND_BLEN2_PREMULT_EN(1) |
842
- VIU_OSD_BLEND_HOLD_LINES(4),
843
- priv->io_base + _REG(VIU_OSD_BLEND_CTRL));
844
690
diff -Naur a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
845
691
--- a/drivers/gpu/drm/tiny/ili9341.c 2021-10-18 02:00:13.000000000 -0400
846
692
+++ b/drivers/gpu/drm/tiny/ili9341.c 2021-10-19 00:24:08.000000000 -0400
0 commit comments