|
1 | 1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | 2 | /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. |
| 3 | + * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved. |
3 | 4 | */ |
4 | 5 |
|
5 | 6 | #define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__ |
|
120 | 121 | BIT(MDP_AD4_0_INTR) | \ |
121 | 122 | BIT(MDP_AD4_1_INTR)) |
122 | 123 |
|
| 124 | +#define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ |
| 125 | + BIT(DPU_WB_UBWC) | \ |
| 126 | + BIT(DPU_WB_YUV_CONFIG) | \ |
| 127 | + BIT(DPU_WB_PIPE_ALPHA) | \ |
| 128 | + BIT(DPU_WB_XY_ROI_OFFSET) | \ |
| 129 | + BIT(DPU_WB_QOS) | \ |
| 130 | + BIT(DPU_WB_QOS_8LVL) | \ |
| 131 | + BIT(DPU_WB_CDP) | \ |
| 132 | + BIT(DPU_WB_INPUT_CTRL)) |
| 133 | + |
123 | 134 | #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) |
124 | 135 | #define DEFAULT_DPU_LINE_WIDTH 2048 |
125 | 136 | #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 |
@@ -211,6 +222,40 @@ static const u32 rotation_v2_formats[] = { |
211 | 222 | /* TODO add formats after validation */ |
212 | 223 | }; |
213 | 224 |
|
| 225 | +static const uint32_t wb2_formats[] = { |
| 226 | + DRM_FORMAT_RGB565, |
| 227 | + DRM_FORMAT_BGR565, |
| 228 | + DRM_FORMAT_RGB888, |
| 229 | + DRM_FORMAT_ARGB8888, |
| 230 | + DRM_FORMAT_RGBA8888, |
| 231 | + DRM_FORMAT_ABGR8888, |
| 232 | + DRM_FORMAT_XRGB8888, |
| 233 | + DRM_FORMAT_RGBX8888, |
| 234 | + DRM_FORMAT_XBGR8888, |
| 235 | + DRM_FORMAT_ARGB1555, |
| 236 | + DRM_FORMAT_RGBA5551, |
| 237 | + DRM_FORMAT_XRGB1555, |
| 238 | + DRM_FORMAT_RGBX5551, |
| 239 | + DRM_FORMAT_ARGB4444, |
| 240 | + DRM_FORMAT_RGBA4444, |
| 241 | + DRM_FORMAT_RGBX4444, |
| 242 | + DRM_FORMAT_XRGB4444, |
| 243 | + DRM_FORMAT_BGR565, |
| 244 | + DRM_FORMAT_BGR888, |
| 245 | + DRM_FORMAT_ABGR8888, |
| 246 | + DRM_FORMAT_BGRA8888, |
| 247 | + DRM_FORMAT_BGRX8888, |
| 248 | + DRM_FORMAT_XBGR8888, |
| 249 | + DRM_FORMAT_ABGR1555, |
| 250 | + DRM_FORMAT_BGRA5551, |
| 251 | + DRM_FORMAT_XBGR1555, |
| 252 | + DRM_FORMAT_BGRX5551, |
| 253 | + DRM_FORMAT_ABGR4444, |
| 254 | + DRM_FORMAT_BGRA4444, |
| 255 | + DRM_FORMAT_BGRX4444, |
| 256 | + DRM_FORMAT_XBGR4444, |
| 257 | +}; |
| 258 | + |
214 | 259 | /************************************************************* |
215 | 260 | * DPU sub blocks config |
216 | 261 | *************************************************************/ |
@@ -448,6 +493,8 @@ static const struct dpu_mdp_cfg sm8250_mdp[] = { |
448 | 493 | .reg_off = 0x2C4, .bit_off = 8}, |
449 | 494 | .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { |
450 | 495 | .reg_off = 0x2BC, .bit_off = 20}, |
| 496 | + .clk_ctrls[DPU_CLK_CTRL_WB2] = { |
| 497 | + .reg_off = 0x3B8, .bit_off = 24}, |
451 | 498 | }, |
452 | 499 | }; |
453 | 500 |
|
@@ -1234,6 +1281,29 @@ static const struct dpu_intf_cfg qcm2290_intf[] = { |
1234 | 1281 | INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), |
1235 | 1282 | }; |
1236 | 1283 |
|
| 1284 | +/************************************************************* |
| 1285 | + * Writeback blocks config |
| 1286 | + *************************************************************/ |
| 1287 | +#define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ |
| 1288 | + __xin_id, vbif_id, _reg, _wb_done_bit) \ |
| 1289 | + { \ |
| 1290 | + .name = _name, .id = _id, \ |
| 1291 | + .base = _base, .len = 0x2c8, \ |
| 1292 | + .features = _features, \ |
| 1293 | + .format_list = wb2_formats, \ |
| 1294 | + .num_formats = ARRAY_SIZE(wb2_formats), \ |
| 1295 | + .clk_ctrl = _clk_ctrl, \ |
| 1296 | + .xin_id = __xin_id, \ |
| 1297 | + .vbif_idx = vbif_id, \ |
| 1298 | + .maxlinewidth = DEFAULT_DPU_LINE_WIDTH, \ |
| 1299 | + .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ |
| 1300 | + } |
| 1301 | + |
| 1302 | +static const struct dpu_wb_cfg sm8250_wb[] = { |
| 1303 | + WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, |
| 1304 | + VBIF_RT, MDP_SSPP_TOP0_INTR, 4), |
| 1305 | +}; |
| 1306 | + |
1237 | 1307 | /************************************************************* |
1238 | 1308 | * VBIF sub blocks config |
1239 | 1309 | *************************************************************/ |
@@ -1832,6 +1902,8 @@ static void sm8250_cfg_init(struct dpu_mdss_cfg *dpu_cfg) |
1832 | 1902 | .intf = sm8150_intf, |
1833 | 1903 | .vbif_count = ARRAY_SIZE(sdm845_vbif), |
1834 | 1904 | .vbif = sdm845_vbif, |
| 1905 | + .wb_count = ARRAY_SIZE(sm8250_wb), |
| 1906 | + .wb = sm8250_wb, |
1835 | 1907 | .reg_dma_count = 1, |
1836 | 1908 | .dma_cfg = sm8250_regdma, |
1837 | 1909 | .perf = sm8250_perf_data, |
|
0 commit comments