197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
353324b99SAbhinav Kumar  * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved.
425fdd593SJeykumar Sankaran  */
525fdd593SJeykumar Sankaran 
625fdd593SJeykumar Sankaran #define pr_fmt(fmt)	"[drm:%s:%d] " fmt, __func__, __LINE__
725fdd593SJeykumar Sankaran #include <linux/slab.h>
825fdd593SJeykumar Sankaran #include <linux/of_address.h>
925fdd593SJeykumar Sankaran #include <linux/platform_device.h>
1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h"
11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h"
1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h"
1325fdd593SJeykumar Sankaran #include "dpu_kms.h"
1425fdd593SJeykumar Sankaran 
15a2a448b4SDmitry Baryshkov #define VIG_BASE_MASK \
167bdc0c4bSKalyan Thota 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
17a2a448b4SDmitry Baryshkov 	BIT(DPU_SSPP_CDP) |\
1825fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT))
1925fdd593SJeykumar Sankaran 
20a2a448b4SDmitry Baryshkov #define VIG_MASK \
21a2a448b4SDmitry Baryshkov 	(VIG_BASE_MASK | \
22a2a448b4SDmitry Baryshkov 	BIT(DPU_SSPP_CSC_10BIT))
23a2a448b4SDmitry Baryshkov 
2494391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \
2594391a14SAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3))
2694391a14SAngeloGioacchino Del Regno 
277bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \
28b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3))
297bdc0c4bSKalyan Thota 
308b409996SDmitry Baryshkov #define VIG_SDM845_MASK_SDMA \
318b409996SDmitry Baryshkov 	(VIG_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2))
328b409996SDmitry Baryshkov 
337bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \
34b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4))
357bdc0c4bSKalyan Thota 
368b409996SDmitry Baryshkov #define VIG_SC7180_MASK_SDMA \
378b409996SDmitry Baryshkov 	(VIG_SC7180_MASK | BIT(DPU_SSPP_SMART_DMA_V2))
388b409996SDmitry Baryshkov 
39a2a448b4SDmitry Baryshkov #define VIG_QCM2290_MASK (VIG_BASE_MASK | BIT(DPU_SSPP_QOS_8LVL))
405334087eSLoic Poulain 
4194391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \
4294391a14SAngeloGioacchino Del Regno 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
4394391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
4494391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
4594391a14SAngeloGioacchino Del Regno 
46dabfdd89SVinod Polimera #define VIG_SC7280_MASK \
47dabfdd89SVinod Polimera 	(VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION))
48dabfdd89SVinod Polimera 
498b409996SDmitry Baryshkov #define VIG_SC7280_MASK_SDMA \
508b409996SDmitry Baryshkov 	(VIG_SC7280_MASK | BIT(DPU_SSPP_SMART_DMA_V2))
518b409996SDmitry Baryshkov 
5225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \
5325fdd593SJeykumar Sankaran 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\
5425fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
5525fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
5625fdd593SJeykumar Sankaran 
5707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \
5807ca1fc0SSravanthi Kollukuduru 	(DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR))
5907ca1fc0SSravanthi Kollukuduru 
608b409996SDmitry Baryshkov #define DMA_SDM845_MASK_SDMA \
618b409996SDmitry Baryshkov 	(DMA_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2))
628b409996SDmitry Baryshkov 
638b409996SDmitry Baryshkov #define DMA_CURSOR_SDM845_MASK_SDMA \
648b409996SDmitry Baryshkov 	(DMA_CURSOR_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2))
658b409996SDmitry Baryshkov 
6694391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \
6794391a14SAngeloGioacchino Del Regno 	(DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR))
6894391a14SAngeloGioacchino Del Regno 
692d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \
70a5045b00SDmitry Baryshkov 	(BIT(DPU_MIXER_SOURCESPLIT))
7125fdd593SJeykumar Sankaran 
722d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \
732d8a4edbSDmitry Baryshkov 	(BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
742d8a4edbSDmitry Baryshkov 
7500feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \
762d8a4edbSDmitry Baryshkov 	(BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
777bdc0c4bSKalyan Thota 
7825fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER)
7925fdd593SJeykumar Sankaran 
8025fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \
8125fdd593SJeykumar Sankaran 	(PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2))
8225fdd593SJeykumar Sankaran 
83591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \
8483a58b20SKalyan Thota 	(BIT(DPU_CTL_ACTIVE_CFG) | \
8583a58b20SKalyan Thota 	 BIT(DPU_CTL_FETCH_ACTIVE) | \
8683a58b20SKalyan Thota 	 BIT(DPU_CTL_VM_CFG) | \
8783a58b20SKalyan Thota 	 BIT(DPU_CTL_DSPP_SUB_BLOCK_FLUSH))
88591e34a0SKrishna Manikandan 
89e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \
90e92a4ae1SDmitry Baryshkov 	(CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4))
91e92a4ae1SDmitry Baryshkov 
924369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0)
934369c93cSDmitry Baryshkov 
9494391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC)
9594391a14SAngeloGioacchino Del Regno 
964259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC)
97e47616dfSKalyan Thota 
98cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0)
99cace3ac4SJonathan Marek 
100e3969eadSVinod Polimera #define INTF_SC7180_MASK \
101e3969eadSVinod Polimera 	(BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) | BIT(DPU_INTF_STATUS_SUPPORTED))
102cace3ac4SJonathan Marek 
103591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN)
104591e34a0SKrishna Manikandan 
105597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
106597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
107597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
108597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
109597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
110597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
111597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
112597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_0_INTR) | \
113597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_1_INTR))
114597762d5SDmitry Baryshkov 
115597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
116597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
117597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
118597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
119597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR))
120597762d5SDmitry Baryshkov 
121597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
122597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
123597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
124597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
125597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
126597762d5SDmitry Baryshkov 			 BIT(MDP_INTF5_7xxx_INTR))
127597762d5SDmitry Baryshkov 
128597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
129597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
130597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
131597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
132597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
133597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
134597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
135597762d5SDmitry Baryshkov 			 BIT(MDP_INTF4_INTR))
136597762d5SDmitry Baryshkov 
1370e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1380e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_INTR2) | \
1390e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1400e91bcbbSRobert Foss 			 BIT(MDP_INTF0_7xxx_INTR) | \
1410e91bcbbSRobert Foss 			 BIT(MDP_INTF1_7xxx_INTR) | \
1420e91bcbbSRobert Foss 			 BIT(MDP_INTF2_7xxx_INTR) | \
1437eb75dbdSRobert Foss 			 BIT(MDP_INTF3_7xxx_INTR))
1440e91bcbbSRobert Foss 
145f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
146f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_INTR2) | \
147f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_HIST_INTR) | \
148f3af2d6eSRob Clark 			  BIT(MDP_INTF0_INTR) | \
149f3af2d6eSRob Clark 			  BIT(MDP_INTF1_INTR) | \
150f3af2d6eSRob Clark 			  BIT(MDP_INTF2_INTR) | \
151f3af2d6eSRob Clark 			  BIT(MDP_INTF3_INTR) | \
152f3af2d6eSRob Clark 			  BIT(MDP_INTF4_INTR) | \
153f3af2d6eSRob Clark 			  BIT(MDP_INTF5_INTR) | \
154f3af2d6eSRob Clark 			  BIT(MDP_AD4_0_INTR) | \
155f3af2d6eSRob Clark 			  BIT(MDP_AD4_1_INTR))
156597762d5SDmitry Baryshkov 
1574a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1584a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_INTR2) | \
1594a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1604a352c2fSBjorn Andersson 			   BIT(MDP_INTF0_7xxx_INTR) | \
1614a352c2fSBjorn Andersson 			   BIT(MDP_INTF1_7xxx_INTR) | \
1624a352c2fSBjorn Andersson 			   BIT(MDP_INTF2_7xxx_INTR) | \
1634a352c2fSBjorn Andersson 			   BIT(MDP_INTF3_7xxx_INTR) | \
1644a352c2fSBjorn Andersson 			   BIT(MDP_INTF4_7xxx_INTR) | \
1654a352c2fSBjorn Andersson 			   BIT(MDP_INTF5_7xxx_INTR) | \
1664a352c2fSBjorn Andersson 			   BIT(MDP_INTF6_7xxx_INTR) | \
1674a352c2fSBjorn Andersson 			   BIT(MDP_INTF7_7xxx_INTR) | \
1684a352c2fSBjorn Andersson 			   BIT(MDP_INTF8_7xxx_INTR))
1694a352c2fSBjorn Andersson 
170100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
171100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
172100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
173100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
174100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
175100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF2_7xxx_INTR) | \
176100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF3_7xxx_INTR))
177100d7ef6SDmitry Baryshkov 
17853324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \
17953324b99SAbhinav Kumar 			 BIT(DPU_WB_UBWC) | \
18053324b99SAbhinav Kumar 			 BIT(DPU_WB_YUV_CONFIG) | \
18153324b99SAbhinav Kumar 			 BIT(DPU_WB_PIPE_ALPHA) | \
18253324b99SAbhinav Kumar 			 BIT(DPU_WB_XY_ROI_OFFSET) | \
18353324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS) | \
18453324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS_8LVL) | \
18553324b99SAbhinav Kumar 			 BIT(DPU_WB_CDP) | \
18653324b99SAbhinav Kumar 			 BIT(DPU_WB_INPUT_CTRL))
18753324b99SAbhinav Kumar 
18825fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE		(50 * 1024)
18925fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH		2048
19025fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH	2560
19125fdd593SJeykumar Sankaran 
19225fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION	4
19325fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION	4
19425fdd593SJeykumar Sankaran 
19525fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO	20
19625fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO	4
19725fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE	1
19825fdd593SJeykumar Sankaran 
19925fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y)
20025fdd593SJeykumar Sankaran 
20109c7e370SLee Jones static const uint32_t plane_formats[] = {
20209c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
20309c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
20409c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
20509c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
20609c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
20709c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
20809c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
20909c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
210ffbbed63SLeonard Lausen 	DRM_FORMAT_ARGB2101010,
211da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
21209c7e370SLee Jones 	DRM_FORMAT_RGB888,
21309c7e370SLee Jones 	DRM_FORMAT_BGR888,
21409c7e370SLee Jones 	DRM_FORMAT_RGB565,
21509c7e370SLee Jones 	DRM_FORMAT_BGR565,
21609c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
21709c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
21809c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
21909c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
22009c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
22109c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
22209c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
22309c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
22409c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
22509c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
22609c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
22709c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
22809c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
22909c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
23009c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
23109c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
23209c7e370SLee Jones };
23309c7e370SLee Jones 
23409c7e370SLee Jones static const uint32_t plane_formats_yuv[] = {
23509c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
23609c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
23709c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
23809c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
23909c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
240ffbbed63SLeonard Lausen 	DRM_FORMAT_ARGB2101010,
241da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
24209c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
24309c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
24409c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
24509c7e370SLee Jones 	DRM_FORMAT_RGB888,
24609c7e370SLee Jones 	DRM_FORMAT_BGR888,
24709c7e370SLee Jones 	DRM_FORMAT_RGB565,
24809c7e370SLee Jones 	DRM_FORMAT_BGR565,
24909c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
25009c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
25109c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
25209c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
25309c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
25409c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
25509c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
25609c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
25709c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
25809c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
25909c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
26009c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
26109c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
26209c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
26309c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
26409c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
26509c7e370SLee Jones 
266f07c9946SJessica Zhang 	DRM_FORMAT_P010,
26709c7e370SLee Jones 	DRM_FORMAT_NV12,
26809c7e370SLee Jones 	DRM_FORMAT_NV21,
26909c7e370SLee Jones 	DRM_FORMAT_NV16,
27009c7e370SLee Jones 	DRM_FORMAT_NV61,
27109c7e370SLee Jones 	DRM_FORMAT_VYUY,
27209c7e370SLee Jones 	DRM_FORMAT_UYVY,
27309c7e370SLee Jones 	DRM_FORMAT_YUYV,
27409c7e370SLee Jones 	DRM_FORMAT_YVYU,
27509c7e370SLee Jones 	DRM_FORMAT_YUV420,
27609c7e370SLee Jones 	DRM_FORMAT_YVU420,
27709c7e370SLee Jones };
27809c7e370SLee Jones 
279dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = {
280dabfdd89SVinod Polimera 	DRM_FORMAT_NV12,
281dabfdd89SVinod Polimera 	/* TODO add formats after validation */
282dabfdd89SVinod Polimera };
283dabfdd89SVinod Polimera 
28453324b99SAbhinav Kumar static const uint32_t wb2_formats[] = {
28553324b99SAbhinav Kumar 	DRM_FORMAT_RGB565,
28653324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
28753324b99SAbhinav Kumar 	DRM_FORMAT_RGB888,
28853324b99SAbhinav Kumar 	DRM_FORMAT_ARGB8888,
28953324b99SAbhinav Kumar 	DRM_FORMAT_RGBA8888,
29053324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
29153324b99SAbhinav Kumar 	DRM_FORMAT_XRGB8888,
29253324b99SAbhinav Kumar 	DRM_FORMAT_RGBX8888,
29353324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
29453324b99SAbhinav Kumar 	DRM_FORMAT_ARGB1555,
29553324b99SAbhinav Kumar 	DRM_FORMAT_RGBA5551,
29653324b99SAbhinav Kumar 	DRM_FORMAT_XRGB1555,
29753324b99SAbhinav Kumar 	DRM_FORMAT_RGBX5551,
29853324b99SAbhinav Kumar 	DRM_FORMAT_ARGB4444,
29953324b99SAbhinav Kumar 	DRM_FORMAT_RGBA4444,
30053324b99SAbhinav Kumar 	DRM_FORMAT_RGBX4444,
30153324b99SAbhinav Kumar 	DRM_FORMAT_XRGB4444,
30253324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
30353324b99SAbhinav Kumar 	DRM_FORMAT_BGR888,
30453324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
30553324b99SAbhinav Kumar 	DRM_FORMAT_BGRA8888,
30653324b99SAbhinav Kumar 	DRM_FORMAT_BGRX8888,
30753324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
30853324b99SAbhinav Kumar 	DRM_FORMAT_ABGR1555,
30953324b99SAbhinav Kumar 	DRM_FORMAT_BGRA5551,
31053324b99SAbhinav Kumar 	DRM_FORMAT_XBGR1555,
31153324b99SAbhinav Kumar 	DRM_FORMAT_BGRX5551,
31253324b99SAbhinav Kumar 	DRM_FORMAT_ABGR4444,
31353324b99SAbhinav Kumar 	DRM_FORMAT_BGRA4444,
31453324b99SAbhinav Kumar 	DRM_FORMAT_BGRX4444,
31553324b99SAbhinav Kumar 	DRM_FORMAT_XBGR4444,
31653324b99SAbhinav Kumar };
31753324b99SAbhinav Kumar 
31825fdd593SJeykumar Sankaran /*************************************************************
31925fdd593SJeykumar Sankaran  * DPU sub blocks config
32025fdd593SJeykumar Sankaran  *************************************************************/
32125fdd593SJeykumar Sankaran /* DPU top level caps */
32294391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = {
32394391a14SAngeloGioacchino Del Regno 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
32494391a14SAngeloGioacchino Del Regno 	.max_mixer_blendstages = 0x7,
32594391a14SAngeloGioacchino Del Regno 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
32694391a14SAngeloGioacchino Del Regno 	.ubwc_version = DPU_HW_UBWC_VER_10,
32794391a14SAngeloGioacchino Del Regno 	.has_src_split = true,
32894391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
32994391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
33094391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
33194391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
33294391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
33394391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
33494391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
33594391a14SAngeloGioacchino Del Regno };
33694391a14SAngeloGioacchino Del Regno 
337c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
338da06be8bSDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_LINE_WIDTH,
339c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
340c162352eSKonrad Dybcio 	.has_dim_layer = true,
341c162352eSKonrad Dybcio 	.has_idle_pc = true,
342c162352eSKonrad Dybcio 	.max_linewidth = 2160,
343c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
344c162352eSKonrad Dybcio };
345c162352eSKonrad Dybcio 
34625fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
34725fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
34825fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
34925fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
35025fdd593SJeykumar Sankaran 	.ubwc_version = DPU_HW_UBWC_VER_20,
35125fdd593SJeykumar Sankaran 	.has_src_split = true,
35225fdd593SJeykumar Sankaran 	.has_dim_layer = true,
35325fdd593SJeykumar Sankaran 	.has_idle_pc = true,
35442a558b7SKalyan Thota 	.has_3d_merge = true,
3557e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3567e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3577e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3587e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
35925fdd593SJeykumar Sankaran };
36025fdd593SJeykumar Sankaran 
3617bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3627bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3637bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3647bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3657bdc0c4bSKalyan Thota 	.ubwc_version = DPU_HW_UBWC_VER_20,
3667bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3677bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3687e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3697e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3707bdc0c4bSKalyan Thota };
3717bdc0c4bSKalyan Thota 
3723581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = {
373da06be8bSDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_LINE_WIDTH,
3743581b706SAdam Skladowski 	.max_mixer_blendstages = 0x4,
37538164e99SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3760b5a8e81SDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_10,
3773581b706SAdam Skladowski 	.has_dim_layer = true,
3783581b706SAdam Skladowski 	.has_idle_pc = true,
3793581b706SAdam Skladowski 	.max_linewidth = 2160,
3803581b706SAdam Skladowski 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3813581b706SAdam Skladowski };
3823581b706SAdam Skladowski 
383386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
384386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
385386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
386386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
387386fced3SJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_30,
388386fced3SJonathan Marek 	.has_src_split = true,
389386fced3SJonathan Marek 	.has_dim_layer = true,
390386fced3SJonathan Marek 	.has_idle_pc = true,
391386fced3SJonathan Marek 	.has_3d_merge = true,
392386fced3SJonathan Marek 	.max_linewidth = 4096,
393386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
394386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
395386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
396386fced3SJonathan Marek };
397386fced3SJonathan Marek 
398f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
399f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
400f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
401f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
402f3af2d6eSRob Clark 	.ubwc_version = DPU_HW_UBWC_VER_30,
403f3af2d6eSRob Clark 	.has_src_split = true,
404f3af2d6eSRob Clark 	.has_dim_layer = true,
405f3af2d6eSRob Clark 	.has_idle_pc = true,
406f3af2d6eSRob Clark 	.has_3d_merge = true,
407f3af2d6eSRob Clark 	.max_linewidth = 4096,
408f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
409f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
410f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
411f3af2d6eSRob Clark };
412f3af2d6eSRob Clark 
4134a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = {
4144a352c2fSBjorn Andersson 	.max_mixer_width = 2560,
4154a352c2fSBjorn Andersson 	.max_mixer_blendstages = 11,
416b3587cb6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
4174a352c2fSBjorn Andersson 	.ubwc_version = DPU_HW_UBWC_VER_40,
4184a352c2fSBjorn Andersson 	.has_src_split = true,
4194a352c2fSBjorn Andersson 	.has_dim_layer = true,
4204a352c2fSBjorn Andersson 	.has_idle_pc = true,
4214a352c2fSBjorn Andersson 	.has_3d_merge = true,
4224a352c2fSBjorn Andersson 	.max_linewidth = 5120,
4234a352c2fSBjorn Andersson 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4244a352c2fSBjorn Andersson };
4254a352c2fSBjorn Andersson 
426af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
427af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
428af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
42903c0c3cbSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
430af776a3eSJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_40,
431af776a3eSJonathan Marek 	.has_src_split = true,
432af776a3eSJonathan Marek 	.has_dim_layer = true,
433af776a3eSJonathan Marek 	.has_idle_pc = true,
434af776a3eSJonathan Marek 	.has_3d_merge = true,
435af776a3eSJonathan Marek 	.max_linewidth = 4096,
436af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
437af776a3eSJonathan Marek };
438af776a3eSJonathan Marek 
4390e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = {
4400e91bcbbSRobert Foss 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
4410e91bcbbSRobert Foss 	.max_mixer_blendstages = 0xb,
44203c0c3cbSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
4430e91bcbbSRobert Foss 	.ubwc_version = DPU_HW_UBWC_VER_40,
4440e91bcbbSRobert Foss 	.has_src_split = true,
4450e91bcbbSRobert Foss 	.has_dim_layer = true,
4460e91bcbbSRobert Foss 	.has_idle_pc = true,
4470e91bcbbSRobert Foss 	.has_3d_merge = true,
4480e91bcbbSRobert Foss 	.max_linewidth = 4096,
4490e91bcbbSRobert Foss 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4500e91bcbbSRobert Foss };
4510e91bcbbSRobert Foss 
452100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = {
453100d7ef6SDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
454100d7ef6SDmitry Baryshkov 	.max_mixer_blendstages = 0xb,
455100d7ef6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
456100d7ef6SDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
457100d7ef6SDmitry Baryshkov 	.has_src_split = true,
458100d7ef6SDmitry Baryshkov 	.has_dim_layer = true,
459100d7ef6SDmitry Baryshkov 	.has_idle_pc = true,
460100d7ef6SDmitry Baryshkov 	.has_3d_merge = true,
461100d7ef6SDmitry Baryshkov 	.max_linewidth = 5120,
462100d7ef6SDmitry Baryshkov 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
463100d7ef6SDmitry Baryshkov };
464100d7ef6SDmitry Baryshkov 
465efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = {
466efcd0107SNeil Armstrong 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
467efcd0107SNeil Armstrong 	.max_mixer_blendstages = 0xb,
468d113d267SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
469efcd0107SNeil Armstrong 	.ubwc_version = DPU_HW_UBWC_VER_40,
470efcd0107SNeil Armstrong 	.has_src_split = true,
471efcd0107SNeil Armstrong 	.has_dim_layer = true,
472efcd0107SNeil Armstrong 	.has_idle_pc = true,
473efcd0107SNeil Armstrong 	.has_3d_merge = true,
474efcd0107SNeil Armstrong 	.max_linewidth = 5120,
475efcd0107SNeil Armstrong 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
476efcd0107SNeil Armstrong };
477efcd0107SNeil Armstrong 
478591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
479591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
480591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
481591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
482591e34a0SKrishna Manikandan 	.ubwc_version = DPU_HW_UBWC_VER_30,
483591e34a0SKrishna Manikandan 	.has_dim_layer = true,
484591e34a0SKrishna Manikandan 	.has_idle_pc = true,
485591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
486591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
487591e34a0SKrishna Manikandan };
488591e34a0SKrishna Manikandan 
48994391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
49094391a14SAngeloGioacchino Del Regno 	{
49194391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
49294391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
49394391a14SAngeloGioacchino Del Regno 	.features = 0,
49494391a14SAngeloGioacchino Del Regno 	.highest_bank_bit = 0x2,
49594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
49694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
49794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
49894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
49994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
50094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
50194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
50294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
50394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
50494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
50594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
50694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
50794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
50894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
50994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
51094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
51194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
51294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
51394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
51494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
51594391a14SAngeloGioacchino Del Regno 	},
51694391a14SAngeloGioacchino Del Regno };
51794391a14SAngeloGioacchino Del Regno 
518abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
51925fdd593SJeykumar Sankaran 	{
52025fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
52125fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
52203490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
52325fdd593SJeykumar Sankaran 	.highest_bank_bit = 0x2,
52425fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
52525fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
52625fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
52725fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
52825fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
52925fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
53025fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
53125fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
53225fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
53325fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
53425fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
53525fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
536d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
53725fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
538d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
53925fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
54025fdd593SJeykumar Sankaran 	},
54125fdd593SJeykumar Sankaran };
54225fdd593SJeykumar Sankaran 
5437bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
5447bdc0c4bSKalyan Thota 	{
5457bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
5467bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
5477bdc0c4bSKalyan Thota 	.features = 0,
5487bdc0c4bSKalyan Thota 	.highest_bank_bit = 0x3,
5497bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5507bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
5517bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5527bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
553d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
5547b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
555d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
5567b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
557255f0561SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
558255f0561SDmitry Baryshkov 		.reg_off = 0x3B8, .bit_off = 24},
5597bdc0c4bSKalyan Thota 	},
5607bdc0c4bSKalyan Thota };
5617bdc0c4bSKalyan Thota 
562f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
563f3af2d6eSRob Clark 	{
564f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
565f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
56610a88954SDmitry Baryshkov 	.features = BIT(DPU_MDP_AUDIO_SELECT),
567f3af2d6eSRob Clark 	.highest_bank_bit = 0x3,
568f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
569f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
570f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
571f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
572f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
573f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
574f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
575f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
576f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
577f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
578f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
579f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
580d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
581f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
582d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
583f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
584f3af2d6eSRob Clark 	},
585f3af2d6eSRob Clark };
586f3af2d6eSRob Clark 
5873581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = {
5883581b706SAdam Skladowski 	{
5893581b706SAdam Skladowski 	.name = "top_0", .id = MDP_TOP,
5903581b706SAdam Skladowski 	.base = 0x0, .len = 0x494,
5913581b706SAdam Skladowski 	.features = 0,
5923581b706SAdam Skladowski 	.highest_bank_bit = 0x1,
59331c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x7,
5943581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5953581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 0},
5963581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5973581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 8},
5983581b706SAdam Skladowski 	},
5993581b706SAdam Skladowski };
6003581b706SAdam Skladowski 
601af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
602af776a3eSJonathan Marek 	{
603af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
604b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
605af776a3eSJonathan Marek 	.features = 0,
606af776a3eSJonathan Marek 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
60731c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
608af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
609af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
610af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
611af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
612af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
613af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
614af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
615af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
616af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
617af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
618af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
619af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
620d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
621af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
622d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
623af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
624af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
625af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
62653324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
62753324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
628af776a3eSJonathan Marek 	},
629af776a3eSJonathan Marek };
630af776a3eSJonathan Marek 
6310e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = {
6320e91bcbbSRobert Foss 	{
6330e91bcbbSRobert Foss 	.name = "top_0", .id = MDP_TOP,
6340e91bcbbSRobert Foss 	.base = 0x0, .len = 0x494,
6350e91bcbbSRobert Foss 	.features = 0,
6360e91bcbbSRobert Foss 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
6370e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6380e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 0},
6390e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
6400e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 0},
6410e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
6420e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 0},
6430e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
6440e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 0},
6450e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6460e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 8},
6470e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
6480e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 8},
649d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
6500e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 8},
651d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
6520e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 8},
6530e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
6540e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 20},
6550e91bcbbSRobert Foss 	},
6560e91bcbbSRobert Foss };
6570e91bcbbSRobert Foss 
658100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = {
659100d7ef6SDmitry Baryshkov 	{
660100d7ef6SDmitry Baryshkov 	.name = "top_0", .id = MDP_TOP,
661100d7ef6SDmitry Baryshkov 	.base = 0x0, .len = 0x494,
662100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
663100d7ef6SDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
66431c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
665100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
666100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 0},
667100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
668100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 0},
669100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
670100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 0},
671100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
672100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 0},
673100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
674100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 8},
675100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
676100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 8},
677d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
678100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 8},
679d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
680100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 8},
681100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
682100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 20},
683100d7ef6SDmitry Baryshkov 	},
684100d7ef6SDmitry Baryshkov };
685100d7ef6SDmitry Baryshkov 
686591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
687591e34a0SKrishna Manikandan 	{
688591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
689591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
690591e34a0SKrishna Manikandan 	.highest_bank_bit = 0x1,
69131c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
692591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
693591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
694591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
695591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
696d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
697591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
698d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
699591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
700591e34a0SKrishna Manikandan 	},
701591e34a0SKrishna Manikandan };
702591e34a0SKrishna Manikandan 
7034a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = {
7044a352c2fSBjorn Andersson 	{
7054a352c2fSBjorn Andersson 	.name = "top_0", .id = MDP_TOP,
7064a352c2fSBjorn Andersson 	.base = 0x0, .len = 0x494,
7070df979f4SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
7084a352c2fSBjorn Andersson 	.highest_bank_bit = 2,
7094a352c2fSBjorn Andersson 	.ubwc_swizzle = 6,
7104a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0},
7114a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0},
7124a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0},
7134a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0},
7144a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8},
7154a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8},
716d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8},
717d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 8},
7184a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20},
7194a352c2fSBjorn Andersson 	},
7204a352c2fSBjorn Andersson };
7214a352c2fSBjorn Andersson 
722efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = {
723efcd0107SNeil Armstrong 	{
724efcd0107SNeil Armstrong 	.name = "top_0", .id = MDP_TOP,
725efcd0107SNeil Armstrong 	.base = 0, .len = 0x494,
726efcd0107SNeil Armstrong 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
727efcd0107SNeil Armstrong 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
72831c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
729efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
730efcd0107SNeil Armstrong 			.reg_off = 0x4330, .bit_off = 0},
731efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
732efcd0107SNeil Armstrong 			.reg_off = 0x6330, .bit_off = 0},
733efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
734efcd0107SNeil Armstrong 			.reg_off = 0x8330, .bit_off = 0},
735efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
736efcd0107SNeil Armstrong 			.reg_off = 0xa330, .bit_off = 0},
737efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
738efcd0107SNeil Armstrong 			.reg_off = 0x24330, .bit_off = 0},
739efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
740efcd0107SNeil Armstrong 			.reg_off = 0x26330, .bit_off = 0},
741efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
742efcd0107SNeil Armstrong 			.reg_off = 0x28330, .bit_off = 0},
743efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
744efcd0107SNeil Armstrong 			.reg_off = 0x2a330, .bit_off = 0},
745d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA4] = {
746efcd0107SNeil Armstrong 			.reg_off = 0x2c330, .bit_off = 0},
747d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA5] = {
748efcd0107SNeil Armstrong 			.reg_off = 0x2e330, .bit_off = 0},
749efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
750efcd0107SNeil Armstrong 			.reg_off = 0x2bc, .bit_off = 20},
751efcd0107SNeil Armstrong 	},
752efcd0107SNeil Armstrong };
753efcd0107SNeil Armstrong 
7545334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
7555334087eSLoic Poulain 	{
7565334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
7575334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
7585334087eSLoic Poulain 	.features = 0,
7595334087eSLoic Poulain 	.highest_bank_bit = 0x2,
7605334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
7615334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
7625334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
7635334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
7645334087eSLoic Poulain 	},
7655334087eSLoic Poulain };
7665334087eSLoic Poulain 
76725fdd593SJeykumar Sankaran /*************************************************************
76825fdd593SJeykumar Sankaran  * CTL sub blocks config
76925fdd593SJeykumar Sankaran  *************************************************************/
77094391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
77194391a14SAngeloGioacchino Del Regno 	{
77294391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
77394391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
77494391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
77594391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
77694391a14SAngeloGioacchino Del Regno 	},
77794391a14SAngeloGioacchino Del Regno 	{
77894391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
77994391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
78094391a14SAngeloGioacchino Del Regno 	.features = 0,
78194391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
78294391a14SAngeloGioacchino Del Regno 	},
78394391a14SAngeloGioacchino Del Regno 	{
78494391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
78594391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
78694391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
78794391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
78894391a14SAngeloGioacchino Del Regno 	},
78994391a14SAngeloGioacchino Del Regno 	{
79094391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
79194391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
79294391a14SAngeloGioacchino Del Regno 	.features = 0,
79394391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
79494391a14SAngeloGioacchino Del Regno 	},
79594391a14SAngeloGioacchino Del Regno 	{
79694391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
79794391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
79894391a14SAngeloGioacchino Del Regno 	.features = 0,
79994391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
80094391a14SAngeloGioacchino Del Regno 	},
80194391a14SAngeloGioacchino Del Regno };
80294391a14SAngeloGioacchino Del Regno 
803abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
80425fdd593SJeykumar Sankaran 	{
80525fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
80625fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
807667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
808667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
80925fdd593SJeykumar Sankaran 	},
81025fdd593SJeykumar Sankaran 	{
81125fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
81225fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
813667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
814667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
81525fdd593SJeykumar Sankaran 	},
81625fdd593SJeykumar Sankaran 	{
81725fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
81825fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
819667e9985SDmitry Baryshkov 	.features = 0,
820667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
82125fdd593SJeykumar Sankaran 	},
82225fdd593SJeykumar Sankaran 	{
82325fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
82425fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
825667e9985SDmitry Baryshkov 	.features = 0,
826667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
82725fdd593SJeykumar Sankaran 	},
82825fdd593SJeykumar Sankaran 	{
82925fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
83025fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
831667e9985SDmitry Baryshkov 	.features = 0,
832667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
83325fdd593SJeykumar Sankaran 	},
83425fdd593SJeykumar Sankaran };
83525fdd593SJeykumar Sankaran 
8367bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
8377bdc0c4bSKalyan Thota 	{
8387bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
839ce6bd00aSDmitry Baryshkov 	.base = 0x1000, .len = 0x1dc,
840667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
841667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8427bdc0c4bSKalyan Thota 	},
8437bdc0c4bSKalyan Thota 	{
8447bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
845ce6bd00aSDmitry Baryshkov 	.base = 0x1200, .len = 0x1dc,
846667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
847667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8487bdc0c4bSKalyan Thota 	},
8497bdc0c4bSKalyan Thota 	{
8507bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
851ce6bd00aSDmitry Baryshkov 	.base = 0x1400, .len = 0x1dc,
852667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
853667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8547bdc0c4bSKalyan Thota 	},
8557bdc0c4bSKalyan Thota };
8567bdc0c4bSKalyan Thota 
8574a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = {
8584a352c2fSBjorn Andersson 	{
8594a352c2fSBjorn Andersson 	.name = "ctl_0", .id = CTL_0,
8604a352c2fSBjorn Andersson 	.base = 0x15000, .len = 0x204,
8614a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8624a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8634a352c2fSBjorn Andersson 	},
8644a352c2fSBjorn Andersson 	{
8654a352c2fSBjorn Andersson 	.name = "ctl_1", .id = CTL_1,
8664a352c2fSBjorn Andersson 	.base = 0x16000, .len = 0x204,
8674a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8684a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8694a352c2fSBjorn Andersson 	},
8704a352c2fSBjorn Andersson 	{
8714a352c2fSBjorn Andersson 	.name = "ctl_2", .id = CTL_2,
8724a352c2fSBjorn Andersson 	.base = 0x17000, .len = 0x204,
8734a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8744a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8754a352c2fSBjorn Andersson 	},
8764a352c2fSBjorn Andersson 	{
8774a352c2fSBjorn Andersson 	.name = "ctl_3", .id = CTL_3,
8784a352c2fSBjorn Andersson 	.base = 0x18000, .len = 0x204,
8794a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8804a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
8814a352c2fSBjorn Andersson 	},
8824a352c2fSBjorn Andersson 	{
8834a352c2fSBjorn Andersson 	.name = "ctl_4", .id = CTL_4,
8844a352c2fSBjorn Andersson 	.base = 0x19000, .len = 0x204,
8854a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8864a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
8874a352c2fSBjorn Andersson 	},
8884a352c2fSBjorn Andersson 	{
8894a352c2fSBjorn Andersson 	.name = "ctl_5", .id = CTL_5,
8904a352c2fSBjorn Andersson 	.base = 0x1a000, .len = 0x204,
8914a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8924a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
8934a352c2fSBjorn Andersson 	},
8944a352c2fSBjorn Andersson };
8954a352c2fSBjorn Andersson 
896386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
897386fced3SJonathan Marek 	{
898386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
899386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
900667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
901667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
902386fced3SJonathan Marek 	},
903386fced3SJonathan Marek 	{
904386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
905386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
906667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
907667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
908386fced3SJonathan Marek 	},
909386fced3SJonathan Marek 	{
910386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
911386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
912667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
913667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
914386fced3SJonathan Marek 	},
915386fced3SJonathan Marek 	{
916386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
917386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
918667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
919667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
920386fced3SJonathan Marek 	},
921386fced3SJonathan Marek 	{
922386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
923386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
924667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
925667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
926386fced3SJonathan Marek 	},
927386fced3SJonathan Marek 	{
928386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
929386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
930667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
931667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
932386fced3SJonathan Marek 	},
933386fced3SJonathan Marek };
934386fced3SJonathan Marek 
9350e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = {
9360e91bcbbSRobert Foss 	{
9370e91bcbbSRobert Foss 	.name = "ctl_0", .id = CTL_0,
9380e91bcbbSRobert Foss 	.base = 0x15000, .len = 0x1e8,
9390e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9400e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
9410e91bcbbSRobert Foss 	},
9420e91bcbbSRobert Foss 	{
9430e91bcbbSRobert Foss 	.name = "ctl_1", .id = CTL_1,
9440e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9450e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9460e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
9470e91bcbbSRobert Foss 	},
9480e91bcbbSRobert Foss 	{
9490e91bcbbSRobert Foss 	.name = "ctl_2", .id = CTL_2,
9500e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9510e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9520e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
9530e91bcbbSRobert Foss 	},
9540e91bcbbSRobert Foss 	{
9550e91bcbbSRobert Foss 	.name = "ctl_3", .id = CTL_3,
9560e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9570e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9580e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
9590e91bcbbSRobert Foss 	},
9600e91bcbbSRobert Foss 	{
9610e91bcbbSRobert Foss 	.name = "ctl_4", .id = CTL_4,
9620e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
9630e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9640e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
9650e91bcbbSRobert Foss 	},
9660e91bcbbSRobert Foss 	{
9670e91bcbbSRobert Foss 	.name = "ctl_5", .id = CTL_5,
9680e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
9690e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9700e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
9710e91bcbbSRobert Foss 	},
9720e91bcbbSRobert Foss };
9730e91bcbbSRobert Foss 
974100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = {
975100d7ef6SDmitry Baryshkov 	{
976100d7ef6SDmitry Baryshkov 	.name = "ctl_0", .id = CTL_0,
977100d7ef6SDmitry Baryshkov 	.base = 0x15000, .len = 0x204,
978100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE),
979100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
980100d7ef6SDmitry Baryshkov 	},
981100d7ef6SDmitry Baryshkov 	{
982100d7ef6SDmitry Baryshkov 	.name = "ctl_1", .id = CTL_1,
9836c021d77SDmitry Baryshkov 	.base = 0x16000, .len = 0x204,
9840e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
985100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
986100d7ef6SDmitry Baryshkov 	},
987100d7ef6SDmitry Baryshkov 	{
988100d7ef6SDmitry Baryshkov 	.name = "ctl_2", .id = CTL_2,
9896c021d77SDmitry Baryshkov 	.base = 0x17000, .len = 0x204,
9900e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
991100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
992100d7ef6SDmitry Baryshkov 	},
993100d7ef6SDmitry Baryshkov 	{
994100d7ef6SDmitry Baryshkov 	.name = "ctl_3", .id = CTL_3,
9956c021d77SDmitry Baryshkov 	.base = 0x18000, .len = 0x204,
9960e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
997100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
998100d7ef6SDmitry Baryshkov 	},
999100d7ef6SDmitry Baryshkov 	{
1000100d7ef6SDmitry Baryshkov 	.name = "ctl_4", .id = CTL_4,
10016c021d77SDmitry Baryshkov 	.base = 0x19000, .len = 0x204,
10020e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1003100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1004100d7ef6SDmitry Baryshkov 	},
1005100d7ef6SDmitry Baryshkov 	{
1006100d7ef6SDmitry Baryshkov 	.name = "ctl_5", .id = CTL_5,
10076c021d77SDmitry Baryshkov 	.base = 0x1a000, .len = 0x204,
10080e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1009100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1010100d7ef6SDmitry Baryshkov 	},
1011100d7ef6SDmitry Baryshkov };
1012100d7ef6SDmitry Baryshkov 
1013efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = {
1014efcd0107SNeil Armstrong 	{
1015efcd0107SNeil Armstrong 	.name = "ctl_0", .id = CTL_0,
1016efcd0107SNeil Armstrong 	.base = 0x15000, .len = 0x290,
1017e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1018efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1019efcd0107SNeil Armstrong 	},
1020efcd0107SNeil Armstrong 	{
1021efcd0107SNeil Armstrong 	.name = "ctl_1", .id = CTL_1,
1022efcd0107SNeil Armstrong 	.base = 0x16000, .len = 0x290,
1023e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1024efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1025efcd0107SNeil Armstrong 	},
1026efcd0107SNeil Armstrong 	{
1027efcd0107SNeil Armstrong 	.name = "ctl_2", .id = CTL_2,
1028efcd0107SNeil Armstrong 	.base = 0x17000, .len = 0x290,
1029e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1030efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1031efcd0107SNeil Armstrong 	},
1032efcd0107SNeil Armstrong 	{
1033efcd0107SNeil Armstrong 	.name = "ctl_3", .id = CTL_3,
1034efcd0107SNeil Armstrong 	.base = 0x18000, .len = 0x290,
1035e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1036efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1037efcd0107SNeil Armstrong 	},
1038efcd0107SNeil Armstrong 	{
1039efcd0107SNeil Armstrong 	.name = "ctl_4", .id = CTL_4,
1040efcd0107SNeil Armstrong 	.base = 0x19000, .len = 0x290,
1041e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1042efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1043efcd0107SNeil Armstrong 	},
1044efcd0107SNeil Armstrong 	{
1045efcd0107SNeil Armstrong 	.name = "ctl_5", .id = CTL_5,
1046efcd0107SNeil Armstrong 	.base = 0x1a000, .len = 0x290,
1047e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1048efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1049efcd0107SNeil Armstrong 	},
1050efcd0107SNeil Armstrong };
1051efcd0107SNeil Armstrong 
1052591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
1053591e34a0SKrishna Manikandan 	{
1054591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
1055591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
1056667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1057667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1058591e34a0SKrishna Manikandan 	},
1059591e34a0SKrishna Manikandan 	{
1060591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
1061591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
1062667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1063667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1064591e34a0SKrishna Manikandan 	},
1065591e34a0SKrishna Manikandan 	{
1066591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
1067591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
1068667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1069667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1070591e34a0SKrishna Manikandan 	},
1071591e34a0SKrishna Manikandan 	{
1072591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
1073591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
1074667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1075667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1076591e34a0SKrishna Manikandan 	},
1077591e34a0SKrishna Manikandan };
1078591e34a0SKrishna Manikandan 
10795334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
10805334087eSLoic Poulain 	{
10815334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
10825334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
10835334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
10845334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
10855334087eSLoic Poulain 	},
10865334087eSLoic Poulain };
10875334087eSLoic Poulain 
108825fdd593SJeykumar Sankaran /*************************************************************
108925fdd593SJeykumar Sankaran  * SSPP sub blocks config
109025fdd593SJeykumar Sankaran  *************************************************************/
109125fdd593SJeykumar Sankaran 
109225fdd593SJeykumar Sankaran /* SSPP common configuration */
1093b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
109425fdd593SJeykumar Sankaran 	{ \
109525fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
109625fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
109725fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
109825fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
109925fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
110025fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1101b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
110225fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
110325fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
110425fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
110525fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
110625fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
1107e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
110825fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1109e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1110dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
1111dabfdd89SVinod Polimera 	}
1112dabfdd89SVinod Polimera 
1113dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
1114dabfdd89SVinod Polimera 	{ \
1115dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
1116dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
1117dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
1118dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
1119dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
1120dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1121dabfdd89SVinod Polimera 		.id = qseed_ver, \
1122dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
1123dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
1124dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
1125dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
1126dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
1127dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
1128dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
1129dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1130dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
113125fdd593SJeykumar Sankaran 	}
113225fdd593SJeykumar Sankaran 
113325fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
113425fdd593SJeykumar Sankaran 	{ \
113525fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
113625fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
113725fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
113825fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
113925fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
114025fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
1141e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
114225fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1143e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
114425fdd593SJeykumar Sankaran 	}
114525fdd593SJeykumar Sankaran 
114694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
114794391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
114894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
114994391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
115094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
115194391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
115294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
115394391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
115494391a14SAngeloGioacchino Del Regno 
1155dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
1156dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
1157dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
1158dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
1159dabfdd89SVinod Polimera };
1160dabfdd89SVinod Polimera 
1161b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
1162b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
1163b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
1164b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
1165b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
1166b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
1167b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
1168b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
116925fdd593SJeykumar Sankaran 
117025fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
117125fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
117225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
117325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
117425fdd593SJeykumar Sankaran 
11758f940ddbSKonrad Dybcio #define SSPP_BLK(_name, _id, _base, _len, _features, \
117607ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
117725fdd593SJeykumar Sankaran 	{ \
117825fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
11798f940ddbSKonrad Dybcio 	.base = _base, .len = _len, \
118007ca1fc0SSravanthi Kollukuduru 	.features = _features, \
118125fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
118225fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
118307ca1fc0SSravanthi Kollukuduru 	.type = _type, \
118425fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
118525fdd593SJeykumar Sankaran 	}
118625fdd593SJeykumar Sankaran 
118794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
11888f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1ac, VIG_MSM8998_MASK,
118994391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
11908f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1ac, VIG_MSM8998_MASK,
119194391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
11928f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1ac, VIG_MSM8998_MASK,
119394391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
11948f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1ac, VIG_MSM8998_MASK,
119594391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
11968f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1ac, DMA_MSM8998_MASK,
119794391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
11988f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1ac, DMA_MSM8998_MASK,
119994391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
12008f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1ac, DMA_CURSOR_MSM8998_MASK,
12010abb6a24SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
12028f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1ac, DMA_CURSOR_MSM8998_MASK,
12030abb6a24SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
120494391a14SAngeloGioacchino Del Regno };
120594391a14SAngeloGioacchino Del Regno 
1206abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
12078f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1c8, VIG_SDM845_MASK_SDMA,
120807ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12098f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1c8, VIG_SDM845_MASK_SDMA,
121007ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
12118f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1c8, VIG_SDM845_MASK_SDMA,
121207ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
12138f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1c8, VIG_SDM845_MASK_SDMA,
121407ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
12158f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1c8, DMA_SDM845_MASK_SDMA,
121607ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12178f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1c8, DMA_SDM845_MASK_SDMA,
121807ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
12198f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA,
1220d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
12218f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA,
1222d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
122325fdd593SJeykumar Sankaran };
122425fdd593SJeykumar Sankaran 
1225b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
1226b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
1227b75ab05aSShubhashree Dhar 
1228dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
1229dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
1230dabfdd89SVinod Polimera 
12317bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
12328f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK,
1233b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12348f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK,
12357bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12368f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK,
1237d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
12388f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK,
1239d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
12407bdc0c4bSKalyan Thota };
12417bdc0c4bSKalyan Thota 
12423581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 =
124338164e99SDmitry Baryshkov 				_VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED4);
12443581b706SAdam Skladowski 
12453581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = {
12468f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK,
12473581b706SAdam Skladowski 		sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12488f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK,
12493581b706SAdam Skladowski 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12503581b706SAdam Skladowski };
12513581b706SAdam Skladowski 
1252d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
125303c0c3cbSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4);
1254d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
125503c0c3cbSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4);
1256d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
125703c0c3cbSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4);
1258d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
125903c0c3cbSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4);
1260d21fc5dfSDmitry Baryshkov 
1261d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
12628f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK_SDMA,
1263d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12648f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1f8, VIG_SC7180_MASK_SDMA,
1265d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
12668f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1f8, VIG_SC7180_MASK_SDMA,
1267d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
12688f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1f8, VIG_SC7180_MASK_SDMA,
1269d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
12708f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA,
1271d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12728f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_SDM845_MASK_SDMA,
1273d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
12748f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1275d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
12768f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1277d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1278d21fc5dfSDmitry Baryshkov };
1279d21fc5dfSDmitry Baryshkov 
1280100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 =
1281c7da17b6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4);
1282100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 =
1283c7da17b6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4);
1284100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 =
1285c7da17b6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4);
1286100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 =
1287c7da17b6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4);
1288100d7ef6SDmitry Baryshkov 
1289100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = {
12908f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x32c, VIG_SC7180_MASK,
1291100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12928f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x32c, VIG_SC7180_MASK,
1293100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
12948f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x32c, VIG_SC7180_MASK,
1295100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
12968f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x32c, VIG_SC7180_MASK,
1297100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
12988f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x32c, DMA_SDM845_MASK,
1299100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13008f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x32c, DMA_SDM845_MASK,
1301100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13028f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x32c, DMA_CURSOR_SDM845_MASK,
1303d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
13048f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x32c, DMA_CURSOR_SDM845_MASK,
1305d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1306100d7ef6SDmitry Baryshkov };
1307100d7ef6SDmitry Baryshkov 
1308efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 =
1309d113d267SDmitry Baryshkov 				_VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED4);
1310efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 =
1311d113d267SDmitry Baryshkov 				_VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED4);
1312efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 =
1313d113d267SDmitry Baryshkov 				_VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED4);
1314efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 =
1315d113d267SDmitry Baryshkov 				_VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED4);
1316efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5);
1317e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6);
1318efcd0107SNeil Armstrong 
1319efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = {
13208f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x344, VIG_SC7180_MASK,
1321efcd0107SNeil Armstrong 		sm8550_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13228f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x344, VIG_SC7180_MASK,
1323efcd0107SNeil Armstrong 		sm8550_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13248f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x344, VIG_SC7180_MASK,
1325efcd0107SNeil Armstrong 		sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13268f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x344, VIG_SC7180_MASK,
1327efcd0107SNeil Armstrong 		sm8550_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13288f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x344, DMA_SDM845_MASK,
1329efcd0107SNeil Armstrong 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13308f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x344, DMA_SDM845_MASK,
1331efcd0107SNeil Armstrong 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13328f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x344, DMA_SDM845_MASK,
1333efcd0107SNeil Armstrong 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
13348f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x344, DMA_SDM845_MASK,
1335efcd0107SNeil Armstrong 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
13368f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000, 0x344, DMA_CURSOR_SDM845_MASK,
1337d6181c18SDmitry Baryshkov 		sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA4),
13388f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000, 0x344, DMA_CURSOR_SDM845_MASK,
1339d6181c18SDmitry Baryshkov 		sm8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA5),
1340efcd0107SNeil Armstrong };
1341efcd0107SNeil Armstrong 
1342591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
13438f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7280_MASK_SDMA,
1344dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13458f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA,
1346591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13478f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1348d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13498f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1350d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
1351591e34a0SKrishna Manikandan };
1352591e34a0SKrishna Manikandan 
13534a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 =
1354b3587cb6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4);
13554a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 =
1356b3587cb6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4);
13574a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 =
1358b3587cb6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4);
13594a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 =
1360b3587cb6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4);
13614a352c2fSBjorn Andersson 
13624a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = {
13638f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x2ac, VIG_SC7180_MASK,
13644a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13658f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x2ac, VIG_SC7180_MASK,
13664a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13678f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x2ac, VIG_SC7180_MASK,
13684a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13698f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x2ac, VIG_SC7180_MASK,
13704a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13718f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x2ac, DMA_SDM845_MASK,
13724a352c2fSBjorn Andersson 		 sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13738f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x2ac, DMA_SDM845_MASK,
13744a352c2fSBjorn Andersson 		 sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13758f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x2ac, DMA_CURSOR_SDM845_MASK,
1376d6181c18SDmitry Baryshkov 		 sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
13778f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x2ac, DMA_CURSOR_SDM845_MASK,
1378d6181c18SDmitry Baryshkov 		 sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
13794a352c2fSBjorn Andersson };
13805334087eSLoic Poulain 
13815334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
13825334087eSLoic Poulain 	{ \
13835334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
13845334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
13855334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
13865334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
13875334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
13885334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
13895334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
13905334087eSLoic Poulain 	.virt_format_list = plane_formats, \
13915334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
13925334087eSLoic Poulain 	}
13935334087eSLoic Poulain 
13945334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
13955334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
13965334087eSLoic Poulain 
13975334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
13988f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_QCM2290_MASK,
13995334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
14008f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK,
14015334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
14025334087eSLoic Poulain };
14035334087eSLoic Poulain 
140425fdd593SJeykumar Sankaran /*************************************************************
140525fdd593SJeykumar Sankaran  * MIXER sub blocks config
140625fdd593SJeykumar Sankaran  *************************************************************/
14077bdc0c4bSKalyan Thota 
1408e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
140925fdd593SJeykumar Sankaran 	{ \
141025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
141125fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
14127bdc0c4bSKalyan Thota 	.features = _fmask, \
14137bdc0c4bSKalyan Thota 	.sblk = _sblk, \
141425fdd593SJeykumar Sankaran 	.pingpong = _pp, \
1415e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
1416e47616dfSKalyan Thota 	.dspp = _dspp \
141725fdd593SJeykumar Sankaran 	}
141825fdd593SJeykumar Sankaran 
141994391a14SAngeloGioacchino Del Regno /* MSM8998 */
142094391a14SAngeloGioacchino Del Regno 
142194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
142294391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
142394391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
142494391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
142594391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
142694391a14SAngeloGioacchino Del Regno 		0x260, 0x290
142794391a14SAngeloGioacchino Del Regno 	},
142894391a14SAngeloGioacchino Del Regno };
142994391a14SAngeloGioacchino Del Regno 
143094391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
14312d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
143294391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
14332d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
143494391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
14352d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
143694391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
14372d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
143894391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14392d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
144094391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14412d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
144294391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
144394391a14SAngeloGioacchino Del Regno };
144494391a14SAngeloGioacchino Del Regno 
144594391a14SAngeloGioacchino Del Regno /* SDM845 */
144694391a14SAngeloGioacchino Del Regno 
144794391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
144894391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
144994391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
145094391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
145194391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
145294391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
145394391a14SAngeloGioacchino Del Regno 	},
145494391a14SAngeloGioacchino Del Regno };
145594391a14SAngeloGioacchino Del Regno 
1456abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
14577bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1458e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
14597bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1460e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
14617bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1462e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
14637bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
1464e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14657bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
1466e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14677bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1468e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
14697bdc0c4bSKalyan Thota };
14707bdc0c4bSKalyan Thota 
14717bdc0c4bSKalyan Thota /* SC7180 */
14727bdc0c4bSKalyan Thota 
14737bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
14747bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
14757bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
14767bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
14777bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
14787bdc0c4bSKalyan Thota 	},
14797bdc0c4bSKalyan Thota };
14807bdc0c4bSKalyan Thota 
14817bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
148200feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1483e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
148400feff8fSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1485e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
148625fdd593SJeykumar Sankaran };
148725fdd593SJeykumar Sankaran 
14884a352c2fSBjorn Andersson /* SC8280XP */
14894a352c2fSBjorn Andersson 
14904a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = {
14914a352c2fSBjorn Andersson 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
14924a352c2fSBjorn Andersson 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
14934a352c2fSBjorn Andersson 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2),
14944a352c2fSBjorn Andersson 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3),
14954a352c2fSBjorn Andersson 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
14964a352c2fSBjorn Andersson 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
14974a352c2fSBjorn Andersson };
14984a352c2fSBjorn Andersson 
1499386fced3SJonathan Marek /* SM8150 */
1500386fced3SJonathan Marek 
1501386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1502386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
150305ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1504386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
150505ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1506386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1507386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1508386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1509386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1510386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1511386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1512386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1513386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1514386fced3SJonathan Marek };
1515386fced3SJonathan Marek 
1516591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
151700feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1518fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
151900feff8fSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1520591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
152100feff8fSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1522591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1523591e34a0SKrishna Manikandan };
1524591e34a0SKrishna Manikandan 
15255334087eSLoic Poulain /* QCM2290 */
15265334087eSLoic Poulain 
15275334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
1528da06be8bSDmitry Baryshkov 	.maxwidth = DEFAULT_DPU_LINE_WIDTH,
15295334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
15305334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
15315334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
15325334087eSLoic Poulain 	},
15335334087eSLoic Poulain };
15345334087eSLoic Poulain 
15355334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
153600feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK,
15375334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
15385334087eSLoic Poulain };
15395334087eSLoic Poulain 
154025fdd593SJeykumar Sankaran /*************************************************************
1541e47616dfSKalyan Thota  * DSPP sub blocks config
1542e47616dfSKalyan Thota  *************************************************************/
154394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
154494391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
154594391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
154694391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
154794391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
154894391a14SAngeloGioacchino Del Regno };
154994391a14SAngeloGioacchino Del Regno 
15504259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
15514259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
15524259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
15534259ff7aSKalyan Thota };
15544259ff7aSKalyan Thota 
155505ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
155605ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
155705ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
155805ae91d9SDmitry Baryshkov };
155905ae91d9SDmitry Baryshkov 
1560862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1561e47616dfSKalyan Thota 		{\
1562e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1563e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1564862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
156505ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1566e47616dfSKalyan Thota 		}
1567e47616dfSKalyan Thota 
156894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
156994391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
157094391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
157194391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
157294391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
157394391a14SAngeloGioacchino Del Regno };
157494391a14SAngeloGioacchino Del Regno 
1575e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1576862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1577862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
157805ae91d9SDmitry Baryshkov };
157905ae91d9SDmitry Baryshkov 
158005ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1581862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1582862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1583862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1584862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1585862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1586862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1587862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1588862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1589e47616dfSKalyan Thota };
1590386fced3SJonathan Marek 
15915334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
15925334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
15935334087eSLoic Poulain 		 &sm8150_dspp_sblk),
15945334087eSLoic Poulain };
15955334087eSLoic Poulain 
1596e47616dfSKalyan Thota /*************************************************************
159725fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
159825fdd593SJeykumar Sankaran  *************************************************************/
159925fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
160025fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
160125fdd593SJeykumar Sankaran 		.version = 0x1},
160225fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
160325fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
160425fdd593SJeykumar Sankaran };
160525fdd593SJeykumar Sankaran 
160625fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
160725fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
160825fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
160925fdd593SJeykumar Sankaran };
161025fdd593SJeykumar Sankaran 
1611591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1612591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1613591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1614591e34a0SKrishna Manikandan };
1615591e34a0SKrishna Manikandan 
1616efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
1617efcd0107SNeil Armstrong 	{\
1618efcd0107SNeil Armstrong 	.name = _name, .id = _id, \
1619efcd0107SNeil Armstrong 	.base = _base, .len = 0, \
1620efcd0107SNeil Armstrong 	.features = BIT(DPU_PINGPONG_DITHER), \
1621efcd0107SNeil Armstrong 	.merge_3d = _merge_3d, \
1622efcd0107SNeil Armstrong 	.sblk = &_sblk, \
1623efcd0107SNeil Armstrong 	.intr_done = _done, \
1624efcd0107SNeil Armstrong 	.intr_rdptr = _rdptr, \
1625efcd0107SNeil Armstrong 	}
1626667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
162725fdd593SJeykumar Sankaran 	{\
162825fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
162925fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
163025fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
16314369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1632667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1633667e9985SDmitry Baryshkov 	.intr_done = _done, \
1634667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
163525fdd593SJeykumar Sankaran 	}
1636667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
163725fdd593SJeykumar Sankaran 	{\
163825fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
163925fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
164025fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_MASK, \
16414369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1642667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1643667e9985SDmitry Baryshkov 	.intr_done = _done, \
1644667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
164525fdd593SJeykumar Sankaran 	}
164625fdd593SJeykumar Sankaran 
1647abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1648667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1649667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1650667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1651667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1652667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1653667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1654667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1655667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1656667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1657667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1658667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1659667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
166025fdd593SJeykumar Sankaran };
166125fdd593SJeykumar Sankaran 
1662*ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc7180_pp[] = {
1663667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1664667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
16657bdc0c4bSKalyan Thota };
16667bdc0c4bSKalyan Thota 
1667*ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc8280xp_pp[] = {
16684a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16694a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1),
16704a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
16714a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1),
16724a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te,
16734a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1),
16744a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te,
16754a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1),
16764a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te,
16774a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1),
16784a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te,
16794a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1),
16804a352c2fSBjorn Andersson };
16814a352c2fSBjorn Andersson 
1682386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1683667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1684667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1685667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1686667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1687667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1688667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1689667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1690667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1691667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1692667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1693667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1694667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1695667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1696667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1697667e9985SDmitry Baryshkov 			-1),
1698667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
16993431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1700667e9985SDmitry Baryshkov 			-1),
17014369c93cSDmitry Baryshkov };
17024369c93cSDmitry Baryshkov 
17030e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = {
17040e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
17050e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17060e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17070e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
17080e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
17090e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
17100e91bcbbSRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
17110e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
17120e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
17130e91bcbbSRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
17140e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
17150e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
17160e91bcbbSRobert Foss 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
17170e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
17180e91bcbbSRobert Foss 			-1),
17190e91bcbbSRobert Foss 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
17200e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
17210e91bcbbSRobert Foss 			-1),
17220e91bcbbSRobert Foss };
17230e91bcbbSRobert Foss 
17241a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = {
1725ce68153eSKuogee Hsieh 	PP_BLK("pingpong_0", PINGPONG_0, 0x69000, 0, sc7280_pp_sblk, -1, -1),
17261a5b5372SRobert Foss 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
17271a5b5372SRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
17281a5b5372SRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
17291a5b5372SRobert Foss };
17301a5b5372SRobert Foss 
1731*ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg qcm2290_pp[] = {
17325334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
17335334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17345334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17355334087eSLoic Poulain };
17365334087eSLoic Poulain 
1737100d7ef6SDmitry Baryshkov /* FIXME: interrupts */
1738100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = {
1739100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
1740100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1741100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1742100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
1743100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1744100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1745100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
1746100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1747100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1748100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
1749100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1750100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1751100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
1752100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1753100d7ef6SDmitry Baryshkov 			-1),
1754100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
1755100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1756100d7ef6SDmitry Baryshkov 			-1),
1757100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk,
1758100d7ef6SDmitry Baryshkov 			-1,
1759100d7ef6SDmitry Baryshkov 			-1),
1760100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk,
1761100d7ef6SDmitry Baryshkov 			-1,
1762100d7ef6SDmitry Baryshkov 			-1),
1763100d7ef6SDmitry Baryshkov };
1764100d7ef6SDmitry Baryshkov 
1765efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = {
1766efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk,
1767efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1768efcd0107SNeil Armstrong 			-1),
1769efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk,
1770efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1771efcd0107SNeil Armstrong 			-1),
1772efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk,
1773efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1774efcd0107SNeil Armstrong 			-1),
1775efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk,
1776efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1777efcd0107SNeil Armstrong 			-1),
1778efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk,
1779efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1780efcd0107SNeil Armstrong 			-1),
1781efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk,
1782efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1783efcd0107SNeil Armstrong 			-1),
1784efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk,
1785efcd0107SNeil Armstrong 			-1,
1786efcd0107SNeil Armstrong 			-1),
1787efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk,
1788efcd0107SNeil Armstrong 			-1,
1789efcd0107SNeil Armstrong 			-1),
1790efcd0107SNeil Armstrong };
1791efcd0107SNeil Armstrong 
17924369c93cSDmitry Baryshkov /*************************************************************
17934369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
17944369c93cSDmitry Baryshkov  *************************************************************/
17954369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
17964369c93cSDmitry Baryshkov 	{\
17974369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
17984369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
17994369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
18004369c93cSDmitry Baryshkov 	.sblk = NULL \
18014369c93cSDmitry Baryshkov 	}
18024369c93cSDmitry Baryshkov 
18034369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
18044369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
18054369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
18064369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1807386fced3SJonathan Marek };
1808386fced3SJonathan Marek 
18090e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = {
18100e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
18110e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
18120e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
18130e91bcbbSRobert Foss };
18140e91bcbbSRobert Foss 
1815100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = {
1816100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1817100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1818100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1819100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00),
1820100d7ef6SDmitry Baryshkov };
1821100d7ef6SDmitry Baryshkov 
1822efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = {
1823efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1824efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1825efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1826efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700),
1827efcd0107SNeil Armstrong };
1828efcd0107SNeil Armstrong 
18297c5ab05eSVinod Koul /*************************************************************
18307c5ab05eSVinod Koul  * DSC sub blocks config
18317c5ab05eSVinod Koul  *************************************************************/
18329da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \
18337c5ab05eSVinod Koul 	{\
18347c5ab05eSVinod Koul 	.name = _name, .id = _id, \
18357c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
18369da5daa0SMarijn Suijten 	.features = _features, \
18377c5ab05eSVinod Koul 	}
18387c5ab05eSVinod Koul 
1839fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sdm845_dsc[] = {
18409da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, 0),
18419da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, 0),
18429da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, 0),
18439da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, 0),
18449da5daa0SMarijn Suijten };
18459da5daa0SMarijn Suijten 
1846fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sm8150_dsc[] = {
18479da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)),
18489da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)),
18499da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)),
18509da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)),
18517c5ab05eSVinod Koul };
18527c5ab05eSVinod Koul 
185325fdd593SJeykumar Sankaran /*************************************************************
185425fdd593SJeykumar Sankaran  * INTF sub blocks config
185525fdd593SJeykumar Sankaran  *************************************************************/
18568399a5ffSKonrad Dybcio #define INTF_BLK(_name, _id, _base, _len, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
185725fdd593SJeykumar Sankaran 	{\
185825fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
18598399a5ffSKonrad Dybcio 	.base = _base, .len = _len, \
1860cace3ac4SJonathan Marek 	.features = _features, \
186125fdd593SJeykumar Sankaran 	.type = _type, \
186225fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1863667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1864667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1865667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
186625fdd593SJeykumar Sankaran 	}
186725fdd593SJeykumar Sankaran 
186894391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
18698399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18708399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18718399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18728399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
187394391a14SAngeloGioacchino Del Regno };
187494391a14SAngeloGioacchino Del Regno 
1875abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
18768399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18778399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18788399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18798399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
188025fdd593SJeykumar Sankaran };
188125fdd593SJeykumar Sankaran 
18827bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
18838399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18848399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18857bdc0c4bSKalyan Thota };
18867bdc0c4bSKalyan Thota 
1887386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
18888399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18898399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18908399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18918399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1892386fced3SJonathan Marek };
1893386fced3SJonathan Marek 
1894591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
18958399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18968399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18978399a5ffSKonrad Dybcio 	INTF_BLK("intf_5", INTF_5, 0x39000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1898591e34a0SKrishna Manikandan };
1899591e34a0SKrishna Manikandan 
19000e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = {
19018399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19028399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19038399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x2c4, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19048399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19050e91bcbbSRobert Foss };
19060e91bcbbSRobert Foss 
1907f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
19088399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19098399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19108399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1911f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
19128399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19138399a5ffSKonrad Dybcio 	INTF_BLK("intf_4", INTF_4, 0x6C000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
19148399a5ffSKonrad Dybcio 	INTF_BLK("intf_5", INTF_5, 0x6C800, 0x280, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1915f3af2d6eSRob Clark };
1916f3af2d6eSRob Clark 
19174a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */
19184a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = {
19198399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19208399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19218399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19228399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19238399a5ffSKonrad Dybcio 	INTF_BLK("intf_4", INTF_4, 0x38000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
19248399a5ffSKonrad Dybcio 	INTF_BLK("intf_5", INTF_5, 0x39000, 0x280, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
19258399a5ffSKonrad Dybcio 	INTF_BLK("intf_6", INTF_6, 0x3a000, 0x280, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17),
19268399a5ffSKonrad Dybcio 	INTF_BLK("intf_7", INTF_7, 0x3b000, 0x280, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19),
19278399a5ffSKonrad Dybcio 	INTF_BLK("intf_8", INTF_8, 0x3c000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13),
19284a352c2fSBjorn Andersson };
19294a352c2fSBjorn Andersson 
19305334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
19318399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x00000, 0x280, INTF_DP, 0, 0, 0, 0, 0, 0),
19328399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19335334087eSLoic Poulain };
19345334087eSLoic Poulain 
1935100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = {
19368399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19378399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19388399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19398399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1940100d7ef6SDmitry Baryshkov };
1941100d7ef6SDmitry Baryshkov 
1942efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = {
19438399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1944efcd0107SNeil Armstrong 	/* TODO TE sub-blocks for intf1 & intf2 */
19458399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19468399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19478399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1948efcd0107SNeil Armstrong };
1949efcd0107SNeil Armstrong 
195025fdd593SJeykumar Sankaran /*************************************************************
195153324b99SAbhinav Kumar  * Writeback blocks config
195253324b99SAbhinav Kumar  *************************************************************/
195353324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1954a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
195553324b99SAbhinav Kumar 	{ \
195653324b99SAbhinav Kumar 	.name = _name, .id = _id, \
195753324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
195853324b99SAbhinav Kumar 	.features = _features, \
195953324b99SAbhinav Kumar 	.format_list = wb2_formats, \
196053324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
196153324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
196253324b99SAbhinav Kumar 	.xin_id = __xin_id, \
196353324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
1964a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
196553324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
196653324b99SAbhinav Kumar 	}
196753324b99SAbhinav Kumar 
196853324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
196953324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
1970a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
197153324b99SAbhinav Kumar };
197253324b99SAbhinav Kumar 
197353324b99SAbhinav Kumar /*************************************************************
197425fdd593SJeykumar Sankaran  * VBIF sub blocks config
197525fdd593SJeykumar Sankaran  *************************************************************/
197625fdd593SJeykumar Sankaran /* VBIF QOS remap */
197794391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
197894391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
1979abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
1980abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
198125fdd593SJeykumar Sankaran 
198294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
198394391a14SAngeloGioacchino Del Regno 	{
198494391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
198594391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
198694391a14SAngeloGioacchino Del Regno 	},
198794391a14SAngeloGioacchino Del Regno 	{
198894391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
198994391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
199094391a14SAngeloGioacchino Del Regno 	},
199194391a14SAngeloGioacchino Del Regno 	{
199294391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
199394391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
199494391a14SAngeloGioacchino Del Regno 	},
199594391a14SAngeloGioacchino Del Regno };
199694391a14SAngeloGioacchino Del Regno 
199794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
199894391a14SAngeloGioacchino Del Regno 	{
1999606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
200094391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
200194391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
200294391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
200394391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
200494391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
2005c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
200694391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
200794391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
200894391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
200994391a14SAngeloGioacchino Del Regno 		},
201094391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
201194391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
201294391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
201394391a14SAngeloGioacchino Del Regno 		},
201494391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
201594391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
201694391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
201794391a14SAngeloGioacchino Del Regno 		},
201894391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
201994391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
202094391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
202194391a14SAngeloGioacchino Del Regno 		},
202294391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
202394391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
202494391a14SAngeloGioacchino Del Regno 	},
202594391a14SAngeloGioacchino Del Regno };
202694391a14SAngeloGioacchino Del Regno 
2027abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
202825fdd593SJeykumar Sankaran 	{
2029606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
203025fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
203125fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
203225fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
2033c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
203425fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
203525fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
203625fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
203725fdd593SJeykumar Sankaran 		},
203825fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
203925fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
204025fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
204125fdd593SJeykumar Sankaran 		},
204225fdd593SJeykumar Sankaran 	.memtype_count = 14,
204325fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
204425fdd593SJeykumar Sankaran 	},
204525fdd593SJeykumar Sankaran };
204625fdd593SJeykumar Sankaran 
20474a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = {
20484a352c2fSBjorn Andersson 	.base = 0x0,
20494a352c2fSBjorn Andersson 	.version = 0x00020000,
20504a352c2fSBjorn Andersson 	.trigger_sel_off = 0x119c,
20514a352c2fSBjorn Andersson 	.xin_id = 7,
20524a352c2fSBjorn Andersson 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20534a352c2fSBjorn Andersson };
20544a352c2fSBjorn Andersson 
2055abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
205625fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
205725fdd593SJeykumar Sankaran };
205825fdd593SJeykumar Sankaran 
2059386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
2060386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
2061386fced3SJonathan Marek };
2062386fced3SJonathan Marek 
2063af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
2064af776a3eSJonathan Marek 	.base = 0x0,
2065af776a3eSJonathan Marek 	.version = 0x00010002,
2066af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
2067af776a3eSJonathan Marek 	.xin_id = 7,
2068af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2069af776a3eSJonathan Marek };
2070af776a3eSJonathan Marek 
20710e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = {
20720e91bcbbSRobert Foss 	.base = 0x400,
20730e91bcbbSRobert Foss 	.version = 0x00020000,
20740e91bcbbSRobert Foss 	.trigger_sel_off = 0x119c,
20750e91bcbbSRobert Foss 	.xin_id = 7,
20760e91bcbbSRobert Foss 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20770e91bcbbSRobert Foss };
20780e91bcbbSRobert Foss 
2079100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = {
2080100d7ef6SDmitry Baryshkov 	.base = 0x0,
2081100d7ef6SDmitry Baryshkov 	.version = 0x00020000,
2082100d7ef6SDmitry Baryshkov 	.trigger_sel_off = 0x119c,
2083100d7ef6SDmitry Baryshkov 	.xin_id = 7,
2084100d7ef6SDmitry Baryshkov 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2085100d7ef6SDmitry Baryshkov };
2086100d7ef6SDmitry Baryshkov 
208725fdd593SJeykumar Sankaran /*************************************************************
208825fdd593SJeykumar Sankaran  * PERF data config
208925fdd593SJeykumar Sankaran  *************************************************************/
209025fdd593SJeykumar Sankaran 
209125fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
209294391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
209394391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
209494391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
209594391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
209694391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
209794391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
209894391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
209994391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
210094391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
210194391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
210294391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
210394391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
210494391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
210594391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
210694391a14SAngeloGioacchino Del Regno };
210794391a14SAngeloGioacchino Del Regno 
2108abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
210925fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
211025fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
211125fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
211225fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
211325fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
211425fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
211525fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
211625fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
211725fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
211825fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
211925fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
212025fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
212125fdd593SJeykumar Sankaran };
212225fdd593SJeykumar Sankaran 
212394391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
212494391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
212594391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
212694391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
212794391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
212894391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
212994391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
213094391a14SAngeloGioacchino Del Regno };
213194391a14SAngeloGioacchino Del Regno 
21327bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
21337bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
21347bdc0c4bSKalyan Thota };
21357bdc0c4bSKalyan Thota 
2136386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
2137386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
2138386fced3SJonathan Marek };
2139386fced3SJonathan Marek 
2140f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
2141f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
2142f3af2d6eSRob Clark };
2143f3af2d6eSRob Clark 
21445334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
21455334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
21465334087eSLoic Poulain };
21475334087eSLoic Poulain 
2148abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
214925fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
215025fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
215125fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
215225fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
215325fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
215425fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
215525fdd593SJeykumar Sankaran };
215625fdd593SJeykumar Sankaran 
21577bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
21587bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
21597bdc0c4bSKalyan Thota };
21607bdc0c4bSKalyan Thota 
2161f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
2162f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
2163f3af2d6eSRob Clark };
2164f3af2d6eSRob Clark 
216594391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
216694391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
216794391a14SAngeloGioacchino Del Regno };
216894391a14SAngeloGioacchino Del Regno 
2169abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
217025fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
217125fdd593SJeykumar Sankaran };
217225fdd593SJeykumar Sankaran 
21737bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
21747bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
21757bdc0c4bSKalyan Thota };
21767bdc0c4bSKalyan Thota 
217794391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
217894391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
217994391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
218094391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
218194391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
218294391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
218394391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
218494391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
218594391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
218694391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
218794391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
218894391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
218994391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
219094391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
219194391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
219294391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
219394391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
219494391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
219594391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
219694391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
219794391a14SAngeloGioacchino Del Regno 		},
219894391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
219994391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
220094391a14SAngeloGioacchino Del Regno 		},
220194391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
220294391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
220394391a14SAngeloGioacchino Del Regno 		},
220494391a14SAngeloGioacchino Del Regno 	},
220594391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
220694391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
220794391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
220894391a14SAngeloGioacchino Del Regno 	},
220994391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
221094391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
221194391a14SAngeloGioacchino Del Regno };
221294391a14SAngeloGioacchino Del Regno 
2213abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
221425fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
221525fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
221625fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
221725fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
221825fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
221925fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
222025fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
222125fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
222225fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
222325fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
222425fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
222525fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
222625fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
222725fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
222825fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22295bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
223025fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
223125fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
223225fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
223325fdd593SJeykumar Sankaran 		},
223425fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
223525fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
223625fdd593SJeykumar Sankaran 		},
223725fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
223825fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
223925fdd593SJeykumar Sankaran 		},
224025fdd593SJeykumar Sankaran 	},
224125fdd593SJeykumar Sankaran 	.cdp_cfg = {
224225fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
224325fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
224425fdd593SJeykumar Sankaran 	},
22454f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
22464f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
224725fdd593SJeykumar Sankaran };
224825fdd593SJeykumar Sankaran 
22497bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
225071dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
225171dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
22527bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
22537bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
2254c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
2255c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
22567bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22575bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22587bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
22597bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22607bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
22617bdc0c4bSKalyan Thota 		},
22627bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22637bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
22647bdc0c4bSKalyan Thota 		},
22657bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22667bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
22677bdc0c4bSKalyan Thota 		},
22687bdc0c4bSKalyan Thota 	},
22697bdc0c4bSKalyan Thota 	.cdp_cfg = {
22707bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
22717bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
22727bdc0c4bSKalyan Thota 	},
2273c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
2274c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
22757bdc0c4bSKalyan Thota };
22767bdc0c4bSKalyan Thota 
22773581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = {
22783581b706SAdam Skladowski 	.max_bw_low = 3100000,
22793581b706SAdam Skladowski 	.max_bw_high = 4000000,
22803581b706SAdam Skladowski 	.min_core_ib = 2400000,
22813581b706SAdam Skladowski 	.min_llcc_ib = 800000,
22823581b706SAdam Skladowski 	.min_dram_ib = 800000,
22833581b706SAdam Skladowski 	.min_prefill_lines = 24,
22843581b706SAdam Skladowski 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22853581b706SAdam Skladowski 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22863581b706SAdam Skladowski 	.qos_lut_tbl = {
22873581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22883581b706SAdam Skladowski 		.entries = sc7180_qos_linear
22893581b706SAdam Skladowski 		},
22903581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22913581b706SAdam Skladowski 		.entries = sc7180_qos_macrotile
22923581b706SAdam Skladowski 		},
22933581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22943581b706SAdam Skladowski 		.entries = sc7180_qos_nrt
22953581b706SAdam Skladowski 		},
22963581b706SAdam Skladowski 		/* TODO: macrotile-qseed is different from macrotile */
22973581b706SAdam Skladowski 	},
22983581b706SAdam Skladowski 	.cdp_cfg = {
22993581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 1},
23003581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 0}
23013581b706SAdam Skladowski 	},
23023581b706SAdam Skladowski 	.clk_inefficiency_factor = 105,
23033581b706SAdam Skladowski 	.bw_inefficiency_factor = 120,
23043581b706SAdam Skladowski };
23053581b706SAdam Skladowski 
2306386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
2307386fced3SJonathan Marek 	.max_bw_low = 12800000,
2308386fced3SJonathan Marek 	.max_bw_high = 12800000,
2309386fced3SJonathan Marek 	.min_core_ib = 2400000,
2310386fced3SJonathan Marek 	.min_llcc_ib = 800000,
2311386fced3SJonathan Marek 	.min_dram_ib = 800000,
23124f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
2313386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23145bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
2315386fced3SJonathan Marek 	.qos_lut_tbl = {
2316386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
2317386fced3SJonathan Marek 		.entries = sm8150_qos_linear
2318386fced3SJonathan Marek 		},
2319386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2320386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
2321386fced3SJonathan Marek 		},
2322386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2323386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
2324386fced3SJonathan Marek 		},
2325386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2326386fced3SJonathan Marek 	},
2327386fced3SJonathan Marek 	.cdp_cfg = {
2328386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2329386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2330386fced3SJonathan Marek 	},
23314f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
23324f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2333386fced3SJonathan Marek };
2334386fced3SJonathan Marek 
2335f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
2336f3af2d6eSRob Clark 	.max_bw_low = 9600000,
2337f3af2d6eSRob Clark 	.max_bw_high = 9600000,
2338f3af2d6eSRob Clark 	.min_core_ib = 2400000,
2339f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
2340f3af2d6eSRob Clark 	.min_dram_ib = 800000,
2341f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
2342f3af2d6eSRob Clark 	.qos_lut_tbl = {
23434a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
23444a352c2fSBjorn Andersson 		.entries = sc7180_qos_linear
23454a352c2fSBjorn Andersson 		},
23464a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23474a352c2fSBjorn Andersson 		.entries = sc7180_qos_macrotile
23484a352c2fSBjorn Andersson 		},
23494a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23504a352c2fSBjorn Andersson 		.entries = sc7180_qos_nrt
23514a352c2fSBjorn Andersson 		},
23524a352c2fSBjorn Andersson 		/* TODO: macrotile-qseed is different from macrotile */
23534a352c2fSBjorn Andersson 	},
23544a352c2fSBjorn Andersson 	.cdp_cfg = {
23554a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 1},
23564a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 0}
23574a352c2fSBjorn Andersson 	},
23584a352c2fSBjorn Andersson 	.clk_inefficiency_factor = 105,
23594a352c2fSBjorn Andersson 	.bw_inefficiency_factor = 120,
23604a352c2fSBjorn Andersson };
23614a352c2fSBjorn Andersson 
23624a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = {
23634a352c2fSBjorn Andersson 	.max_bw_low = 13600000,
23644a352c2fSBjorn Andersson 	.max_bw_high = 18200000,
23654a352c2fSBjorn Andersson 	.min_core_ib = 2500000,
23664a352c2fSBjorn Andersson 	.min_llcc_ib = 0,
23674a352c2fSBjorn Andersson 	.min_dram_ib = 800000,
23684a352c2fSBjorn Andersson 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23694a352c2fSBjorn Andersson 	.qos_lut_tbl = {
2370f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
2371f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
2372f3af2d6eSRob Clark 		},
2373f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
2374f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
2375f3af2d6eSRob Clark 		},
2376f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2377f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
2378f3af2d6eSRob Clark 		},
2379f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
2380f3af2d6eSRob Clark 	},
2381f3af2d6eSRob Clark 	.cdp_cfg = {
2382f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
2383f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
2384f3af2d6eSRob Clark 	},
2385f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
2386f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
2387f3af2d6eSRob Clark };
2388f3af2d6eSRob Clark 
2389af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
2390af776a3eSJonathan Marek 	.max_bw_low = 13700000,
2391af776a3eSJonathan Marek 	.max_bw_high = 16600000,
2392af776a3eSJonathan Marek 	.min_core_ib = 4800000,
2393af776a3eSJonathan Marek 	.min_llcc_ib = 0,
2394af776a3eSJonathan Marek 	.min_dram_ib = 800000,
23954f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
2396af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23975bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
2398af776a3eSJonathan Marek 	.qos_lut_tbl = {
2399af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2400af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
2401af776a3eSJonathan Marek 		},
2402af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2403af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
2404af776a3eSJonathan Marek 		},
2405af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2406af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
2407af776a3eSJonathan Marek 		},
2408af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2409af776a3eSJonathan Marek 	},
2410af776a3eSJonathan Marek 	.cdp_cfg = {
2411af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2412af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2413af776a3eSJonathan Marek 	},
24144f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
24154f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2416af776a3eSJonathan Marek };
2417af776a3eSJonathan Marek 
2418100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = {
2419100d7ef6SDmitry Baryshkov 	.max_bw_low = 13600000,
2420100d7ef6SDmitry Baryshkov 	.max_bw_high = 18200000,
2421100d7ef6SDmitry Baryshkov 	.min_core_ib = 2500000,
2422100d7ef6SDmitry Baryshkov 	.min_llcc_ib = 0,
2423100d7ef6SDmitry Baryshkov 	.min_dram_ib = 800000,
2424100d7ef6SDmitry Baryshkov 	.min_prefill_lines = 35,
2425100d7ef6SDmitry Baryshkov 	/* FIXME: lut tables */
2426100d7ef6SDmitry Baryshkov 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
2427100d7ef6SDmitry Baryshkov 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
2428100d7ef6SDmitry Baryshkov 	.qos_lut_tbl = {
2429100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2430100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_linear
2431100d7ef6SDmitry Baryshkov 		},
2432100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2433100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_macrotile
2434100d7ef6SDmitry Baryshkov 		},
2435100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2436100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_nrt
2437100d7ef6SDmitry Baryshkov 		},
2438100d7ef6SDmitry Baryshkov 		/* TODO: macrotile-qseed is different from macrotile */
2439100d7ef6SDmitry Baryshkov 	},
2440100d7ef6SDmitry Baryshkov 	.cdp_cfg = {
2441100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 1},
2442100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 0}
2443100d7ef6SDmitry Baryshkov 	},
2444100d7ef6SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
2445100d7ef6SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2446100d7ef6SDmitry Baryshkov };
2447100d7ef6SDmitry Baryshkov 
2448591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
2449591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
2450591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
2451591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
2452591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
2453591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
2454591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
2455591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
24565bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
2457591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
2458591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2459591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2460591e34a0SKrishna Manikandan 		},
2461591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2462591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2463591e34a0SKrishna Manikandan 		},
2464591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2465591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
2466591e34a0SKrishna Manikandan 		},
2467591e34a0SKrishna Manikandan 	},
2468591e34a0SKrishna Manikandan 	.cdp_cfg = {
2469591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
2470591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
2471591e34a0SKrishna Manikandan 	},
2472591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
2473591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
2474591e34a0SKrishna Manikandan };
2475591e34a0SKrishna Manikandan 
24760e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = {
24770e91bcbbSRobert Foss 	.max_bw_low = 11800000,
24780e91bcbbSRobert Foss 	.max_bw_high = 15500000,
24790e91bcbbSRobert Foss 	.min_core_ib = 2500000,
24800e91bcbbSRobert Foss 	.min_llcc_ib = 0,
24810e91bcbbSRobert Foss 	.min_dram_ib = 800000,
24820e91bcbbSRobert Foss 	.min_prefill_lines = 40,
24830e91bcbbSRobert Foss 	/* FIXME: lut tables */
24840e91bcbbSRobert Foss 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
24850e91bcbbSRobert Foss 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
24860e91bcbbSRobert Foss 	.qos_lut_tbl = {
24870e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
24880e91bcbbSRobert Foss 		.entries = sc7180_qos_linear
24890e91bcbbSRobert Foss 		},
24900e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
24910e91bcbbSRobert Foss 		.entries = sc7180_qos_macrotile
24920e91bcbbSRobert Foss 		},
24930e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
24940e91bcbbSRobert Foss 		.entries = sc7180_qos_nrt
24950e91bcbbSRobert Foss 		},
24960e91bcbbSRobert Foss 		/* TODO: macrotile-qseed is different from macrotile */
24970e91bcbbSRobert Foss 	},
24980e91bcbbSRobert Foss 	.cdp_cfg = {
24990e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 1},
25000e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 0}
25010e91bcbbSRobert Foss 	},
25020e91bcbbSRobert Foss 	.clk_inefficiency_factor = 105,
25030e91bcbbSRobert Foss 	.bw_inefficiency_factor = 120,
25040e91bcbbSRobert Foss };
25050e91bcbbSRobert Foss 
25065334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
25075334087eSLoic Poulain 	.max_bw_low = 2700000,
25085334087eSLoic Poulain 	.max_bw_high = 2700000,
25095334087eSLoic Poulain 	.min_core_ib = 1300000,
25105334087eSLoic Poulain 	.min_llcc_ib = 0,
25115334087eSLoic Poulain 	.min_dram_ib = 1600000,
25125334087eSLoic Poulain 	.min_prefill_lines = 24,
25135334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
25145334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
25155334087eSLoic Poulain 	.qos_lut_tbl = {
25165334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
25175334087eSLoic Poulain 		.entries = qcm2290_qos_linear
25185334087eSLoic Poulain 		},
25195334087eSLoic Poulain 	},
25205334087eSLoic Poulain 	.cdp_cfg = {
25215334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
25225334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
25235334087eSLoic Poulain 	},
25245334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
25255334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
25265334087eSLoic Poulain };
252725fdd593SJeykumar Sankaran /*************************************************************
2528de7d480fSDmitry Baryshkov  * Hardware catalog
252925fdd593SJeykumar Sankaran  *************************************************************/
253025fdd593SJeykumar Sankaran 
2531de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
253294391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
253394391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
253494391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
253594391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
253694391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
253794391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
253894391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
253994391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
254094391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
25416452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
25426452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
254394391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
254494391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
254594391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
254694391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
254794391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
254894391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
254994391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
2550477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
255194391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
255294391a14SAngeloGioacchino Del Regno };
255394391a14SAngeloGioacchino Del Regno 
2554de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
255525fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
255625fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
255725fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
255825fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
255925fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
256025fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
256125fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
256225fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
256325fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
256425fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
256525fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
25667c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
25677c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
256825fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
256925fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
257025fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
257125fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
257225fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
2573481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2574477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
2575597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
257625fdd593SJeykumar Sankaran };
257725fdd593SJeykumar Sankaran 
2578de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
25797bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
25807bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
25817bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
25827bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
25837bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
25847bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
25857bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
25867bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
25877bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
2588e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2589e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
25907bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
25917bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
25927bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
25937bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
259451e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
259551e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
25967bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
25977bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
25987bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
2599481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2600477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
2601597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
26027bdc0c4bSKalyan Thota };
26037bdc0c4bSKalyan Thota 
26043581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
26053581b706SAdam Skladowski 	.caps = &sm6115_dpu_caps,
26063581b706SAdam Skladowski 	.mdp_count = ARRAY_SIZE(sm6115_mdp),
26073581b706SAdam Skladowski 	.mdp = sm6115_mdp,
26083581b706SAdam Skladowski 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
26093581b706SAdam Skladowski 	.ctl = qcm2290_ctl,
26103581b706SAdam Skladowski 	.sspp_count = ARRAY_SIZE(sm6115_sspp),
26113581b706SAdam Skladowski 	.sspp = sm6115_sspp,
26123581b706SAdam Skladowski 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
26133581b706SAdam Skladowski 	.mixer = qcm2290_lm,
26143581b706SAdam Skladowski 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
26153581b706SAdam Skladowski 	.dspp = qcm2290_dspp,
26163581b706SAdam Skladowski 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
26173581b706SAdam Skladowski 	.pingpong = qcm2290_pp,
26183581b706SAdam Skladowski 	.intf_count = ARRAY_SIZE(qcm2290_intf),
26193581b706SAdam Skladowski 	.intf = qcm2290_intf,
26203581b706SAdam Skladowski 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26213581b706SAdam Skladowski 	.vbif = sdm845_vbif,
26223581b706SAdam Skladowski 	.perf = &sm6115_perf_data,
26233581b706SAdam Skladowski 	.mdss_irqs = IRQ_SC7180_MASK,
26243581b706SAdam Skladowski };
26253581b706SAdam Skladowski 
2626de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
2627386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
2628386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
2629386fced3SJonathan Marek 	.mdp = sdm845_mdp,
2630386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2631386fced3SJonathan Marek 	.ctl = sm8150_ctl,
2632386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2633386fced3SJonathan Marek 	.sspp = sdm845_sspp,
2634386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2635386fced3SJonathan Marek 	.mixer = sm8150_lm,
263605ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
263705ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
26389da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
26399da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2640386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2641386fced3SJonathan Marek 	.pingpong = sm8150_pp,
26424369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
26434369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2644386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2645386fced3SJonathan Marek 	.intf = sm8150_intf,
2646386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2647386fced3SJonathan Marek 	.vbif = sdm845_vbif,
2648386fced3SJonathan Marek 	.reg_dma_count = 1,
2649481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2650477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
2651597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
2652386fced3SJonathan Marek };
2653386fced3SJonathan Marek 
2654de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
2655f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
2656f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
2657f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
2658f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2659f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
2660f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2661f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
2662f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2663f3af2d6eSRob Clark 	.mixer = sm8150_lm,
2664f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2665f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
2666f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
2667f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
2668f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
2669f3af2d6eSRob Clark 	.intf = sc8180x_intf,
2670f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2671f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
2672f3af2d6eSRob Clark 	.reg_dma_count = 1,
2673481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2674477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
2675f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
2676f3af2d6eSRob Clark };
2677f3af2d6eSRob Clark 
26784a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = {
26794a352c2fSBjorn Andersson 	.caps = &sc8280xp_dpu_caps,
26804a352c2fSBjorn Andersson 	.mdp_count = ARRAY_SIZE(sc8280xp_mdp),
26814a352c2fSBjorn Andersson 	.mdp = sc8280xp_mdp,
26824a352c2fSBjorn Andersson 	.ctl_count = ARRAY_SIZE(sc8280xp_ctl),
26834a352c2fSBjorn Andersson 	.ctl = sc8280xp_ctl,
26844a352c2fSBjorn Andersson 	.sspp_count = ARRAY_SIZE(sc8280xp_sspp),
26854a352c2fSBjorn Andersson 	.sspp = sc8280xp_sspp,
26864a352c2fSBjorn Andersson 	.mixer_count = ARRAY_SIZE(sc8280xp_lm),
26874a352c2fSBjorn Andersson 	.mixer = sc8280xp_lm,
26884a352c2fSBjorn Andersson 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
26894a352c2fSBjorn Andersson 	.dspp = sm8150_dspp,
26904a352c2fSBjorn Andersson 	.pingpong_count = ARRAY_SIZE(sc8280xp_pp),
26914a352c2fSBjorn Andersson 	.pingpong = sc8280xp_pp,
26924a352c2fSBjorn Andersson 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
26934a352c2fSBjorn Andersson 	.merge_3d = sm8350_merge_3d,
26944a352c2fSBjorn Andersson 	.intf_count = ARRAY_SIZE(sc8280xp_intf),
26954a352c2fSBjorn Andersson 	.intf = sc8280xp_intf,
26964a352c2fSBjorn Andersson 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26974a352c2fSBjorn Andersson 	.vbif = sdm845_vbif,
269883bb1f13SDmitry Baryshkov 	.reg_dma_count = 1,
269983bb1f13SDmitry Baryshkov 	.dma_cfg = &sc8280xp_regdma,
27004a352c2fSBjorn Andersson 	.perf = &sc8280xp_perf_data,
27014a352c2fSBjorn Andersson 	.mdss_irqs = IRQ_SC8280XP_MASK,
27024a352c2fSBjorn Andersson };
27034a352c2fSBjorn Andersson 
2704de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
2705af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
2706af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
2707af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
2708af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2709af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
2710d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
2711d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
2712af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2713af776a3eSJonathan Marek 	.mixer = sm8150_lm,
271405ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
271505ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
27169da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
27179da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2718af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2719af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
27204369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
27214369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2722af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2723af776a3eSJonathan Marek 	.intf = sm8150_intf,
2724af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2725af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
272653324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
272753324b99SAbhinav Kumar 	.wb = sm8250_wb,
2728af776a3eSJonathan Marek 	.reg_dma_count = 1,
2729481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
2730477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
2731597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
2732af776a3eSJonathan Marek };
2733af776a3eSJonathan Marek 
27340e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = {
27350e91bcbbSRobert Foss 	.caps = &sm8350_dpu_caps,
27360e91bcbbSRobert Foss 	.mdp_count = ARRAY_SIZE(sm8350_mdp),
27370e91bcbbSRobert Foss 	.mdp = sm8350_mdp,
27380e91bcbbSRobert Foss 	.ctl_count = ARRAY_SIZE(sm8350_ctl),
27390e91bcbbSRobert Foss 	.ctl = sm8350_ctl,
27400e91bcbbSRobert Foss 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
27410e91bcbbSRobert Foss 	.sspp = sm8250_sspp,
27420e91bcbbSRobert Foss 	.mixer_count = ARRAY_SIZE(sm8150_lm),
27430e91bcbbSRobert Foss 	.mixer = sm8150_lm,
27440e91bcbbSRobert Foss 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
27450e91bcbbSRobert Foss 	.dspp = sm8150_dspp,
27460e91bcbbSRobert Foss 	.pingpong_count = ARRAY_SIZE(sm8350_pp),
27470e91bcbbSRobert Foss 	.pingpong = sm8350_pp,
27480e91bcbbSRobert Foss 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
27490e91bcbbSRobert Foss 	.merge_3d = sm8350_merge_3d,
27500e91bcbbSRobert Foss 	.intf_count = ARRAY_SIZE(sm8350_intf),
27510e91bcbbSRobert Foss 	.intf = sm8350_intf,
27520e91bcbbSRobert Foss 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
27530e91bcbbSRobert Foss 	.vbif = sdm845_vbif,
27540e91bcbbSRobert Foss 	.reg_dma_count = 1,
2755764b9481SDmitry Baryshkov 	.dma_cfg = &sm8350_regdma,
27560e91bcbbSRobert Foss 	.perf = &sm8350_perf_data,
27570e91bcbbSRobert Foss 	.mdss_irqs = IRQ_SM8350_MASK,
27580e91bcbbSRobert Foss };
27590e91bcbbSRobert Foss 
2760100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = {
2761100d7ef6SDmitry Baryshkov 	.caps = &sm8450_dpu_caps,
2762100d7ef6SDmitry Baryshkov 	.mdp_count = ARRAY_SIZE(sm8450_mdp),
2763100d7ef6SDmitry Baryshkov 	.mdp = sm8450_mdp,
2764100d7ef6SDmitry Baryshkov 	.ctl_count = ARRAY_SIZE(sm8450_ctl),
2765100d7ef6SDmitry Baryshkov 	.ctl = sm8450_ctl,
2766100d7ef6SDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8450_sspp),
2767100d7ef6SDmitry Baryshkov 	.sspp = sm8450_sspp,
2768100d7ef6SDmitry Baryshkov 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2769100d7ef6SDmitry Baryshkov 	.mixer = sm8150_lm,
2770100d7ef6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2771100d7ef6SDmitry Baryshkov 	.dspp = sm8150_dspp,
2772100d7ef6SDmitry Baryshkov 	.pingpong_count = ARRAY_SIZE(sm8450_pp),
2773100d7ef6SDmitry Baryshkov 	.pingpong = sm8450_pp,
2774100d7ef6SDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8450_merge_3d),
2775100d7ef6SDmitry Baryshkov 	.merge_3d = sm8450_merge_3d,
2776100d7ef6SDmitry Baryshkov 	.intf_count = ARRAY_SIZE(sm8450_intf),
2777100d7ef6SDmitry Baryshkov 	.intf = sm8450_intf,
2778100d7ef6SDmitry Baryshkov 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2779100d7ef6SDmitry Baryshkov 	.vbif = sdm845_vbif,
2780100d7ef6SDmitry Baryshkov 	.reg_dma_count = 1,
2781100d7ef6SDmitry Baryshkov 	.dma_cfg = &sm8450_regdma,
2782100d7ef6SDmitry Baryshkov 	.perf = &sm8450_perf_data,
2783100d7ef6SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8450_MASK,
2784100d7ef6SDmitry Baryshkov };
2785100d7ef6SDmitry Baryshkov 
2786efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = {
2787efcd0107SNeil Armstrong 	.caps = &sm8550_dpu_caps,
2788efcd0107SNeil Armstrong 	.mdp_count = ARRAY_SIZE(sm8550_mdp),
2789efcd0107SNeil Armstrong 	.mdp = sm8550_mdp,
2790efcd0107SNeil Armstrong 	.ctl_count = ARRAY_SIZE(sm8550_ctl),
2791efcd0107SNeil Armstrong 	.ctl = sm8550_ctl,
2792efcd0107SNeil Armstrong 	.sspp_count = ARRAY_SIZE(sm8550_sspp),
2793efcd0107SNeil Armstrong 	.sspp = sm8550_sspp,
2794efcd0107SNeil Armstrong 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2795efcd0107SNeil Armstrong 	.mixer = sm8150_lm,
2796efcd0107SNeil Armstrong 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2797efcd0107SNeil Armstrong 	.dspp = sm8150_dspp,
2798efcd0107SNeil Armstrong 	.pingpong_count = ARRAY_SIZE(sm8550_pp),
2799efcd0107SNeil Armstrong 	.pingpong = sm8550_pp,
2800efcd0107SNeil Armstrong 	.merge_3d_count = ARRAY_SIZE(sm8550_merge_3d),
2801efcd0107SNeil Armstrong 	.merge_3d = sm8550_merge_3d,
2802efcd0107SNeil Armstrong 	.intf_count = ARRAY_SIZE(sm8550_intf),
2803efcd0107SNeil Armstrong 	.intf = sm8550_intf,
2804efcd0107SNeil Armstrong 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2805efcd0107SNeil Armstrong 	.vbif = sdm845_vbif,
2806efcd0107SNeil Armstrong 	.reg_dma_count = 1,
2807efcd0107SNeil Armstrong 	.dma_cfg = &sm8450_regdma,
2808efcd0107SNeil Armstrong 	.perf = &sm8450_perf_data,
2809efcd0107SNeil Armstrong 	.mdss_irqs = IRQ_SM8450_MASK,
2810efcd0107SNeil Armstrong };
2811efcd0107SNeil Armstrong 
2812de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
2813591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
2814591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
2815591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
2816591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
2817591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
2818591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
2819591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
2820fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2821fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
2822591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
2823591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
2824591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
2825591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
2826591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
2827591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
2828591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2829591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
2830477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
2831597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
2832591e34a0SKrishna Manikandan };
2833591e34a0SKrishna Manikandan 
2834de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
28355334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
28365334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
28375334087eSLoic Poulain 	.mdp = qcm2290_mdp,
28385334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
28395334087eSLoic Poulain 	.ctl = qcm2290_ctl,
28405334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
28415334087eSLoic Poulain 	.sspp = qcm2290_sspp,
28425334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
28435334087eSLoic Poulain 	.mixer = qcm2290_lm,
28445334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
28455334087eSLoic Poulain 	.dspp = qcm2290_dspp,
28465334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
28475334087eSLoic Poulain 	.pingpong = qcm2290_pp,
28485334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
28495334087eSLoic Poulain 	.intf = qcm2290_intf,
28505334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
28515334087eSLoic Poulain 	.vbif = sdm845_vbif,
2852477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
28535334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
28545334087eSLoic Poulain };
28555334087eSLoic Poulain 
2856abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
2857de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
2858de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
2859de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
2860de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
2861de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
2862de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
2863de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
2864de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
2865de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
28663581b706SAdam Skladowski 	{ .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg},
2867de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
28680e91bcbbSRobert Foss 	{ .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg},
2869de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
28704a352c2fSBjorn Andersson 	{ .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg},
2871100d7ef6SDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg},
2872efcd0107SNeil Armstrong 	{ .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg},
287325fdd593SJeykumar Sankaran };
287425fdd593SJeykumar Sankaran 
2875de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
287625fdd593SJeykumar Sankaran {
287725fdd593SJeykumar Sankaran 	int i;
287825fdd593SJeykumar Sankaran 
287925fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
2880de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
2881de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
288225fdd593SJeykumar Sankaran 	}
288325fdd593SJeykumar Sankaran 
288425fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
288532084967SDmitry Baryshkov 
288625fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
288725fdd593SJeykumar Sankaran }
288825fdd593SJeykumar Sankaran 
2889