|
31 | 31 | #define INTF_TEST_CTL 0x054
|
32 | 32 | #define INTF_TP_COLOR0 0x058
|
33 | 33 | #define INTF_TP_COLOR1 0x05C
|
| 34 | +#define INTF_CONFIG2 0x060 |
| 35 | +#define INTF_DISPLAY_DATA_HCTL 0x064 |
34 | 36 | #define INTF_FRAME_LINE_COUNT_EN 0x0A8
|
35 | 37 | #define INTF_FRAME_COUNT 0x0AC
|
36 | 38 | #define INTF_LINE_COUNT 0x0B0
|
@@ -93,7 +95,7 @@ static void dpu_hw_intf_setup_timing_engine(struct dpu_hw_intf *ctx,
|
93 | 95 | u32 active_hctl, display_hctl, hsync_ctl;
|
94 | 96 | u32 polarity_ctl, den_polarity, hsync_polarity, vsync_polarity;
|
95 | 97 | u32 panel_format;
|
96 |
| - u32 intf_cfg; |
| 98 | + u32 intf_cfg, intf_cfg2 = 0, display_data_hctl = 0; |
97 | 99 |
|
98 | 100 | /* read interface_cfg */
|
99 | 101 | intf_cfg = DPU_REG_READ(c, INTF_CONFIG);
|
@@ -178,6 +180,13 @@ static void dpu_hw_intf_setup_timing_engine(struct dpu_hw_intf *ctx,
|
178 | 180 | (COLOR_8BIT << 4) |
|
179 | 181 | (0x21 << 8));
|
180 | 182 |
|
| 183 | + if (ctx->cap->features & BIT(DPU_DATA_HCTL_EN)) { |
| 184 | + intf_cfg2 |= BIT(4); |
| 185 | + display_data_hctl = display_hctl; |
| 186 | + DPU_REG_WRITE(c, INTF_CONFIG2, intf_cfg2); |
| 187 | + DPU_REG_WRITE(c, INTF_DISPLAY_DATA_HCTL, display_data_hctl); |
| 188 | + } |
| 189 | + |
181 | 190 | DPU_REG_WRITE(c, INTF_HSYNC_CTL, hsync_ctl);
|
182 | 191 | DPU_REG_WRITE(c, INTF_VSYNC_PERIOD_F0, vsync_period * hsync_period);
|
183 | 192 | DPU_REG_WRITE(c, INTF_VSYNC_PULSE_WIDTH_F0,
|
|
0 commit comments