197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
353324b99SAbhinav Kumar  * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved.
425fdd593SJeykumar Sankaran  */
525fdd593SJeykumar Sankaran 
625fdd593SJeykumar Sankaran #define pr_fmt(fmt)	"[drm:%s:%d] " fmt, __func__, __LINE__
725fdd593SJeykumar Sankaran #include <linux/slab.h>
825fdd593SJeykumar Sankaran #include <linux/of_address.h>
925fdd593SJeykumar Sankaran #include <linux/platform_device.h>
1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h"
11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h"
1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h"
1325fdd593SJeykumar Sankaran #include "dpu_kms.h"
1425fdd593SJeykumar Sankaran 
15a2a448b4SDmitry Baryshkov #define VIG_BASE_MASK \
167bdc0c4bSKalyan Thota 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
17a2a448b4SDmitry Baryshkov 	BIT(DPU_SSPP_CDP) |\
1825fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT))
1925fdd593SJeykumar Sankaran 
20a2a448b4SDmitry Baryshkov #define VIG_MASK \
21a2a448b4SDmitry Baryshkov 	(VIG_BASE_MASK | \
22a2a448b4SDmitry Baryshkov 	BIT(DPU_SSPP_CSC_10BIT))
23a2a448b4SDmitry Baryshkov 
2494391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \
2594391a14SAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3))
2694391a14SAngeloGioacchino Del Regno 
277bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \
28b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3))
297bdc0c4bSKalyan Thota 
307bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \
31b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4))
327bdc0c4bSKalyan Thota 
33d21fc5dfSDmitry Baryshkov #define VIG_SM8250_MASK \
34095eed89SDmitry Baryshkov 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3LITE))
35d21fc5dfSDmitry Baryshkov 
36a2a448b4SDmitry Baryshkov #define VIG_QCM2290_MASK (VIG_BASE_MASK | BIT(DPU_SSPP_QOS_8LVL))
375334087eSLoic Poulain 
3894391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \
3994391a14SAngeloGioacchino Del Regno 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
4094391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
4194391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
4294391a14SAngeloGioacchino Del Regno 
43dabfdd89SVinod Polimera #define VIG_SC7280_MASK \
44dabfdd89SVinod Polimera 	(VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION))
45dabfdd89SVinod Polimera 
4625fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \
4725fdd593SJeykumar Sankaran 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\
4825fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
4925fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
5025fdd593SJeykumar Sankaran 
5107ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \
5207ca1fc0SSravanthi Kollukuduru 	(DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR))
5307ca1fc0SSravanthi Kollukuduru 
5494391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \
5594391a14SAngeloGioacchino Del Regno 	(DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR))
5694391a14SAngeloGioacchino Del Regno 
572d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \
5825fdd593SJeykumar Sankaran 	(BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER))
5925fdd593SJeykumar Sankaran 
602d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \
612d8a4edbSDmitry Baryshkov 	(BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
622d8a4edbSDmitry Baryshkov 
6300feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \
642d8a4edbSDmitry Baryshkov 	(BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
657bdc0c4bSKalyan Thota 
6625fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER)
6725fdd593SJeykumar Sankaran 
6825fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \
6925fdd593SJeykumar Sankaran 	(PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2))
7025fdd593SJeykumar Sankaran 
71591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \
7244bf8704SKalyan Thota 	(BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE) | BIT(DPU_CTL_VM_CFG))
73591e34a0SKrishna Manikandan 
74e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \
75e92a4ae1SDmitry Baryshkov 	(CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4))
76e92a4ae1SDmitry Baryshkov 
774369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0)
784369c93cSDmitry Baryshkov 
7994391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC)
8094391a14SAngeloGioacchino Del Regno 
814259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC)
82e47616dfSKalyan Thota 
83cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0)
84cace3ac4SJonathan Marek 
85cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE)
86cace3ac4SJonathan Marek 
87591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN)
88591e34a0SKrishna Manikandan 
89597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
90597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
91597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
92597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
93597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
94597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
95597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
96597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_0_INTR) | \
97597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_1_INTR))
98597762d5SDmitry Baryshkov 
99597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
100597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
101597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
102597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
103597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR))
104597762d5SDmitry Baryshkov 
105597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
106597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
107597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
108597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
109597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
110597762d5SDmitry Baryshkov 			 BIT(MDP_INTF5_7xxx_INTR))
111597762d5SDmitry Baryshkov 
112597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
113597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
114597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
115597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
116597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
117597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
118597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
119597762d5SDmitry Baryshkov 			 BIT(MDP_INTF4_INTR))
120597762d5SDmitry Baryshkov 
1210e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1220e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_INTR2) | \
1230e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1240e91bcbbSRobert Foss 			 BIT(MDP_INTF0_7xxx_INTR) | \
1250e91bcbbSRobert Foss 			 BIT(MDP_INTF1_7xxx_INTR) | \
1260e91bcbbSRobert Foss 			 BIT(MDP_INTF2_7xxx_INTR) | \
1277eb75dbdSRobert Foss 			 BIT(MDP_INTF3_7xxx_INTR))
1280e91bcbbSRobert Foss 
129f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
130f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_INTR2) | \
131f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_HIST_INTR) | \
132f3af2d6eSRob Clark 			  BIT(MDP_INTF0_INTR) | \
133f3af2d6eSRob Clark 			  BIT(MDP_INTF1_INTR) | \
134f3af2d6eSRob Clark 			  BIT(MDP_INTF2_INTR) | \
135f3af2d6eSRob Clark 			  BIT(MDP_INTF3_INTR) | \
136f3af2d6eSRob Clark 			  BIT(MDP_INTF4_INTR) | \
137f3af2d6eSRob Clark 			  BIT(MDP_INTF5_INTR) | \
138f3af2d6eSRob Clark 			  BIT(MDP_AD4_0_INTR) | \
139f3af2d6eSRob Clark 			  BIT(MDP_AD4_1_INTR))
140597762d5SDmitry Baryshkov 
1414a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1424a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_INTR2) | \
1434a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1444a352c2fSBjorn Andersson 			   BIT(MDP_INTF0_7xxx_INTR) | \
1454a352c2fSBjorn Andersson 			   BIT(MDP_INTF1_7xxx_INTR) | \
1464a352c2fSBjorn Andersson 			   BIT(MDP_INTF2_7xxx_INTR) | \
1474a352c2fSBjorn Andersson 			   BIT(MDP_INTF3_7xxx_INTR) | \
1484a352c2fSBjorn Andersson 			   BIT(MDP_INTF4_7xxx_INTR) | \
1494a352c2fSBjorn Andersson 			   BIT(MDP_INTF5_7xxx_INTR) | \
1504a352c2fSBjorn Andersson 			   BIT(MDP_INTF6_7xxx_INTR) | \
1514a352c2fSBjorn Andersson 			   BIT(MDP_INTF7_7xxx_INTR) | \
1524a352c2fSBjorn Andersson 			   BIT(MDP_INTF8_7xxx_INTR))
1534a352c2fSBjorn Andersson 
154100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
155100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
156100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
157100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
158100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
159100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF2_7xxx_INTR) | \
160100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF3_7xxx_INTR))
161100d7ef6SDmitry Baryshkov 
16253324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \
16353324b99SAbhinav Kumar 			 BIT(DPU_WB_UBWC) | \
16453324b99SAbhinav Kumar 			 BIT(DPU_WB_YUV_CONFIG) | \
16553324b99SAbhinav Kumar 			 BIT(DPU_WB_PIPE_ALPHA) | \
16653324b99SAbhinav Kumar 			 BIT(DPU_WB_XY_ROI_OFFSET) | \
16753324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS) | \
16853324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS_8LVL) | \
16953324b99SAbhinav Kumar 			 BIT(DPU_WB_CDP) | \
17053324b99SAbhinav Kumar 			 BIT(DPU_WB_INPUT_CTRL))
17153324b99SAbhinav Kumar 
17225fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE		(50 * 1024)
17325fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH		2048
17425fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH	2560
17525fdd593SJeykumar Sankaran 
17625fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION	4
17725fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION	4
17825fdd593SJeykumar Sankaran 
17925fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO	20
18025fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO	4
18125fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE	1
18225fdd593SJeykumar Sankaran 
18325fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y)
18425fdd593SJeykumar Sankaran 
18509c7e370SLee Jones static const uint32_t plane_formats[] = {
18609c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
18709c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
18809c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
18909c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
19009c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
19109c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
19209c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
19309c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
194da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
19509c7e370SLee Jones 	DRM_FORMAT_RGB888,
19609c7e370SLee Jones 	DRM_FORMAT_BGR888,
19709c7e370SLee Jones 	DRM_FORMAT_RGB565,
19809c7e370SLee Jones 	DRM_FORMAT_BGR565,
19909c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
20009c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
20109c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
20209c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
20309c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
20409c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
20509c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
20609c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
20709c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
20809c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
20909c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
21009c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
21109c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
21209c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
21309c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
21409c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
21509c7e370SLee Jones };
21609c7e370SLee Jones 
21709c7e370SLee Jones static const uint32_t plane_formats_yuv[] = {
21809c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
21909c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
22009c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
22109c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
22209c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
223da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
22409c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
22509c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
22609c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
22709c7e370SLee Jones 	DRM_FORMAT_RGB888,
22809c7e370SLee Jones 	DRM_FORMAT_BGR888,
22909c7e370SLee Jones 	DRM_FORMAT_RGB565,
23009c7e370SLee Jones 	DRM_FORMAT_BGR565,
23109c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
23209c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
23309c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
23409c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
23509c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
23609c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
23709c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
23809c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
23909c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
24009c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
24109c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
24209c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
24309c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
24409c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
24509c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
24609c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
24709c7e370SLee Jones 
248f07c9946SJessica Zhang 	DRM_FORMAT_P010,
24909c7e370SLee Jones 	DRM_FORMAT_NV12,
25009c7e370SLee Jones 	DRM_FORMAT_NV21,
25109c7e370SLee Jones 	DRM_FORMAT_NV16,
25209c7e370SLee Jones 	DRM_FORMAT_NV61,
25309c7e370SLee Jones 	DRM_FORMAT_VYUY,
25409c7e370SLee Jones 	DRM_FORMAT_UYVY,
25509c7e370SLee Jones 	DRM_FORMAT_YUYV,
25609c7e370SLee Jones 	DRM_FORMAT_YVYU,
25709c7e370SLee Jones 	DRM_FORMAT_YUV420,
25809c7e370SLee Jones 	DRM_FORMAT_YVU420,
25909c7e370SLee Jones };
26009c7e370SLee Jones 
261dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = {
262dabfdd89SVinod Polimera 	DRM_FORMAT_NV12,
263dabfdd89SVinod Polimera 	/* TODO add formats after validation */
264dabfdd89SVinod Polimera };
265dabfdd89SVinod Polimera 
26653324b99SAbhinav Kumar static const uint32_t wb2_formats[] = {
26753324b99SAbhinav Kumar 	DRM_FORMAT_RGB565,
26853324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
26953324b99SAbhinav Kumar 	DRM_FORMAT_RGB888,
27053324b99SAbhinav Kumar 	DRM_FORMAT_ARGB8888,
27153324b99SAbhinav Kumar 	DRM_FORMAT_RGBA8888,
27253324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
27353324b99SAbhinav Kumar 	DRM_FORMAT_XRGB8888,
27453324b99SAbhinav Kumar 	DRM_FORMAT_RGBX8888,
27553324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
27653324b99SAbhinav Kumar 	DRM_FORMAT_ARGB1555,
27753324b99SAbhinav Kumar 	DRM_FORMAT_RGBA5551,
27853324b99SAbhinav Kumar 	DRM_FORMAT_XRGB1555,
27953324b99SAbhinav Kumar 	DRM_FORMAT_RGBX5551,
28053324b99SAbhinav Kumar 	DRM_FORMAT_ARGB4444,
28153324b99SAbhinav Kumar 	DRM_FORMAT_RGBA4444,
28253324b99SAbhinav Kumar 	DRM_FORMAT_RGBX4444,
28353324b99SAbhinav Kumar 	DRM_FORMAT_XRGB4444,
28453324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
28553324b99SAbhinav Kumar 	DRM_FORMAT_BGR888,
28653324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
28753324b99SAbhinav Kumar 	DRM_FORMAT_BGRA8888,
28853324b99SAbhinav Kumar 	DRM_FORMAT_BGRX8888,
28953324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
29053324b99SAbhinav Kumar 	DRM_FORMAT_ABGR1555,
29153324b99SAbhinav Kumar 	DRM_FORMAT_BGRA5551,
29253324b99SAbhinav Kumar 	DRM_FORMAT_XBGR1555,
29353324b99SAbhinav Kumar 	DRM_FORMAT_BGRX5551,
29453324b99SAbhinav Kumar 	DRM_FORMAT_ABGR4444,
29553324b99SAbhinav Kumar 	DRM_FORMAT_BGRA4444,
29653324b99SAbhinav Kumar 	DRM_FORMAT_BGRX4444,
29753324b99SAbhinav Kumar 	DRM_FORMAT_XBGR4444,
29853324b99SAbhinav Kumar };
29953324b99SAbhinav Kumar 
30025fdd593SJeykumar Sankaran /*************************************************************
30125fdd593SJeykumar Sankaran  * DPU sub blocks config
30225fdd593SJeykumar Sankaran  *************************************************************/
30325fdd593SJeykumar Sankaran /* DPU top level caps */
30494391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = {
30594391a14SAngeloGioacchino Del Regno 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
30694391a14SAngeloGioacchino Del Regno 	.max_mixer_blendstages = 0x7,
30794391a14SAngeloGioacchino Del Regno 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
30894391a14SAngeloGioacchino Del Regno 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V1,
30994391a14SAngeloGioacchino Del Regno 	.ubwc_version = DPU_HW_UBWC_VER_10,
31094391a14SAngeloGioacchino Del Regno 	.has_src_split = true,
31194391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
31294391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
31394391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
31494391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
31594391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
31694391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
31794391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
31894391a14SAngeloGioacchino Del Regno };
31994391a14SAngeloGioacchino Del Regno 
320c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
321*da06be8bSDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_LINE_WIDTH,
322c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
323c162352eSKonrad Dybcio 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
324c162352eSKonrad Dybcio 	.has_dim_layer = true,
325c162352eSKonrad Dybcio 	.has_idle_pc = true,
326c162352eSKonrad Dybcio 	.max_linewidth = 2160,
327c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
328c162352eSKonrad Dybcio };
329c162352eSKonrad Dybcio 
33025fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
33125fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
33225fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
33325fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
33425fdd593SJeykumar Sankaran 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
33525fdd593SJeykumar Sankaran 	.ubwc_version = DPU_HW_UBWC_VER_20,
33625fdd593SJeykumar Sankaran 	.has_src_split = true,
33725fdd593SJeykumar Sankaran 	.has_dim_layer = true,
33825fdd593SJeykumar Sankaran 	.has_idle_pc = true,
33942a558b7SKalyan Thota 	.has_3d_merge = true,
3407e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3417e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3427e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3437e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
34425fdd593SJeykumar Sankaran };
34525fdd593SJeykumar Sankaran 
3467bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3477bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3487bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3497bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3507bdc0c4bSKalyan Thota 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
3517bdc0c4bSKalyan Thota 	.ubwc_version = DPU_HW_UBWC_VER_20,
3527bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3537bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3547e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3557e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3567bdc0c4bSKalyan Thota };
3577bdc0c4bSKalyan Thota 
3583581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = {
359*da06be8bSDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_LINE_WIDTH,
3603581b706SAdam Skladowski 	.max_mixer_blendstages = 0x4,
3613581b706SAdam Skladowski 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
3623581b706SAdam Skladowski 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
3630b5a8e81SDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_10,
3643581b706SAdam Skladowski 	.has_dim_layer = true,
3653581b706SAdam Skladowski 	.has_idle_pc = true,
3663581b706SAdam Skladowski 	.max_linewidth = 2160,
3673581b706SAdam Skladowski 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3683581b706SAdam Skladowski };
3693581b706SAdam Skladowski 
370386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
371386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
372386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
373386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
374386fced3SJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
375386fced3SJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_30,
376386fced3SJonathan Marek 	.has_src_split = true,
377386fced3SJonathan Marek 	.has_dim_layer = true,
378386fced3SJonathan Marek 	.has_idle_pc = true,
379386fced3SJonathan Marek 	.has_3d_merge = true,
380386fced3SJonathan Marek 	.max_linewidth = 4096,
381386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
382386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
383386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
384386fced3SJonathan Marek };
385386fced3SJonathan Marek 
386f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
387f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
388f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
389f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
390f3af2d6eSRob Clark 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
391f3af2d6eSRob Clark 	.ubwc_version = DPU_HW_UBWC_VER_30,
392f3af2d6eSRob Clark 	.has_src_split = true,
393f3af2d6eSRob Clark 	.has_dim_layer = true,
394f3af2d6eSRob Clark 	.has_idle_pc = true,
395f3af2d6eSRob Clark 	.has_3d_merge = true,
396f3af2d6eSRob Clark 	.max_linewidth = 4096,
397f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
398f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
399f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
400f3af2d6eSRob Clark };
401f3af2d6eSRob Clark 
4024a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = {
4034a352c2fSBjorn Andersson 	.max_mixer_width = 2560,
4044a352c2fSBjorn Andersson 	.max_mixer_blendstages = 11,
4054a352c2fSBjorn Andersson 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4064a352c2fSBjorn Andersson 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4074a352c2fSBjorn Andersson 	.ubwc_version = DPU_HW_UBWC_VER_40,
4084a352c2fSBjorn Andersson 	.has_src_split = true,
4094a352c2fSBjorn Andersson 	.has_dim_layer = true,
4104a352c2fSBjorn Andersson 	.has_idle_pc = true,
4114a352c2fSBjorn Andersson 	.has_3d_merge = true,
4124a352c2fSBjorn Andersson 	.max_linewidth = 5120,
4134a352c2fSBjorn Andersson 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4144a352c2fSBjorn Andersson };
4154a352c2fSBjorn Andersson 
416af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
417af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
418af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
419d21fc5dfSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
420af776a3eSJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
421af776a3eSJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_40,
422af776a3eSJonathan Marek 	.has_src_split = true,
423af776a3eSJonathan Marek 	.has_dim_layer = true,
424af776a3eSJonathan Marek 	.has_idle_pc = true,
425af776a3eSJonathan Marek 	.has_3d_merge = true,
426af776a3eSJonathan Marek 	.max_linewidth = 4096,
427af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
428af776a3eSJonathan Marek };
429af776a3eSJonathan Marek 
4300e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = {
4310e91bcbbSRobert Foss 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
4320e91bcbbSRobert Foss 	.max_mixer_blendstages = 0xb,
4330e91bcbbSRobert Foss 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4340e91bcbbSRobert Foss 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4350e91bcbbSRobert Foss 	.ubwc_version = DPU_HW_UBWC_VER_40,
4360e91bcbbSRobert Foss 	.has_src_split = true,
4370e91bcbbSRobert Foss 	.has_dim_layer = true,
4380e91bcbbSRobert Foss 	.has_idle_pc = true,
4390e91bcbbSRobert Foss 	.has_3d_merge = true,
4400e91bcbbSRobert Foss 	.max_linewidth = 4096,
4410e91bcbbSRobert Foss 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4420e91bcbbSRobert Foss };
4430e91bcbbSRobert Foss 
444100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = {
445100d7ef6SDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
446100d7ef6SDmitry Baryshkov 	.max_mixer_blendstages = 0xb,
447100d7ef6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
448100d7ef6SDmitry Baryshkov 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
449100d7ef6SDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
450100d7ef6SDmitry Baryshkov 	.has_src_split = true,
451100d7ef6SDmitry Baryshkov 	.has_dim_layer = true,
452100d7ef6SDmitry Baryshkov 	.has_idle_pc = true,
453100d7ef6SDmitry Baryshkov 	.has_3d_merge = true,
454100d7ef6SDmitry Baryshkov 	.max_linewidth = 5120,
455100d7ef6SDmitry Baryshkov 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
456100d7ef6SDmitry Baryshkov };
457100d7ef6SDmitry Baryshkov 
458efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = {
459efcd0107SNeil Armstrong 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
460efcd0107SNeil Armstrong 	.max_mixer_blendstages = 0xb,
461efcd0107SNeil Armstrong 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
462efcd0107SNeil Armstrong 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
463efcd0107SNeil Armstrong 	.ubwc_version = DPU_HW_UBWC_VER_40,
464efcd0107SNeil Armstrong 	.has_src_split = true,
465efcd0107SNeil Armstrong 	.has_dim_layer = true,
466efcd0107SNeil Armstrong 	.has_idle_pc = true,
467efcd0107SNeil Armstrong 	.has_3d_merge = true,
468efcd0107SNeil Armstrong 	.max_linewidth = 5120,
469efcd0107SNeil Armstrong 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
470efcd0107SNeil Armstrong };
471efcd0107SNeil Armstrong 
472591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
473591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
474591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
475591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
476591e34a0SKrishna Manikandan 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
477591e34a0SKrishna Manikandan 	.ubwc_version = DPU_HW_UBWC_VER_30,
478591e34a0SKrishna Manikandan 	.has_dim_layer = true,
479591e34a0SKrishna Manikandan 	.has_idle_pc = true,
480591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
481591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
482591e34a0SKrishna Manikandan };
483591e34a0SKrishna Manikandan 
48494391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
48594391a14SAngeloGioacchino Del Regno 	{
48694391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
48794391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
48894391a14SAngeloGioacchino Del Regno 	.features = 0,
48994391a14SAngeloGioacchino Del Regno 	.highest_bank_bit = 0x2,
49094391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
49194391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
49294391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
49394391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
49494391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
49594391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
49694391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
49794391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
49894391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
49994391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
50094391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
50194391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
50294391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
50394391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
50494391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
50594391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
50694391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
50794391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
50894391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
50994391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
51094391a14SAngeloGioacchino Del Regno 	},
51194391a14SAngeloGioacchino Del Regno };
51294391a14SAngeloGioacchino Del Regno 
513abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
51425fdd593SJeykumar Sankaran 	{
51525fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
51625fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
51703490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
51825fdd593SJeykumar Sankaran 	.highest_bank_bit = 0x2,
51925fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
52025fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
52125fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
52225fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
52325fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
52425fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
52525fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
52625fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
52725fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
52825fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
52925fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
53025fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
53125fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
53225fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
53325fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
53425fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
53525fdd593SJeykumar Sankaran 	},
53625fdd593SJeykumar Sankaran };
53725fdd593SJeykumar Sankaran 
5387bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
5397bdc0c4bSKalyan Thota 	{
5407bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
5417bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
5427bdc0c4bSKalyan Thota 	.features = 0,
5437bdc0c4bSKalyan Thota 	.highest_bank_bit = 0x3,
5447bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5457bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
5467bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5477bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
5487bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
5497b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
5507b149f2bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
5517b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
552255f0561SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
553255f0561SDmitry Baryshkov 		.reg_off = 0x3B8, .bit_off = 24},
5547bdc0c4bSKalyan Thota 	},
5557bdc0c4bSKalyan Thota };
5567bdc0c4bSKalyan Thota 
557f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
558f3af2d6eSRob Clark 	{
559f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
560f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
56110a88954SDmitry Baryshkov 	.features = BIT(DPU_MDP_AUDIO_SELECT),
562f3af2d6eSRob Clark 	.highest_bank_bit = 0x3,
563f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
564f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
565f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
566f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
567f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
568f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
569f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
570f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
571f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
572f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
573f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
574f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
575f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
576f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
577f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
578f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
579f3af2d6eSRob Clark 	},
580f3af2d6eSRob Clark };
581f3af2d6eSRob Clark 
5823581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = {
5833581b706SAdam Skladowski 	{
5843581b706SAdam Skladowski 	.name = "top_0", .id = MDP_TOP,
5853581b706SAdam Skladowski 	.base = 0x0, .len = 0x494,
5863581b706SAdam Skladowski 	.features = 0,
5873581b706SAdam Skladowski 	.highest_bank_bit = 0x1,
58831c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x7,
5893581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5903581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 0},
5913581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5923581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 8},
5933581b706SAdam Skladowski 	},
5943581b706SAdam Skladowski };
5953581b706SAdam Skladowski 
596af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
597af776a3eSJonathan Marek 	{
598af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
599b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
600af776a3eSJonathan Marek 	.features = 0,
601af776a3eSJonathan Marek 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
60231c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
603af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
604af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
605af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
606af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
607af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
608af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
609af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
610af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
611af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
612af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
613af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
614af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
615af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
616af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
617af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
618af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
619af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
620af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
62153324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
62253324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
623af776a3eSJonathan Marek 	},
624af776a3eSJonathan Marek };
625af776a3eSJonathan Marek 
6260e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = {
6270e91bcbbSRobert Foss 	{
6280e91bcbbSRobert Foss 	.name = "top_0", .id = MDP_TOP,
6290e91bcbbSRobert Foss 	.base = 0x0, .len = 0x494,
6300e91bcbbSRobert Foss 	.features = 0,
6310e91bcbbSRobert Foss 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
6320e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6330e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 0},
6340e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
6350e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 0},
6360e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
6370e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 0},
6380e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
6390e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 0},
6400e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6410e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 8},
6420e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
6430e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 8},
6440e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
6450e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 8},
6460e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
6470e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 8},
6480e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
6490e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 20},
6500e91bcbbSRobert Foss 	},
6510e91bcbbSRobert Foss };
6520e91bcbbSRobert Foss 
653100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = {
654100d7ef6SDmitry Baryshkov 	{
655100d7ef6SDmitry Baryshkov 	.name = "top_0", .id = MDP_TOP,
656100d7ef6SDmitry Baryshkov 	.base = 0x0, .len = 0x494,
657100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
658100d7ef6SDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
65931c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
660100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
661100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 0},
662100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
663100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 0},
664100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
665100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 0},
666100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
667100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 0},
668100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
669100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 8},
670100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
671100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 8},
672100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
673100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 8},
674100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
675100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 8},
676100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
677100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 20},
678100d7ef6SDmitry Baryshkov 	},
679100d7ef6SDmitry Baryshkov };
680100d7ef6SDmitry Baryshkov 
681591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
682591e34a0SKrishna Manikandan 	{
683591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
684591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
685591e34a0SKrishna Manikandan 	.highest_bank_bit = 0x1,
68631c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
687591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
688591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
689591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
690591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
691591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
692591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
693591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
694591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
695591e34a0SKrishna Manikandan 	},
696591e34a0SKrishna Manikandan };
697591e34a0SKrishna Manikandan 
6984a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = {
6994a352c2fSBjorn Andersson 	{
7004a352c2fSBjorn Andersson 	.name = "top_0", .id = MDP_TOP,
7014a352c2fSBjorn Andersson 	.base = 0x0, .len = 0x494,
7020df979f4SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
7034a352c2fSBjorn Andersson 	.highest_bank_bit = 2,
7044a352c2fSBjorn Andersson 	.ubwc_swizzle = 6,
7054a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0},
7064a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0},
7074a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0},
7084a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0},
7094a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8},
7104a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8},
7114a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x2bc, .bit_off = 8},
7124a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x2c4, .bit_off = 8},
7134a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20},
7144a352c2fSBjorn Andersson 	},
7154a352c2fSBjorn Andersson };
7164a352c2fSBjorn Andersson 
717efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = {
718efcd0107SNeil Armstrong 	{
719efcd0107SNeil Armstrong 	.name = "top_0", .id = MDP_TOP,
720efcd0107SNeil Armstrong 	.base = 0, .len = 0x494,
721efcd0107SNeil Armstrong 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
722efcd0107SNeil Armstrong 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
72331c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
724efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
725efcd0107SNeil Armstrong 			.reg_off = 0x4330, .bit_off = 0},
726efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
727efcd0107SNeil Armstrong 			.reg_off = 0x6330, .bit_off = 0},
728efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
729efcd0107SNeil Armstrong 			.reg_off = 0x8330, .bit_off = 0},
730efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
731efcd0107SNeil Armstrong 			.reg_off = 0xa330, .bit_off = 0},
732efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
733efcd0107SNeil Armstrong 			.reg_off = 0x24330, .bit_off = 0},
734efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
735efcd0107SNeil Armstrong 			.reg_off = 0x26330, .bit_off = 0},
736efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
737efcd0107SNeil Armstrong 			.reg_off = 0x28330, .bit_off = 0},
738efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
739efcd0107SNeil Armstrong 			.reg_off = 0x2a330, .bit_off = 0},
740efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
741efcd0107SNeil Armstrong 			.reg_off = 0x2c330, .bit_off = 0},
742efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
743efcd0107SNeil Armstrong 			.reg_off = 0x2e330, .bit_off = 0},
744efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
745efcd0107SNeil Armstrong 			.reg_off = 0x2bc, .bit_off = 20},
746efcd0107SNeil Armstrong 	},
747efcd0107SNeil Armstrong };
748efcd0107SNeil Armstrong 
7495334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
7505334087eSLoic Poulain 	{
7515334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
7525334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
7535334087eSLoic Poulain 	.features = 0,
7545334087eSLoic Poulain 	.highest_bank_bit = 0x2,
7555334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
7565334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
7575334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
7585334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
7595334087eSLoic Poulain 	},
7605334087eSLoic Poulain };
7615334087eSLoic Poulain 
76225fdd593SJeykumar Sankaran /*************************************************************
76325fdd593SJeykumar Sankaran  * CTL sub blocks config
76425fdd593SJeykumar Sankaran  *************************************************************/
76594391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
76694391a14SAngeloGioacchino Del Regno 	{
76794391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
76894391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
76994391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
77094391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
77194391a14SAngeloGioacchino Del Regno 	},
77294391a14SAngeloGioacchino Del Regno 	{
77394391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
77494391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
77594391a14SAngeloGioacchino Del Regno 	.features = 0,
77694391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
77794391a14SAngeloGioacchino Del Regno 	},
77894391a14SAngeloGioacchino Del Regno 	{
77994391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
78094391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
78194391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
78294391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
78394391a14SAngeloGioacchino Del Regno 	},
78494391a14SAngeloGioacchino Del Regno 	{
78594391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
78694391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
78794391a14SAngeloGioacchino Del Regno 	.features = 0,
78894391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
78994391a14SAngeloGioacchino Del Regno 	},
79094391a14SAngeloGioacchino Del Regno 	{
79194391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
79294391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
79394391a14SAngeloGioacchino Del Regno 	.features = 0,
79494391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
79594391a14SAngeloGioacchino Del Regno 	},
79694391a14SAngeloGioacchino Del Regno };
79794391a14SAngeloGioacchino Del Regno 
798abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
79925fdd593SJeykumar Sankaran 	{
80025fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
80125fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
802667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
803667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
80425fdd593SJeykumar Sankaran 	},
80525fdd593SJeykumar Sankaran 	{
80625fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
80725fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
808667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
809667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
81025fdd593SJeykumar Sankaran 	},
81125fdd593SJeykumar Sankaran 	{
81225fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
81325fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
814667e9985SDmitry Baryshkov 	.features = 0,
815667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
81625fdd593SJeykumar Sankaran 	},
81725fdd593SJeykumar Sankaran 	{
81825fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
81925fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
820667e9985SDmitry Baryshkov 	.features = 0,
821667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
82225fdd593SJeykumar Sankaran 	},
82325fdd593SJeykumar Sankaran 	{
82425fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
82525fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
826667e9985SDmitry Baryshkov 	.features = 0,
827667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
82825fdd593SJeykumar Sankaran 	},
82925fdd593SJeykumar Sankaran };
83025fdd593SJeykumar Sankaran 
8317bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
8327bdc0c4bSKalyan Thota 	{
8337bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
834ce6bd00aSDmitry Baryshkov 	.base = 0x1000, .len = 0x1dc,
835667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
836667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8377bdc0c4bSKalyan Thota 	},
8387bdc0c4bSKalyan Thota 	{
8397bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
840ce6bd00aSDmitry Baryshkov 	.base = 0x1200, .len = 0x1dc,
841667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
842667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8437bdc0c4bSKalyan Thota 	},
8447bdc0c4bSKalyan Thota 	{
8457bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
846ce6bd00aSDmitry Baryshkov 	.base = 0x1400, .len = 0x1dc,
847667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
848667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8497bdc0c4bSKalyan Thota 	},
8507bdc0c4bSKalyan Thota };
8517bdc0c4bSKalyan Thota 
8524a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = {
8534a352c2fSBjorn Andersson 	{
8544a352c2fSBjorn Andersson 	.name = "ctl_0", .id = CTL_0,
8554a352c2fSBjorn Andersson 	.base = 0x15000, .len = 0x204,
8564a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8574a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8584a352c2fSBjorn Andersson 	},
8594a352c2fSBjorn Andersson 	{
8604a352c2fSBjorn Andersson 	.name = "ctl_1", .id = CTL_1,
8614a352c2fSBjorn Andersson 	.base = 0x16000, .len = 0x204,
8624a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8634a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8644a352c2fSBjorn Andersson 	},
8654a352c2fSBjorn Andersson 	{
8664a352c2fSBjorn Andersson 	.name = "ctl_2", .id = CTL_2,
8674a352c2fSBjorn Andersson 	.base = 0x17000, .len = 0x204,
8684a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8694a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8704a352c2fSBjorn Andersson 	},
8714a352c2fSBjorn Andersson 	{
8724a352c2fSBjorn Andersson 	.name = "ctl_3", .id = CTL_3,
8734a352c2fSBjorn Andersson 	.base = 0x18000, .len = 0x204,
8744a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8754a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
8764a352c2fSBjorn Andersson 	},
8774a352c2fSBjorn Andersson 	{
8784a352c2fSBjorn Andersson 	.name = "ctl_4", .id = CTL_4,
8794a352c2fSBjorn Andersson 	.base = 0x19000, .len = 0x204,
8804a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8814a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
8824a352c2fSBjorn Andersson 	},
8834a352c2fSBjorn Andersson 	{
8844a352c2fSBjorn Andersson 	.name = "ctl_5", .id = CTL_5,
8854a352c2fSBjorn Andersson 	.base = 0x1a000, .len = 0x204,
8864a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8874a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
8884a352c2fSBjorn Andersson 	},
8894a352c2fSBjorn Andersson };
8904a352c2fSBjorn Andersson 
891386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
892386fced3SJonathan Marek 	{
893386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
894386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
895667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
896667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
897386fced3SJonathan Marek 	},
898386fced3SJonathan Marek 	{
899386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
900386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
901667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
902667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
903386fced3SJonathan Marek 	},
904386fced3SJonathan Marek 	{
905386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
906386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
907667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
908667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
909386fced3SJonathan Marek 	},
910386fced3SJonathan Marek 	{
911386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
912386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
913667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
914667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
915386fced3SJonathan Marek 	},
916386fced3SJonathan Marek 	{
917386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
918386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
919667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
920667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
921386fced3SJonathan Marek 	},
922386fced3SJonathan Marek 	{
923386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
924386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
925667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
926667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
927386fced3SJonathan Marek 	},
928386fced3SJonathan Marek };
929386fced3SJonathan Marek 
9300e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = {
9310e91bcbbSRobert Foss 	{
9320e91bcbbSRobert Foss 	.name = "ctl_0", .id = CTL_0,
9330e91bcbbSRobert Foss 	.base = 0x15000, .len = 0x1e8,
9340e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9350e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
9360e91bcbbSRobert Foss 	},
9370e91bcbbSRobert Foss 	{
9380e91bcbbSRobert Foss 	.name = "ctl_1", .id = CTL_1,
9390e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9400e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9410e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
9420e91bcbbSRobert Foss 	},
9430e91bcbbSRobert Foss 	{
9440e91bcbbSRobert Foss 	.name = "ctl_2", .id = CTL_2,
9450e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9460e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9470e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
9480e91bcbbSRobert Foss 	},
9490e91bcbbSRobert Foss 	{
9500e91bcbbSRobert Foss 	.name = "ctl_3", .id = CTL_3,
9510e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9520e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9530e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
9540e91bcbbSRobert Foss 	},
9550e91bcbbSRobert Foss 	{
9560e91bcbbSRobert Foss 	.name = "ctl_4", .id = CTL_4,
9570e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
9580e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9590e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
9600e91bcbbSRobert Foss 	},
9610e91bcbbSRobert Foss 	{
9620e91bcbbSRobert Foss 	.name = "ctl_5", .id = CTL_5,
9630e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
9640e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9650e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
9660e91bcbbSRobert Foss 	},
9670e91bcbbSRobert Foss };
9680e91bcbbSRobert Foss 
969100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = {
970100d7ef6SDmitry Baryshkov 	{
971100d7ef6SDmitry Baryshkov 	.name = "ctl_0", .id = CTL_0,
972100d7ef6SDmitry Baryshkov 	.base = 0x15000, .len = 0x204,
973100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE),
974100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
975100d7ef6SDmitry Baryshkov 	},
976100d7ef6SDmitry Baryshkov 	{
977100d7ef6SDmitry Baryshkov 	.name = "ctl_1", .id = CTL_1,
9786c021d77SDmitry Baryshkov 	.base = 0x16000, .len = 0x204,
9790e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
980100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
981100d7ef6SDmitry Baryshkov 	},
982100d7ef6SDmitry Baryshkov 	{
983100d7ef6SDmitry Baryshkov 	.name = "ctl_2", .id = CTL_2,
9846c021d77SDmitry Baryshkov 	.base = 0x17000, .len = 0x204,
9850e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
986100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
987100d7ef6SDmitry Baryshkov 	},
988100d7ef6SDmitry Baryshkov 	{
989100d7ef6SDmitry Baryshkov 	.name = "ctl_3", .id = CTL_3,
9906c021d77SDmitry Baryshkov 	.base = 0x18000, .len = 0x204,
9910e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
992100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
993100d7ef6SDmitry Baryshkov 	},
994100d7ef6SDmitry Baryshkov 	{
995100d7ef6SDmitry Baryshkov 	.name = "ctl_4", .id = CTL_4,
9966c021d77SDmitry Baryshkov 	.base = 0x19000, .len = 0x204,
9970e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
998100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
999100d7ef6SDmitry Baryshkov 	},
1000100d7ef6SDmitry Baryshkov 	{
1001100d7ef6SDmitry Baryshkov 	.name = "ctl_5", .id = CTL_5,
10026c021d77SDmitry Baryshkov 	.base = 0x1a000, .len = 0x204,
10030e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1004100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1005100d7ef6SDmitry Baryshkov 	},
1006100d7ef6SDmitry Baryshkov };
1007100d7ef6SDmitry Baryshkov 
1008efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = {
1009efcd0107SNeil Armstrong 	{
1010efcd0107SNeil Armstrong 	.name = "ctl_0", .id = CTL_0,
1011efcd0107SNeil Armstrong 	.base = 0x15000, .len = 0x290,
1012e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1013efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1014efcd0107SNeil Armstrong 	},
1015efcd0107SNeil Armstrong 	{
1016efcd0107SNeil Armstrong 	.name = "ctl_1", .id = CTL_1,
1017efcd0107SNeil Armstrong 	.base = 0x16000, .len = 0x290,
1018e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1019efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1020efcd0107SNeil Armstrong 	},
1021efcd0107SNeil Armstrong 	{
1022efcd0107SNeil Armstrong 	.name = "ctl_2", .id = CTL_2,
1023efcd0107SNeil Armstrong 	.base = 0x17000, .len = 0x290,
1024e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1025efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1026efcd0107SNeil Armstrong 	},
1027efcd0107SNeil Armstrong 	{
1028efcd0107SNeil Armstrong 	.name = "ctl_3", .id = CTL_3,
1029efcd0107SNeil Armstrong 	.base = 0x18000, .len = 0x290,
1030e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1031efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1032efcd0107SNeil Armstrong 	},
1033efcd0107SNeil Armstrong 	{
1034efcd0107SNeil Armstrong 	.name = "ctl_4", .id = CTL_4,
1035efcd0107SNeil Armstrong 	.base = 0x19000, .len = 0x290,
1036e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1037efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1038efcd0107SNeil Armstrong 	},
1039efcd0107SNeil Armstrong 	{
1040efcd0107SNeil Armstrong 	.name = "ctl_5", .id = CTL_5,
1041efcd0107SNeil Armstrong 	.base = 0x1a000, .len = 0x290,
1042e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1043efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1044efcd0107SNeil Armstrong 	},
1045efcd0107SNeil Armstrong };
1046efcd0107SNeil Armstrong 
1047591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
1048591e34a0SKrishna Manikandan 	{
1049591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
1050591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
1051667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1052667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1053591e34a0SKrishna Manikandan 	},
1054591e34a0SKrishna Manikandan 	{
1055591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
1056591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
1057667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1058667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1059591e34a0SKrishna Manikandan 	},
1060591e34a0SKrishna Manikandan 	{
1061591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
1062591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
1063667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1064667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1065591e34a0SKrishna Manikandan 	},
1066591e34a0SKrishna Manikandan 	{
1067591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
1068591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
1069667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1070667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1071591e34a0SKrishna Manikandan 	},
1072591e34a0SKrishna Manikandan };
1073591e34a0SKrishna Manikandan 
10745334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
10755334087eSLoic Poulain 	{
10765334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
10775334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
10785334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
10795334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
10805334087eSLoic Poulain 	},
10815334087eSLoic Poulain };
10825334087eSLoic Poulain 
108325fdd593SJeykumar Sankaran /*************************************************************
108425fdd593SJeykumar Sankaran  * SSPP sub blocks config
108525fdd593SJeykumar Sankaran  *************************************************************/
108625fdd593SJeykumar Sankaran 
108725fdd593SJeykumar Sankaran /* SSPP common configuration */
1088b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
108925fdd593SJeykumar Sankaran 	{ \
109025fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
109125fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
109225fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
109325fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
109425fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
109525fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1096b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
109725fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
109825fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
109925fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
110025fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
110125fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
1102e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
110325fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1104e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1105dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
1106dabfdd89SVinod Polimera 	}
1107dabfdd89SVinod Polimera 
1108dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
1109dabfdd89SVinod Polimera 	{ \
1110dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
1111dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
1112dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
1113dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
1114dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
1115dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1116dabfdd89SVinod Polimera 		.id = qseed_ver, \
1117dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
1118dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
1119dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
1120dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
1121dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
1122dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
1123dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
1124dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1125dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
112625fdd593SJeykumar Sankaran 	}
112725fdd593SJeykumar Sankaran 
112825fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
112925fdd593SJeykumar Sankaran 	{ \
113025fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
113125fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
113225fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
113325fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
113425fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
113525fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
1136e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
113725fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1138e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
113925fdd593SJeykumar Sankaran 	}
114025fdd593SJeykumar Sankaran 
114194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
114294391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
114394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
114494391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
114594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
114694391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
114794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
114894391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
114994391a14SAngeloGioacchino Del Regno 
1150dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
1151dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
1152dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
1153dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
1154dabfdd89SVinod Polimera };
1155dabfdd89SVinod Polimera 
1156b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
1157b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
1158b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
1159b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
1160b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
1161b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
1162b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
1163b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
116425fdd593SJeykumar Sankaran 
116525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
116625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
116725fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
116825fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
116925fdd593SJeykumar Sankaran 
117007ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \
117107ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
117225fdd593SJeykumar Sankaran 	{ \
117325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
117425fdd593SJeykumar Sankaran 	.base = _base, .len = 0x1c8, \
117507ca1fc0SSravanthi Kollukuduru 	.features = _features, \
117625fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
117725fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
117807ca1fc0SSravanthi Kollukuduru 	.type = _type, \
117925fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
118025fdd593SJeykumar Sankaran 	}
118125fdd593SJeykumar Sankaran 
118294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
118394391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK,
118494391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
118594391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK,
118694391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
118794391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK,
118894391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
118994391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK,
119094391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
119194391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_MSM8998_MASK,
119294391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
119394391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_MSM8998_MASK,
119494391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
119594391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_MSM8998_MASK,
119694391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
119794391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_MSM8998_MASK,
119894391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
119994391a14SAngeloGioacchino Del Regno };
120094391a14SAngeloGioacchino Del Regno 
1201abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
120207ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
120307ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
120407ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
120507ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
120607ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK,
120707ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
120807ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK,
120907ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
121007ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
121107ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
121207ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
121307ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
121407ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
121507ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
121607ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
121707ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
121825fdd593SJeykumar Sankaran };
121925fdd593SJeykumar Sankaran 
1220b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
1221b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
1222b75ab05aSShubhashree Dhar 
1223dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
1224dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
1225dabfdd89SVinod Polimera 
12267bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
12277bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1228b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12297bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12307bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12317b149f2bSKalyan Thota 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
12327b149f2bSKalyan Thota 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
12337bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
12347b149f2bSKalyan Thota 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
12357bdc0c4bSKalyan Thota };
12367bdc0c4bSKalyan Thota 
12373581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 =
12383581b706SAdam Skladowski 				_VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE);
12393581b706SAdam Skladowski 
12403581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = {
12413581b706SAdam Skladowski 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
12423581b706SAdam Skladowski 		sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12433581b706SAdam Skladowski 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12443581b706SAdam Skladowski 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12453581b706SAdam Skladowski };
12463581b706SAdam Skladowski 
1247d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
1248d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1249d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
1250d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1251d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
1252d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1253d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
1254d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1255d21fc5dfSDmitry Baryshkov 
1256d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
1257d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
1258d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1259d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
1260d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1261d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
1262d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1263d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
1264d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1265d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1266d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1267d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1268d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1269d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1270d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1271d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1272d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1273d21fc5dfSDmitry Baryshkov };
1274d21fc5dfSDmitry Baryshkov 
1275100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 =
1276100d7ef6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1277100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 =
1278100d7ef6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1279100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 =
1280100d7ef6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1281100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 =
1282100d7ef6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1283100d7ef6SDmitry Baryshkov 
1284100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = {
1285100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1286100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1287100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1288100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1289100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1290100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1291100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1292100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1293100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1294100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1295100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1296100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1297100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1298100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1299100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1300100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1301100d7ef6SDmitry Baryshkov };
1302100d7ef6SDmitry Baryshkov 
1303efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 =
1304efcd0107SNeil Armstrong 				_VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED3LITE);
1305efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 =
1306efcd0107SNeil Armstrong 				_VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED3LITE);
1307efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 =
1308efcd0107SNeil Armstrong 				_VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED3LITE);
1309efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 =
1310efcd0107SNeil Armstrong 				_VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED3LITE);
1311efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5);
1312e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6);
1313efcd0107SNeil Armstrong 
1314efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = {
1315efcd0107SNeil Armstrong 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1316efcd0107SNeil Armstrong 		sm8550_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1317efcd0107SNeil Armstrong 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1318efcd0107SNeil Armstrong 		sm8550_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1319efcd0107SNeil Armstrong 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1320efcd0107SNeil Armstrong 		sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1321efcd0107SNeil Armstrong 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1322efcd0107SNeil Armstrong 		sm8550_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1323efcd0107SNeil Armstrong 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1324efcd0107SNeil Armstrong 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1325efcd0107SNeil Armstrong 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1326efcd0107SNeil Armstrong 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1327efcd0107SNeil Armstrong 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_SDM845_MASK,
1328efcd0107SNeil Armstrong 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
1329efcd0107SNeil Armstrong 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_SDM845_MASK,
1330efcd0107SNeil Armstrong 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1331efcd0107SNeil Armstrong 	SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000,  DMA_CURSOR_SDM845_MASK,
1332efcd0107SNeil Armstrong 		sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1333efcd0107SNeil Armstrong 	SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000,  DMA_CURSOR_SDM845_MASK,
1334e3011955SDmitry Baryshkov 		sm8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1335efcd0107SNeil Armstrong };
1336efcd0107SNeil Armstrong 
1337591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
1338dabfdd89SVinod Polimera 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK,
1339dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1340591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1341591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1342591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
1343591e34a0SKrishna Manikandan 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1344591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1345591e34a0SKrishna Manikandan 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1346591e34a0SKrishna Manikandan };
1347591e34a0SKrishna Manikandan 
13484a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 =
13494a352c2fSBjorn Andersson 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
13504a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 =
13514a352c2fSBjorn Andersson 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
13524a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 =
13534a352c2fSBjorn Andersson 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
13544a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 =
13554a352c2fSBjorn Andersson 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
13564a352c2fSBjorn Andersson 
13574a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = {
13584a352c2fSBjorn Andersson 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
13594a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13604a352c2fSBjorn Andersson 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
13614a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13624a352c2fSBjorn Andersson 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
13634a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13644a352c2fSBjorn Andersson 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
13654a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13664a352c2fSBjorn Andersson 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK,
13674a352c2fSBjorn Andersson 		 sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13684a352c2fSBjorn Andersson 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK,
13694a352c2fSBjorn Andersson 		 sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13704a352c2fSBjorn Andersson 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK,
13714a352c2fSBjorn Andersson 		 sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
13724a352c2fSBjorn Andersson 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK,
13734a352c2fSBjorn Andersson 		 sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
13744a352c2fSBjorn Andersson };
13755334087eSLoic Poulain 
13765334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
13775334087eSLoic Poulain 	{ \
13785334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
13795334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
13805334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
13815334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
13825334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
13835334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
13845334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
13855334087eSLoic Poulain 	.virt_format_list = plane_formats, \
13865334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
13875334087eSLoic Poulain 	}
13885334087eSLoic Poulain 
13895334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
13905334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
13915334087eSLoic Poulain 
13925334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
13935334087eSLoic Poulain 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK,
13945334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13955334087eSLoic Poulain 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
13965334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13975334087eSLoic Poulain };
13985334087eSLoic Poulain 
139925fdd593SJeykumar Sankaran /*************************************************************
140025fdd593SJeykumar Sankaran  * MIXER sub blocks config
140125fdd593SJeykumar Sankaran  *************************************************************/
14027bdc0c4bSKalyan Thota 
1403e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
140425fdd593SJeykumar Sankaran 	{ \
140525fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
140625fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
14077bdc0c4bSKalyan Thota 	.features = _fmask, \
14087bdc0c4bSKalyan Thota 	.sblk = _sblk, \
140925fdd593SJeykumar Sankaran 	.pingpong = _pp, \
1410e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
1411e47616dfSKalyan Thota 	.dspp = _dspp \
141225fdd593SJeykumar Sankaran 	}
141325fdd593SJeykumar Sankaran 
141494391a14SAngeloGioacchino Del Regno /* MSM8998 */
141594391a14SAngeloGioacchino Del Regno 
141694391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
141794391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
141894391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
141994391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
142094391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
142194391a14SAngeloGioacchino Del Regno 		0x260, 0x290
142294391a14SAngeloGioacchino Del Regno 	},
142394391a14SAngeloGioacchino Del Regno };
142494391a14SAngeloGioacchino Del Regno 
142594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
14262d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
142794391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
14282d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
142994391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
14302d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
143194391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
14322d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
143394391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14342d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
143594391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14362d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
143794391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
143894391a14SAngeloGioacchino Del Regno };
143994391a14SAngeloGioacchino Del Regno 
144094391a14SAngeloGioacchino Del Regno /* SDM845 */
144194391a14SAngeloGioacchino Del Regno 
144294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
144394391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
144494391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
144594391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
144694391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
144794391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
144894391a14SAngeloGioacchino Del Regno 	},
144994391a14SAngeloGioacchino Del Regno };
145094391a14SAngeloGioacchino Del Regno 
1451abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
14527bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1453e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
14547bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1455e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
14567bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1457e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
14587bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
1459e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14607bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
1461e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14627bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1463e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
14647bdc0c4bSKalyan Thota };
14657bdc0c4bSKalyan Thota 
14667bdc0c4bSKalyan Thota /* SC7180 */
14677bdc0c4bSKalyan Thota 
14687bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
14697bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
14707bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
14717bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
14727bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
14737bdc0c4bSKalyan Thota 	},
14747bdc0c4bSKalyan Thota };
14757bdc0c4bSKalyan Thota 
14767bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
147700feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1478e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
147900feff8fSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1480e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
148125fdd593SJeykumar Sankaran };
148225fdd593SJeykumar Sankaran 
14834a352c2fSBjorn Andersson /* SC8280XP */
14844a352c2fSBjorn Andersson 
14854a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = {
14864a352c2fSBjorn Andersson 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
14874a352c2fSBjorn Andersson 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
14884a352c2fSBjorn Andersson 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2),
14894a352c2fSBjorn Andersson 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3),
14904a352c2fSBjorn Andersson 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
14914a352c2fSBjorn Andersson 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
14924a352c2fSBjorn Andersson };
14934a352c2fSBjorn Andersson 
1494386fced3SJonathan Marek /* SM8150 */
1495386fced3SJonathan Marek 
1496386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1497386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
149805ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1499386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
150005ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1501386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1502386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1503386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1504386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1505386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1506386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1507386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1508386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1509386fced3SJonathan Marek };
1510386fced3SJonathan Marek 
1511591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
151200feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1513fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
151400feff8fSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1515591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
151600feff8fSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1517591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1518591e34a0SKrishna Manikandan };
1519591e34a0SKrishna Manikandan 
15205334087eSLoic Poulain /* QCM2290 */
15215334087eSLoic Poulain 
15225334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
1523*da06be8bSDmitry Baryshkov 	.maxwidth = DEFAULT_DPU_LINE_WIDTH,
15245334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
15255334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
15265334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
15275334087eSLoic Poulain 	},
15285334087eSLoic Poulain };
15295334087eSLoic Poulain 
15305334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
153100feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK,
15325334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
15335334087eSLoic Poulain };
15345334087eSLoic Poulain 
153525fdd593SJeykumar Sankaran /*************************************************************
1536e47616dfSKalyan Thota  * DSPP sub blocks config
1537e47616dfSKalyan Thota  *************************************************************/
153894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
153994391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
154094391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
154194391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
154294391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
154394391a14SAngeloGioacchino Del Regno };
154494391a14SAngeloGioacchino Del Regno 
15454259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
15464259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
15474259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
15484259ff7aSKalyan Thota };
15494259ff7aSKalyan Thota 
155005ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
155105ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
155205ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
155305ae91d9SDmitry Baryshkov };
155405ae91d9SDmitry Baryshkov 
1555862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1556e47616dfSKalyan Thota 		{\
1557e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1558e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1559862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
156005ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1561e47616dfSKalyan Thota 		}
1562e47616dfSKalyan Thota 
156394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
156494391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
156594391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
156694391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
156794391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
156894391a14SAngeloGioacchino Del Regno };
156994391a14SAngeloGioacchino Del Regno 
1570e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1571862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1572862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
157305ae91d9SDmitry Baryshkov };
157405ae91d9SDmitry Baryshkov 
157505ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1576862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1577862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1578862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1579862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1580862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1581862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1582862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1583862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1584e47616dfSKalyan Thota };
1585386fced3SJonathan Marek 
15865334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
15875334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
15885334087eSLoic Poulain 		 &sm8150_dspp_sblk),
15895334087eSLoic Poulain };
15905334087eSLoic Poulain 
1591e47616dfSKalyan Thota /*************************************************************
159225fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
159325fdd593SJeykumar Sankaran  *************************************************************/
159425fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
159525fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
159625fdd593SJeykumar Sankaran 		.version = 0x1},
159725fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
159825fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
159925fdd593SJeykumar Sankaran };
160025fdd593SJeykumar Sankaran 
160125fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
160225fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
160325fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
160425fdd593SJeykumar Sankaran };
160525fdd593SJeykumar Sankaran 
1606591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1607591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1608591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1609591e34a0SKrishna Manikandan };
1610591e34a0SKrishna Manikandan 
1611efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
1612efcd0107SNeil Armstrong 	{\
1613efcd0107SNeil Armstrong 	.name = _name, .id = _id, \
1614efcd0107SNeil Armstrong 	.base = _base, .len = 0, \
1615efcd0107SNeil Armstrong 	.features = BIT(DPU_PINGPONG_DITHER), \
1616efcd0107SNeil Armstrong 	.merge_3d = _merge_3d, \
1617efcd0107SNeil Armstrong 	.sblk = &_sblk, \
1618efcd0107SNeil Armstrong 	.intr_done = _done, \
1619efcd0107SNeil Armstrong 	.intr_rdptr = _rdptr, \
1620efcd0107SNeil Armstrong 	}
1621667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
162225fdd593SJeykumar Sankaran 	{\
162325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
162425fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
162525fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
16264369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1627667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1628667e9985SDmitry Baryshkov 	.intr_done = _done, \
1629667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
163025fdd593SJeykumar Sankaran 	}
1631667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
163225fdd593SJeykumar Sankaran 	{\
163325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
163425fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
163525fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_MASK, \
16364369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1637667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1638667e9985SDmitry Baryshkov 	.intr_done = _done, \
1639667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
164025fdd593SJeykumar Sankaran 	}
164125fdd593SJeykumar Sankaran 
1642abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1643667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1644667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1645667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1646667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1647667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1648667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1649667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1650667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1651667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1652667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1653667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1654667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
165525fdd593SJeykumar Sankaran };
165625fdd593SJeykumar Sankaran 
16577bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = {
1658667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1659667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
16607bdc0c4bSKalyan Thota };
16617bdc0c4bSKalyan Thota 
16624a352c2fSBjorn Andersson static struct dpu_pingpong_cfg sc8280xp_pp[] = {
16634a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16644a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1),
16654a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
16664a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1),
16674a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te,
16684a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1),
16694a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te,
16704a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1),
16714a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te,
16724a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1),
16734a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te,
16744a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1),
16754a352c2fSBjorn Andersson };
16764a352c2fSBjorn Andersson 
1677386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1678667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1679667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1680667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1681667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1682667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1683667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1684667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1685667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1686667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1687667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1688667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1689667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1690667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1691667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1692667e9985SDmitry Baryshkov 			-1),
1693667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
16943431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1695667e9985SDmitry Baryshkov 			-1),
16964369c93cSDmitry Baryshkov };
16974369c93cSDmitry Baryshkov 
16980e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = {
16990e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
17000e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17010e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17020e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
17030e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
17040e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
17050e91bcbbSRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
17060e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
17070e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
17080e91bcbbSRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
17090e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
17100e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
17110e91bcbbSRobert Foss 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
17120e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
17130e91bcbbSRobert Foss 			-1),
17140e91bcbbSRobert Foss 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
17150e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
17160e91bcbbSRobert Foss 			-1),
17170e91bcbbSRobert Foss };
17180e91bcbbSRobert Foss 
17191a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = {
17201a5b5372SRobert Foss 	PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1),
17211a5b5372SRobert Foss 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
17221a5b5372SRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
17231a5b5372SRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
17241a5b5372SRobert Foss };
17251a5b5372SRobert Foss 
17265334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = {
17275334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
17285334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17295334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17305334087eSLoic Poulain };
17315334087eSLoic Poulain 
1732100d7ef6SDmitry Baryshkov /* FIXME: interrupts */
1733100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = {
1734100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
1735100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1736100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1737100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
1738100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1739100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1740100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
1741100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1742100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1743100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
1744100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1745100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1746100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
1747100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1748100d7ef6SDmitry Baryshkov 			-1),
1749100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
1750100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1751100d7ef6SDmitry Baryshkov 			-1),
1752100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk,
1753100d7ef6SDmitry Baryshkov 			-1,
1754100d7ef6SDmitry Baryshkov 			-1),
1755100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk,
1756100d7ef6SDmitry Baryshkov 			-1,
1757100d7ef6SDmitry Baryshkov 			-1),
1758100d7ef6SDmitry Baryshkov };
1759100d7ef6SDmitry Baryshkov 
1760efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = {
1761efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk,
1762efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1763efcd0107SNeil Armstrong 			-1),
1764efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk,
1765efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1766efcd0107SNeil Armstrong 			-1),
1767efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk,
1768efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1769efcd0107SNeil Armstrong 			-1),
1770efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk,
1771efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1772efcd0107SNeil Armstrong 			-1),
1773efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk,
1774efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1775efcd0107SNeil Armstrong 			-1),
1776efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk,
1777efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1778efcd0107SNeil Armstrong 			-1),
1779efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk,
1780efcd0107SNeil Armstrong 			-1,
1781efcd0107SNeil Armstrong 			-1),
1782efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk,
1783efcd0107SNeil Armstrong 			-1,
1784efcd0107SNeil Armstrong 			-1),
1785efcd0107SNeil Armstrong };
1786efcd0107SNeil Armstrong 
17874369c93cSDmitry Baryshkov /*************************************************************
17884369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
17894369c93cSDmitry Baryshkov  *************************************************************/
17904369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
17914369c93cSDmitry Baryshkov 	{\
17924369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
17934369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
17944369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
17954369c93cSDmitry Baryshkov 	.sblk = NULL \
17964369c93cSDmitry Baryshkov 	}
17974369c93cSDmitry Baryshkov 
17984369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
17994369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
18004369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
18014369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1802386fced3SJonathan Marek };
1803386fced3SJonathan Marek 
18040e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = {
18050e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
18060e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
18070e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
18080e91bcbbSRobert Foss };
18090e91bcbbSRobert Foss 
1810100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = {
1811100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1812100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1813100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1814100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00),
1815100d7ef6SDmitry Baryshkov };
1816100d7ef6SDmitry Baryshkov 
1817efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = {
1818efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1819efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1820efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1821efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700),
1822efcd0107SNeil Armstrong };
1823efcd0107SNeil Armstrong 
18247c5ab05eSVinod Koul /*************************************************************
18257c5ab05eSVinod Koul  * DSC sub blocks config
18267c5ab05eSVinod Koul  *************************************************************/
18279da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \
18287c5ab05eSVinod Koul 	{\
18297c5ab05eSVinod Koul 	.name = _name, .id = _id, \
18307c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
18319da5daa0SMarijn Suijten 	.features = _features, \
18327c5ab05eSVinod Koul 	}
18337c5ab05eSVinod Koul 
18347c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = {
18359da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, 0),
18369da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, 0),
18379da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, 0),
18389da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, 0),
18399da5daa0SMarijn Suijten };
18409da5daa0SMarijn Suijten 
18419da5daa0SMarijn Suijten static struct dpu_dsc_cfg sm8150_dsc[] = {
18429da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)),
18439da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)),
18449da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)),
18459da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)),
18467c5ab05eSVinod Koul };
18477c5ab05eSVinod Koul 
184825fdd593SJeykumar Sankaran /*************************************************************
184925fdd593SJeykumar Sankaran  * INTF sub blocks config
185025fdd593SJeykumar Sankaran  *************************************************************/
1851667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
185225fdd593SJeykumar Sankaran 	{\
185325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
185425fdd593SJeykumar Sankaran 	.base = _base, .len = 0x280, \
1855cace3ac4SJonathan Marek 	.features = _features, \
185625fdd593SJeykumar Sankaran 	.type = _type, \
185725fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1858667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1859667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1860667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
186125fdd593SJeykumar Sankaran 	}
186225fdd593SJeykumar Sankaran 
186394391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
186494391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
186594391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
186694391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
186794391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
186894391a14SAngeloGioacchino Del Regno };
186994391a14SAngeloGioacchino Del Regno 
1870abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
1871667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1872667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1873667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1874667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
187525fdd593SJeykumar Sankaran };
187625fdd593SJeykumar Sankaran 
18777bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
1878bb3de286SBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1879667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18807bdc0c4bSKalyan Thota };
18817bdc0c4bSKalyan Thota 
1882386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
1883667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1884667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1885667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1886667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1887386fced3SJonathan Marek };
1888386fced3SJonathan Marek 
1889591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
1890ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1891667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1892ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1893591e34a0SKrishna Manikandan };
1894591e34a0SKrishna Manikandan 
18950e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = {
18960e91bcbbSRobert Foss 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18970e91bcbbSRobert Foss 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18980e91bcbbSRobert Foss 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18990e91bcbbSRobert Foss 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19000e91bcbbSRobert Foss };
19010e91bcbbSRobert Foss 
1902f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
1903f3af2d6eSRob Clark 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1904f3af2d6eSRob Clark 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1905f3af2d6eSRob Clark 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1906f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
1907f3af2d6eSRob Clark 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1908f3af2d6eSRob Clark 	INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
1909f3af2d6eSRob Clark 	INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1910f3af2d6eSRob Clark };
1911f3af2d6eSRob Clark 
19124a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */
19134a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = {
19144a352c2fSBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19154a352c2fSBjorn Andersson 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19164a352c2fSBjorn Andersson 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19174a352c2fSBjorn Andersson 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_NONE, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19184a352c2fSBjorn Andersson 	INTF_BLK("intf_4", INTF_4, 0x38000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
19194a352c2fSBjorn Andersson 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
19204a352c2fSBjorn Andersson 	INTF_BLK("intf_6", INTF_6, 0x3a000, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17),
19214a352c2fSBjorn Andersson 	INTF_BLK("intf_7", INTF_7, 0x3b000, INTF_NONE, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19),
19224a352c2fSBjorn Andersson 	INTF_BLK("intf_8", INTF_8, 0x3c000, INTF_NONE, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13),
19234a352c2fSBjorn Andersson };
19244a352c2fSBjorn Andersson 
19255334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
19265334087eSLoic Poulain 	INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0),
19275334087eSLoic Poulain 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19285334087eSLoic Poulain };
19295334087eSLoic Poulain 
1930100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = {
1931100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1932100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1933100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1934100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1935100d7ef6SDmitry Baryshkov };
1936100d7ef6SDmitry Baryshkov 
1937efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = {
1938efcd0107SNeil Armstrong 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1939efcd0107SNeil Armstrong 	/* TODO TE sub-blocks for intf1 & intf2 */
1940efcd0107SNeil Armstrong 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1941efcd0107SNeil Armstrong 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1942efcd0107SNeil Armstrong 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1943efcd0107SNeil Armstrong };
1944efcd0107SNeil Armstrong 
194525fdd593SJeykumar Sankaran /*************************************************************
194653324b99SAbhinav Kumar  * Writeback blocks config
194753324b99SAbhinav Kumar  *************************************************************/
194853324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1949a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
195053324b99SAbhinav Kumar 	{ \
195153324b99SAbhinav Kumar 	.name = _name, .id = _id, \
195253324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
195353324b99SAbhinav Kumar 	.features = _features, \
195453324b99SAbhinav Kumar 	.format_list = wb2_formats, \
195553324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
195653324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
195753324b99SAbhinav Kumar 	.xin_id = __xin_id, \
195853324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
1959a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
196053324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
196153324b99SAbhinav Kumar 	}
196253324b99SAbhinav Kumar 
196353324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
196453324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
1965a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
196653324b99SAbhinav Kumar };
196753324b99SAbhinav Kumar 
196853324b99SAbhinav Kumar /*************************************************************
196925fdd593SJeykumar Sankaran  * VBIF sub blocks config
197025fdd593SJeykumar Sankaran  *************************************************************/
197125fdd593SJeykumar Sankaran /* VBIF QOS remap */
197294391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
197394391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
1974abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
1975abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
197625fdd593SJeykumar Sankaran 
197794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
197894391a14SAngeloGioacchino Del Regno 	{
197994391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
198094391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
198194391a14SAngeloGioacchino Del Regno 	},
198294391a14SAngeloGioacchino Del Regno 	{
198394391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
198494391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
198594391a14SAngeloGioacchino Del Regno 	},
198694391a14SAngeloGioacchino Del Regno 	{
198794391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
198894391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
198994391a14SAngeloGioacchino Del Regno 	},
199094391a14SAngeloGioacchino Del Regno };
199194391a14SAngeloGioacchino Del Regno 
199294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
199394391a14SAngeloGioacchino Del Regno 	{
1994606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
199594391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
199694391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
199794391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
199894391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
199994391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
2000c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
200194391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
200294391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
200394391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
200494391a14SAngeloGioacchino Del Regno 		},
200594391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
200694391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
200794391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
200894391a14SAngeloGioacchino Del Regno 		},
200994391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
201094391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
201194391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
201294391a14SAngeloGioacchino Del Regno 		},
201394391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
201494391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
201594391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
201694391a14SAngeloGioacchino Del Regno 		},
201794391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
201894391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
201994391a14SAngeloGioacchino Del Regno 	},
202094391a14SAngeloGioacchino Del Regno };
202194391a14SAngeloGioacchino Del Regno 
2022abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
202325fdd593SJeykumar Sankaran 	{
2024606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
202525fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
202625fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
202725fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
2028c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
202925fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
203025fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
203125fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
203225fdd593SJeykumar Sankaran 		},
203325fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
203425fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
203525fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
203625fdd593SJeykumar Sankaran 		},
203725fdd593SJeykumar Sankaran 	.memtype_count = 14,
203825fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
203925fdd593SJeykumar Sankaran 	},
204025fdd593SJeykumar Sankaran };
204125fdd593SJeykumar Sankaran 
20424a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = {
20434a352c2fSBjorn Andersson 	.base = 0x0,
20444a352c2fSBjorn Andersson 	.version = 0x00020000,
20454a352c2fSBjorn Andersson 	.trigger_sel_off = 0x119c,
20464a352c2fSBjorn Andersson 	.xin_id = 7,
20474a352c2fSBjorn Andersson 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20484a352c2fSBjorn Andersson };
20494a352c2fSBjorn Andersson 
2050abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
205125fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
205225fdd593SJeykumar Sankaran };
205325fdd593SJeykumar Sankaran 
2054386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
2055386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
2056386fced3SJonathan Marek };
2057386fced3SJonathan Marek 
2058af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
2059af776a3eSJonathan Marek 	.base = 0x0,
2060af776a3eSJonathan Marek 	.version = 0x00010002,
2061af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
2062af776a3eSJonathan Marek 	.xin_id = 7,
2063af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2064af776a3eSJonathan Marek };
2065af776a3eSJonathan Marek 
20660e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = {
20670e91bcbbSRobert Foss 	.base = 0x400,
20680e91bcbbSRobert Foss 	.version = 0x00020000,
20690e91bcbbSRobert Foss 	.trigger_sel_off = 0x119c,
20700e91bcbbSRobert Foss 	.xin_id = 7,
20710e91bcbbSRobert Foss 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20720e91bcbbSRobert Foss };
20730e91bcbbSRobert Foss 
2074100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = {
2075100d7ef6SDmitry Baryshkov 	.base = 0x0,
2076100d7ef6SDmitry Baryshkov 	.version = 0x00020000,
2077100d7ef6SDmitry Baryshkov 	.trigger_sel_off = 0x119c,
2078100d7ef6SDmitry Baryshkov 	.xin_id = 7,
2079100d7ef6SDmitry Baryshkov 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2080100d7ef6SDmitry Baryshkov };
2081100d7ef6SDmitry Baryshkov 
208225fdd593SJeykumar Sankaran /*************************************************************
208325fdd593SJeykumar Sankaran  * PERF data config
208425fdd593SJeykumar Sankaran  *************************************************************/
208525fdd593SJeykumar Sankaran 
208625fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
208794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
208894391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
208994391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
209094391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
209194391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
209294391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
209394391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
209494391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
209594391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
209694391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
209794391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
209894391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
209994391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
210094391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
210194391a14SAngeloGioacchino Del Regno };
210294391a14SAngeloGioacchino Del Regno 
2103abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
210425fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
210525fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
210625fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
210725fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
210825fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
210925fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
211025fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
211125fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
211225fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
211325fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
211425fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
211525fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
211625fdd593SJeykumar Sankaran };
211725fdd593SJeykumar Sankaran 
211894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
211994391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
212094391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
212194391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
212294391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
212394391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
212494391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
212594391a14SAngeloGioacchino Del Regno };
212694391a14SAngeloGioacchino Del Regno 
21277bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
21287bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
21297bdc0c4bSKalyan Thota };
21307bdc0c4bSKalyan Thota 
2131386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
2132386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
2133386fced3SJonathan Marek };
2134386fced3SJonathan Marek 
2135f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
2136f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
2137f3af2d6eSRob Clark };
2138f3af2d6eSRob Clark 
21395334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
21405334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
21415334087eSLoic Poulain };
21425334087eSLoic Poulain 
2143abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
214425fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
214525fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
214625fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
214725fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
214825fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
214925fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
215025fdd593SJeykumar Sankaran };
215125fdd593SJeykumar Sankaran 
21527bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
21537bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
21547bdc0c4bSKalyan Thota };
21557bdc0c4bSKalyan Thota 
2156f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
2157f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
2158f3af2d6eSRob Clark };
2159f3af2d6eSRob Clark 
216094391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
216194391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
216294391a14SAngeloGioacchino Del Regno };
216394391a14SAngeloGioacchino Del Regno 
2164abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
216525fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
216625fdd593SJeykumar Sankaran };
216725fdd593SJeykumar Sankaran 
21687bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
21697bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
21707bdc0c4bSKalyan Thota };
21717bdc0c4bSKalyan Thota 
217294391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
217394391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
217494391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
217594391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
217694391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
217794391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
217894391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
217994391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
218094391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
218194391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
218294391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
218394391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
218494391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
218594391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
218694391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
218794391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
218894391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
218994391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
219094391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
219194391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
219294391a14SAngeloGioacchino Del Regno 		},
219394391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
219494391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
219594391a14SAngeloGioacchino Del Regno 		},
219694391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
219794391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
219894391a14SAngeloGioacchino Del Regno 		},
219994391a14SAngeloGioacchino Del Regno 	},
220094391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
220194391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
220294391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
220394391a14SAngeloGioacchino Del Regno 	},
220494391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
220594391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
220694391a14SAngeloGioacchino Del Regno };
220794391a14SAngeloGioacchino Del Regno 
2208abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
220925fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
221025fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
221125fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
221225fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
221325fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
221425fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
221525fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
221625fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
221725fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
221825fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
221925fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
222025fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
222125fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
222225fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
222325fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22245bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
222525fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
222625fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
222725fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
222825fdd593SJeykumar Sankaran 		},
222925fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
223025fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
223125fdd593SJeykumar Sankaran 		},
223225fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
223325fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
223425fdd593SJeykumar Sankaran 		},
223525fdd593SJeykumar Sankaran 	},
223625fdd593SJeykumar Sankaran 	.cdp_cfg = {
223725fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
223825fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
223925fdd593SJeykumar Sankaran 	},
22404f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
22414f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
224225fdd593SJeykumar Sankaran };
224325fdd593SJeykumar Sankaran 
22447bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
224571dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
224671dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
22477bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
22487bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
2249c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
2250c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
22517bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22525bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22537bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
22547bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22557bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
22567bdc0c4bSKalyan Thota 		},
22577bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22587bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
22597bdc0c4bSKalyan Thota 		},
22607bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22617bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
22627bdc0c4bSKalyan Thota 		},
22637bdc0c4bSKalyan Thota 	},
22647bdc0c4bSKalyan Thota 	.cdp_cfg = {
22657bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
22667bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
22677bdc0c4bSKalyan Thota 	},
2268c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
2269c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
22707bdc0c4bSKalyan Thota };
22717bdc0c4bSKalyan Thota 
22723581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = {
22733581b706SAdam Skladowski 	.max_bw_low = 3100000,
22743581b706SAdam Skladowski 	.max_bw_high = 4000000,
22753581b706SAdam Skladowski 	.min_core_ib = 2400000,
22763581b706SAdam Skladowski 	.min_llcc_ib = 800000,
22773581b706SAdam Skladowski 	.min_dram_ib = 800000,
22783581b706SAdam Skladowski 	.min_prefill_lines = 24,
22793581b706SAdam Skladowski 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22803581b706SAdam Skladowski 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22813581b706SAdam Skladowski 	.qos_lut_tbl = {
22823581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22833581b706SAdam Skladowski 		.entries = sc7180_qos_linear
22843581b706SAdam Skladowski 		},
22853581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22863581b706SAdam Skladowski 		.entries = sc7180_qos_macrotile
22873581b706SAdam Skladowski 		},
22883581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22893581b706SAdam Skladowski 		.entries = sc7180_qos_nrt
22903581b706SAdam Skladowski 		},
22913581b706SAdam Skladowski 		/* TODO: macrotile-qseed is different from macrotile */
22923581b706SAdam Skladowski 	},
22933581b706SAdam Skladowski 	.cdp_cfg = {
22943581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 1},
22953581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 0}
22963581b706SAdam Skladowski 	},
22973581b706SAdam Skladowski 	.clk_inefficiency_factor = 105,
22983581b706SAdam Skladowski 	.bw_inefficiency_factor = 120,
22993581b706SAdam Skladowski };
23003581b706SAdam Skladowski 
2301386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
2302386fced3SJonathan Marek 	.max_bw_low = 12800000,
2303386fced3SJonathan Marek 	.max_bw_high = 12800000,
2304386fced3SJonathan Marek 	.min_core_ib = 2400000,
2305386fced3SJonathan Marek 	.min_llcc_ib = 800000,
2306386fced3SJonathan Marek 	.min_dram_ib = 800000,
23074f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
2308386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23095bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
2310386fced3SJonathan Marek 	.qos_lut_tbl = {
2311386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
2312386fced3SJonathan Marek 		.entries = sm8150_qos_linear
2313386fced3SJonathan Marek 		},
2314386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2315386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
2316386fced3SJonathan Marek 		},
2317386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2318386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
2319386fced3SJonathan Marek 		},
2320386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2321386fced3SJonathan Marek 	},
2322386fced3SJonathan Marek 	.cdp_cfg = {
2323386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2324386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2325386fced3SJonathan Marek 	},
23264f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
23274f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2328386fced3SJonathan Marek };
2329386fced3SJonathan Marek 
2330f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
2331f3af2d6eSRob Clark 	.max_bw_low = 9600000,
2332f3af2d6eSRob Clark 	.max_bw_high = 9600000,
2333f3af2d6eSRob Clark 	.min_core_ib = 2400000,
2334f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
2335f3af2d6eSRob Clark 	.min_dram_ib = 800000,
2336f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
2337f3af2d6eSRob Clark 	.qos_lut_tbl = {
23384a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
23394a352c2fSBjorn Andersson 		.entries = sc7180_qos_linear
23404a352c2fSBjorn Andersson 		},
23414a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23424a352c2fSBjorn Andersson 		.entries = sc7180_qos_macrotile
23434a352c2fSBjorn Andersson 		},
23444a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23454a352c2fSBjorn Andersson 		.entries = sc7180_qos_nrt
23464a352c2fSBjorn Andersson 		},
23474a352c2fSBjorn Andersson 		/* TODO: macrotile-qseed is different from macrotile */
23484a352c2fSBjorn Andersson 	},
23494a352c2fSBjorn Andersson 	.cdp_cfg = {
23504a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 1},
23514a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 0}
23524a352c2fSBjorn Andersson 	},
23534a352c2fSBjorn Andersson 	.clk_inefficiency_factor = 105,
23544a352c2fSBjorn Andersson 	.bw_inefficiency_factor = 120,
23554a352c2fSBjorn Andersson };
23564a352c2fSBjorn Andersson 
23574a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = {
23584a352c2fSBjorn Andersson 	.max_bw_low = 13600000,
23594a352c2fSBjorn Andersson 	.max_bw_high = 18200000,
23604a352c2fSBjorn Andersson 	.min_core_ib = 2500000,
23614a352c2fSBjorn Andersson 	.min_llcc_ib = 0,
23624a352c2fSBjorn Andersson 	.min_dram_ib = 800000,
23634a352c2fSBjorn Andersson 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23644a352c2fSBjorn Andersson 	.qos_lut_tbl = {
2365f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
2366f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
2367f3af2d6eSRob Clark 		},
2368f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
2369f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
2370f3af2d6eSRob Clark 		},
2371f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2372f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
2373f3af2d6eSRob Clark 		},
2374f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
2375f3af2d6eSRob Clark 	},
2376f3af2d6eSRob Clark 	.cdp_cfg = {
2377f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
2378f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
2379f3af2d6eSRob Clark 	},
2380f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
2381f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
2382f3af2d6eSRob Clark };
2383f3af2d6eSRob Clark 
2384af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
2385af776a3eSJonathan Marek 	.max_bw_low = 13700000,
2386af776a3eSJonathan Marek 	.max_bw_high = 16600000,
2387af776a3eSJonathan Marek 	.min_core_ib = 4800000,
2388af776a3eSJonathan Marek 	.min_llcc_ib = 0,
2389af776a3eSJonathan Marek 	.min_dram_ib = 800000,
23904f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
2391af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23925bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
2393af776a3eSJonathan Marek 	.qos_lut_tbl = {
2394af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2395af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
2396af776a3eSJonathan Marek 		},
2397af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2398af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
2399af776a3eSJonathan Marek 		},
2400af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2401af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
2402af776a3eSJonathan Marek 		},
2403af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2404af776a3eSJonathan Marek 	},
2405af776a3eSJonathan Marek 	.cdp_cfg = {
2406af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2407af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2408af776a3eSJonathan Marek 	},
24094f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
24104f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2411af776a3eSJonathan Marek };
2412af776a3eSJonathan Marek 
2413100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = {
2414100d7ef6SDmitry Baryshkov 	.max_bw_low = 13600000,
2415100d7ef6SDmitry Baryshkov 	.max_bw_high = 18200000,
2416100d7ef6SDmitry Baryshkov 	.min_core_ib = 2500000,
2417100d7ef6SDmitry Baryshkov 	.min_llcc_ib = 0,
2418100d7ef6SDmitry Baryshkov 	.min_dram_ib = 800000,
2419100d7ef6SDmitry Baryshkov 	.min_prefill_lines = 35,
2420100d7ef6SDmitry Baryshkov 	/* FIXME: lut tables */
2421100d7ef6SDmitry Baryshkov 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
2422100d7ef6SDmitry Baryshkov 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
2423100d7ef6SDmitry Baryshkov 	.qos_lut_tbl = {
2424100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2425100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_linear
2426100d7ef6SDmitry Baryshkov 		},
2427100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2428100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_macrotile
2429100d7ef6SDmitry Baryshkov 		},
2430100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2431100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_nrt
2432100d7ef6SDmitry Baryshkov 		},
2433100d7ef6SDmitry Baryshkov 		/* TODO: macrotile-qseed is different from macrotile */
2434100d7ef6SDmitry Baryshkov 	},
2435100d7ef6SDmitry Baryshkov 	.cdp_cfg = {
2436100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 1},
2437100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 0}
2438100d7ef6SDmitry Baryshkov 	},
2439100d7ef6SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
2440100d7ef6SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2441100d7ef6SDmitry Baryshkov };
2442100d7ef6SDmitry Baryshkov 
2443591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
2444591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
2445591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
2446591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
2447591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
2448591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
2449591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
2450591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
24515bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
2452591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
2453591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2454591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2455591e34a0SKrishna Manikandan 		},
2456591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2457591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2458591e34a0SKrishna Manikandan 		},
2459591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2460591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
2461591e34a0SKrishna Manikandan 		},
2462591e34a0SKrishna Manikandan 	},
2463591e34a0SKrishna Manikandan 	.cdp_cfg = {
2464591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
2465591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
2466591e34a0SKrishna Manikandan 	},
2467591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
2468591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
2469591e34a0SKrishna Manikandan };
2470591e34a0SKrishna Manikandan 
24710e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = {
24720e91bcbbSRobert Foss 	.max_bw_low = 11800000,
24730e91bcbbSRobert Foss 	.max_bw_high = 15500000,
24740e91bcbbSRobert Foss 	.min_core_ib = 2500000,
24750e91bcbbSRobert Foss 	.min_llcc_ib = 0,
24760e91bcbbSRobert Foss 	.min_dram_ib = 800000,
24770e91bcbbSRobert Foss 	.min_prefill_lines = 40,
24780e91bcbbSRobert Foss 	/* FIXME: lut tables */
24790e91bcbbSRobert Foss 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
24800e91bcbbSRobert Foss 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
24810e91bcbbSRobert Foss 	.qos_lut_tbl = {
24820e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
24830e91bcbbSRobert Foss 		.entries = sc7180_qos_linear
24840e91bcbbSRobert Foss 		},
24850e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
24860e91bcbbSRobert Foss 		.entries = sc7180_qos_macrotile
24870e91bcbbSRobert Foss 		},
24880e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
24890e91bcbbSRobert Foss 		.entries = sc7180_qos_nrt
24900e91bcbbSRobert Foss 		},
24910e91bcbbSRobert Foss 		/* TODO: macrotile-qseed is different from macrotile */
24920e91bcbbSRobert Foss 	},
24930e91bcbbSRobert Foss 	.cdp_cfg = {
24940e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 1},
24950e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 0}
24960e91bcbbSRobert Foss 	},
24970e91bcbbSRobert Foss 	.clk_inefficiency_factor = 105,
24980e91bcbbSRobert Foss 	.bw_inefficiency_factor = 120,
24990e91bcbbSRobert Foss };
25000e91bcbbSRobert Foss 
25015334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
25025334087eSLoic Poulain 	.max_bw_low = 2700000,
25035334087eSLoic Poulain 	.max_bw_high = 2700000,
25045334087eSLoic Poulain 	.min_core_ib = 1300000,
25055334087eSLoic Poulain 	.min_llcc_ib = 0,
25065334087eSLoic Poulain 	.min_dram_ib = 1600000,
25075334087eSLoic Poulain 	.min_prefill_lines = 24,
25085334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
25095334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
25105334087eSLoic Poulain 	.qos_lut_tbl = {
25115334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
25125334087eSLoic Poulain 		.entries = qcm2290_qos_linear
25135334087eSLoic Poulain 		},
25145334087eSLoic Poulain 	},
25155334087eSLoic Poulain 	.cdp_cfg = {
25165334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
25175334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
25185334087eSLoic Poulain 	},
25195334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
25205334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
25215334087eSLoic Poulain };
252225fdd593SJeykumar Sankaran /*************************************************************
2523de7d480fSDmitry Baryshkov  * Hardware catalog
252425fdd593SJeykumar Sankaran  *************************************************************/
252525fdd593SJeykumar Sankaran 
2526de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
252794391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
252894391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
252994391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
253094391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
253194391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
253294391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
253394391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
253494391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
253594391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
25366452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
25376452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
253894391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
253994391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
254094391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
254194391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
254294391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
254394391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
254494391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
2545477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
254694391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
254794391a14SAngeloGioacchino Del Regno };
254894391a14SAngeloGioacchino Del Regno 
2549de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
255025fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
255125fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
255225fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
255325fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
255425fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
255525fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
255625fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
255725fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
255825fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
255925fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
256025fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
25617c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
25627c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
256325fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
256425fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
256525fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
256625fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
256725fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
2568481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2569477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
2570597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
257125fdd593SJeykumar Sankaran };
257225fdd593SJeykumar Sankaran 
2573de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
25747bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
25757bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
25767bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
25777bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
25787bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
25797bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
25807bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
25817bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
25827bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
2583e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2584e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
25857bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
25867bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
25877bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
25887bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
258951e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
259051e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
25917bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
25927bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
25937bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
2594481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2595477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
2596597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
25977bdc0c4bSKalyan Thota };
25987bdc0c4bSKalyan Thota 
25993581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
26003581b706SAdam Skladowski 	.caps = &sm6115_dpu_caps,
26013581b706SAdam Skladowski 	.mdp_count = ARRAY_SIZE(sm6115_mdp),
26023581b706SAdam Skladowski 	.mdp = sm6115_mdp,
26033581b706SAdam Skladowski 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
26043581b706SAdam Skladowski 	.ctl = qcm2290_ctl,
26053581b706SAdam Skladowski 	.sspp_count = ARRAY_SIZE(sm6115_sspp),
26063581b706SAdam Skladowski 	.sspp = sm6115_sspp,
26073581b706SAdam Skladowski 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
26083581b706SAdam Skladowski 	.mixer = qcm2290_lm,
26093581b706SAdam Skladowski 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
26103581b706SAdam Skladowski 	.dspp = qcm2290_dspp,
26113581b706SAdam Skladowski 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
26123581b706SAdam Skladowski 	.pingpong = qcm2290_pp,
26133581b706SAdam Skladowski 	.intf_count = ARRAY_SIZE(qcm2290_intf),
26143581b706SAdam Skladowski 	.intf = qcm2290_intf,
26153581b706SAdam Skladowski 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26163581b706SAdam Skladowski 	.vbif = sdm845_vbif,
26173581b706SAdam Skladowski 	.perf = &sm6115_perf_data,
26183581b706SAdam Skladowski 	.mdss_irqs = IRQ_SC7180_MASK,
26193581b706SAdam Skladowski };
26203581b706SAdam Skladowski 
2621de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
2622386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
2623386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
2624386fced3SJonathan Marek 	.mdp = sdm845_mdp,
2625386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2626386fced3SJonathan Marek 	.ctl = sm8150_ctl,
2627386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2628386fced3SJonathan Marek 	.sspp = sdm845_sspp,
2629386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2630386fced3SJonathan Marek 	.mixer = sm8150_lm,
263105ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
263205ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
26339da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
26349da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2635386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2636386fced3SJonathan Marek 	.pingpong = sm8150_pp,
26374369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
26384369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2639386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2640386fced3SJonathan Marek 	.intf = sm8150_intf,
2641386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2642386fced3SJonathan Marek 	.vbif = sdm845_vbif,
2643386fced3SJonathan Marek 	.reg_dma_count = 1,
2644481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2645477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
2646597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
2647386fced3SJonathan Marek };
2648386fced3SJonathan Marek 
2649de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
2650f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
2651f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
2652f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
2653f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2654f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
2655f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2656f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
2657f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2658f3af2d6eSRob Clark 	.mixer = sm8150_lm,
2659f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2660f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
2661f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
2662f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
2663f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
2664f3af2d6eSRob Clark 	.intf = sc8180x_intf,
2665f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2666f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
2667f3af2d6eSRob Clark 	.reg_dma_count = 1,
2668481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2669477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
2670f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
2671f3af2d6eSRob Clark };
2672f3af2d6eSRob Clark 
26734a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = {
26744a352c2fSBjorn Andersson 	.caps = &sc8280xp_dpu_caps,
26754a352c2fSBjorn Andersson 	.mdp_count = ARRAY_SIZE(sc8280xp_mdp),
26764a352c2fSBjorn Andersson 	.mdp = sc8280xp_mdp,
26774a352c2fSBjorn Andersson 	.ctl_count = ARRAY_SIZE(sc8280xp_ctl),
26784a352c2fSBjorn Andersson 	.ctl = sc8280xp_ctl,
26794a352c2fSBjorn Andersson 	.sspp_count = ARRAY_SIZE(sc8280xp_sspp),
26804a352c2fSBjorn Andersson 	.sspp = sc8280xp_sspp,
26814a352c2fSBjorn Andersson 	.mixer_count = ARRAY_SIZE(sc8280xp_lm),
26824a352c2fSBjorn Andersson 	.mixer = sc8280xp_lm,
26834a352c2fSBjorn Andersson 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
26844a352c2fSBjorn Andersson 	.dspp = sm8150_dspp,
26854a352c2fSBjorn Andersson 	.pingpong_count = ARRAY_SIZE(sc8280xp_pp),
26864a352c2fSBjorn Andersson 	.pingpong = sc8280xp_pp,
26874a352c2fSBjorn Andersson 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
26884a352c2fSBjorn Andersson 	.merge_3d = sm8350_merge_3d,
26894a352c2fSBjorn Andersson 	.intf_count = ARRAY_SIZE(sc8280xp_intf),
26904a352c2fSBjorn Andersson 	.intf = sc8280xp_intf,
26914a352c2fSBjorn Andersson 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26924a352c2fSBjorn Andersson 	.vbif = sdm845_vbif,
269383bb1f13SDmitry Baryshkov 	.reg_dma_count = 1,
269483bb1f13SDmitry Baryshkov 	.dma_cfg = &sc8280xp_regdma,
26954a352c2fSBjorn Andersson 	.perf = &sc8280xp_perf_data,
26964a352c2fSBjorn Andersson 	.mdss_irqs = IRQ_SC8280XP_MASK,
26974a352c2fSBjorn Andersson };
26984a352c2fSBjorn Andersson 
2699de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
2700af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
2701af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
2702af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
2703af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2704af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
2705d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
2706d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
2707af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2708af776a3eSJonathan Marek 	.mixer = sm8150_lm,
270905ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
271005ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
27119da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
27129da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2713af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2714af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
27154369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
27164369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2717af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2718af776a3eSJonathan Marek 	.intf = sm8150_intf,
2719af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2720af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
272153324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
272253324b99SAbhinav Kumar 	.wb = sm8250_wb,
2723af776a3eSJonathan Marek 	.reg_dma_count = 1,
2724481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
2725477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
2726597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
2727af776a3eSJonathan Marek };
2728af776a3eSJonathan Marek 
27290e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = {
27300e91bcbbSRobert Foss 	.caps = &sm8350_dpu_caps,
27310e91bcbbSRobert Foss 	.mdp_count = ARRAY_SIZE(sm8350_mdp),
27320e91bcbbSRobert Foss 	.mdp = sm8350_mdp,
27330e91bcbbSRobert Foss 	.ctl_count = ARRAY_SIZE(sm8350_ctl),
27340e91bcbbSRobert Foss 	.ctl = sm8350_ctl,
27350e91bcbbSRobert Foss 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
27360e91bcbbSRobert Foss 	.sspp = sm8250_sspp,
27370e91bcbbSRobert Foss 	.mixer_count = ARRAY_SIZE(sm8150_lm),
27380e91bcbbSRobert Foss 	.mixer = sm8150_lm,
27390e91bcbbSRobert Foss 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
27400e91bcbbSRobert Foss 	.dspp = sm8150_dspp,
27410e91bcbbSRobert Foss 	.pingpong_count = ARRAY_SIZE(sm8350_pp),
27420e91bcbbSRobert Foss 	.pingpong = sm8350_pp,
27430e91bcbbSRobert Foss 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
27440e91bcbbSRobert Foss 	.merge_3d = sm8350_merge_3d,
27450e91bcbbSRobert Foss 	.intf_count = ARRAY_SIZE(sm8350_intf),
27460e91bcbbSRobert Foss 	.intf = sm8350_intf,
27470e91bcbbSRobert Foss 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
27480e91bcbbSRobert Foss 	.vbif = sdm845_vbif,
27490e91bcbbSRobert Foss 	.reg_dma_count = 1,
2750764b9481SDmitry Baryshkov 	.dma_cfg = &sm8350_regdma,
27510e91bcbbSRobert Foss 	.perf = &sm8350_perf_data,
27520e91bcbbSRobert Foss 	.mdss_irqs = IRQ_SM8350_MASK,
27530e91bcbbSRobert Foss };
27540e91bcbbSRobert Foss 
2755100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = {
2756100d7ef6SDmitry Baryshkov 	.caps = &sm8450_dpu_caps,
2757100d7ef6SDmitry Baryshkov 	.mdp_count = ARRAY_SIZE(sm8450_mdp),
2758100d7ef6SDmitry Baryshkov 	.mdp = sm8450_mdp,
2759100d7ef6SDmitry Baryshkov 	.ctl_count = ARRAY_SIZE(sm8450_ctl),
2760100d7ef6SDmitry Baryshkov 	.ctl = sm8450_ctl,
2761100d7ef6SDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8450_sspp),
2762100d7ef6SDmitry Baryshkov 	.sspp = sm8450_sspp,
2763100d7ef6SDmitry Baryshkov 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2764100d7ef6SDmitry Baryshkov 	.mixer = sm8150_lm,
2765100d7ef6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2766100d7ef6SDmitry Baryshkov 	.dspp = sm8150_dspp,
2767100d7ef6SDmitry Baryshkov 	.pingpong_count = ARRAY_SIZE(sm8450_pp),
2768100d7ef6SDmitry Baryshkov 	.pingpong = sm8450_pp,
2769100d7ef6SDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8450_merge_3d),
2770100d7ef6SDmitry Baryshkov 	.merge_3d = sm8450_merge_3d,
2771100d7ef6SDmitry Baryshkov 	.intf_count = ARRAY_SIZE(sm8450_intf),
2772100d7ef6SDmitry Baryshkov 	.intf = sm8450_intf,
2773100d7ef6SDmitry Baryshkov 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2774100d7ef6SDmitry Baryshkov 	.vbif = sdm845_vbif,
2775100d7ef6SDmitry Baryshkov 	.reg_dma_count = 1,
2776100d7ef6SDmitry Baryshkov 	.dma_cfg = &sm8450_regdma,
2777100d7ef6SDmitry Baryshkov 	.perf = &sm8450_perf_data,
2778100d7ef6SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8450_MASK,
2779100d7ef6SDmitry Baryshkov };
2780100d7ef6SDmitry Baryshkov 
2781efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = {
2782efcd0107SNeil Armstrong 	.caps = &sm8550_dpu_caps,
2783efcd0107SNeil Armstrong 	.mdp_count = ARRAY_SIZE(sm8550_mdp),
2784efcd0107SNeil Armstrong 	.mdp = sm8550_mdp,
2785efcd0107SNeil Armstrong 	.ctl_count = ARRAY_SIZE(sm8550_ctl),
2786efcd0107SNeil Armstrong 	.ctl = sm8550_ctl,
2787efcd0107SNeil Armstrong 	.sspp_count = ARRAY_SIZE(sm8550_sspp),
2788efcd0107SNeil Armstrong 	.sspp = sm8550_sspp,
2789efcd0107SNeil Armstrong 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2790efcd0107SNeil Armstrong 	.mixer = sm8150_lm,
2791efcd0107SNeil Armstrong 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2792efcd0107SNeil Armstrong 	.dspp = sm8150_dspp,
2793efcd0107SNeil Armstrong 	.pingpong_count = ARRAY_SIZE(sm8550_pp),
2794efcd0107SNeil Armstrong 	.pingpong = sm8550_pp,
2795efcd0107SNeil Armstrong 	.merge_3d_count = ARRAY_SIZE(sm8550_merge_3d),
2796efcd0107SNeil Armstrong 	.merge_3d = sm8550_merge_3d,
2797efcd0107SNeil Armstrong 	.intf_count = ARRAY_SIZE(sm8550_intf),
2798efcd0107SNeil Armstrong 	.intf = sm8550_intf,
2799efcd0107SNeil Armstrong 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2800efcd0107SNeil Armstrong 	.vbif = sdm845_vbif,
2801efcd0107SNeil Armstrong 	.reg_dma_count = 1,
2802efcd0107SNeil Armstrong 	.dma_cfg = &sm8450_regdma,
2803efcd0107SNeil Armstrong 	.perf = &sm8450_perf_data,
2804efcd0107SNeil Armstrong 	.mdss_irqs = IRQ_SM8450_MASK,
2805efcd0107SNeil Armstrong };
2806efcd0107SNeil Armstrong 
2807de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
2808591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
2809591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
2810591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
2811591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
2812591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
2813591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
2814591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
2815fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2816fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
2817591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
2818591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
2819591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
2820591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
2821591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
2822591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
2823591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2824591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
2825477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
2826597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
2827591e34a0SKrishna Manikandan };
2828591e34a0SKrishna Manikandan 
2829de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
28305334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
28315334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
28325334087eSLoic Poulain 	.mdp = qcm2290_mdp,
28335334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
28345334087eSLoic Poulain 	.ctl = qcm2290_ctl,
28355334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
28365334087eSLoic Poulain 	.sspp = qcm2290_sspp,
28375334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
28385334087eSLoic Poulain 	.mixer = qcm2290_lm,
28395334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
28405334087eSLoic Poulain 	.dspp = qcm2290_dspp,
28415334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
28425334087eSLoic Poulain 	.pingpong = qcm2290_pp,
28435334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
28445334087eSLoic Poulain 	.intf = qcm2290_intf,
28455334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
28465334087eSLoic Poulain 	.vbif = sdm845_vbif,
2847477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
28485334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
28495334087eSLoic Poulain };
28505334087eSLoic Poulain 
2851abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
2852de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
2853de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
2854de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
2855de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
2856de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
2857de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
2858de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
2859de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
2860de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
28613581b706SAdam Skladowski 	{ .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg},
2862de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
28630e91bcbbSRobert Foss 	{ .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg},
2864de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
28654a352c2fSBjorn Andersson 	{ .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg},
2866100d7ef6SDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg},
2867efcd0107SNeil Armstrong 	{ .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg},
286825fdd593SJeykumar Sankaran };
286925fdd593SJeykumar Sankaran 
2870de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
287125fdd593SJeykumar Sankaran {
287225fdd593SJeykumar Sankaran 	int i;
287325fdd593SJeykumar Sankaran 
287425fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
2875de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
2876de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
287725fdd593SJeykumar Sankaran 	}
287825fdd593SJeykumar Sankaran 
287925fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
288032084967SDmitry Baryshkov 
288125fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
288225fdd593SJeykumar Sankaran }
288325fdd593SJeykumar Sankaran 
2884