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 
157bdc0c4bSKalyan Thota #define VIG_MASK \
167bdc0c4bSKalyan Thota 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
17b8dab65bSAngeloGioacchino Del Regno 	BIT(DPU_SSPP_CSC_10BIT) | BIT(DPU_SSPP_CDP) |\
1825fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT))
1925fdd593SJeykumar Sankaran 
2094391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \
2194391a14SAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3))
2294391a14SAngeloGioacchino Del Regno 
237bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \
24b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3))
257bdc0c4bSKalyan Thota 
267bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \
27b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4))
287bdc0c4bSKalyan Thota 
29d21fc5dfSDmitry Baryshkov #define VIG_SM8250_MASK \
30095eed89SDmitry Baryshkov 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3LITE))
31d21fc5dfSDmitry Baryshkov 
325334087eSLoic Poulain #define VIG_QCM2290_MASK (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL))
335334087eSLoic Poulain 
3494391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \
3594391a14SAngeloGioacchino Del Regno 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
3694391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
3794391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
3894391a14SAngeloGioacchino Del Regno 
39dabfdd89SVinod Polimera #define VIG_SC7280_MASK \
40dabfdd89SVinod Polimera 	(VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION))
41dabfdd89SVinod Polimera 
4225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \
4325fdd593SJeykumar Sankaran 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\
4425fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
4525fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
4625fdd593SJeykumar Sankaran 
4707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \
4807ca1fc0SSravanthi Kollukuduru 	(DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR))
4907ca1fc0SSravanthi Kollukuduru 
5094391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \
5194391a14SAngeloGioacchino Del Regno 	(DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR))
5294391a14SAngeloGioacchino Del Regno 
532d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \
5425fdd593SJeykumar Sankaran 	(BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER))
5525fdd593SJeykumar Sankaran 
562d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \
572d8a4edbSDmitry Baryshkov 	(BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
582d8a4edbSDmitry Baryshkov 
5900feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \
602d8a4edbSDmitry Baryshkov 	(BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
617bdc0c4bSKalyan Thota 
6225fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER)
6325fdd593SJeykumar Sankaran 
6425fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \
6525fdd593SJeykumar Sankaran 	(PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2))
6625fdd593SJeykumar Sankaran 
67591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \
6844bf8704SKalyan Thota 	(BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE) | BIT(DPU_CTL_VM_CFG))
69591e34a0SKrishna Manikandan 
70e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \
71e92a4ae1SDmitry Baryshkov 	(CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4))
72e92a4ae1SDmitry Baryshkov 
734369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0)
744369c93cSDmitry Baryshkov 
7594391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC)
7694391a14SAngeloGioacchino Del Regno 
774259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC)
78e47616dfSKalyan Thota 
79cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0)
80cace3ac4SJonathan Marek 
81cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE)
82cace3ac4SJonathan Marek 
83591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN)
84591e34a0SKrishna Manikandan 
85597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
86597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
87597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
88597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
89597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
90597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
91597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
92597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_0_INTR) | \
93597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_1_INTR))
94597762d5SDmitry Baryshkov 
95597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
96597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
97597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
98597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
99597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR))
100597762d5SDmitry Baryshkov 
101597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
102597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
103597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
104597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
105597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
106597762d5SDmitry Baryshkov 			 BIT(MDP_INTF5_7xxx_INTR))
107597762d5SDmitry Baryshkov 
108597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
109597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
110597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
111597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
112597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
113597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
114597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
115597762d5SDmitry Baryshkov 			 BIT(MDP_INTF4_INTR))
116597762d5SDmitry Baryshkov 
1170e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1180e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_INTR2) | \
1190e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1200e91bcbbSRobert Foss 			 BIT(MDP_INTF0_7xxx_INTR) | \
1210e91bcbbSRobert Foss 			 BIT(MDP_INTF1_7xxx_INTR) | \
1220e91bcbbSRobert Foss 			 BIT(MDP_INTF2_7xxx_INTR) | \
1237eb75dbdSRobert Foss 			 BIT(MDP_INTF3_7xxx_INTR))
1240e91bcbbSRobert Foss 
125f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
126f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_INTR2) | \
127f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_HIST_INTR) | \
128f3af2d6eSRob Clark 			  BIT(MDP_INTF0_INTR) | \
129f3af2d6eSRob Clark 			  BIT(MDP_INTF1_INTR) | \
130f3af2d6eSRob Clark 			  BIT(MDP_INTF2_INTR) | \
131f3af2d6eSRob Clark 			  BIT(MDP_INTF3_INTR) | \
132f3af2d6eSRob Clark 			  BIT(MDP_INTF4_INTR) | \
133f3af2d6eSRob Clark 			  BIT(MDP_INTF5_INTR) | \
134f3af2d6eSRob Clark 			  BIT(MDP_AD4_0_INTR) | \
135f3af2d6eSRob Clark 			  BIT(MDP_AD4_1_INTR))
136597762d5SDmitry Baryshkov 
1374a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1384a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_INTR2) | \
1394a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1404a352c2fSBjorn Andersson 			   BIT(MDP_INTF0_7xxx_INTR) | \
1414a352c2fSBjorn Andersson 			   BIT(MDP_INTF1_7xxx_INTR) | \
1424a352c2fSBjorn Andersson 			   BIT(MDP_INTF2_7xxx_INTR) | \
1434a352c2fSBjorn Andersson 			   BIT(MDP_INTF3_7xxx_INTR) | \
1444a352c2fSBjorn Andersson 			   BIT(MDP_INTF4_7xxx_INTR) | \
1454a352c2fSBjorn Andersson 			   BIT(MDP_INTF5_7xxx_INTR) | \
1464a352c2fSBjorn Andersson 			   BIT(MDP_INTF6_7xxx_INTR) | \
1474a352c2fSBjorn Andersson 			   BIT(MDP_INTF7_7xxx_INTR) | \
1484a352c2fSBjorn Andersson 			   BIT(MDP_INTF8_7xxx_INTR))
1494a352c2fSBjorn Andersson 
150100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
151100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
152100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
153100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
154100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
155100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF2_7xxx_INTR) | \
156100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF3_7xxx_INTR))
157100d7ef6SDmitry Baryshkov 
15853324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \
15953324b99SAbhinav Kumar 			 BIT(DPU_WB_UBWC) | \
16053324b99SAbhinav Kumar 			 BIT(DPU_WB_YUV_CONFIG) | \
16153324b99SAbhinav Kumar 			 BIT(DPU_WB_PIPE_ALPHA) | \
16253324b99SAbhinav Kumar 			 BIT(DPU_WB_XY_ROI_OFFSET) | \
16353324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS) | \
16453324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS_8LVL) | \
16553324b99SAbhinav Kumar 			 BIT(DPU_WB_CDP) | \
16653324b99SAbhinav Kumar 			 BIT(DPU_WB_INPUT_CTRL))
16753324b99SAbhinav Kumar 
16825fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE		(50 * 1024)
16925fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH		2048
17025fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH	2560
17125fdd593SJeykumar Sankaran 
17225fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION	4
17325fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION	4
17425fdd593SJeykumar Sankaran 
17525fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO	20
17625fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO	4
17725fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE	1
17825fdd593SJeykumar Sankaran 
17925fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y)
18025fdd593SJeykumar Sankaran 
18109c7e370SLee Jones static const uint32_t plane_formats[] = {
18209c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
18309c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
18409c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
18509c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
18609c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
18709c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
18809c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
18909c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
190da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
19109c7e370SLee Jones 	DRM_FORMAT_RGB888,
19209c7e370SLee Jones 	DRM_FORMAT_BGR888,
19309c7e370SLee Jones 	DRM_FORMAT_RGB565,
19409c7e370SLee Jones 	DRM_FORMAT_BGR565,
19509c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
19609c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
19709c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
19809c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
19909c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
20009c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
20109c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
20209c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
20309c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
20409c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
20509c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
20609c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
20709c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
20809c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
20909c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
21009c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
21109c7e370SLee Jones };
21209c7e370SLee Jones 
21309c7e370SLee Jones static const uint32_t plane_formats_yuv[] = {
21409c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
21509c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
21609c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
21709c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
21809c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
219da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
22009c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
22109c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
22209c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
22309c7e370SLee Jones 	DRM_FORMAT_RGB888,
22409c7e370SLee Jones 	DRM_FORMAT_BGR888,
22509c7e370SLee Jones 	DRM_FORMAT_RGB565,
22609c7e370SLee Jones 	DRM_FORMAT_BGR565,
22709c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
22809c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
22909c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
23009c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
23109c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
23209c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
23309c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
23409c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
23509c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
23609c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
23709c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
23809c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
23909c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
24009c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
24109c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
24209c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
24309c7e370SLee Jones 
244f07c9946SJessica Zhang 	DRM_FORMAT_P010,
24509c7e370SLee Jones 	DRM_FORMAT_NV12,
24609c7e370SLee Jones 	DRM_FORMAT_NV21,
24709c7e370SLee Jones 	DRM_FORMAT_NV16,
24809c7e370SLee Jones 	DRM_FORMAT_NV61,
24909c7e370SLee Jones 	DRM_FORMAT_VYUY,
25009c7e370SLee Jones 	DRM_FORMAT_UYVY,
25109c7e370SLee Jones 	DRM_FORMAT_YUYV,
25209c7e370SLee Jones 	DRM_FORMAT_YVYU,
25309c7e370SLee Jones 	DRM_FORMAT_YUV420,
25409c7e370SLee Jones 	DRM_FORMAT_YVU420,
25509c7e370SLee Jones };
25609c7e370SLee Jones 
257dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = {
258dabfdd89SVinod Polimera 	DRM_FORMAT_NV12,
259dabfdd89SVinod Polimera 	/* TODO add formats after validation */
260dabfdd89SVinod Polimera };
261dabfdd89SVinod Polimera 
26253324b99SAbhinav Kumar static const uint32_t wb2_formats[] = {
26353324b99SAbhinav Kumar 	DRM_FORMAT_RGB565,
26453324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
26553324b99SAbhinav Kumar 	DRM_FORMAT_RGB888,
26653324b99SAbhinav Kumar 	DRM_FORMAT_ARGB8888,
26753324b99SAbhinav Kumar 	DRM_FORMAT_RGBA8888,
26853324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
26953324b99SAbhinav Kumar 	DRM_FORMAT_XRGB8888,
27053324b99SAbhinav Kumar 	DRM_FORMAT_RGBX8888,
27153324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
27253324b99SAbhinav Kumar 	DRM_FORMAT_ARGB1555,
27353324b99SAbhinav Kumar 	DRM_FORMAT_RGBA5551,
27453324b99SAbhinav Kumar 	DRM_FORMAT_XRGB1555,
27553324b99SAbhinav Kumar 	DRM_FORMAT_RGBX5551,
27653324b99SAbhinav Kumar 	DRM_FORMAT_ARGB4444,
27753324b99SAbhinav Kumar 	DRM_FORMAT_RGBA4444,
27853324b99SAbhinav Kumar 	DRM_FORMAT_RGBX4444,
27953324b99SAbhinav Kumar 	DRM_FORMAT_XRGB4444,
28053324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
28153324b99SAbhinav Kumar 	DRM_FORMAT_BGR888,
28253324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
28353324b99SAbhinav Kumar 	DRM_FORMAT_BGRA8888,
28453324b99SAbhinav Kumar 	DRM_FORMAT_BGRX8888,
28553324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
28653324b99SAbhinav Kumar 	DRM_FORMAT_ABGR1555,
28753324b99SAbhinav Kumar 	DRM_FORMAT_BGRA5551,
28853324b99SAbhinav Kumar 	DRM_FORMAT_XBGR1555,
28953324b99SAbhinav Kumar 	DRM_FORMAT_BGRX5551,
29053324b99SAbhinav Kumar 	DRM_FORMAT_ABGR4444,
29153324b99SAbhinav Kumar 	DRM_FORMAT_BGRA4444,
29253324b99SAbhinav Kumar 	DRM_FORMAT_BGRX4444,
29353324b99SAbhinav Kumar 	DRM_FORMAT_XBGR4444,
29453324b99SAbhinav Kumar };
29553324b99SAbhinav Kumar 
29625fdd593SJeykumar Sankaran /*************************************************************
29725fdd593SJeykumar Sankaran  * DPU sub blocks config
29825fdd593SJeykumar Sankaran  *************************************************************/
29925fdd593SJeykumar Sankaran /* DPU top level caps */
30094391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = {
30194391a14SAngeloGioacchino Del Regno 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
30294391a14SAngeloGioacchino Del Regno 	.max_mixer_blendstages = 0x7,
30394391a14SAngeloGioacchino Del Regno 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
30494391a14SAngeloGioacchino Del Regno 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V1,
30594391a14SAngeloGioacchino Del Regno 	.ubwc_version = DPU_HW_UBWC_VER_10,
30694391a14SAngeloGioacchino Del Regno 	.has_src_split = true,
30794391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
30894391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
30994391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
31094391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
31194391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
31294391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
31394391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
31494391a14SAngeloGioacchino Del Regno };
31594391a14SAngeloGioacchino Del Regno 
316c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
317c162352eSKonrad Dybcio 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
318c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
319c162352eSKonrad Dybcio 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
320c162352eSKonrad Dybcio 	.ubwc_version = DPU_HW_UBWC_VER_20,
321c162352eSKonrad Dybcio 	.has_dim_layer = true,
322c162352eSKonrad Dybcio 	.has_idle_pc = true,
323c162352eSKonrad Dybcio 	.max_linewidth = 2160,
324c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
325c162352eSKonrad Dybcio };
326c162352eSKonrad Dybcio 
32725fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
32825fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
32925fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
33025fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
33125fdd593SJeykumar Sankaran 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
33225fdd593SJeykumar Sankaran 	.ubwc_version = DPU_HW_UBWC_VER_20,
33325fdd593SJeykumar Sankaran 	.has_src_split = true,
33425fdd593SJeykumar Sankaran 	.has_dim_layer = true,
33525fdd593SJeykumar Sankaran 	.has_idle_pc = true,
33642a558b7SKalyan Thota 	.has_3d_merge = true,
3377e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3387e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3397e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3407e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
34125fdd593SJeykumar Sankaran };
34225fdd593SJeykumar Sankaran 
3437bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3447bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3457bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3467bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3477bdc0c4bSKalyan Thota 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
3487bdc0c4bSKalyan Thota 	.ubwc_version = DPU_HW_UBWC_VER_20,
3497bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3507bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3517e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3527e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3537bdc0c4bSKalyan Thota };
3547bdc0c4bSKalyan Thota 
3553581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = {
3563581b706SAdam Skladowski 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3573581b706SAdam Skladowski 	.max_mixer_blendstages = 0x4,
3583581b706SAdam Skladowski 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
3593581b706SAdam Skladowski 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
3603581b706SAdam Skladowski 	.ubwc_version = DPU_HW_UBWC_VER_20,
3613581b706SAdam Skladowski 	.has_dim_layer = true,
3623581b706SAdam Skladowski 	.has_idle_pc = true,
3633581b706SAdam Skladowski 	.max_linewidth = 2160,
3643581b706SAdam Skladowski 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3653581b706SAdam Skladowski };
3663581b706SAdam Skladowski 
367386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
368386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
369386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
370386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
371386fced3SJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
372386fced3SJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_30,
373386fced3SJonathan Marek 	.has_src_split = true,
374386fced3SJonathan Marek 	.has_dim_layer = true,
375386fced3SJonathan Marek 	.has_idle_pc = true,
376386fced3SJonathan Marek 	.has_3d_merge = true,
377386fced3SJonathan Marek 	.max_linewidth = 4096,
378386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
379386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
380386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
381386fced3SJonathan Marek };
382386fced3SJonathan Marek 
383f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
384f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
385f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
386f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
387f3af2d6eSRob Clark 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
388f3af2d6eSRob Clark 	.ubwc_version = DPU_HW_UBWC_VER_30,
389f3af2d6eSRob Clark 	.has_src_split = true,
390f3af2d6eSRob Clark 	.has_dim_layer = true,
391f3af2d6eSRob Clark 	.has_idle_pc = true,
392f3af2d6eSRob Clark 	.has_3d_merge = true,
393f3af2d6eSRob Clark 	.max_linewidth = 4096,
394f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
395f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
396f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
397f3af2d6eSRob Clark };
398f3af2d6eSRob Clark 
3994a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = {
4004a352c2fSBjorn Andersson 	.max_mixer_width = 2560,
4014a352c2fSBjorn Andersson 	.max_mixer_blendstages = 11,
4024a352c2fSBjorn Andersson 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4034a352c2fSBjorn Andersson 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4044a352c2fSBjorn Andersson 	.ubwc_version = DPU_HW_UBWC_VER_40,
4054a352c2fSBjorn Andersson 	.has_src_split = true,
4064a352c2fSBjorn Andersson 	.has_dim_layer = true,
4074a352c2fSBjorn Andersson 	.has_idle_pc = true,
4084a352c2fSBjorn Andersson 	.has_3d_merge = true,
4094a352c2fSBjorn Andersson 	.max_linewidth = 5120,
4104a352c2fSBjorn Andersson 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4114a352c2fSBjorn Andersson };
4124a352c2fSBjorn Andersson 
413af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
414af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
415af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
416d21fc5dfSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
417af776a3eSJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
418af776a3eSJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_40,
419af776a3eSJonathan Marek 	.has_src_split = true,
420af776a3eSJonathan Marek 	.has_dim_layer = true,
421af776a3eSJonathan Marek 	.has_idle_pc = true,
422af776a3eSJonathan Marek 	.has_3d_merge = true,
423af776a3eSJonathan Marek 	.max_linewidth = 4096,
424af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
425af776a3eSJonathan Marek };
426af776a3eSJonathan Marek 
4270e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = {
4280e91bcbbSRobert Foss 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
4290e91bcbbSRobert Foss 	.max_mixer_blendstages = 0xb,
4300e91bcbbSRobert Foss 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4310e91bcbbSRobert Foss 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4320e91bcbbSRobert Foss 	.ubwc_version = DPU_HW_UBWC_VER_40,
4330e91bcbbSRobert Foss 	.has_src_split = true,
4340e91bcbbSRobert Foss 	.has_dim_layer = true,
4350e91bcbbSRobert Foss 	.has_idle_pc = true,
4360e91bcbbSRobert Foss 	.has_3d_merge = true,
4370e91bcbbSRobert Foss 	.max_linewidth = 4096,
4380e91bcbbSRobert Foss 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4390e91bcbbSRobert Foss };
4400e91bcbbSRobert Foss 
441100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = {
442100d7ef6SDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
443100d7ef6SDmitry Baryshkov 	.max_mixer_blendstages = 0xb,
444100d7ef6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
445100d7ef6SDmitry Baryshkov 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
446100d7ef6SDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
447100d7ef6SDmitry Baryshkov 	.has_src_split = true,
448100d7ef6SDmitry Baryshkov 	.has_dim_layer = true,
449100d7ef6SDmitry Baryshkov 	.has_idle_pc = true,
450100d7ef6SDmitry Baryshkov 	.has_3d_merge = true,
451100d7ef6SDmitry Baryshkov 	.max_linewidth = 5120,
452100d7ef6SDmitry Baryshkov 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
453100d7ef6SDmitry Baryshkov };
454100d7ef6SDmitry Baryshkov 
455efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = {
456efcd0107SNeil Armstrong 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
457efcd0107SNeil Armstrong 	.max_mixer_blendstages = 0xb,
458efcd0107SNeil Armstrong 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
459efcd0107SNeil Armstrong 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
460efcd0107SNeil Armstrong 	.ubwc_version = DPU_HW_UBWC_VER_40,
461efcd0107SNeil Armstrong 	.has_src_split = true,
462efcd0107SNeil Armstrong 	.has_dim_layer = true,
463efcd0107SNeil Armstrong 	.has_idle_pc = true,
464efcd0107SNeil Armstrong 	.has_3d_merge = true,
465efcd0107SNeil Armstrong 	.max_linewidth = 5120,
466efcd0107SNeil Armstrong 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
467efcd0107SNeil Armstrong };
468efcd0107SNeil Armstrong 
469591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
470591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
471591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
472591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
473591e34a0SKrishna Manikandan 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
474591e34a0SKrishna Manikandan 	.ubwc_version = DPU_HW_UBWC_VER_30,
475591e34a0SKrishna Manikandan 	.has_dim_layer = true,
476591e34a0SKrishna Manikandan 	.has_idle_pc = true,
477591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
478591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
479591e34a0SKrishna Manikandan };
480591e34a0SKrishna Manikandan 
48194391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
48294391a14SAngeloGioacchino Del Regno 	{
48394391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
48494391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
48594391a14SAngeloGioacchino Del Regno 	.features = 0,
48694391a14SAngeloGioacchino Del Regno 	.highest_bank_bit = 0x2,
48794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
48894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
48994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
49094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
49194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
49294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
49394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
49494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
49594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
49694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
49794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
49894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
49994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
50094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
50194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
50294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
50394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
50494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
50594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
50694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
50794391a14SAngeloGioacchino Del Regno 	},
50894391a14SAngeloGioacchino Del Regno };
50994391a14SAngeloGioacchino Del Regno 
510abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
51125fdd593SJeykumar Sankaran 	{
51225fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
51325fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
51403490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
51525fdd593SJeykumar Sankaran 	.highest_bank_bit = 0x2,
51625fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
51725fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
51825fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
51925fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
52025fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
52125fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
52225fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
52325fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
52425fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
52525fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
52625fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
52725fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
52825fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
52925fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
53025fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
53125fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
53225fdd593SJeykumar Sankaran 	},
53325fdd593SJeykumar Sankaran };
53425fdd593SJeykumar Sankaran 
5357bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
5367bdc0c4bSKalyan Thota 	{
5377bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
5387bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
5397bdc0c4bSKalyan Thota 	.features = 0,
5407bdc0c4bSKalyan Thota 	.highest_bank_bit = 0x3,
5417bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5427bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
5437bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5447bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
5457bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
5467b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
5477b149f2bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
5487b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
5497bdc0c4bSKalyan Thota 	},
5507bdc0c4bSKalyan Thota };
5517bdc0c4bSKalyan Thota 
552f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
553f3af2d6eSRob Clark 	{
554f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
555f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
55610a88954SDmitry Baryshkov 	.features = BIT(DPU_MDP_AUDIO_SELECT),
557f3af2d6eSRob Clark 	.highest_bank_bit = 0x3,
558f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
559f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
560f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
561f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
562f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
563f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
564f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
565f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
566f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
567f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
568f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
569f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
570f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
571f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
572f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
573f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
574f3af2d6eSRob Clark 	},
575f3af2d6eSRob Clark };
576f3af2d6eSRob Clark 
5773581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = {
5783581b706SAdam Skladowski 	{
5793581b706SAdam Skladowski 	.name = "top_0", .id = MDP_TOP,
5803581b706SAdam Skladowski 	.base = 0x0, .len = 0x494,
5813581b706SAdam Skladowski 	.features = 0,
5823581b706SAdam Skladowski 	.highest_bank_bit = 0x1,
5833581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5843581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 0},
5853581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5863581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 8},
5873581b706SAdam Skladowski 	},
5883581b706SAdam Skladowski };
5893581b706SAdam Skladowski 
590af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
591af776a3eSJonathan Marek 	{
592af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
593b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
594af776a3eSJonathan Marek 	.features = 0,
595af776a3eSJonathan Marek 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
596af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
597af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
598af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
599af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
600af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
601af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
602af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
603af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
604af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
605af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
606af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
607af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
608af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
609af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
610af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
611af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
612af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
613af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
61453324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
61553324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
616af776a3eSJonathan Marek 	},
617af776a3eSJonathan Marek };
618af776a3eSJonathan Marek 
6190e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = {
6200e91bcbbSRobert Foss 	{
6210e91bcbbSRobert Foss 	.name = "top_0", .id = MDP_TOP,
6220e91bcbbSRobert Foss 	.base = 0x0, .len = 0x494,
6230e91bcbbSRobert Foss 	.features = 0,
6240e91bcbbSRobert Foss 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
6250e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6260e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 0},
6270e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
6280e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 0},
6290e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
6300e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 0},
6310e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
6320e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 0},
6330e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6340e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 8},
6350e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
6360e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 8},
6370e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
6380e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 8},
6390e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
6400e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 8},
6410e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
6420e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 20},
6430e91bcbbSRobert Foss 	},
6440e91bcbbSRobert Foss };
6450e91bcbbSRobert Foss 
646100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = {
647100d7ef6SDmitry Baryshkov 	{
648100d7ef6SDmitry Baryshkov 	.name = "top_0", .id = MDP_TOP,
649100d7ef6SDmitry Baryshkov 	.base = 0x0, .len = 0x494,
650100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
651100d7ef6SDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
652100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
653100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 0},
654100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
655100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 0},
656100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
657100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 0},
658100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
659100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 0},
660100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
661100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 8},
662100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
663100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 8},
664100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
665100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 8},
666100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
667100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 8},
668100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
669100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 20},
670100d7ef6SDmitry Baryshkov 	},
671100d7ef6SDmitry Baryshkov };
672100d7ef6SDmitry Baryshkov 
673591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
674591e34a0SKrishna Manikandan 	{
675591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
676591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
677591e34a0SKrishna Manikandan 	.highest_bank_bit = 0x1,
678591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
679591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
680591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
681591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
682591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
683591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
684591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
685591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
686591e34a0SKrishna Manikandan 	},
687591e34a0SKrishna Manikandan };
688591e34a0SKrishna Manikandan 
6894a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = {
6904a352c2fSBjorn Andersson 	{
6914a352c2fSBjorn Andersson 	.name = "top_0", .id = MDP_TOP,
6924a352c2fSBjorn Andersson 	.base = 0x0, .len = 0x494,
6934a352c2fSBjorn Andersson 	.features = 0,
6944a352c2fSBjorn Andersson 	.highest_bank_bit = 2,
6954a352c2fSBjorn Andersson 	.ubwc_swizzle = 6,
6964a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0},
6974a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0},
6984a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0},
6994a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0},
7004a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8},
7014a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8},
7024a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x2bc, .bit_off = 8},
7034a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x2c4, .bit_off = 8},
7044a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20},
7054a352c2fSBjorn Andersson 	},
7064a352c2fSBjorn Andersson };
7074a352c2fSBjorn Andersson 
708efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = {
709efcd0107SNeil Armstrong 	{
710efcd0107SNeil Armstrong 	.name = "top_0", .id = MDP_TOP,
711efcd0107SNeil Armstrong 	.base = 0, .len = 0x494,
712efcd0107SNeil Armstrong 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
713efcd0107SNeil Armstrong 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
714efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
715efcd0107SNeil Armstrong 			.reg_off = 0x4330, .bit_off = 0},
716efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
717efcd0107SNeil Armstrong 			.reg_off = 0x6330, .bit_off = 0},
718efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
719efcd0107SNeil Armstrong 			.reg_off = 0x8330, .bit_off = 0},
720efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
721efcd0107SNeil Armstrong 			.reg_off = 0xa330, .bit_off = 0},
722efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
723efcd0107SNeil Armstrong 			.reg_off = 0x24330, .bit_off = 0},
724efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
725efcd0107SNeil Armstrong 			.reg_off = 0x26330, .bit_off = 0},
726efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
727efcd0107SNeil Armstrong 			.reg_off = 0x28330, .bit_off = 0},
728efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
729efcd0107SNeil Armstrong 			.reg_off = 0x2a330, .bit_off = 0},
730efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
731efcd0107SNeil Armstrong 			.reg_off = 0x2c330, .bit_off = 0},
732efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
733efcd0107SNeil Armstrong 			.reg_off = 0x2e330, .bit_off = 0},
734efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
735efcd0107SNeil Armstrong 			.reg_off = 0x2bc, .bit_off = 20},
736efcd0107SNeil Armstrong 	},
737efcd0107SNeil Armstrong };
738efcd0107SNeil Armstrong 
7395334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
7405334087eSLoic Poulain 	{
7415334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
7425334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
7435334087eSLoic Poulain 	.features = 0,
7445334087eSLoic Poulain 	.highest_bank_bit = 0x2,
7455334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
7465334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
7475334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
7485334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
7495334087eSLoic Poulain 	},
7505334087eSLoic Poulain };
7515334087eSLoic Poulain 
75225fdd593SJeykumar Sankaran /*************************************************************
75325fdd593SJeykumar Sankaran  * CTL sub blocks config
75425fdd593SJeykumar Sankaran  *************************************************************/
75594391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
75694391a14SAngeloGioacchino Del Regno 	{
75794391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
75894391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
75994391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
76094391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
76194391a14SAngeloGioacchino Del Regno 	},
76294391a14SAngeloGioacchino Del Regno 	{
76394391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
76494391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
76594391a14SAngeloGioacchino Del Regno 	.features = 0,
76694391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
76794391a14SAngeloGioacchino Del Regno 	},
76894391a14SAngeloGioacchino Del Regno 	{
76994391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
77094391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
77194391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
77294391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
77394391a14SAngeloGioacchino Del Regno 	},
77494391a14SAngeloGioacchino Del Regno 	{
77594391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
77694391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
77794391a14SAngeloGioacchino Del Regno 	.features = 0,
77894391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
77994391a14SAngeloGioacchino Del Regno 	},
78094391a14SAngeloGioacchino Del Regno 	{
78194391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
78294391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
78394391a14SAngeloGioacchino Del Regno 	.features = 0,
78494391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
78594391a14SAngeloGioacchino Del Regno 	},
78694391a14SAngeloGioacchino Del Regno };
78794391a14SAngeloGioacchino Del Regno 
788abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
78925fdd593SJeykumar Sankaran 	{
79025fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
79125fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
792667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
793667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
79425fdd593SJeykumar Sankaran 	},
79525fdd593SJeykumar Sankaran 	{
79625fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
79725fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
798667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
799667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
80025fdd593SJeykumar Sankaran 	},
80125fdd593SJeykumar Sankaran 	{
80225fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
80325fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
804667e9985SDmitry Baryshkov 	.features = 0,
805667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
80625fdd593SJeykumar Sankaran 	},
80725fdd593SJeykumar Sankaran 	{
80825fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
80925fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
810667e9985SDmitry Baryshkov 	.features = 0,
811667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
81225fdd593SJeykumar Sankaran 	},
81325fdd593SJeykumar Sankaran 	{
81425fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
81525fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
816667e9985SDmitry Baryshkov 	.features = 0,
817667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
81825fdd593SJeykumar Sankaran 	},
81925fdd593SJeykumar Sankaran };
82025fdd593SJeykumar Sankaran 
8217bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
8227bdc0c4bSKalyan Thota 	{
8237bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
8247bdc0c4bSKalyan Thota 	.base = 0x1000, .len = 0xE4,
825667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
826667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8277bdc0c4bSKalyan Thota 	},
8287bdc0c4bSKalyan Thota 	{
8297bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
8307bdc0c4bSKalyan Thota 	.base = 0x1200, .len = 0xE4,
831667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
832667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8337bdc0c4bSKalyan Thota 	},
8347bdc0c4bSKalyan Thota 	{
8357bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
8367bdc0c4bSKalyan Thota 	.base = 0x1400, .len = 0xE4,
837667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
838667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8397bdc0c4bSKalyan Thota 	},
8407bdc0c4bSKalyan Thota };
8417bdc0c4bSKalyan Thota 
8424a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = {
8434a352c2fSBjorn Andersson 	{
8444a352c2fSBjorn Andersson 	.name = "ctl_0", .id = CTL_0,
8454a352c2fSBjorn Andersson 	.base = 0x15000, .len = 0x204,
8464a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8474a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8484a352c2fSBjorn Andersson 	},
8494a352c2fSBjorn Andersson 	{
8504a352c2fSBjorn Andersson 	.name = "ctl_1", .id = CTL_1,
8514a352c2fSBjorn Andersson 	.base = 0x16000, .len = 0x204,
8524a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8534a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8544a352c2fSBjorn Andersson 	},
8554a352c2fSBjorn Andersson 	{
8564a352c2fSBjorn Andersson 	.name = "ctl_2", .id = CTL_2,
8574a352c2fSBjorn Andersson 	.base = 0x17000, .len = 0x204,
8584a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8594a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8604a352c2fSBjorn Andersson 	},
8614a352c2fSBjorn Andersson 	{
8624a352c2fSBjorn Andersson 	.name = "ctl_3", .id = CTL_3,
8634a352c2fSBjorn Andersson 	.base = 0x18000, .len = 0x204,
8644a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8654a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
8664a352c2fSBjorn Andersson 	},
8674a352c2fSBjorn Andersson 	{
8684a352c2fSBjorn Andersson 	.name = "ctl_4", .id = CTL_4,
8694a352c2fSBjorn Andersson 	.base = 0x19000, .len = 0x204,
8704a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8714a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
8724a352c2fSBjorn Andersson 	},
8734a352c2fSBjorn Andersson 	{
8744a352c2fSBjorn Andersson 	.name = "ctl_5", .id = CTL_5,
8754a352c2fSBjorn Andersson 	.base = 0x1a000, .len = 0x204,
8764a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8774a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
8784a352c2fSBjorn Andersson 	},
8794a352c2fSBjorn Andersson };
8804a352c2fSBjorn Andersson 
881386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
882386fced3SJonathan Marek 	{
883386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
884386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
885667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
886667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
887386fced3SJonathan Marek 	},
888386fced3SJonathan Marek 	{
889386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
890386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
891667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
892667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
893386fced3SJonathan Marek 	},
894386fced3SJonathan Marek 	{
895386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
896386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
897667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
898667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
899386fced3SJonathan Marek 	},
900386fced3SJonathan Marek 	{
901386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
902386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
903667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
904667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
905386fced3SJonathan Marek 	},
906386fced3SJonathan Marek 	{
907386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
908386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
909667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
910667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
911386fced3SJonathan Marek 	},
912386fced3SJonathan Marek 	{
913386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
914386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
915667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
916667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
917386fced3SJonathan Marek 	},
918386fced3SJonathan Marek };
919386fced3SJonathan Marek 
9200e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = {
9210e91bcbbSRobert Foss 	{
9220e91bcbbSRobert Foss 	.name = "ctl_0", .id = CTL_0,
9230e91bcbbSRobert Foss 	.base = 0x15000, .len = 0x1e8,
9240e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9250e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
9260e91bcbbSRobert Foss 	},
9270e91bcbbSRobert Foss 	{
9280e91bcbbSRobert Foss 	.name = "ctl_1", .id = CTL_1,
9290e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9300e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9310e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
9320e91bcbbSRobert Foss 	},
9330e91bcbbSRobert Foss 	{
9340e91bcbbSRobert Foss 	.name = "ctl_2", .id = CTL_2,
9350e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9360e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9370e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
9380e91bcbbSRobert Foss 	},
9390e91bcbbSRobert Foss 	{
9400e91bcbbSRobert Foss 	.name = "ctl_3", .id = CTL_3,
9410e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9420e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9430e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
9440e91bcbbSRobert Foss 	},
9450e91bcbbSRobert Foss 	{
9460e91bcbbSRobert Foss 	.name = "ctl_4", .id = CTL_4,
9470e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
9480e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9490e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
9500e91bcbbSRobert Foss 	},
9510e91bcbbSRobert Foss 	{
9520e91bcbbSRobert Foss 	.name = "ctl_5", .id = CTL_5,
9530e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
9540e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9550e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
9560e91bcbbSRobert Foss 	},
9570e91bcbbSRobert Foss };
9580e91bcbbSRobert Foss 
959100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = {
960100d7ef6SDmitry Baryshkov 	{
961100d7ef6SDmitry Baryshkov 	.name = "ctl_0", .id = CTL_0,
962100d7ef6SDmitry Baryshkov 	.base = 0x15000, .len = 0x204,
963100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE),
964100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
965100d7ef6SDmitry Baryshkov 	},
966100d7ef6SDmitry Baryshkov 	{
967100d7ef6SDmitry Baryshkov 	.name = "ctl_1", .id = CTL_1,
9680e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9690e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
970100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
971100d7ef6SDmitry Baryshkov 	},
972100d7ef6SDmitry Baryshkov 	{
973100d7ef6SDmitry Baryshkov 	.name = "ctl_2", .id = CTL_2,
9740e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9750e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
976100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
977100d7ef6SDmitry Baryshkov 	},
978100d7ef6SDmitry Baryshkov 	{
979100d7ef6SDmitry Baryshkov 	.name = "ctl_3", .id = CTL_3,
9800e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9810e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
982100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
983100d7ef6SDmitry Baryshkov 	},
984100d7ef6SDmitry Baryshkov 	{
985100d7ef6SDmitry Baryshkov 	.name = "ctl_4", .id = CTL_4,
9860e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
9870e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
988100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
989100d7ef6SDmitry Baryshkov 	},
990100d7ef6SDmitry Baryshkov 	{
991100d7ef6SDmitry Baryshkov 	.name = "ctl_5", .id = CTL_5,
9920e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
9930e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
994100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
995100d7ef6SDmitry Baryshkov 	},
996100d7ef6SDmitry Baryshkov };
997100d7ef6SDmitry Baryshkov 
998efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = {
999efcd0107SNeil Armstrong 	{
1000efcd0107SNeil Armstrong 	.name = "ctl_0", .id = CTL_0,
1001efcd0107SNeil Armstrong 	.base = 0x15000, .len = 0x290,
1002e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1003efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1004efcd0107SNeil Armstrong 	},
1005efcd0107SNeil Armstrong 	{
1006efcd0107SNeil Armstrong 	.name = "ctl_1", .id = CTL_1,
1007efcd0107SNeil Armstrong 	.base = 0x16000, .len = 0x290,
1008e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1009efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1010efcd0107SNeil Armstrong 	},
1011efcd0107SNeil Armstrong 	{
1012efcd0107SNeil Armstrong 	.name = "ctl_2", .id = CTL_2,
1013efcd0107SNeil Armstrong 	.base = 0x17000, .len = 0x290,
1014e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1015efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1016efcd0107SNeil Armstrong 	},
1017efcd0107SNeil Armstrong 	{
1018efcd0107SNeil Armstrong 	.name = "ctl_3", .id = CTL_3,
1019efcd0107SNeil Armstrong 	.base = 0x18000, .len = 0x290,
1020e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1021efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1022efcd0107SNeil Armstrong 	},
1023efcd0107SNeil Armstrong 	{
1024efcd0107SNeil Armstrong 	.name = "ctl_4", .id = CTL_4,
1025efcd0107SNeil Armstrong 	.base = 0x19000, .len = 0x290,
1026e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1027efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1028efcd0107SNeil Armstrong 	},
1029efcd0107SNeil Armstrong 	{
1030efcd0107SNeil Armstrong 	.name = "ctl_5", .id = CTL_5,
1031efcd0107SNeil Armstrong 	.base = 0x1a000, .len = 0x290,
1032e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1033efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1034efcd0107SNeil Armstrong 	},
1035efcd0107SNeil Armstrong };
1036efcd0107SNeil Armstrong 
1037591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
1038591e34a0SKrishna Manikandan 	{
1039591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
1040591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
1041667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1042667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1043591e34a0SKrishna Manikandan 	},
1044591e34a0SKrishna Manikandan 	{
1045591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
1046591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
1047667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1048667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1049591e34a0SKrishna Manikandan 	},
1050591e34a0SKrishna Manikandan 	{
1051591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
1052591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
1053667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1054667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1055591e34a0SKrishna Manikandan 	},
1056591e34a0SKrishna Manikandan 	{
1057591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
1058591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
1059667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1060667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1061591e34a0SKrishna Manikandan 	},
1062591e34a0SKrishna Manikandan };
1063591e34a0SKrishna Manikandan 
10645334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
10655334087eSLoic Poulain 	{
10665334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
10675334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
10685334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
10695334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
10705334087eSLoic Poulain 	},
10715334087eSLoic Poulain };
10725334087eSLoic Poulain 
107325fdd593SJeykumar Sankaran /*************************************************************
107425fdd593SJeykumar Sankaran  * SSPP sub blocks config
107525fdd593SJeykumar Sankaran  *************************************************************/
107625fdd593SJeykumar Sankaran 
107725fdd593SJeykumar Sankaran /* SSPP common configuration */
1078b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
107925fdd593SJeykumar Sankaran 	{ \
108025fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
108125fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
108225fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
108325fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
108425fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
108525fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1086b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
108725fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
108825fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
108925fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
109025fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
109125fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
1092e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
109325fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1094e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1095dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
1096dabfdd89SVinod Polimera 	}
1097dabfdd89SVinod Polimera 
1098dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
1099dabfdd89SVinod Polimera 	{ \
1100dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
1101dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
1102dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
1103dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
1104dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
1105dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1106dabfdd89SVinod Polimera 		.id = qseed_ver, \
1107dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
1108dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
1109dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
1110dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
1111dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
1112dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
1113dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
1114dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1115dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
111625fdd593SJeykumar Sankaran 	}
111725fdd593SJeykumar Sankaran 
111825fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
111925fdd593SJeykumar Sankaran 	{ \
112025fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
112125fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
112225fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
112325fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
112425fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
112525fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
1126e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
112725fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1128e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
112925fdd593SJeykumar Sankaran 	}
113025fdd593SJeykumar Sankaran 
113194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
113294391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
113394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
113494391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
113594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
113694391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
113794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
113894391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
113994391a14SAngeloGioacchino Del Regno 
1140dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
1141dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
1142dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
1143dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
1144dabfdd89SVinod Polimera };
1145dabfdd89SVinod Polimera 
1146b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
1147b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
1148b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
1149b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
1150b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
1151b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
1152b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
1153b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
115425fdd593SJeykumar Sankaran 
115525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
115625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
115725fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
115825fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
115925fdd593SJeykumar Sankaran 
116007ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \
116107ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
116225fdd593SJeykumar Sankaran 	{ \
116325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
116425fdd593SJeykumar Sankaran 	.base = _base, .len = 0x1c8, \
116507ca1fc0SSravanthi Kollukuduru 	.features = _features, \
116625fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
116725fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
116807ca1fc0SSravanthi Kollukuduru 	.type = _type, \
116925fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
117025fdd593SJeykumar Sankaran 	}
117125fdd593SJeykumar Sankaran 
117294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
117394391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK,
117494391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
117594391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK,
117694391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
117794391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK,
117894391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
117994391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK,
118094391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
118194391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_MSM8998_MASK,
118294391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
118394391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_MSM8998_MASK,
118494391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
118594391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_MSM8998_MASK,
118694391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
118794391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_MSM8998_MASK,
118894391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
118994391a14SAngeloGioacchino Del Regno };
119094391a14SAngeloGioacchino Del Regno 
1191abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
119207ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
119307ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
119407ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
119507ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
119607ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK,
119707ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
119807ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK,
119907ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
120007ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
120107ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
120207ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
120307ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
120407ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
120507ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
120607ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
120707ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
120825fdd593SJeykumar Sankaran };
120925fdd593SJeykumar Sankaran 
1210b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
1211b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
1212b75ab05aSShubhashree Dhar 
1213dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
1214dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
1215dabfdd89SVinod Polimera 
12167bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
12177bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1218b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12197bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12207bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12217b149f2bSKalyan Thota 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
12227b149f2bSKalyan Thota 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
12237bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
12247b149f2bSKalyan Thota 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
12257bdc0c4bSKalyan Thota };
12267bdc0c4bSKalyan Thota 
12273581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 =
12283581b706SAdam Skladowski 				_VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE);
12293581b706SAdam Skladowski 
12303581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = {
12313581b706SAdam Skladowski 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
12323581b706SAdam Skladowski 		sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12333581b706SAdam Skladowski 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12343581b706SAdam Skladowski 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12353581b706SAdam Skladowski };
12363581b706SAdam Skladowski 
1237d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
1238d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1239d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
1240d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1241d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
1242d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1243d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
1244d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1245d21fc5dfSDmitry Baryshkov 
1246d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
1247d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
1248d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1249d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
1250d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1251d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
1252d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1253d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
1254d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1255d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1256d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1257d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1258d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1259d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1260d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1261d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1262d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1263d21fc5dfSDmitry Baryshkov };
1264d21fc5dfSDmitry Baryshkov 
1265100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 =
1266100d7ef6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1267100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 =
1268100d7ef6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1269100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 =
1270100d7ef6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1271100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 =
1272100d7ef6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1273100d7ef6SDmitry Baryshkov 
1274100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = {
1275100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1276100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1277100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1278100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1279100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1280100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1281100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1282100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1283100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1284100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1285100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1286100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1287100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1288100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1289100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1290100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1291100d7ef6SDmitry Baryshkov };
1292100d7ef6SDmitry Baryshkov 
1293efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 =
1294efcd0107SNeil Armstrong 				_VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED3LITE);
1295efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 =
1296efcd0107SNeil Armstrong 				_VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED3LITE);
1297efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 =
1298efcd0107SNeil Armstrong 				_VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED3LITE);
1299efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 =
1300efcd0107SNeil Armstrong 				_VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED3LITE);
1301efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5);
1302efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sd8550_dma_sblk_5 = _DMA_SBLK("13", 6);
1303efcd0107SNeil Armstrong 
1304efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = {
1305efcd0107SNeil Armstrong 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1306efcd0107SNeil Armstrong 		sm8550_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1307efcd0107SNeil Armstrong 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1308efcd0107SNeil Armstrong 		sm8550_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1309efcd0107SNeil Armstrong 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1310efcd0107SNeil Armstrong 		sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1311efcd0107SNeil Armstrong 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1312efcd0107SNeil Armstrong 		sm8550_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1313efcd0107SNeil Armstrong 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1314efcd0107SNeil Armstrong 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1315efcd0107SNeil Armstrong 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1316efcd0107SNeil Armstrong 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1317efcd0107SNeil Armstrong 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_SDM845_MASK,
1318efcd0107SNeil Armstrong 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
1319efcd0107SNeil Armstrong 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_SDM845_MASK,
1320efcd0107SNeil Armstrong 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1321efcd0107SNeil Armstrong 	SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000,  DMA_CURSOR_SDM845_MASK,
1322efcd0107SNeil Armstrong 		sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1323efcd0107SNeil Armstrong 	SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000,  DMA_CURSOR_SDM845_MASK,
1324efcd0107SNeil Armstrong 		sd8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1325efcd0107SNeil Armstrong };
1326efcd0107SNeil Armstrong 
1327591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
1328dabfdd89SVinod Polimera 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK,
1329dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1330591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1331591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1332591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
1333591e34a0SKrishna Manikandan 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1334591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1335591e34a0SKrishna Manikandan 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1336591e34a0SKrishna Manikandan };
1337591e34a0SKrishna Manikandan 
13384a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 =
13394a352c2fSBjorn Andersson 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
13404a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 =
13414a352c2fSBjorn Andersson 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
13424a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 =
13434a352c2fSBjorn Andersson 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
13444a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 =
13454a352c2fSBjorn Andersson 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
13464a352c2fSBjorn Andersson 
13474a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = {
13484a352c2fSBjorn Andersson 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
13494a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13504a352c2fSBjorn Andersson 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
13514a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13524a352c2fSBjorn Andersson 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
13534a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13544a352c2fSBjorn Andersson 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
13554a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13564a352c2fSBjorn Andersson 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK,
13574a352c2fSBjorn Andersson 		 sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13584a352c2fSBjorn Andersson 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK,
13594a352c2fSBjorn Andersson 		 sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13604a352c2fSBjorn Andersson 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK,
13614a352c2fSBjorn Andersson 		 sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
13624a352c2fSBjorn Andersson 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK,
13634a352c2fSBjorn Andersson 		 sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
13644a352c2fSBjorn Andersson };
13655334087eSLoic Poulain 
13665334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
13675334087eSLoic Poulain 	{ \
13685334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
13695334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
13705334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
13715334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
13725334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
13735334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
13745334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
13755334087eSLoic Poulain 	.virt_format_list = plane_formats, \
13765334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
13775334087eSLoic Poulain 	}
13785334087eSLoic Poulain 
13795334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
13805334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
13815334087eSLoic Poulain 
13825334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
13835334087eSLoic Poulain 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK,
13845334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13855334087eSLoic Poulain 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
13865334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13875334087eSLoic Poulain };
13885334087eSLoic Poulain 
138925fdd593SJeykumar Sankaran /*************************************************************
139025fdd593SJeykumar Sankaran  * MIXER sub blocks config
139125fdd593SJeykumar Sankaran  *************************************************************/
13927bdc0c4bSKalyan Thota 
1393e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
139425fdd593SJeykumar Sankaran 	{ \
139525fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
139625fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
13977bdc0c4bSKalyan Thota 	.features = _fmask, \
13987bdc0c4bSKalyan Thota 	.sblk = _sblk, \
139925fdd593SJeykumar Sankaran 	.pingpong = _pp, \
1400e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
1401e47616dfSKalyan Thota 	.dspp = _dspp \
140225fdd593SJeykumar Sankaran 	}
140325fdd593SJeykumar Sankaran 
140494391a14SAngeloGioacchino Del Regno /* MSM8998 */
140594391a14SAngeloGioacchino Del Regno 
140694391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
140794391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
140894391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
140994391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
141094391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
141194391a14SAngeloGioacchino Del Regno 		0x260, 0x290
141294391a14SAngeloGioacchino Del Regno 	},
141394391a14SAngeloGioacchino Del Regno };
141494391a14SAngeloGioacchino Del Regno 
141594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
14162d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
141794391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
14182d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
141994391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
14202d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
142194391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
14222d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
142394391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14242d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
142594391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14262d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
142794391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
142894391a14SAngeloGioacchino Del Regno };
142994391a14SAngeloGioacchino Del Regno 
143094391a14SAngeloGioacchino Del Regno /* SDM845 */
143194391a14SAngeloGioacchino Del Regno 
143294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
143394391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
143494391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
143594391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
143694391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
143794391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
143894391a14SAngeloGioacchino Del Regno 	},
143994391a14SAngeloGioacchino Del Regno };
144094391a14SAngeloGioacchino Del Regno 
1441abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
14427bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1443e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
14447bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1445e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
14467bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1447e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
14487bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
1449e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14507bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
1451e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14527bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1453e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
14547bdc0c4bSKalyan Thota };
14557bdc0c4bSKalyan Thota 
14567bdc0c4bSKalyan Thota /* SC7180 */
14577bdc0c4bSKalyan Thota 
14587bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
14597bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
14607bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
14617bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
14627bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
14637bdc0c4bSKalyan Thota 	},
14647bdc0c4bSKalyan Thota };
14657bdc0c4bSKalyan Thota 
14667bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
146700feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1468e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
146900feff8fSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1470e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
147125fdd593SJeykumar Sankaran };
147225fdd593SJeykumar Sankaran 
14734a352c2fSBjorn Andersson /* SC8280XP */
14744a352c2fSBjorn Andersson 
14754a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = {
14764a352c2fSBjorn Andersson 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
14774a352c2fSBjorn Andersson 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
14784a352c2fSBjorn Andersson 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2),
14794a352c2fSBjorn Andersson 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3),
14804a352c2fSBjorn Andersson 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
14814a352c2fSBjorn Andersson 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
14824a352c2fSBjorn Andersson };
14834a352c2fSBjorn Andersson 
1484386fced3SJonathan Marek /* SM8150 */
1485386fced3SJonathan Marek 
1486386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1487386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
148805ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1489386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
149005ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1491386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1492386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1493386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1494386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1495386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1496386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1497386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1498386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1499386fced3SJonathan Marek };
1500386fced3SJonathan Marek 
1501591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
150200feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1503fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
150400feff8fSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1505591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
150600feff8fSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1507591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1508591e34a0SKrishna Manikandan };
1509591e34a0SKrishna Manikandan 
15105334087eSLoic Poulain /* QCM2290 */
15115334087eSLoic Poulain 
15125334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
15135334087eSLoic Poulain 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
15145334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
15155334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
15165334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
15175334087eSLoic Poulain 	},
15185334087eSLoic Poulain };
15195334087eSLoic Poulain 
15205334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
152100feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK,
15225334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
15235334087eSLoic Poulain };
15245334087eSLoic Poulain 
152525fdd593SJeykumar Sankaran /*************************************************************
1526e47616dfSKalyan Thota  * DSPP sub blocks config
1527e47616dfSKalyan Thota  *************************************************************/
152894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
152994391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
153094391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
153194391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
153294391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
153394391a14SAngeloGioacchino Del Regno };
153494391a14SAngeloGioacchino Del Regno 
15354259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
15364259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
15374259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
15384259ff7aSKalyan Thota };
15394259ff7aSKalyan Thota 
154005ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
154105ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
154205ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
154305ae91d9SDmitry Baryshkov };
154405ae91d9SDmitry Baryshkov 
1545862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1546e47616dfSKalyan Thota 		{\
1547e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1548e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1549862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
155005ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1551e47616dfSKalyan Thota 		}
1552e47616dfSKalyan Thota 
155394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
155494391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
155594391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
155694391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
155794391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
155894391a14SAngeloGioacchino Del Regno };
155994391a14SAngeloGioacchino Del Regno 
1560e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1561862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1562862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
156305ae91d9SDmitry Baryshkov };
156405ae91d9SDmitry Baryshkov 
156505ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1566862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1567862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1568862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1569862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1570862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1571862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1572862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1573862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1574e47616dfSKalyan Thota };
1575386fced3SJonathan Marek 
15765334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
15775334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
15785334087eSLoic Poulain 		 &sm8150_dspp_sblk),
15795334087eSLoic Poulain };
15805334087eSLoic Poulain 
1581e47616dfSKalyan Thota /*************************************************************
158225fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
158325fdd593SJeykumar Sankaran  *************************************************************/
158425fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
158525fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
158625fdd593SJeykumar Sankaran 		.version = 0x1},
158725fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
158825fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
158925fdd593SJeykumar Sankaran };
159025fdd593SJeykumar Sankaran 
159125fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
159225fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
159325fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
159425fdd593SJeykumar Sankaran };
159525fdd593SJeykumar Sankaran 
1596591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1597591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1598591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1599591e34a0SKrishna Manikandan };
1600591e34a0SKrishna Manikandan 
1601efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
1602efcd0107SNeil Armstrong 	{\
1603efcd0107SNeil Armstrong 	.name = _name, .id = _id, \
1604efcd0107SNeil Armstrong 	.base = _base, .len = 0, \
1605efcd0107SNeil Armstrong 	.features = BIT(DPU_PINGPONG_DITHER), \
1606efcd0107SNeil Armstrong 	.merge_3d = _merge_3d, \
1607efcd0107SNeil Armstrong 	.sblk = &_sblk, \
1608efcd0107SNeil Armstrong 	.intr_done = _done, \
1609efcd0107SNeil Armstrong 	.intr_rdptr = _rdptr, \
1610efcd0107SNeil Armstrong 	}
1611667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
161225fdd593SJeykumar Sankaran 	{\
161325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
161425fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
161525fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
16164369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1617667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1618667e9985SDmitry Baryshkov 	.intr_done = _done, \
1619667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
162025fdd593SJeykumar Sankaran 	}
1621667e9985SDmitry Baryshkov #define PP_BLK(_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_MASK, \
16264369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1627667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1628667e9985SDmitry Baryshkov 	.intr_done = _done, \
1629667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
163025fdd593SJeykumar Sankaran 	}
163125fdd593SJeykumar Sankaran 
1632abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1633667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1634667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1635667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1636667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1637667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1638667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1639667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1640667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1641667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1642667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1643667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1644667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
164525fdd593SJeykumar Sankaran };
164625fdd593SJeykumar Sankaran 
16477bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = {
1648667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1649667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
16507bdc0c4bSKalyan Thota };
16517bdc0c4bSKalyan Thota 
16524a352c2fSBjorn Andersson static struct dpu_pingpong_cfg sc8280xp_pp[] = {
16534a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16544a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1),
16554a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
16564a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1),
16574a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te,
16584a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1),
16594a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te,
16604a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1),
16614a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te,
16624a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1),
16634a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te,
16644a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1),
16654a352c2fSBjorn Andersson };
16664a352c2fSBjorn Andersson 
1667386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1668667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1669667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1670667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1671667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1672667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1673667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1674667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1675667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1676667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1677667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1678667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1679667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1680667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1681667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1682667e9985SDmitry Baryshkov 			-1),
1683667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
16843431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1685667e9985SDmitry Baryshkov 			-1),
16864369c93cSDmitry Baryshkov };
16874369c93cSDmitry Baryshkov 
16880e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = {
16890e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16900e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
16910e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
16920e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
16930e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
16940e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
16950e91bcbbSRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
16960e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
16970e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
16980e91bcbbSRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
16990e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
17000e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
17010e91bcbbSRobert Foss 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
17020e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
17030e91bcbbSRobert Foss 			-1),
17040e91bcbbSRobert Foss 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
17050e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
17060e91bcbbSRobert Foss 			-1),
17070e91bcbbSRobert Foss };
17080e91bcbbSRobert Foss 
17091a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = {
17101a5b5372SRobert Foss 	PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1),
17111a5b5372SRobert Foss 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
17121a5b5372SRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
17131a5b5372SRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
17141a5b5372SRobert Foss };
17151a5b5372SRobert Foss 
17165334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = {
17175334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
17185334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17195334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17205334087eSLoic Poulain };
17215334087eSLoic Poulain 
1722100d7ef6SDmitry Baryshkov /* FIXME: interrupts */
1723100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = {
1724100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
1725100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1726100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1727100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
1728100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1729100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1730100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
1731100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1732100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1733100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
1734100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1735100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1736100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
1737100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1738100d7ef6SDmitry Baryshkov 			-1),
1739100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
1740100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1741100d7ef6SDmitry Baryshkov 			-1),
1742100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk,
1743100d7ef6SDmitry Baryshkov 			-1,
1744100d7ef6SDmitry Baryshkov 			-1),
1745100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk,
1746100d7ef6SDmitry Baryshkov 			-1,
1747100d7ef6SDmitry Baryshkov 			-1),
1748100d7ef6SDmitry Baryshkov };
1749100d7ef6SDmitry Baryshkov 
1750efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = {
1751efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk,
1752efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1753efcd0107SNeil Armstrong 			-1),
1754efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk,
1755efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1756efcd0107SNeil Armstrong 			-1),
1757efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk,
1758efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1759efcd0107SNeil Armstrong 			-1),
1760efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk,
1761efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1762efcd0107SNeil Armstrong 			-1),
1763efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk,
1764efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1765efcd0107SNeil Armstrong 			-1),
1766efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk,
1767efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1768efcd0107SNeil Armstrong 			-1),
1769efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk,
1770efcd0107SNeil Armstrong 			-1,
1771efcd0107SNeil Armstrong 			-1),
1772efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk,
1773efcd0107SNeil Armstrong 			-1,
1774efcd0107SNeil Armstrong 			-1),
1775efcd0107SNeil Armstrong };
1776efcd0107SNeil Armstrong 
17774369c93cSDmitry Baryshkov /*************************************************************
17784369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
17794369c93cSDmitry Baryshkov  *************************************************************/
17804369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
17814369c93cSDmitry Baryshkov 	{\
17824369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
17834369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
17844369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
17854369c93cSDmitry Baryshkov 	.sblk = NULL \
17864369c93cSDmitry Baryshkov 	}
17874369c93cSDmitry Baryshkov 
17884369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
17894369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
17904369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
17914369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1792386fced3SJonathan Marek };
1793386fced3SJonathan Marek 
17940e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = {
17950e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
17960e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
17970e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
17980e91bcbbSRobert Foss };
17990e91bcbbSRobert Foss 
1800100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = {
1801100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1802100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1803100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1804100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00),
1805100d7ef6SDmitry Baryshkov };
1806100d7ef6SDmitry Baryshkov 
1807efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = {
1808efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1809efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1810efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1811efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700),
1812efcd0107SNeil Armstrong };
1813efcd0107SNeil Armstrong 
18147c5ab05eSVinod Koul /*************************************************************
18157c5ab05eSVinod Koul  * DSC sub blocks config
18167c5ab05eSVinod Koul  *************************************************************/
18179da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \
18187c5ab05eSVinod Koul 	{\
18197c5ab05eSVinod Koul 	.name = _name, .id = _id, \
18207c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
18219da5daa0SMarijn Suijten 	.features = _features, \
18227c5ab05eSVinod Koul 	}
18237c5ab05eSVinod Koul 
18247c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = {
18259da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, 0),
18269da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, 0),
18279da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, 0),
18289da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, 0),
18299da5daa0SMarijn Suijten };
18309da5daa0SMarijn Suijten 
18319da5daa0SMarijn Suijten static struct dpu_dsc_cfg sm8150_dsc[] = {
18329da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)),
18339da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)),
18349da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)),
18359da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)),
18367c5ab05eSVinod Koul };
18377c5ab05eSVinod Koul 
183825fdd593SJeykumar Sankaran /*************************************************************
183925fdd593SJeykumar Sankaran  * INTF sub blocks config
184025fdd593SJeykumar Sankaran  *************************************************************/
1841667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
184225fdd593SJeykumar Sankaran 	{\
184325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
184425fdd593SJeykumar Sankaran 	.base = _base, .len = 0x280, \
1845cace3ac4SJonathan Marek 	.features = _features, \
184625fdd593SJeykumar Sankaran 	.type = _type, \
184725fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1848667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1849667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1850667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
185125fdd593SJeykumar Sankaran 	}
185225fdd593SJeykumar Sankaran 
185394391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
185494391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
185594391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
185694391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
185794391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
185894391a14SAngeloGioacchino Del Regno };
185994391a14SAngeloGioacchino Del Regno 
1860abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
1861667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1862667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1863667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1864667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
186525fdd593SJeykumar Sankaran };
186625fdd593SJeykumar Sankaran 
18677bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
1868bb3de286SBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1869667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18707bdc0c4bSKalyan Thota };
18717bdc0c4bSKalyan Thota 
1872386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
1873667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1874667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1875667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1876667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1877386fced3SJonathan Marek };
1878386fced3SJonathan Marek 
1879591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
1880ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1881667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1882ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1883591e34a0SKrishna Manikandan };
1884591e34a0SKrishna Manikandan 
18850e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = {
18860e91bcbbSRobert Foss 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18870e91bcbbSRobert Foss 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18880e91bcbbSRobert Foss 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18890e91bcbbSRobert Foss 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
18900e91bcbbSRobert Foss };
18910e91bcbbSRobert Foss 
1892f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
1893f3af2d6eSRob Clark 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1894f3af2d6eSRob Clark 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1895f3af2d6eSRob Clark 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1896f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
1897f3af2d6eSRob Clark 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1898f3af2d6eSRob Clark 	INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
1899f3af2d6eSRob Clark 	INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1900f3af2d6eSRob Clark };
1901f3af2d6eSRob Clark 
19024a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */
19034a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = {
19044a352c2fSBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19054a352c2fSBjorn Andersson 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19064a352c2fSBjorn Andersson 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19074a352c2fSBjorn Andersson 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_NONE, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19084a352c2fSBjorn Andersson 	INTF_BLK("intf_4", INTF_4, 0x38000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
19094a352c2fSBjorn Andersson 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
19104a352c2fSBjorn Andersson 	INTF_BLK("intf_6", INTF_6, 0x3a000, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17),
19114a352c2fSBjorn Andersson 	INTF_BLK("intf_7", INTF_7, 0x3b000, INTF_NONE, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19),
19124a352c2fSBjorn Andersson 	INTF_BLK("intf_8", INTF_8, 0x3c000, INTF_NONE, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13),
19134a352c2fSBjorn Andersson };
19144a352c2fSBjorn Andersson 
19155334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
19165334087eSLoic Poulain 	INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0),
19175334087eSLoic Poulain 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19185334087eSLoic Poulain };
19195334087eSLoic Poulain 
1920100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = {
1921100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1922100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1923100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1924100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1925100d7ef6SDmitry Baryshkov };
1926100d7ef6SDmitry Baryshkov 
1927efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = {
1928efcd0107SNeil Armstrong 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1929efcd0107SNeil Armstrong 	/* TODO TE sub-blocks for intf1 & intf2 */
1930efcd0107SNeil Armstrong 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1931efcd0107SNeil Armstrong 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1932efcd0107SNeil Armstrong 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1933efcd0107SNeil Armstrong };
1934efcd0107SNeil Armstrong 
193525fdd593SJeykumar Sankaran /*************************************************************
193653324b99SAbhinav Kumar  * Writeback blocks config
193753324b99SAbhinav Kumar  *************************************************************/
193853324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1939a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
194053324b99SAbhinav Kumar 	{ \
194153324b99SAbhinav Kumar 	.name = _name, .id = _id, \
194253324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
194353324b99SAbhinav Kumar 	.features = _features, \
194453324b99SAbhinav Kumar 	.format_list = wb2_formats, \
194553324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
194653324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
194753324b99SAbhinav Kumar 	.xin_id = __xin_id, \
194853324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
1949a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
195053324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
195153324b99SAbhinav Kumar 	}
195253324b99SAbhinav Kumar 
195353324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
195453324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
1955a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
195653324b99SAbhinav Kumar };
195753324b99SAbhinav Kumar 
195853324b99SAbhinav Kumar /*************************************************************
195925fdd593SJeykumar Sankaran  * VBIF sub blocks config
196025fdd593SJeykumar Sankaran  *************************************************************/
196125fdd593SJeykumar Sankaran /* VBIF QOS remap */
196294391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
196394391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
1964abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
1965abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
196625fdd593SJeykumar Sankaran 
196794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
196894391a14SAngeloGioacchino Del Regno 	{
196994391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
197094391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
197194391a14SAngeloGioacchino Del Regno 	},
197294391a14SAngeloGioacchino Del Regno 	{
197394391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
197494391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
197594391a14SAngeloGioacchino Del Regno 	},
197694391a14SAngeloGioacchino Del Regno 	{
197794391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
197894391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
197994391a14SAngeloGioacchino Del Regno 	},
198094391a14SAngeloGioacchino Del Regno };
198194391a14SAngeloGioacchino Del Regno 
198294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
198394391a14SAngeloGioacchino Del Regno 	{
1984606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
198594391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
198694391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
198794391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
198894391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
198994391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
1990c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
199194391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
199294391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
199394391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
199494391a14SAngeloGioacchino Del Regno 		},
199594391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
199694391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
199794391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
199894391a14SAngeloGioacchino Del Regno 		},
199994391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
200094391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
200194391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
200294391a14SAngeloGioacchino Del Regno 		},
200394391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
200494391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
200594391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
200694391a14SAngeloGioacchino Del Regno 		},
200794391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
200894391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
200994391a14SAngeloGioacchino Del Regno 	},
201094391a14SAngeloGioacchino Del Regno };
201194391a14SAngeloGioacchino Del Regno 
2012abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
201325fdd593SJeykumar Sankaran 	{
2014606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
201525fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
201625fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
201725fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
2018c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
201925fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
202025fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
202125fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
202225fdd593SJeykumar Sankaran 		},
202325fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
202425fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
202525fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
202625fdd593SJeykumar Sankaran 		},
202725fdd593SJeykumar Sankaran 	.memtype_count = 14,
202825fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
202925fdd593SJeykumar Sankaran 	},
203025fdd593SJeykumar Sankaran };
203125fdd593SJeykumar Sankaran 
20324a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = {
20334a352c2fSBjorn Andersson 	.base = 0x0,
20344a352c2fSBjorn Andersson 	.version = 0x00020000,
20354a352c2fSBjorn Andersson 	.trigger_sel_off = 0x119c,
20364a352c2fSBjorn Andersson 	.xin_id = 7,
20374a352c2fSBjorn Andersson 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20384a352c2fSBjorn Andersson };
20394a352c2fSBjorn Andersson 
2040abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
204125fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
204225fdd593SJeykumar Sankaran };
204325fdd593SJeykumar Sankaran 
2044386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
2045386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
2046386fced3SJonathan Marek };
2047386fced3SJonathan Marek 
2048af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
2049af776a3eSJonathan Marek 	.base = 0x0,
2050af776a3eSJonathan Marek 	.version = 0x00010002,
2051af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
2052af776a3eSJonathan Marek 	.xin_id = 7,
2053af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2054af776a3eSJonathan Marek };
2055af776a3eSJonathan Marek 
20560e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = {
20570e91bcbbSRobert Foss 	.base = 0x400,
20580e91bcbbSRobert Foss 	.version = 0x00020000,
20590e91bcbbSRobert Foss 	.trigger_sel_off = 0x119c,
20600e91bcbbSRobert Foss 	.xin_id = 7,
20610e91bcbbSRobert Foss 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20620e91bcbbSRobert Foss };
20630e91bcbbSRobert Foss 
2064100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = {
2065100d7ef6SDmitry Baryshkov 	.base = 0x0,
2066100d7ef6SDmitry Baryshkov 	.version = 0x00020000,
2067100d7ef6SDmitry Baryshkov 	.trigger_sel_off = 0x119c,
2068100d7ef6SDmitry Baryshkov 	.xin_id = 7,
2069100d7ef6SDmitry Baryshkov 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2070100d7ef6SDmitry Baryshkov };
2071100d7ef6SDmitry Baryshkov 
207225fdd593SJeykumar Sankaran /*************************************************************
207325fdd593SJeykumar Sankaran  * PERF data config
207425fdd593SJeykumar Sankaran  *************************************************************/
207525fdd593SJeykumar Sankaran 
207625fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
207794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
207894391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
207994391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
208094391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
208194391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
208294391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
208394391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
208494391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
208594391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
208694391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
208794391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
208894391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
208994391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
209094391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
209194391a14SAngeloGioacchino Del Regno };
209294391a14SAngeloGioacchino Del Regno 
2093abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
209425fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
209525fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
209625fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
209725fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
209825fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
209925fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
210025fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
210125fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
210225fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
210325fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
210425fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
210525fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
210625fdd593SJeykumar Sankaran };
210725fdd593SJeykumar Sankaran 
210894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
210994391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
211094391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
211194391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
211294391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
211394391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
211494391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
211594391a14SAngeloGioacchino Del Regno };
211694391a14SAngeloGioacchino Del Regno 
21177bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
21187bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
21197bdc0c4bSKalyan Thota };
21207bdc0c4bSKalyan Thota 
2121386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
2122386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
2123386fced3SJonathan Marek };
2124386fced3SJonathan Marek 
2125f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
2126f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
2127f3af2d6eSRob Clark };
2128f3af2d6eSRob Clark 
21295334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
21305334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
21315334087eSLoic Poulain };
21325334087eSLoic Poulain 
2133abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
213425fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
213525fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
213625fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
213725fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
213825fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
213925fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
214025fdd593SJeykumar Sankaran };
214125fdd593SJeykumar Sankaran 
21427bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
21437bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
21447bdc0c4bSKalyan Thota };
21457bdc0c4bSKalyan Thota 
2146f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
2147f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
2148f3af2d6eSRob Clark };
2149f3af2d6eSRob Clark 
215094391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
215194391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
215294391a14SAngeloGioacchino Del Regno };
215394391a14SAngeloGioacchino Del Regno 
2154abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
215525fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
215625fdd593SJeykumar Sankaran };
215725fdd593SJeykumar Sankaran 
21587bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
21597bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
21607bdc0c4bSKalyan Thota };
21617bdc0c4bSKalyan Thota 
216294391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
216394391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
216494391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
216594391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
216694391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
216794391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
216894391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
216994391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
217094391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
217194391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
217294391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
217394391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
217494391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
217594391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
217694391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
217794391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
217894391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
217994391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
218094391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
218194391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
218294391a14SAngeloGioacchino Del Regno 		},
218394391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
218494391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
218594391a14SAngeloGioacchino Del Regno 		},
218694391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
218794391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
218894391a14SAngeloGioacchino Del Regno 		},
218994391a14SAngeloGioacchino Del Regno 	},
219094391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
219194391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
219294391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
219394391a14SAngeloGioacchino Del Regno 	},
219494391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
219594391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
219694391a14SAngeloGioacchino Del Regno };
219794391a14SAngeloGioacchino Del Regno 
2198abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
219925fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
220025fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
220125fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
220225fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
220325fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
220425fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
220525fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
220625fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
220725fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
220825fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
220925fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
221025fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
221125fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
221225fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
221325fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22145bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
221525fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
221625fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
221725fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
221825fdd593SJeykumar Sankaran 		},
221925fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
222025fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
222125fdd593SJeykumar Sankaran 		},
222225fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
222325fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
222425fdd593SJeykumar Sankaran 		},
222525fdd593SJeykumar Sankaran 	},
222625fdd593SJeykumar Sankaran 	.cdp_cfg = {
222725fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
222825fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
222925fdd593SJeykumar Sankaran 	},
22304f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
22314f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
223225fdd593SJeykumar Sankaran };
223325fdd593SJeykumar Sankaran 
22347bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
223571dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
223671dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
22377bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
22387bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
2239c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
2240c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
22417bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22425bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22437bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
22447bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22457bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
22467bdc0c4bSKalyan Thota 		},
22477bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22487bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
22497bdc0c4bSKalyan Thota 		},
22507bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22517bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
22527bdc0c4bSKalyan Thota 		},
22537bdc0c4bSKalyan Thota 	},
22547bdc0c4bSKalyan Thota 	.cdp_cfg = {
22557bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
22567bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
22577bdc0c4bSKalyan Thota 	},
2258c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
2259c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
22607bdc0c4bSKalyan Thota };
22617bdc0c4bSKalyan Thota 
22623581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = {
22633581b706SAdam Skladowski 	.max_bw_low = 3100000,
22643581b706SAdam Skladowski 	.max_bw_high = 4000000,
22653581b706SAdam Skladowski 	.min_core_ib = 2400000,
22663581b706SAdam Skladowski 	.min_llcc_ib = 800000,
22673581b706SAdam Skladowski 	.min_dram_ib = 800000,
22683581b706SAdam Skladowski 	.min_prefill_lines = 24,
22693581b706SAdam Skladowski 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22703581b706SAdam Skladowski 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22713581b706SAdam Skladowski 	.qos_lut_tbl = {
22723581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22733581b706SAdam Skladowski 		.entries = sc7180_qos_linear
22743581b706SAdam Skladowski 		},
22753581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22763581b706SAdam Skladowski 		.entries = sc7180_qos_macrotile
22773581b706SAdam Skladowski 		},
22783581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22793581b706SAdam Skladowski 		.entries = sc7180_qos_nrt
22803581b706SAdam Skladowski 		},
22813581b706SAdam Skladowski 		/* TODO: macrotile-qseed is different from macrotile */
22823581b706SAdam Skladowski 	},
22833581b706SAdam Skladowski 	.cdp_cfg = {
22843581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 1},
22853581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 0}
22863581b706SAdam Skladowski 	},
22873581b706SAdam Skladowski 	.clk_inefficiency_factor = 105,
22883581b706SAdam Skladowski 	.bw_inefficiency_factor = 120,
22893581b706SAdam Skladowski };
22903581b706SAdam Skladowski 
2291386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
2292386fced3SJonathan Marek 	.max_bw_low = 12800000,
2293386fced3SJonathan Marek 	.max_bw_high = 12800000,
2294386fced3SJonathan Marek 	.min_core_ib = 2400000,
2295386fced3SJonathan Marek 	.min_llcc_ib = 800000,
2296386fced3SJonathan Marek 	.min_dram_ib = 800000,
22974f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
2298386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22995bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
2300386fced3SJonathan Marek 	.qos_lut_tbl = {
2301386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
2302386fced3SJonathan Marek 		.entries = sm8150_qos_linear
2303386fced3SJonathan Marek 		},
2304386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2305386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
2306386fced3SJonathan Marek 		},
2307386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2308386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
2309386fced3SJonathan Marek 		},
2310386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2311386fced3SJonathan Marek 	},
2312386fced3SJonathan Marek 	.cdp_cfg = {
2313386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2314386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2315386fced3SJonathan Marek 	},
23164f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
23174f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2318386fced3SJonathan Marek };
2319386fced3SJonathan Marek 
2320f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
2321f3af2d6eSRob Clark 	.max_bw_low = 9600000,
2322f3af2d6eSRob Clark 	.max_bw_high = 9600000,
2323f3af2d6eSRob Clark 	.min_core_ib = 2400000,
2324f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
2325f3af2d6eSRob Clark 	.min_dram_ib = 800000,
2326f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
2327f3af2d6eSRob Clark 	.qos_lut_tbl = {
23284a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
23294a352c2fSBjorn Andersson 		.entries = sc7180_qos_linear
23304a352c2fSBjorn Andersson 		},
23314a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23324a352c2fSBjorn Andersson 		.entries = sc7180_qos_macrotile
23334a352c2fSBjorn Andersson 		},
23344a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23354a352c2fSBjorn Andersson 		.entries = sc7180_qos_nrt
23364a352c2fSBjorn Andersson 		},
23374a352c2fSBjorn Andersson 		/* TODO: macrotile-qseed is different from macrotile */
23384a352c2fSBjorn Andersson 	},
23394a352c2fSBjorn Andersson 	.cdp_cfg = {
23404a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 1},
23414a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 0}
23424a352c2fSBjorn Andersson 	},
23434a352c2fSBjorn Andersson 	.clk_inefficiency_factor = 105,
23444a352c2fSBjorn Andersson 	.bw_inefficiency_factor = 120,
23454a352c2fSBjorn Andersson };
23464a352c2fSBjorn Andersson 
23474a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = {
23484a352c2fSBjorn Andersson 	.max_bw_low = 13600000,
23494a352c2fSBjorn Andersson 	.max_bw_high = 18200000,
23504a352c2fSBjorn Andersson 	.min_core_ib = 2500000,
23514a352c2fSBjorn Andersson 	.min_llcc_ib = 0,
23524a352c2fSBjorn Andersson 	.min_dram_ib = 800000,
23534a352c2fSBjorn Andersson 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23544a352c2fSBjorn Andersson 	.qos_lut_tbl = {
2355f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
2356f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
2357f3af2d6eSRob Clark 		},
2358f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
2359f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
2360f3af2d6eSRob Clark 		},
2361f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2362f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
2363f3af2d6eSRob Clark 		},
2364f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
2365f3af2d6eSRob Clark 	},
2366f3af2d6eSRob Clark 	.cdp_cfg = {
2367f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
2368f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
2369f3af2d6eSRob Clark 	},
2370f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
2371f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
2372f3af2d6eSRob Clark };
2373f3af2d6eSRob Clark 
2374af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
2375af776a3eSJonathan Marek 	.max_bw_low = 13700000,
2376af776a3eSJonathan Marek 	.max_bw_high = 16600000,
2377af776a3eSJonathan Marek 	.min_core_ib = 4800000,
2378af776a3eSJonathan Marek 	.min_llcc_ib = 0,
2379af776a3eSJonathan Marek 	.min_dram_ib = 800000,
23804f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
2381af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23825bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
2383af776a3eSJonathan Marek 	.qos_lut_tbl = {
2384af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2385af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
2386af776a3eSJonathan Marek 		},
2387af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2388af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
2389af776a3eSJonathan Marek 		},
2390af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2391af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
2392af776a3eSJonathan Marek 		},
2393af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2394af776a3eSJonathan Marek 	},
2395af776a3eSJonathan Marek 	.cdp_cfg = {
2396af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2397af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2398af776a3eSJonathan Marek 	},
23994f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
24004f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2401af776a3eSJonathan Marek };
2402af776a3eSJonathan Marek 
2403100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = {
2404100d7ef6SDmitry Baryshkov 	.max_bw_low = 13600000,
2405100d7ef6SDmitry Baryshkov 	.max_bw_high = 18200000,
2406100d7ef6SDmitry Baryshkov 	.min_core_ib = 2500000,
2407100d7ef6SDmitry Baryshkov 	.min_llcc_ib = 0,
2408100d7ef6SDmitry Baryshkov 	.min_dram_ib = 800000,
2409100d7ef6SDmitry Baryshkov 	.min_prefill_lines = 35,
2410100d7ef6SDmitry Baryshkov 	/* FIXME: lut tables */
2411100d7ef6SDmitry Baryshkov 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
2412100d7ef6SDmitry Baryshkov 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
2413100d7ef6SDmitry Baryshkov 	.qos_lut_tbl = {
2414100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2415100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_linear
2416100d7ef6SDmitry Baryshkov 		},
2417100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2418100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_macrotile
2419100d7ef6SDmitry Baryshkov 		},
2420100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2421100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_nrt
2422100d7ef6SDmitry Baryshkov 		},
2423100d7ef6SDmitry Baryshkov 		/* TODO: macrotile-qseed is different from macrotile */
2424100d7ef6SDmitry Baryshkov 	},
2425100d7ef6SDmitry Baryshkov 	.cdp_cfg = {
2426100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 1},
2427100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 0}
2428100d7ef6SDmitry Baryshkov 	},
2429100d7ef6SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
2430100d7ef6SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2431100d7ef6SDmitry Baryshkov };
2432100d7ef6SDmitry Baryshkov 
2433591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
2434591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
2435591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
2436591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
2437591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
2438591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
2439591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
2440591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
24415bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
2442591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
2443591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2444591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2445591e34a0SKrishna Manikandan 		},
2446591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2447591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2448591e34a0SKrishna Manikandan 		},
2449591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2450591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
2451591e34a0SKrishna Manikandan 		},
2452591e34a0SKrishna Manikandan 	},
2453591e34a0SKrishna Manikandan 	.cdp_cfg = {
2454591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
2455591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
2456591e34a0SKrishna Manikandan 	},
2457591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
2458591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
2459591e34a0SKrishna Manikandan };
2460591e34a0SKrishna Manikandan 
24610e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = {
24620e91bcbbSRobert Foss 	.max_bw_low = 11800000,
24630e91bcbbSRobert Foss 	.max_bw_high = 15500000,
24640e91bcbbSRobert Foss 	.min_core_ib = 2500000,
24650e91bcbbSRobert Foss 	.min_llcc_ib = 0,
24660e91bcbbSRobert Foss 	.min_dram_ib = 800000,
24670e91bcbbSRobert Foss 	.min_prefill_lines = 40,
24680e91bcbbSRobert Foss 	/* FIXME: lut tables */
24690e91bcbbSRobert Foss 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
24700e91bcbbSRobert Foss 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
24710e91bcbbSRobert Foss 	.qos_lut_tbl = {
24720e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
24730e91bcbbSRobert Foss 		.entries = sc7180_qos_linear
24740e91bcbbSRobert Foss 		},
24750e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
24760e91bcbbSRobert Foss 		.entries = sc7180_qos_macrotile
24770e91bcbbSRobert Foss 		},
24780e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
24790e91bcbbSRobert Foss 		.entries = sc7180_qos_nrt
24800e91bcbbSRobert Foss 		},
24810e91bcbbSRobert Foss 		/* TODO: macrotile-qseed is different from macrotile */
24820e91bcbbSRobert Foss 	},
24830e91bcbbSRobert Foss 	.cdp_cfg = {
24840e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 1},
24850e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 0}
24860e91bcbbSRobert Foss 	},
24870e91bcbbSRobert Foss 	.clk_inefficiency_factor = 105,
24880e91bcbbSRobert Foss 	.bw_inefficiency_factor = 120,
24890e91bcbbSRobert Foss };
24900e91bcbbSRobert Foss 
24915334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
24925334087eSLoic Poulain 	.max_bw_low = 2700000,
24935334087eSLoic Poulain 	.max_bw_high = 2700000,
24945334087eSLoic Poulain 	.min_core_ib = 1300000,
24955334087eSLoic Poulain 	.min_llcc_ib = 0,
24965334087eSLoic Poulain 	.min_dram_ib = 1600000,
24975334087eSLoic Poulain 	.min_prefill_lines = 24,
24985334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
24995334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
25005334087eSLoic Poulain 	.qos_lut_tbl = {
25015334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
25025334087eSLoic Poulain 		.entries = qcm2290_qos_linear
25035334087eSLoic Poulain 		},
25045334087eSLoic Poulain 	},
25055334087eSLoic Poulain 	.cdp_cfg = {
25065334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
25075334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
25085334087eSLoic Poulain 	},
25095334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
25105334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
25115334087eSLoic Poulain };
251225fdd593SJeykumar Sankaran /*************************************************************
2513de7d480fSDmitry Baryshkov  * Hardware catalog
251425fdd593SJeykumar Sankaran  *************************************************************/
251525fdd593SJeykumar Sankaran 
2516de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
251794391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
251894391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
251994391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
252094391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
252194391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
252294391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
252394391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
252494391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
252594391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
25266452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
25276452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
252894391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
252994391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
253094391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
253194391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
253294391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
253394391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
253494391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
2535477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
253694391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
253794391a14SAngeloGioacchino Del Regno };
253894391a14SAngeloGioacchino Del Regno 
2539de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
254025fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
254125fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
254225fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
254325fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
254425fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
254525fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
254625fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
254725fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
254825fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
254925fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
255025fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
25517c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
25527c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
255325fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
255425fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
255525fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
255625fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
255725fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
2558481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2559477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
2560597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
256125fdd593SJeykumar Sankaran };
256225fdd593SJeykumar Sankaran 
2563de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
25647bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
25657bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
25667bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
25677bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
25687bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
25697bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
25707bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
25717bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
25727bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
2573e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2574e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
25757bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
25767bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
25777bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
25787bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
257951e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
258051e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
25817bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
25827bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
25837bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
2584481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2585477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
2586597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
25877bdc0c4bSKalyan Thota };
25887bdc0c4bSKalyan Thota 
25893581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
25903581b706SAdam Skladowski 	.caps = &sm6115_dpu_caps,
25913581b706SAdam Skladowski 	.mdp_count = ARRAY_SIZE(sm6115_mdp),
25923581b706SAdam Skladowski 	.mdp = sm6115_mdp,
25933581b706SAdam Skladowski 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
25943581b706SAdam Skladowski 	.ctl = qcm2290_ctl,
25953581b706SAdam Skladowski 	.sspp_count = ARRAY_SIZE(sm6115_sspp),
25963581b706SAdam Skladowski 	.sspp = sm6115_sspp,
25973581b706SAdam Skladowski 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
25983581b706SAdam Skladowski 	.mixer = qcm2290_lm,
25993581b706SAdam Skladowski 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
26003581b706SAdam Skladowski 	.dspp = qcm2290_dspp,
26013581b706SAdam Skladowski 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
26023581b706SAdam Skladowski 	.pingpong = qcm2290_pp,
26033581b706SAdam Skladowski 	.intf_count = ARRAY_SIZE(qcm2290_intf),
26043581b706SAdam Skladowski 	.intf = qcm2290_intf,
26053581b706SAdam Skladowski 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26063581b706SAdam Skladowski 	.vbif = sdm845_vbif,
26073581b706SAdam Skladowski 	.perf = &sm6115_perf_data,
26083581b706SAdam Skladowski 	.mdss_irqs = IRQ_SC7180_MASK,
26093581b706SAdam Skladowski };
26103581b706SAdam Skladowski 
2611de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
2612386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
2613386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
2614386fced3SJonathan Marek 	.mdp = sdm845_mdp,
2615386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2616386fced3SJonathan Marek 	.ctl = sm8150_ctl,
2617386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2618386fced3SJonathan Marek 	.sspp = sdm845_sspp,
2619386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2620386fced3SJonathan Marek 	.mixer = sm8150_lm,
262105ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
262205ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
26239da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
26249da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2625386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2626386fced3SJonathan Marek 	.pingpong = sm8150_pp,
26274369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
26284369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2629386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2630386fced3SJonathan Marek 	.intf = sm8150_intf,
2631386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2632386fced3SJonathan Marek 	.vbif = sdm845_vbif,
2633386fced3SJonathan Marek 	.reg_dma_count = 1,
2634481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2635477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
2636597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
2637386fced3SJonathan Marek };
2638386fced3SJonathan Marek 
2639de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
2640f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
2641f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
2642f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
2643f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2644f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
2645f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2646f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
2647f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2648f3af2d6eSRob Clark 	.mixer = sm8150_lm,
2649f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2650f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
2651f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
2652f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
2653f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
2654f3af2d6eSRob Clark 	.intf = sc8180x_intf,
2655f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2656f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
2657f3af2d6eSRob Clark 	.reg_dma_count = 1,
2658481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2659477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
2660f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
2661f3af2d6eSRob Clark };
2662f3af2d6eSRob Clark 
26634a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = {
26644a352c2fSBjorn Andersson 	.caps = &sc8280xp_dpu_caps,
26654a352c2fSBjorn Andersson 	.mdp_count = ARRAY_SIZE(sc8280xp_mdp),
26664a352c2fSBjorn Andersson 	.mdp = sc8280xp_mdp,
26674a352c2fSBjorn Andersson 	.ctl_count = ARRAY_SIZE(sc8280xp_ctl),
26684a352c2fSBjorn Andersson 	.ctl = sc8280xp_ctl,
26694a352c2fSBjorn Andersson 	.sspp_count = ARRAY_SIZE(sc8280xp_sspp),
26704a352c2fSBjorn Andersson 	.sspp = sc8280xp_sspp,
26714a352c2fSBjorn Andersson 	.mixer_count = ARRAY_SIZE(sc8280xp_lm),
26724a352c2fSBjorn Andersson 	.mixer = sc8280xp_lm,
26734a352c2fSBjorn Andersson 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
26744a352c2fSBjorn Andersson 	.dspp = sm8150_dspp,
26754a352c2fSBjorn Andersson 	.pingpong_count = ARRAY_SIZE(sc8280xp_pp),
26764a352c2fSBjorn Andersson 	.pingpong = sc8280xp_pp,
26774a352c2fSBjorn Andersson 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
26784a352c2fSBjorn Andersson 	.merge_3d = sm8350_merge_3d,
26794a352c2fSBjorn Andersson 	.intf_count = ARRAY_SIZE(sc8280xp_intf),
26804a352c2fSBjorn Andersson 	.intf = sc8280xp_intf,
26814a352c2fSBjorn Andersson 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26824a352c2fSBjorn Andersson 	.vbif = sdm845_vbif,
2683*83bb1f13SDmitry Baryshkov 	.reg_dma_count = 1,
2684*83bb1f13SDmitry Baryshkov 	.dma_cfg = &sc8280xp_regdma,
26854a352c2fSBjorn Andersson 	.perf = &sc8280xp_perf_data,
26864a352c2fSBjorn Andersson 	.mdss_irqs = IRQ_SC8280XP_MASK,
26874a352c2fSBjorn Andersson };
26884a352c2fSBjorn Andersson 
2689de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
2690af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
2691af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
2692af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
2693af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2694af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
2695d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
2696d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
2697af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2698af776a3eSJonathan Marek 	.mixer = sm8150_lm,
269905ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
270005ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
27019da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
27029da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2703af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2704af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
27054369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
27064369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2707af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2708af776a3eSJonathan Marek 	.intf = sm8150_intf,
2709af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2710af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
271153324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
271253324b99SAbhinav Kumar 	.wb = sm8250_wb,
2713af776a3eSJonathan Marek 	.reg_dma_count = 1,
2714481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
2715477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
2716597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
2717af776a3eSJonathan Marek };
2718af776a3eSJonathan Marek 
27190e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = {
27200e91bcbbSRobert Foss 	.caps = &sm8350_dpu_caps,
27210e91bcbbSRobert Foss 	.mdp_count = ARRAY_SIZE(sm8350_mdp),
27220e91bcbbSRobert Foss 	.mdp = sm8350_mdp,
27230e91bcbbSRobert Foss 	.ctl_count = ARRAY_SIZE(sm8350_ctl),
27240e91bcbbSRobert Foss 	.ctl = sm8350_ctl,
27250e91bcbbSRobert Foss 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
27260e91bcbbSRobert Foss 	.sspp = sm8250_sspp,
27270e91bcbbSRobert Foss 	.mixer_count = ARRAY_SIZE(sm8150_lm),
27280e91bcbbSRobert Foss 	.mixer = sm8150_lm,
27290e91bcbbSRobert Foss 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
27300e91bcbbSRobert Foss 	.dspp = sm8150_dspp,
27310e91bcbbSRobert Foss 	.pingpong_count = ARRAY_SIZE(sm8350_pp),
27320e91bcbbSRobert Foss 	.pingpong = sm8350_pp,
27330e91bcbbSRobert Foss 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
27340e91bcbbSRobert Foss 	.merge_3d = sm8350_merge_3d,
27350e91bcbbSRobert Foss 	.intf_count = ARRAY_SIZE(sm8350_intf),
27360e91bcbbSRobert Foss 	.intf = sm8350_intf,
27370e91bcbbSRobert Foss 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
27380e91bcbbSRobert Foss 	.vbif = sdm845_vbif,
27390e91bcbbSRobert Foss 	.reg_dma_count = 1,
27400e91bcbbSRobert Foss 	.dma_cfg = &sm8250_regdma,
27410e91bcbbSRobert Foss 	.perf = &sm8350_perf_data,
27420e91bcbbSRobert Foss 	.mdss_irqs = IRQ_SM8350_MASK,
27430e91bcbbSRobert Foss };
27440e91bcbbSRobert Foss 
2745100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = {
2746100d7ef6SDmitry Baryshkov 	.caps = &sm8450_dpu_caps,
2747100d7ef6SDmitry Baryshkov 	.mdp_count = ARRAY_SIZE(sm8450_mdp),
2748100d7ef6SDmitry Baryshkov 	.mdp = sm8450_mdp,
2749100d7ef6SDmitry Baryshkov 	.ctl_count = ARRAY_SIZE(sm8450_ctl),
2750100d7ef6SDmitry Baryshkov 	.ctl = sm8450_ctl,
2751100d7ef6SDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8450_sspp),
2752100d7ef6SDmitry Baryshkov 	.sspp = sm8450_sspp,
2753100d7ef6SDmitry Baryshkov 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2754100d7ef6SDmitry Baryshkov 	.mixer = sm8150_lm,
2755100d7ef6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2756100d7ef6SDmitry Baryshkov 	.dspp = sm8150_dspp,
2757100d7ef6SDmitry Baryshkov 	.pingpong_count = ARRAY_SIZE(sm8450_pp),
2758100d7ef6SDmitry Baryshkov 	.pingpong = sm8450_pp,
2759100d7ef6SDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8450_merge_3d),
2760100d7ef6SDmitry Baryshkov 	.merge_3d = sm8450_merge_3d,
2761100d7ef6SDmitry Baryshkov 	.intf_count = ARRAY_SIZE(sm8450_intf),
2762100d7ef6SDmitry Baryshkov 	.intf = sm8450_intf,
2763100d7ef6SDmitry Baryshkov 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2764100d7ef6SDmitry Baryshkov 	.vbif = sdm845_vbif,
2765100d7ef6SDmitry Baryshkov 	.reg_dma_count = 1,
2766100d7ef6SDmitry Baryshkov 	.dma_cfg = &sm8450_regdma,
2767100d7ef6SDmitry Baryshkov 	.perf = &sm8450_perf_data,
2768100d7ef6SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8450_MASK,
2769100d7ef6SDmitry Baryshkov };
2770100d7ef6SDmitry Baryshkov 
2771efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = {
2772efcd0107SNeil Armstrong 	.caps = &sm8550_dpu_caps,
2773efcd0107SNeil Armstrong 	.mdp_count = ARRAY_SIZE(sm8550_mdp),
2774efcd0107SNeil Armstrong 	.mdp = sm8550_mdp,
2775efcd0107SNeil Armstrong 	.ctl_count = ARRAY_SIZE(sm8550_ctl),
2776efcd0107SNeil Armstrong 	.ctl = sm8550_ctl,
2777efcd0107SNeil Armstrong 	.sspp_count = ARRAY_SIZE(sm8550_sspp),
2778efcd0107SNeil Armstrong 	.sspp = sm8550_sspp,
2779efcd0107SNeil Armstrong 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2780efcd0107SNeil Armstrong 	.mixer = sm8150_lm,
2781efcd0107SNeil Armstrong 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2782efcd0107SNeil Armstrong 	.dspp = sm8150_dspp,
2783efcd0107SNeil Armstrong 	.pingpong_count = ARRAY_SIZE(sm8550_pp),
2784efcd0107SNeil Armstrong 	.pingpong = sm8550_pp,
2785efcd0107SNeil Armstrong 	.merge_3d_count = ARRAY_SIZE(sm8550_merge_3d),
2786efcd0107SNeil Armstrong 	.merge_3d = sm8550_merge_3d,
2787efcd0107SNeil Armstrong 	.intf_count = ARRAY_SIZE(sm8550_intf),
2788efcd0107SNeil Armstrong 	.intf = sm8550_intf,
2789efcd0107SNeil Armstrong 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2790efcd0107SNeil Armstrong 	.vbif = sdm845_vbif,
2791efcd0107SNeil Armstrong 	.reg_dma_count = 1,
2792efcd0107SNeil Armstrong 	.dma_cfg = &sm8450_regdma,
2793efcd0107SNeil Armstrong 	.perf = &sm8450_perf_data,
2794efcd0107SNeil Armstrong 	.mdss_irqs = IRQ_SM8450_MASK,
2795efcd0107SNeil Armstrong };
2796efcd0107SNeil Armstrong 
2797de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
2798591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
2799591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
2800591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
2801591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
2802591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
2803591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
2804591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
2805fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2806fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
2807591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
2808591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
2809591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
2810591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
2811591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
2812591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
2813591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2814591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
2815477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
2816597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
2817591e34a0SKrishna Manikandan };
2818591e34a0SKrishna Manikandan 
2819de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
28205334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
28215334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
28225334087eSLoic Poulain 	.mdp = qcm2290_mdp,
28235334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
28245334087eSLoic Poulain 	.ctl = qcm2290_ctl,
28255334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
28265334087eSLoic Poulain 	.sspp = qcm2290_sspp,
28275334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
28285334087eSLoic Poulain 	.mixer = qcm2290_lm,
28295334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
28305334087eSLoic Poulain 	.dspp = qcm2290_dspp,
28315334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
28325334087eSLoic Poulain 	.pingpong = qcm2290_pp,
28335334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
28345334087eSLoic Poulain 	.intf = qcm2290_intf,
28355334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
28365334087eSLoic Poulain 	.vbif = sdm845_vbif,
28375334087eSLoic Poulain 	.reg_dma_count = 1,
2838481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2839477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
28405334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
28415334087eSLoic Poulain };
28425334087eSLoic Poulain 
2843abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
2844de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
2845de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
2846de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
2847de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
2848de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
2849de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
2850de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
2851de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
2852de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
28533581b706SAdam Skladowski 	{ .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg},
2854de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
28550e91bcbbSRobert Foss 	{ .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg},
2856de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
28574a352c2fSBjorn Andersson 	{ .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg},
2858100d7ef6SDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg},
2859efcd0107SNeil Armstrong 	{ .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg},
286025fdd593SJeykumar Sankaran };
286125fdd593SJeykumar Sankaran 
2862de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
286325fdd593SJeykumar Sankaran {
286425fdd593SJeykumar Sankaran 	int i;
286525fdd593SJeykumar Sankaran 
286625fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
2867de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
2868de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
286925fdd593SJeykumar Sankaran 	}
287025fdd593SJeykumar Sankaran 
287125fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
287232084967SDmitry Baryshkov 
287325fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
287425fdd593SJeykumar Sankaran }
287525fdd593SJeykumar Sankaran 
2876