@@ -64,6 +64,10 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
64
64
u32 word ;
65
65
u32 diff [3 ] = {0 };
66
66
67
+ /* If there's no gamma lut there's nothing to do here. */
68
+ if (!state -> gamma_lut )
69
+ return ;
70
+
67
71
/* If we're called from AAL, dev is NULL */
68
72
gamma = dev ? dev_get_drvdata (dev ) : NULL ;
69
73
@@ -72,29 +76,26 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
72
76
else
73
77
lut_diff = false;
74
78
75
- if (state -> gamma_lut ) {
76
- reg = readl (regs + DISP_GAMMA_CFG );
77
- reg = reg | GAMMA_LUT_EN ;
78
- writel (reg , regs + DISP_GAMMA_CFG );
79
- lut_base = regs + DISP_GAMMA_LUT ;
80
- lut = (struct drm_color_lut * )state -> gamma_lut -> data ;
81
- for (i = 0 ; i < MTK_LUT_SIZE ; i ++ ) {
82
-
83
- if (!lut_diff || (i % 2 == 0 )) {
84
- word = (((lut [i ].red >> 6 ) & LUT_10BIT_MASK ) << 20 ) +
85
- (((lut [i ].green >> 6 ) & LUT_10BIT_MASK ) << 10 ) +
86
- ((lut [i ].blue >> 6 ) & LUT_10BIT_MASK );
87
- } else {
88
- diff [0 ] = (lut [i ].red >> 6 ) - (lut [i - 1 ].red >> 6 );
89
- diff [1 ] = (lut [i ].green >> 6 ) - (lut [i - 1 ].green >> 6 );
90
- diff [2 ] = (lut [i ].blue >> 6 ) - (lut [i - 1 ].blue >> 6 );
91
-
92
- word = ((diff [0 ] & LUT_10BIT_MASK ) << 20 ) +
93
- ((diff [1 ] & LUT_10BIT_MASK ) << 10 ) +
94
- (diff [2 ] & LUT_10BIT_MASK );
95
- }
96
- writel (word , (lut_base + i * 4 ));
79
+ reg = readl (regs + DISP_GAMMA_CFG );
80
+ reg = reg | GAMMA_LUT_EN ;
81
+ writel (reg , regs + DISP_GAMMA_CFG );
82
+ lut_base = regs + DISP_GAMMA_LUT ;
83
+ lut = (struct drm_color_lut * )state -> gamma_lut -> data ;
84
+ for (i = 0 ; i < MTK_LUT_SIZE ; i ++ ) {
85
+ if (!lut_diff || (i % 2 == 0 )) {
86
+ word = (((lut [i ].red >> 6 ) & LUT_10BIT_MASK ) << 20 ) +
87
+ (((lut [i ].green >> 6 ) & LUT_10BIT_MASK ) << 10 ) +
88
+ ((lut [i ].blue >> 6 ) & LUT_10BIT_MASK );
89
+ } else {
90
+ diff [0 ] = (lut [i ].red >> 6 ) - (lut [i - 1 ].red >> 6 );
91
+ diff [1 ] = (lut [i ].green >> 6 ) - (lut [i - 1 ].green >> 6 );
92
+ diff [2 ] = (lut [i ].blue >> 6 ) - (lut [i - 1 ].blue >> 6 );
93
+
94
+ word = ((diff [0 ] & LUT_10BIT_MASK ) << 20 ) +
95
+ ((diff [1 ] & LUT_10BIT_MASK ) << 10 ) +
96
+ (diff [2 ] & LUT_10BIT_MASK );
97
97
}
98
+ writel (word , (lut_base + i * 4 ));
98
99
}
99
100
}
100
101
0 commit comments