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 	.has_src_split = true,
32794391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
32894391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
32994391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
33094391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
33194391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
33294391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
33394391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
33494391a14SAngeloGioacchino Del Regno };
33594391a14SAngeloGioacchino Del Regno 
336c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
337da06be8bSDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_LINE_WIDTH,
338c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
339c162352eSKonrad Dybcio 	.has_dim_layer = true,
340c162352eSKonrad Dybcio 	.has_idle_pc = true,
341c162352eSKonrad Dybcio 	.max_linewidth = 2160,
342c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
343c162352eSKonrad Dybcio };
344c162352eSKonrad Dybcio 
34525fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
34625fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
34725fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
34825fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
34925fdd593SJeykumar Sankaran 	.has_src_split = true,
35025fdd593SJeykumar Sankaran 	.has_dim_layer = true,
35125fdd593SJeykumar Sankaran 	.has_idle_pc = true,
35242a558b7SKalyan Thota 	.has_3d_merge = true,
3537e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3547e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3557e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3567e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
35725fdd593SJeykumar Sankaran };
35825fdd593SJeykumar Sankaran 
3597bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3607bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3617bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3627bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3637bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3647bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3657e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3667e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3677bdc0c4bSKalyan Thota };
3687bdc0c4bSKalyan Thota 
3693581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = {
370da06be8bSDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_LINE_WIDTH,
3713581b706SAdam Skladowski 	.max_mixer_blendstages = 0x4,
37238164e99SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3733581b706SAdam Skladowski 	.has_dim_layer = true,
3743581b706SAdam Skladowski 	.has_idle_pc = true,
3753581b706SAdam Skladowski 	.max_linewidth = 2160,
3763581b706SAdam Skladowski 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3773581b706SAdam Skladowski };
3783581b706SAdam Skladowski 
379386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
380386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
381386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
382386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
383386fced3SJonathan Marek 	.has_src_split = true,
384386fced3SJonathan Marek 	.has_dim_layer = true,
385386fced3SJonathan Marek 	.has_idle_pc = true,
386386fced3SJonathan Marek 	.has_3d_merge = true,
387386fced3SJonathan Marek 	.max_linewidth = 4096,
388386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
389386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
390386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
391386fced3SJonathan Marek };
392386fced3SJonathan Marek 
393f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
394f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
395f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
396f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
397f3af2d6eSRob Clark 	.has_src_split = true,
398f3af2d6eSRob Clark 	.has_dim_layer = true,
399f3af2d6eSRob Clark 	.has_idle_pc = true,
400f3af2d6eSRob Clark 	.has_3d_merge = true,
401f3af2d6eSRob Clark 	.max_linewidth = 4096,
402f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
403f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
404f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
405f3af2d6eSRob Clark };
406f3af2d6eSRob Clark 
4074a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = {
4084a352c2fSBjorn Andersson 	.max_mixer_width = 2560,
4094a352c2fSBjorn Andersson 	.max_mixer_blendstages = 11,
410b3587cb6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
4114a352c2fSBjorn Andersson 	.has_src_split = true,
4124a352c2fSBjorn Andersson 	.has_dim_layer = true,
4134a352c2fSBjorn Andersson 	.has_idle_pc = true,
4144a352c2fSBjorn Andersson 	.has_3d_merge = true,
4154a352c2fSBjorn Andersson 	.max_linewidth = 5120,
4164a352c2fSBjorn Andersson 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4174a352c2fSBjorn Andersson };
4184a352c2fSBjorn Andersson 
419af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
420af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
421af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
42203c0c3cbSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
423af776a3eSJonathan Marek 	.has_src_split = true,
424af776a3eSJonathan Marek 	.has_dim_layer = true,
425af776a3eSJonathan Marek 	.has_idle_pc = true,
426af776a3eSJonathan Marek 	.has_3d_merge = true,
427af776a3eSJonathan Marek 	.max_linewidth = 4096,
428af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
429af776a3eSJonathan Marek };
430af776a3eSJonathan Marek 
4310e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = {
4320e91bcbbSRobert Foss 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
4330e91bcbbSRobert Foss 	.max_mixer_blendstages = 0xb,
43403c0c3cbSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
4350e91bcbbSRobert Foss 	.has_src_split = true,
4360e91bcbbSRobert Foss 	.has_dim_layer = true,
4370e91bcbbSRobert Foss 	.has_idle_pc = true,
4380e91bcbbSRobert Foss 	.has_3d_merge = true,
4390e91bcbbSRobert Foss 	.max_linewidth = 4096,
4400e91bcbbSRobert Foss 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4410e91bcbbSRobert Foss };
4420e91bcbbSRobert Foss 
443100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = {
444100d7ef6SDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
445100d7ef6SDmitry Baryshkov 	.max_mixer_blendstages = 0xb,
446100d7ef6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
447100d7ef6SDmitry Baryshkov 	.has_src_split = true,
448100d7ef6SDmitry Baryshkov 	.has_dim_layer = true,
449100d7ef6SDmitry Baryshkov 	.has_idle_pc = true,
450100d7ef6SDmitry Baryshkov 	.has_3d_merge = true,
451100d7ef6SDmitry Baryshkov 	.max_linewidth = 5120,
452100d7ef6SDmitry Baryshkov 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
453100d7ef6SDmitry Baryshkov };
454100d7ef6SDmitry Baryshkov 
455efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = {
456efcd0107SNeil Armstrong 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
457efcd0107SNeil Armstrong 	.max_mixer_blendstages = 0xb,
458d113d267SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
459efcd0107SNeil Armstrong 	.has_src_split = true,
460efcd0107SNeil Armstrong 	.has_dim_layer = true,
461efcd0107SNeil Armstrong 	.has_idle_pc = true,
462efcd0107SNeil Armstrong 	.has_3d_merge = true,
463efcd0107SNeil Armstrong 	.max_linewidth = 5120,
464efcd0107SNeil Armstrong 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
465efcd0107SNeil Armstrong };
466efcd0107SNeil Armstrong 
467591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
468591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
469591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
470591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
471591e34a0SKrishna Manikandan 	.has_dim_layer = true,
472591e34a0SKrishna Manikandan 	.has_idle_pc = true,
473591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
474591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
475591e34a0SKrishna Manikandan };
476591e34a0SKrishna Manikandan 
477*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg msm8998_ubwc_cfg = {
478*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_10,
479*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x2,
480*fbbd8cceSDmitry Baryshkov };
481*fbbd8cceSDmitry Baryshkov 
482*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg qcm2290_ubwc_cfg = {
483*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x2,
484*fbbd8cceSDmitry Baryshkov };
485*fbbd8cceSDmitry Baryshkov 
486*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sdm845_ubwc_cfg = {
487*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_20,
488*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x2,
489*fbbd8cceSDmitry Baryshkov };
490*fbbd8cceSDmitry Baryshkov 
491*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc7180_ubwc_cfg = {
492*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_20,
493*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x3,
494*fbbd8cceSDmitry Baryshkov };
495*fbbd8cceSDmitry Baryshkov 
496*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm6115_ubwc_cfg = {
497*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_10,
498*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x1,
499*fbbd8cceSDmitry Baryshkov 	.ubwc_swizzle = 0x7,
500*fbbd8cceSDmitry Baryshkov };
501*fbbd8cceSDmitry Baryshkov 
502*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8150_ubwc_cfg = {
503*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_30,
504*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x2,
505*fbbd8cceSDmitry Baryshkov };
506*fbbd8cceSDmitry Baryshkov 
507*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc8180x_ubwc_cfg = {
508*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_30,
509*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x3,
510*fbbd8cceSDmitry Baryshkov };
511*fbbd8cceSDmitry Baryshkov 
512*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc8280xp_ubwc_cfg = {
513*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
514*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 2,
515*fbbd8cceSDmitry Baryshkov 	.ubwc_swizzle = 6,
516*fbbd8cceSDmitry Baryshkov };
517*fbbd8cceSDmitry Baryshkov 
518*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8250_ubwc_cfg = {
519*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
520*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
521*fbbd8cceSDmitry Baryshkov 	.ubwc_swizzle = 0x6,
522*fbbd8cceSDmitry Baryshkov };
523*fbbd8cceSDmitry Baryshkov 
524*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8350_ubwc_cfg = {
525*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
526*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
527*fbbd8cceSDmitry Baryshkov };
528*fbbd8cceSDmitry Baryshkov 
529*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8450_ubwc_cfg = {
530*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
531*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
532*fbbd8cceSDmitry Baryshkov 	.ubwc_swizzle = 0x6,
533*fbbd8cceSDmitry Baryshkov };
534*fbbd8cceSDmitry Baryshkov 
535*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8550_ubwc_cfg = {
536*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
537*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
538*fbbd8cceSDmitry Baryshkov };
539*fbbd8cceSDmitry Baryshkov 
540*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc7280_ubwc_cfg = {
541*fbbd8cceSDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_30,
542*fbbd8cceSDmitry Baryshkov 	.highest_bank_bit = 0x1,
543*fbbd8cceSDmitry Baryshkov 	.ubwc_swizzle = 0x6,
544*fbbd8cceSDmitry Baryshkov };
545*fbbd8cceSDmitry Baryshkov 
54694391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
54794391a14SAngeloGioacchino Del Regno 	{
54894391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
54994391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
55094391a14SAngeloGioacchino Del Regno 	.features = 0,
55194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
55294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
55394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
55494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
55594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
55694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
55794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
55894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
55994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
56094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
56194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
56294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
56394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
56494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
56594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
56694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
56794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
56894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
56994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
57094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
57194391a14SAngeloGioacchino Del Regno 	},
57294391a14SAngeloGioacchino Del Regno };
57394391a14SAngeloGioacchino Del Regno 
574abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
57525fdd593SJeykumar Sankaran 	{
57625fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
57725fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
57803490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
57925fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
58025fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
58125fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
58225fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
58325fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
58425fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
58525fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
58625fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
58725fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
58825fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
58925fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
59025fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
591d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
59225fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
593d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
59425fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
59525fdd593SJeykumar Sankaran 	},
59625fdd593SJeykumar Sankaran };
59725fdd593SJeykumar Sankaran 
5987bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
5997bdc0c4bSKalyan Thota 	{
6007bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
6017bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
6027bdc0c4bSKalyan Thota 	.features = 0,
6037bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6047bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
6057bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6067bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
607d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
6087b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
609d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
6107b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
611255f0561SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
612255f0561SDmitry Baryshkov 		.reg_off = 0x3B8, .bit_off = 24},
6137bdc0c4bSKalyan Thota 	},
6147bdc0c4bSKalyan Thota };
6157bdc0c4bSKalyan Thota 
616f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
617f3af2d6eSRob Clark 	{
618f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
619f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
62010a88954SDmitry Baryshkov 	.features = BIT(DPU_MDP_AUDIO_SELECT),
621f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
622f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
623f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
624f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
625f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
626f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
627f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
628f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
629f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
630f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
631f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
632f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
633d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
634f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
635d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
636f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
637f3af2d6eSRob Clark 	},
638f3af2d6eSRob Clark };
639f3af2d6eSRob Clark 
6403581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = {
6413581b706SAdam Skladowski 	{
6423581b706SAdam Skladowski 	.name = "top_0", .id = MDP_TOP,
6433581b706SAdam Skladowski 	.base = 0x0, .len = 0x494,
6443581b706SAdam Skladowski 	.features = 0,
6453581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6463581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 0},
6473581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6483581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 8},
6493581b706SAdam Skladowski 	},
6503581b706SAdam Skladowski };
6513581b706SAdam Skladowski 
652af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
653af776a3eSJonathan Marek 	{
654af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
655b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
656af776a3eSJonathan Marek 	.features = 0,
657af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
658af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
659af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
660af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
661af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
662af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
663af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
664af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
665af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
666af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
667af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
668af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
669d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
670af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
671d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
672af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
673af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
674af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
67553324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
67653324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
677af776a3eSJonathan Marek 	},
678af776a3eSJonathan Marek };
679af776a3eSJonathan Marek 
6800e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = {
6810e91bcbbSRobert Foss 	{
6820e91bcbbSRobert Foss 	.name = "top_0", .id = MDP_TOP,
6830e91bcbbSRobert Foss 	.base = 0x0, .len = 0x494,
6840e91bcbbSRobert Foss 	.features = 0,
6850e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6860e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 0},
6870e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
6880e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 0},
6890e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
6900e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 0},
6910e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
6920e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 0},
6930e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6940e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 8},
6950e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
6960e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 8},
697d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
6980e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 8},
699d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
7000e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 8},
7010e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
7020e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 20},
7030e91bcbbSRobert Foss 	},
7040e91bcbbSRobert Foss };
7050e91bcbbSRobert Foss 
706100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = {
707100d7ef6SDmitry Baryshkov 	{
708100d7ef6SDmitry Baryshkov 	.name = "top_0", .id = MDP_TOP,
709100d7ef6SDmitry Baryshkov 	.base = 0x0, .len = 0x494,
710100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
711100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
712100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 0},
713100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
714100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 0},
715100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
716100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 0},
717100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
718100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 0},
719100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
720100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 8},
721100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
722100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 8},
723d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
724100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 8},
725d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
726100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 8},
727100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
728100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 20},
729100d7ef6SDmitry Baryshkov 	},
730100d7ef6SDmitry Baryshkov };
731100d7ef6SDmitry Baryshkov 
732591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
733591e34a0SKrishna Manikandan 	{
734591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
735591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
736591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
737591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
738591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
739591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
740d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
741591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
742d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
743591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
744591e34a0SKrishna Manikandan 	},
745591e34a0SKrishna Manikandan };
746591e34a0SKrishna Manikandan 
7474a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = {
7484a352c2fSBjorn Andersson 	{
7494a352c2fSBjorn Andersson 	.name = "top_0", .id = MDP_TOP,
7504a352c2fSBjorn Andersson 	.base = 0x0, .len = 0x494,
7510df979f4SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
7524a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0},
7534a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0},
7544a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0},
7554a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0},
7564a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8},
7574a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8},
758d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8},
759d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 8},
7604a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20},
7614a352c2fSBjorn Andersson 	},
7624a352c2fSBjorn Andersson };
7634a352c2fSBjorn Andersson 
764efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = {
765efcd0107SNeil Armstrong 	{
766efcd0107SNeil Armstrong 	.name = "top_0", .id = MDP_TOP,
767efcd0107SNeil Armstrong 	.base = 0, .len = 0x494,
768efcd0107SNeil Armstrong 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
769efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
770efcd0107SNeil Armstrong 			.reg_off = 0x4330, .bit_off = 0},
771efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
772efcd0107SNeil Armstrong 			.reg_off = 0x6330, .bit_off = 0},
773efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
774efcd0107SNeil Armstrong 			.reg_off = 0x8330, .bit_off = 0},
775efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
776efcd0107SNeil Armstrong 			.reg_off = 0xa330, .bit_off = 0},
777efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
778efcd0107SNeil Armstrong 			.reg_off = 0x24330, .bit_off = 0},
779efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
780efcd0107SNeil Armstrong 			.reg_off = 0x26330, .bit_off = 0},
781efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
782efcd0107SNeil Armstrong 			.reg_off = 0x28330, .bit_off = 0},
783efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
784efcd0107SNeil Armstrong 			.reg_off = 0x2a330, .bit_off = 0},
785d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA4] = {
786efcd0107SNeil Armstrong 			.reg_off = 0x2c330, .bit_off = 0},
787d6181c18SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA5] = {
788efcd0107SNeil Armstrong 			.reg_off = 0x2e330, .bit_off = 0},
789efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
790efcd0107SNeil Armstrong 			.reg_off = 0x2bc, .bit_off = 20},
791efcd0107SNeil Armstrong 	},
792efcd0107SNeil Armstrong };
793efcd0107SNeil Armstrong 
7945334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
7955334087eSLoic Poulain 	{
7965334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
7975334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
7985334087eSLoic Poulain 	.features = 0,
7995334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
8005334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
8015334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
8025334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
8035334087eSLoic Poulain 	},
8045334087eSLoic Poulain };
8055334087eSLoic Poulain 
80625fdd593SJeykumar Sankaran /*************************************************************
80725fdd593SJeykumar Sankaran  * CTL sub blocks config
80825fdd593SJeykumar Sankaran  *************************************************************/
80994391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
81094391a14SAngeloGioacchino Del Regno 	{
81194391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
81294391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
81394391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
81494391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
81594391a14SAngeloGioacchino Del Regno 	},
81694391a14SAngeloGioacchino Del Regno 	{
81794391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
81894391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
81994391a14SAngeloGioacchino Del Regno 	.features = 0,
82094391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
82194391a14SAngeloGioacchino Del Regno 	},
82294391a14SAngeloGioacchino Del Regno 	{
82394391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
82494391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
82594391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
82694391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
82794391a14SAngeloGioacchino Del Regno 	},
82894391a14SAngeloGioacchino Del Regno 	{
82994391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
83094391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
83194391a14SAngeloGioacchino Del Regno 	.features = 0,
83294391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
83394391a14SAngeloGioacchino Del Regno 	},
83494391a14SAngeloGioacchino Del Regno 	{
83594391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
83694391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
83794391a14SAngeloGioacchino Del Regno 	.features = 0,
83894391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
83994391a14SAngeloGioacchino Del Regno 	},
84094391a14SAngeloGioacchino Del Regno };
84194391a14SAngeloGioacchino Del Regno 
842abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
84325fdd593SJeykumar Sankaran 	{
84425fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
84525fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
846667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
847667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
84825fdd593SJeykumar Sankaran 	},
84925fdd593SJeykumar Sankaran 	{
85025fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
85125fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
852667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
853667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
85425fdd593SJeykumar Sankaran 	},
85525fdd593SJeykumar Sankaran 	{
85625fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
85725fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
858667e9985SDmitry Baryshkov 	.features = 0,
859667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
86025fdd593SJeykumar Sankaran 	},
86125fdd593SJeykumar Sankaran 	{
86225fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
86325fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
864667e9985SDmitry Baryshkov 	.features = 0,
865667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
86625fdd593SJeykumar Sankaran 	},
86725fdd593SJeykumar Sankaran 	{
86825fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
86925fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
870667e9985SDmitry Baryshkov 	.features = 0,
871667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
87225fdd593SJeykumar Sankaran 	},
87325fdd593SJeykumar Sankaran };
87425fdd593SJeykumar Sankaran 
8757bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
8767bdc0c4bSKalyan Thota 	{
8777bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
878ce6bd00aSDmitry Baryshkov 	.base = 0x1000, .len = 0x1dc,
879667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
880667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8817bdc0c4bSKalyan Thota 	},
8827bdc0c4bSKalyan Thota 	{
8837bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
884ce6bd00aSDmitry Baryshkov 	.base = 0x1200, .len = 0x1dc,
885667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
886667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8877bdc0c4bSKalyan Thota 	},
8887bdc0c4bSKalyan Thota 	{
8897bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
890ce6bd00aSDmitry Baryshkov 	.base = 0x1400, .len = 0x1dc,
891667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
892667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8937bdc0c4bSKalyan Thota 	},
8947bdc0c4bSKalyan Thota };
8957bdc0c4bSKalyan Thota 
8964a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = {
8974a352c2fSBjorn Andersson 	{
8984a352c2fSBjorn Andersson 	.name = "ctl_0", .id = CTL_0,
8994a352c2fSBjorn Andersson 	.base = 0x15000, .len = 0x204,
9004a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
9014a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
9024a352c2fSBjorn Andersson 	},
9034a352c2fSBjorn Andersson 	{
9044a352c2fSBjorn Andersson 	.name = "ctl_1", .id = CTL_1,
9054a352c2fSBjorn Andersson 	.base = 0x16000, .len = 0x204,
9064a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
9074a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
9084a352c2fSBjorn Andersson 	},
9094a352c2fSBjorn Andersson 	{
9104a352c2fSBjorn Andersson 	.name = "ctl_2", .id = CTL_2,
9114a352c2fSBjorn Andersson 	.base = 0x17000, .len = 0x204,
9124a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
9134a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
9144a352c2fSBjorn Andersson 	},
9154a352c2fSBjorn Andersson 	{
9164a352c2fSBjorn Andersson 	.name = "ctl_3", .id = CTL_3,
9174a352c2fSBjorn Andersson 	.base = 0x18000, .len = 0x204,
9184a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
9194a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
9204a352c2fSBjorn Andersson 	},
9214a352c2fSBjorn Andersson 	{
9224a352c2fSBjorn Andersson 	.name = "ctl_4", .id = CTL_4,
9234a352c2fSBjorn Andersson 	.base = 0x19000, .len = 0x204,
9244a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
9254a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
9264a352c2fSBjorn Andersson 	},
9274a352c2fSBjorn Andersson 	{
9284a352c2fSBjorn Andersson 	.name = "ctl_5", .id = CTL_5,
9294a352c2fSBjorn Andersson 	.base = 0x1a000, .len = 0x204,
9304a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
9314a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
9324a352c2fSBjorn Andersson 	},
9334a352c2fSBjorn Andersson };
9344a352c2fSBjorn Andersson 
935386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
936386fced3SJonathan Marek 	{
937386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
938386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
939667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
940667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
941386fced3SJonathan Marek 	},
942386fced3SJonathan Marek 	{
943386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
944386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
945667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
946667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
947386fced3SJonathan Marek 	},
948386fced3SJonathan Marek 	{
949386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
950386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
951667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
952667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
953386fced3SJonathan Marek 	},
954386fced3SJonathan Marek 	{
955386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
956386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
957667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
958667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
959386fced3SJonathan Marek 	},
960386fced3SJonathan Marek 	{
961386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
962386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
963667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
964667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
965386fced3SJonathan Marek 	},
966386fced3SJonathan Marek 	{
967386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
968386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
969667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
970667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
971386fced3SJonathan Marek 	},
972386fced3SJonathan Marek };
973386fced3SJonathan Marek 
9740e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = {
9750e91bcbbSRobert Foss 	{
9760e91bcbbSRobert Foss 	.name = "ctl_0", .id = CTL_0,
9770e91bcbbSRobert Foss 	.base = 0x15000, .len = 0x1e8,
9780e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9790e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
9800e91bcbbSRobert Foss 	},
9810e91bcbbSRobert Foss 	{
9820e91bcbbSRobert Foss 	.name = "ctl_1", .id = CTL_1,
9830e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9840e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9850e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
9860e91bcbbSRobert Foss 	},
9870e91bcbbSRobert Foss 	{
9880e91bcbbSRobert Foss 	.name = "ctl_2", .id = CTL_2,
9890e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9900e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9910e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
9920e91bcbbSRobert Foss 	},
9930e91bcbbSRobert Foss 	{
9940e91bcbbSRobert Foss 	.name = "ctl_3", .id = CTL_3,
9950e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9960e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9970e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
9980e91bcbbSRobert Foss 	},
9990e91bcbbSRobert Foss 	{
10000e91bcbbSRobert Foss 	.name = "ctl_4", .id = CTL_4,
10010e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
10020e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
10030e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
10040e91bcbbSRobert Foss 	},
10050e91bcbbSRobert Foss 	{
10060e91bcbbSRobert Foss 	.name = "ctl_5", .id = CTL_5,
10070e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
10080e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
10090e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
10100e91bcbbSRobert Foss 	},
10110e91bcbbSRobert Foss };
10120e91bcbbSRobert Foss 
1013100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = {
1014100d7ef6SDmitry Baryshkov 	{
1015100d7ef6SDmitry Baryshkov 	.name = "ctl_0", .id = CTL_0,
1016100d7ef6SDmitry Baryshkov 	.base = 0x15000, .len = 0x204,
1017100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE),
1018100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1019100d7ef6SDmitry Baryshkov 	},
1020100d7ef6SDmitry Baryshkov 	{
1021100d7ef6SDmitry Baryshkov 	.name = "ctl_1", .id = CTL_1,
10226c021d77SDmitry Baryshkov 	.base = 0x16000, .len = 0x204,
10230e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
1024100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1025100d7ef6SDmitry Baryshkov 	},
1026100d7ef6SDmitry Baryshkov 	{
1027100d7ef6SDmitry Baryshkov 	.name = "ctl_2", .id = CTL_2,
10286c021d77SDmitry Baryshkov 	.base = 0x17000, .len = 0x204,
10290e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1030100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1031100d7ef6SDmitry Baryshkov 	},
1032100d7ef6SDmitry Baryshkov 	{
1033100d7ef6SDmitry Baryshkov 	.name = "ctl_3", .id = CTL_3,
10346c021d77SDmitry Baryshkov 	.base = 0x18000, .len = 0x204,
10350e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1036100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1037100d7ef6SDmitry Baryshkov 	},
1038100d7ef6SDmitry Baryshkov 	{
1039100d7ef6SDmitry Baryshkov 	.name = "ctl_4", .id = CTL_4,
10406c021d77SDmitry Baryshkov 	.base = 0x19000, .len = 0x204,
10410e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1042100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1043100d7ef6SDmitry Baryshkov 	},
1044100d7ef6SDmitry Baryshkov 	{
1045100d7ef6SDmitry Baryshkov 	.name = "ctl_5", .id = CTL_5,
10466c021d77SDmitry Baryshkov 	.base = 0x1a000, .len = 0x204,
10470e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1048100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1049100d7ef6SDmitry Baryshkov 	},
1050100d7ef6SDmitry Baryshkov };
1051100d7ef6SDmitry Baryshkov 
1052efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = {
1053efcd0107SNeil Armstrong 	{
1054efcd0107SNeil Armstrong 	.name = "ctl_0", .id = CTL_0,
1055efcd0107SNeil Armstrong 	.base = 0x15000, .len = 0x290,
1056e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1057efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1058efcd0107SNeil Armstrong 	},
1059efcd0107SNeil Armstrong 	{
1060efcd0107SNeil Armstrong 	.name = "ctl_1", .id = CTL_1,
1061efcd0107SNeil Armstrong 	.base = 0x16000, .len = 0x290,
1062e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1063efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1064efcd0107SNeil Armstrong 	},
1065efcd0107SNeil Armstrong 	{
1066efcd0107SNeil Armstrong 	.name = "ctl_2", .id = CTL_2,
1067efcd0107SNeil Armstrong 	.base = 0x17000, .len = 0x290,
1068e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1069efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1070efcd0107SNeil Armstrong 	},
1071efcd0107SNeil Armstrong 	{
1072efcd0107SNeil Armstrong 	.name = "ctl_3", .id = CTL_3,
1073efcd0107SNeil Armstrong 	.base = 0x18000, .len = 0x290,
1074e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1075efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1076efcd0107SNeil Armstrong 	},
1077efcd0107SNeil Armstrong 	{
1078efcd0107SNeil Armstrong 	.name = "ctl_4", .id = CTL_4,
1079efcd0107SNeil Armstrong 	.base = 0x19000, .len = 0x290,
1080e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1081efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1082efcd0107SNeil Armstrong 	},
1083efcd0107SNeil Armstrong 	{
1084efcd0107SNeil Armstrong 	.name = "ctl_5", .id = CTL_5,
1085efcd0107SNeil Armstrong 	.base = 0x1a000, .len = 0x290,
1086e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1087efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1088efcd0107SNeil Armstrong 	},
1089efcd0107SNeil Armstrong };
1090efcd0107SNeil Armstrong 
1091591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
1092591e34a0SKrishna Manikandan 	{
1093591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
1094591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
1095667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1096667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1097591e34a0SKrishna Manikandan 	},
1098591e34a0SKrishna Manikandan 	{
1099591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
1100591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
1101667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1102667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1103591e34a0SKrishna Manikandan 	},
1104591e34a0SKrishna Manikandan 	{
1105591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
1106591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
1107667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1108667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1109591e34a0SKrishna Manikandan 	},
1110591e34a0SKrishna Manikandan 	{
1111591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
1112591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
1113667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1114667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1115591e34a0SKrishna Manikandan 	},
1116591e34a0SKrishna Manikandan };
1117591e34a0SKrishna Manikandan 
11185334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
11195334087eSLoic Poulain 	{
11205334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
11215334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
11225334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
11235334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
11245334087eSLoic Poulain 	},
11255334087eSLoic Poulain };
11265334087eSLoic Poulain 
112725fdd593SJeykumar Sankaran /*************************************************************
112825fdd593SJeykumar Sankaran  * SSPP sub blocks config
112925fdd593SJeykumar Sankaran  *************************************************************/
113025fdd593SJeykumar Sankaran 
113125fdd593SJeykumar Sankaran /* SSPP common configuration */
1132b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
113325fdd593SJeykumar Sankaran 	{ \
113425fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
113525fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
113625fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
113725fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
113825fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
113925fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1140b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
114125fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
114225fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
114325fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
114425fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
114525fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
1146e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
114725fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1148e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1149dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
1150dabfdd89SVinod Polimera 	}
1151dabfdd89SVinod Polimera 
1152dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
1153dabfdd89SVinod Polimera 	{ \
1154dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
1155dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
1156dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
1157dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
1158dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
1159dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1160dabfdd89SVinod Polimera 		.id = qseed_ver, \
1161dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
1162dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
1163dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
1164dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
1165dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
1166dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
1167dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
1168dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1169dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
117025fdd593SJeykumar Sankaran 	}
117125fdd593SJeykumar Sankaran 
117225fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
117325fdd593SJeykumar Sankaran 	{ \
117425fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
117525fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
117625fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
117725fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
117825fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
117925fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
1180e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
118125fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1182e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
118325fdd593SJeykumar Sankaran 	}
118425fdd593SJeykumar Sankaran 
118594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
118694391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
118794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
118894391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
118994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
119094391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
119194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
119294391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
119394391a14SAngeloGioacchino Del Regno 
1194dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
1195dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
1196dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
1197dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
1198dabfdd89SVinod Polimera };
1199dabfdd89SVinod Polimera 
1200b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
1201b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
1202b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
1203b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
1204b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
1205b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
1206b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
1207b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
120825fdd593SJeykumar Sankaran 
120925fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
121025fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
121125fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
121225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
121325fdd593SJeykumar Sankaran 
12148f940ddbSKonrad Dybcio #define SSPP_BLK(_name, _id, _base, _len, _features, \
121507ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
121625fdd593SJeykumar Sankaran 	{ \
121725fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
12188f940ddbSKonrad Dybcio 	.base = _base, .len = _len, \
121907ca1fc0SSravanthi Kollukuduru 	.features = _features, \
122025fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
122125fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
122207ca1fc0SSravanthi Kollukuduru 	.type = _type, \
122325fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
122425fdd593SJeykumar Sankaran 	}
122525fdd593SJeykumar Sankaran 
122694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
12278f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1ac, VIG_MSM8998_MASK,
122894391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12298f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1ac, VIG_MSM8998_MASK,
123094391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
12318f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1ac, VIG_MSM8998_MASK,
123294391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
12338f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1ac, VIG_MSM8998_MASK,
123494391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
12358f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1ac, DMA_MSM8998_MASK,
123694391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12378f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1ac, DMA_MSM8998_MASK,
123894391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
12398f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1ac, DMA_CURSOR_MSM8998_MASK,
12400abb6a24SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
12418f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1ac, DMA_CURSOR_MSM8998_MASK,
12420abb6a24SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
124394391a14SAngeloGioacchino Del Regno };
124494391a14SAngeloGioacchino Del Regno 
1245abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
12468f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1c8, VIG_SDM845_MASK_SDMA,
124707ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12488f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1c8, VIG_SDM845_MASK_SDMA,
124907ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
12508f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1c8, VIG_SDM845_MASK_SDMA,
125107ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
12528f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1c8, VIG_SDM845_MASK_SDMA,
125307ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
12548f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1c8, DMA_SDM845_MASK_SDMA,
125507ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12568f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1c8, DMA_SDM845_MASK_SDMA,
125707ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
12588f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA,
1259d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
12608f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA,
1261d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
126225fdd593SJeykumar Sankaran };
126325fdd593SJeykumar Sankaran 
1264b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
1265b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
1266b75ab05aSShubhashree Dhar 
1267dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
1268dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
1269dabfdd89SVinod Polimera 
12707bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
12718f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK,
1272b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12738f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK,
12747bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12758f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK,
1276d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
12778f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK,
1278d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
12797bdc0c4bSKalyan Thota };
12807bdc0c4bSKalyan Thota 
12813581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 =
128238164e99SDmitry Baryshkov 				_VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED4);
12833581b706SAdam Skladowski 
12843581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = {
12858f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK,
12863581b706SAdam Skladowski 		sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12878f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK,
12883581b706SAdam Skladowski 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12893581b706SAdam Skladowski };
12903581b706SAdam Skladowski 
1291d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
129203c0c3cbSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4);
1293d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
129403c0c3cbSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4);
1295d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
129603c0c3cbSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4);
1297d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
129803c0c3cbSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4);
1299d21fc5dfSDmitry Baryshkov 
1300d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
13018f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK_SDMA,
1302d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13038f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1f8, VIG_SC7180_MASK_SDMA,
1304d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13058f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1f8, VIG_SC7180_MASK_SDMA,
1306d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13078f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1f8, VIG_SC7180_MASK_SDMA,
1308d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13098f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA,
1310d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13118f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_SDM845_MASK_SDMA,
1312d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13138f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1314d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
13158f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1316d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1317d21fc5dfSDmitry Baryshkov };
1318d21fc5dfSDmitry Baryshkov 
1319100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 =
1320c7da17b6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4);
1321100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 =
1322c7da17b6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4);
1323100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 =
1324c7da17b6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4);
1325100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 =
1326c7da17b6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4);
1327100d7ef6SDmitry Baryshkov 
1328100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = {
13298f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x32c, VIG_SC7180_MASK,
1330100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13318f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x32c, VIG_SC7180_MASK,
1332100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13338f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x32c, VIG_SC7180_MASK,
1334100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13358f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x32c, VIG_SC7180_MASK,
1336100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13378f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x32c, DMA_SDM845_MASK,
1338100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13398f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x32c, DMA_SDM845_MASK,
1340100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13418f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x32c, DMA_CURSOR_SDM845_MASK,
1342d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
13438f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x32c, DMA_CURSOR_SDM845_MASK,
1344d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1345100d7ef6SDmitry Baryshkov };
1346100d7ef6SDmitry Baryshkov 
1347efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 =
1348d113d267SDmitry Baryshkov 				_VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED4);
1349efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 =
1350d113d267SDmitry Baryshkov 				_VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED4);
1351efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 =
1352d113d267SDmitry Baryshkov 				_VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED4);
1353efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 =
1354d113d267SDmitry Baryshkov 				_VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED4);
1355efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5);
1356e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6);
1357efcd0107SNeil Armstrong 
1358efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = {
13598f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x344, VIG_SC7180_MASK,
1360efcd0107SNeil Armstrong 		sm8550_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13618f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x344, VIG_SC7180_MASK,
1362efcd0107SNeil Armstrong 		sm8550_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13638f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x344, VIG_SC7180_MASK,
1364efcd0107SNeil Armstrong 		sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13658f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x344, VIG_SC7180_MASK,
1366efcd0107SNeil Armstrong 		sm8550_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13678f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x344, DMA_SDM845_MASK,
1368efcd0107SNeil Armstrong 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13698f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x344, DMA_SDM845_MASK,
1370efcd0107SNeil Armstrong 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13718f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x344, DMA_SDM845_MASK,
1372efcd0107SNeil Armstrong 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
13738f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x344, DMA_SDM845_MASK,
1374efcd0107SNeil Armstrong 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
13758f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000, 0x344, DMA_CURSOR_SDM845_MASK,
1376d6181c18SDmitry Baryshkov 		sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA4),
13778f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000, 0x344, DMA_CURSOR_SDM845_MASK,
1378d6181c18SDmitry Baryshkov 		sm8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA5),
1379efcd0107SNeil Armstrong };
1380efcd0107SNeil Armstrong 
1381591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
13828f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7280_MASK_SDMA,
1383dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13848f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA,
1385591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13868f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1387d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13888f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA,
1389d6181c18SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
1390591e34a0SKrishna Manikandan };
1391591e34a0SKrishna Manikandan 
13924a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 =
1393b3587cb6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4);
13944a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 =
1395b3587cb6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4);
13964a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 =
1397b3587cb6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4);
13984a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 =
1399b3587cb6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4);
14004a352c2fSBjorn Andersson 
14014a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = {
14028f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x2ac, VIG_SC7180_MASK,
14034a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
14048f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x2ac, VIG_SC7180_MASK,
14054a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
14068f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x2ac, VIG_SC7180_MASK,
14074a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
14088f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x2ac, VIG_SC7180_MASK,
14094a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
14108f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x2ac, DMA_SDM845_MASK,
14114a352c2fSBjorn Andersson 		 sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
14128f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x2ac, DMA_SDM845_MASK,
14134a352c2fSBjorn Andersson 		 sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
14148f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x2ac, DMA_CURSOR_SDM845_MASK,
1415d6181c18SDmitry Baryshkov 		 sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
14168f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x2ac, DMA_CURSOR_SDM845_MASK,
1417d6181c18SDmitry Baryshkov 		 sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
14184a352c2fSBjorn Andersson };
14195334087eSLoic Poulain 
14205334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
14215334087eSLoic Poulain 	{ \
14225334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
14235334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
14245334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
14255334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
14265334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
14275334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
14285334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
14295334087eSLoic Poulain 	.virt_format_list = plane_formats, \
14305334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
14315334087eSLoic Poulain 	}
14325334087eSLoic Poulain 
14335334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
14345334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
14355334087eSLoic Poulain 
14365334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
14378f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_QCM2290_MASK,
14385334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
14398f940ddbSKonrad Dybcio 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK,
14405334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
14415334087eSLoic Poulain };
14425334087eSLoic Poulain 
144325fdd593SJeykumar Sankaran /*************************************************************
144425fdd593SJeykumar Sankaran  * MIXER sub blocks config
144525fdd593SJeykumar Sankaran  *************************************************************/
14467bdc0c4bSKalyan Thota 
1447e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
144825fdd593SJeykumar Sankaran 	{ \
144925fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
145025fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
14517bdc0c4bSKalyan Thota 	.features = _fmask, \
14527bdc0c4bSKalyan Thota 	.sblk = _sblk, \
145325fdd593SJeykumar Sankaran 	.pingpong = _pp, \
1454e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
1455e47616dfSKalyan Thota 	.dspp = _dspp \
145625fdd593SJeykumar Sankaran 	}
145725fdd593SJeykumar Sankaran 
145894391a14SAngeloGioacchino Del Regno /* MSM8998 */
145994391a14SAngeloGioacchino Del Regno 
146094391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
146194391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
146294391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
146394391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
146494391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
146594391a14SAngeloGioacchino Del Regno 		0x260, 0x290
146694391a14SAngeloGioacchino Del Regno 	},
146794391a14SAngeloGioacchino Del Regno };
146894391a14SAngeloGioacchino Del Regno 
146994391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
14702d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
147194391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
14722d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
147394391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
14742d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
147594391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
14762d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
147794391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14782d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
147994391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14802d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
148194391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
148294391a14SAngeloGioacchino Del Regno };
148394391a14SAngeloGioacchino Del Regno 
148494391a14SAngeloGioacchino Del Regno /* SDM845 */
148594391a14SAngeloGioacchino Del Regno 
148694391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
148794391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
148894391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
148994391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
149094391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
149194391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
149294391a14SAngeloGioacchino Del Regno 	},
149394391a14SAngeloGioacchino Del Regno };
149494391a14SAngeloGioacchino Del Regno 
1495abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
14967bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1497e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
14987bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1499e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
15007bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1501e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
15027bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
1503e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
15047bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
1505e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
15067bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1507e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
15087bdc0c4bSKalyan Thota };
15097bdc0c4bSKalyan Thota 
15107bdc0c4bSKalyan Thota /* SC7180 */
15117bdc0c4bSKalyan Thota 
15127bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
15137bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
15147bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
15157bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
15167bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
15177bdc0c4bSKalyan Thota 	},
15187bdc0c4bSKalyan Thota };
15197bdc0c4bSKalyan Thota 
15207bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
152100feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1522e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
152300feff8fSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1524e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
152525fdd593SJeykumar Sankaran };
152625fdd593SJeykumar Sankaran 
15274a352c2fSBjorn Andersson /* SC8280XP */
15284a352c2fSBjorn Andersson 
15294a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = {
15304a352c2fSBjorn Andersson 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
15314a352c2fSBjorn Andersson 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
15324a352c2fSBjorn Andersson 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2),
15334a352c2fSBjorn Andersson 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3),
15344a352c2fSBjorn Andersson 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
15354a352c2fSBjorn Andersson 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
15364a352c2fSBjorn Andersson };
15374a352c2fSBjorn Andersson 
1538386fced3SJonathan Marek /* SM8150 */
1539386fced3SJonathan Marek 
1540386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1541386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
154205ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1543386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
154405ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1545386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1546386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1547386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1548386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1549386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1550386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1551386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1552386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1553386fced3SJonathan Marek };
1554386fced3SJonathan Marek 
1555591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
155600feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1557fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
155800feff8fSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1559591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
156000feff8fSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1561591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1562591e34a0SKrishna Manikandan };
1563591e34a0SKrishna Manikandan 
15645334087eSLoic Poulain /* QCM2290 */
15655334087eSLoic Poulain 
15665334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
1567da06be8bSDmitry Baryshkov 	.maxwidth = DEFAULT_DPU_LINE_WIDTH,
15685334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
15695334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
15705334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
15715334087eSLoic Poulain 	},
15725334087eSLoic Poulain };
15735334087eSLoic Poulain 
15745334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
157500feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK,
15765334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
15775334087eSLoic Poulain };
15785334087eSLoic Poulain 
157925fdd593SJeykumar Sankaran /*************************************************************
1580e47616dfSKalyan Thota  * DSPP sub blocks config
1581e47616dfSKalyan Thota  *************************************************************/
158294391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
158394391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
158494391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
158594391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
158694391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
158794391a14SAngeloGioacchino Del Regno };
158894391a14SAngeloGioacchino Del Regno 
15894259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
15904259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
15914259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
15924259ff7aSKalyan Thota };
15934259ff7aSKalyan Thota 
159405ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
159505ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
159605ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
159705ae91d9SDmitry Baryshkov };
159805ae91d9SDmitry Baryshkov 
1599862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1600e47616dfSKalyan Thota 		{\
1601e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1602e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1603862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
160405ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1605e47616dfSKalyan Thota 		}
1606e47616dfSKalyan Thota 
160794391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
160894391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
160994391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
161094391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
161194391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
161294391a14SAngeloGioacchino Del Regno };
161394391a14SAngeloGioacchino Del Regno 
1614e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1615862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1616862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
161705ae91d9SDmitry Baryshkov };
161805ae91d9SDmitry Baryshkov 
161905ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1620862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1621862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1622862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1623862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1624862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1625862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1626862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1627862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1628e47616dfSKalyan Thota };
1629386fced3SJonathan Marek 
16305334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
16315334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
16325334087eSLoic Poulain 		 &sm8150_dspp_sblk),
16335334087eSLoic Poulain };
16345334087eSLoic Poulain 
1635e47616dfSKalyan Thota /*************************************************************
163625fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
163725fdd593SJeykumar Sankaran  *************************************************************/
163825fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
163925fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
164025fdd593SJeykumar Sankaran 		.version = 0x1},
164125fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
164225fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
164325fdd593SJeykumar Sankaran };
164425fdd593SJeykumar Sankaran 
164525fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
164625fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
164725fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
164825fdd593SJeykumar Sankaran };
164925fdd593SJeykumar Sankaran 
1650591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1651591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1652591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1653591e34a0SKrishna Manikandan };
1654591e34a0SKrishna Manikandan 
1655efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
1656efcd0107SNeil Armstrong 	{\
1657efcd0107SNeil Armstrong 	.name = _name, .id = _id, \
1658efcd0107SNeil Armstrong 	.base = _base, .len = 0, \
1659efcd0107SNeil Armstrong 	.features = BIT(DPU_PINGPONG_DITHER), \
1660efcd0107SNeil Armstrong 	.merge_3d = _merge_3d, \
1661efcd0107SNeil Armstrong 	.sblk = &_sblk, \
1662efcd0107SNeil Armstrong 	.intr_done = _done, \
1663efcd0107SNeil Armstrong 	.intr_rdptr = _rdptr, \
1664efcd0107SNeil Armstrong 	}
1665667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
166625fdd593SJeykumar Sankaran 	{\
166725fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
166825fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
166925fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
16704369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1671667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1672667e9985SDmitry Baryshkov 	.intr_done = _done, \
1673667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
167425fdd593SJeykumar Sankaran 	}
1675667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
167625fdd593SJeykumar Sankaran 	{\
167725fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
167825fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
167925fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_MASK, \
16804369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1681667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1682667e9985SDmitry Baryshkov 	.intr_done = _done, \
1683667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
168425fdd593SJeykumar Sankaran 	}
168525fdd593SJeykumar Sankaran 
1686abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1687667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1688667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1689667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1690667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1691667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1692667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1693667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1694667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1695667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1696667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1697667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1698667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
169925fdd593SJeykumar Sankaran };
170025fdd593SJeykumar Sankaran 
1701ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc7180_pp[] = {
1702667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1703667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
17047bdc0c4bSKalyan Thota };
17057bdc0c4bSKalyan Thota 
1706ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc8280xp_pp[] = {
17074a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
17084a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1),
17094a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
17104a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1),
17114a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te,
17124a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1),
17134a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te,
17144a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1),
17154a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te,
17164a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1),
17174a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te,
17184a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1),
17194a352c2fSBjorn Andersson };
17204a352c2fSBjorn Andersson 
1721386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1722667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1723667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1724667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1725667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1726667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1727667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1728667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1729667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1730667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1731667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1732667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1733667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1734667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1735667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1736667e9985SDmitry Baryshkov 			-1),
1737667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
17383431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1739667e9985SDmitry Baryshkov 			-1),
17404369c93cSDmitry Baryshkov };
17414369c93cSDmitry Baryshkov 
17420e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = {
17430e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
17440e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17450e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17460e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
17470e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
17480e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
17490e91bcbbSRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
17500e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
17510e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
17520e91bcbbSRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
17530e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
17540e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
17550e91bcbbSRobert Foss 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
17560e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
17570e91bcbbSRobert Foss 			-1),
17580e91bcbbSRobert Foss 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
17590e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
17600e91bcbbSRobert Foss 			-1),
17610e91bcbbSRobert Foss };
17620e91bcbbSRobert Foss 
17631a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = {
1764ce68153eSKuogee Hsieh 	PP_BLK("pingpong_0", PINGPONG_0, 0x69000, 0, sc7280_pp_sblk, -1, -1),
17651a5b5372SRobert Foss 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
17661a5b5372SRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
17671a5b5372SRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
17681a5b5372SRobert Foss };
17691a5b5372SRobert Foss 
1770ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg qcm2290_pp[] = {
17715334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
17725334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17735334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17745334087eSLoic Poulain };
17755334087eSLoic Poulain 
1776100d7ef6SDmitry Baryshkov /* FIXME: interrupts */
1777100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = {
1778100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
1779100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1780100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1781100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
1782100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1783100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1784100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
1785100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1786100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1787100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
1788100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1789100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1790100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
1791100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1792100d7ef6SDmitry Baryshkov 			-1),
1793100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
1794100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1795100d7ef6SDmitry Baryshkov 			-1),
1796100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk,
1797100d7ef6SDmitry Baryshkov 			-1,
1798100d7ef6SDmitry Baryshkov 			-1),
1799100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk,
1800100d7ef6SDmitry Baryshkov 			-1,
1801100d7ef6SDmitry Baryshkov 			-1),
1802100d7ef6SDmitry Baryshkov };
1803100d7ef6SDmitry Baryshkov 
1804efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = {
1805efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk,
1806efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1807efcd0107SNeil Armstrong 			-1),
1808efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk,
1809efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1810efcd0107SNeil Armstrong 			-1),
1811efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk,
1812efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1813efcd0107SNeil Armstrong 			-1),
1814efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk,
1815efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1816efcd0107SNeil Armstrong 			-1),
1817efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk,
1818efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1819efcd0107SNeil Armstrong 			-1),
1820efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk,
1821efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1822efcd0107SNeil Armstrong 			-1),
1823efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk,
1824efcd0107SNeil Armstrong 			-1,
1825efcd0107SNeil Armstrong 			-1),
1826efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk,
1827efcd0107SNeil Armstrong 			-1,
1828efcd0107SNeil Armstrong 			-1),
1829efcd0107SNeil Armstrong };
1830efcd0107SNeil Armstrong 
18314369c93cSDmitry Baryshkov /*************************************************************
18324369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
18334369c93cSDmitry Baryshkov  *************************************************************/
18344369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
18354369c93cSDmitry Baryshkov 	{\
18364369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
18374369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
18384369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
18394369c93cSDmitry Baryshkov 	.sblk = NULL \
18404369c93cSDmitry Baryshkov 	}
18414369c93cSDmitry Baryshkov 
18424369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
18434369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
18444369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
18454369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1846386fced3SJonathan Marek };
1847386fced3SJonathan Marek 
18480e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = {
18490e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
18500e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
18510e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
18520e91bcbbSRobert Foss };
18530e91bcbbSRobert Foss 
1854100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = {
1855100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1856100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1857100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1858100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00),
1859100d7ef6SDmitry Baryshkov };
1860100d7ef6SDmitry Baryshkov 
1861efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = {
1862efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1863efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1864efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1865efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700),
1866efcd0107SNeil Armstrong };
1867efcd0107SNeil Armstrong 
18687c5ab05eSVinod Koul /*************************************************************
18697c5ab05eSVinod Koul  * DSC sub blocks config
18707c5ab05eSVinod Koul  *************************************************************/
18719da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \
18727c5ab05eSVinod Koul 	{\
18737c5ab05eSVinod Koul 	.name = _name, .id = _id, \
18747c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
18759da5daa0SMarijn Suijten 	.features = _features, \
18767c5ab05eSVinod Koul 	}
18777c5ab05eSVinod Koul 
1878fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sdm845_dsc[] = {
18799da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, 0),
18809da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, 0),
18819da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, 0),
18829da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, 0),
18839da5daa0SMarijn Suijten };
18849da5daa0SMarijn Suijten 
1885fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sm8150_dsc[] = {
18869da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)),
18879da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)),
18889da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)),
18899da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)),
18907c5ab05eSVinod Koul };
18917c5ab05eSVinod Koul 
189225fdd593SJeykumar Sankaran /*************************************************************
189325fdd593SJeykumar Sankaran  * INTF sub blocks config
189425fdd593SJeykumar Sankaran  *************************************************************/
18958399a5ffSKonrad Dybcio #define INTF_BLK(_name, _id, _base, _len, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
189625fdd593SJeykumar Sankaran 	{\
189725fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
18988399a5ffSKonrad Dybcio 	.base = _base, .len = _len, \
1899cace3ac4SJonathan Marek 	.features = _features, \
190025fdd593SJeykumar Sankaran 	.type = _type, \
190125fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1902667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1903667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1904667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
190525fdd593SJeykumar Sankaran 	}
190625fdd593SJeykumar Sankaran 
190794391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
19088399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19098399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19108399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19118399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
191294391a14SAngeloGioacchino Del Regno };
191394391a14SAngeloGioacchino Del Regno 
1914abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
19158399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19168399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19178399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19188399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
191925fdd593SJeykumar Sankaran };
192025fdd593SJeykumar Sankaran 
19217bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
19228399a5ffSKonrad 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),
19238399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19247bdc0c4bSKalyan Thota };
19257bdc0c4bSKalyan Thota 
1926386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
19278399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19288399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19298399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19308399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1931386fced3SJonathan Marek };
1932386fced3SJonathan Marek 
1933591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
19348399a5ffSKonrad 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),
19358399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19368399a5ffSKonrad 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),
1937591e34a0SKrishna Manikandan };
1938591e34a0SKrishna Manikandan 
19390e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = {
19408399a5ffSKonrad 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),
19418399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19428399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x2c4, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19438399a5ffSKonrad 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),
19440e91bcbbSRobert Foss };
19450e91bcbbSRobert Foss 
1946f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
19478399a5ffSKonrad 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),
19488399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19498399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1950f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
19518399a5ffSKonrad Dybcio 	INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19528399a5ffSKonrad 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),
19538399a5ffSKonrad 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),
1954f3af2d6eSRob Clark };
1955f3af2d6eSRob Clark 
19564a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */
19574a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = {
19588399a5ffSKonrad 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),
19598399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19608399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19618399a5ffSKonrad 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),
19628399a5ffSKonrad 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),
19638399a5ffSKonrad 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),
19648399a5ffSKonrad 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),
19658399a5ffSKonrad 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),
19668399a5ffSKonrad 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),
19674a352c2fSBjorn Andersson };
19684a352c2fSBjorn Andersson 
19695334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
19708399a5ffSKonrad Dybcio 	INTF_BLK("intf_0", INTF_0, 0x00000, 0x280, INTF_DP, 0, 0, 0, 0, 0, 0),
19718399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19725334087eSLoic Poulain };
19735334087eSLoic Poulain 
1974100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = {
19758399a5ffSKonrad 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),
19768399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19778399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19788399a5ffSKonrad 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),
1979100d7ef6SDmitry Baryshkov };
1980100d7ef6SDmitry Baryshkov 
1981efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = {
19828399a5ffSKonrad 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),
1983efcd0107SNeil Armstrong 	/* TODO TE sub-blocks for intf1 & intf2 */
19848399a5ffSKonrad Dybcio 	INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19858399a5ffSKonrad Dybcio 	INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19868399a5ffSKonrad 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),
1987efcd0107SNeil Armstrong };
1988efcd0107SNeil Armstrong 
198925fdd593SJeykumar Sankaran /*************************************************************
199053324b99SAbhinav Kumar  * Writeback blocks config
199153324b99SAbhinav Kumar  *************************************************************/
199253324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1993a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
199453324b99SAbhinav Kumar 	{ \
199553324b99SAbhinav Kumar 	.name = _name, .id = _id, \
199653324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
199753324b99SAbhinav Kumar 	.features = _features, \
199853324b99SAbhinav Kumar 	.format_list = wb2_formats, \
199953324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
200053324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
200153324b99SAbhinav Kumar 	.xin_id = __xin_id, \
200253324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
2003a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
200453324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
200553324b99SAbhinav Kumar 	}
200653324b99SAbhinav Kumar 
200753324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
200853324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
2009a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
201053324b99SAbhinav Kumar };
201153324b99SAbhinav Kumar 
201253324b99SAbhinav Kumar /*************************************************************
201325fdd593SJeykumar Sankaran  * VBIF sub blocks config
201425fdd593SJeykumar Sankaran  *************************************************************/
201525fdd593SJeykumar Sankaran /* VBIF QOS remap */
201694391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
201794391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
2018abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
2019abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
202025fdd593SJeykumar Sankaran 
202194391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
202294391a14SAngeloGioacchino Del Regno 	{
202394391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
202494391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
202594391a14SAngeloGioacchino Del Regno 	},
202694391a14SAngeloGioacchino Del Regno 	{
202794391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
202894391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
202994391a14SAngeloGioacchino Del Regno 	},
203094391a14SAngeloGioacchino Del Regno 	{
203194391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
203294391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
203394391a14SAngeloGioacchino Del Regno 	},
203494391a14SAngeloGioacchino Del Regno };
203594391a14SAngeloGioacchino Del Regno 
203694391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
203794391a14SAngeloGioacchino Del Regno 	{
2038606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
203994391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
204094391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
204194391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
204294391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
204394391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
2044c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
204594391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
204694391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
204794391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
204894391a14SAngeloGioacchino Del Regno 		},
204994391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
205094391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
205194391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
205294391a14SAngeloGioacchino Del Regno 		},
205394391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
205494391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
205594391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
205694391a14SAngeloGioacchino Del Regno 		},
205794391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
205894391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
205994391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
206094391a14SAngeloGioacchino Del Regno 		},
206194391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
206294391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
206394391a14SAngeloGioacchino Del Regno 	},
206494391a14SAngeloGioacchino Del Regno };
206594391a14SAngeloGioacchino Del Regno 
2066abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
206725fdd593SJeykumar Sankaran 	{
2068606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
206925fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
207025fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
207125fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
2072c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
207325fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
207425fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
207525fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
207625fdd593SJeykumar Sankaran 		},
207725fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
207825fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
207925fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
208025fdd593SJeykumar Sankaran 		},
208125fdd593SJeykumar Sankaran 	.memtype_count = 14,
208225fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
208325fdd593SJeykumar Sankaran 	},
208425fdd593SJeykumar Sankaran };
208525fdd593SJeykumar Sankaran 
20864a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = {
20874a352c2fSBjorn Andersson 	.base = 0x0,
20884a352c2fSBjorn Andersson 	.version = 0x00020000,
20894a352c2fSBjorn Andersson 	.trigger_sel_off = 0x119c,
20904a352c2fSBjorn Andersson 	.xin_id = 7,
20914a352c2fSBjorn Andersson 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20924a352c2fSBjorn Andersson };
20934a352c2fSBjorn Andersson 
2094abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
209525fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
209625fdd593SJeykumar Sankaran };
209725fdd593SJeykumar Sankaran 
2098386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
2099386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
2100386fced3SJonathan Marek };
2101386fced3SJonathan Marek 
2102af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
2103af776a3eSJonathan Marek 	.base = 0x0,
2104af776a3eSJonathan Marek 	.version = 0x00010002,
2105af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
2106af776a3eSJonathan Marek 	.xin_id = 7,
2107af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2108af776a3eSJonathan Marek };
2109af776a3eSJonathan Marek 
21100e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = {
21110e91bcbbSRobert Foss 	.base = 0x400,
21120e91bcbbSRobert Foss 	.version = 0x00020000,
21130e91bcbbSRobert Foss 	.trigger_sel_off = 0x119c,
21140e91bcbbSRobert Foss 	.xin_id = 7,
21150e91bcbbSRobert Foss 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
21160e91bcbbSRobert Foss };
21170e91bcbbSRobert Foss 
2118100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = {
2119100d7ef6SDmitry Baryshkov 	.base = 0x0,
2120100d7ef6SDmitry Baryshkov 	.version = 0x00020000,
2121100d7ef6SDmitry Baryshkov 	.trigger_sel_off = 0x119c,
2122100d7ef6SDmitry Baryshkov 	.xin_id = 7,
2123100d7ef6SDmitry Baryshkov 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2124100d7ef6SDmitry Baryshkov };
2125100d7ef6SDmitry Baryshkov 
212625fdd593SJeykumar Sankaran /*************************************************************
212725fdd593SJeykumar Sankaran  * PERF data config
212825fdd593SJeykumar Sankaran  *************************************************************/
212925fdd593SJeykumar Sankaran 
213025fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
213194391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
213294391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
213394391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
213494391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
213594391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
213694391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
213794391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
213894391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
213994391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
214094391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
214194391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
214294391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
214394391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
214494391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
214594391a14SAngeloGioacchino Del Regno };
214694391a14SAngeloGioacchino Del Regno 
2147abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
214825fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
214925fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
215025fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
215125fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
215225fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
215325fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
215425fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
215525fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
215625fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
215725fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
215825fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
215925fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
216025fdd593SJeykumar Sankaran };
216125fdd593SJeykumar Sankaran 
216294391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
216394391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
216494391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
216594391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
216694391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
216794391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
216894391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
216994391a14SAngeloGioacchino Del Regno };
217094391a14SAngeloGioacchino Del Regno 
21717bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
21727bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
21737bdc0c4bSKalyan Thota };
21747bdc0c4bSKalyan Thota 
2175386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
2176386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
2177386fced3SJonathan Marek };
2178386fced3SJonathan Marek 
2179f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
2180f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
2181f3af2d6eSRob Clark };
2182f3af2d6eSRob Clark 
21835334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
21845334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
21855334087eSLoic Poulain };
21865334087eSLoic Poulain 
2187abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
218825fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
218925fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
219025fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
219125fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
219225fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
219325fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
219425fdd593SJeykumar Sankaran };
219525fdd593SJeykumar Sankaran 
21967bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
21977bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
21987bdc0c4bSKalyan Thota };
21997bdc0c4bSKalyan Thota 
2200f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
2201f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
2202f3af2d6eSRob Clark };
2203f3af2d6eSRob Clark 
220494391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
220594391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
220694391a14SAngeloGioacchino Del Regno };
220794391a14SAngeloGioacchino Del Regno 
2208abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
220925fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
221025fdd593SJeykumar Sankaran };
221125fdd593SJeykumar Sankaran 
22127bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
22137bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
22147bdc0c4bSKalyan Thota };
22157bdc0c4bSKalyan Thota 
221694391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
221794391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
221894391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
221994391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
222094391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
222194391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
222294391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
222394391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
222494391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
222594391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
222694391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
222794391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
222894391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
222994391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
223094391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
223194391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
223294391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
223394391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
223494391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
223594391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
223694391a14SAngeloGioacchino Del Regno 		},
223794391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
223894391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
223994391a14SAngeloGioacchino Del Regno 		},
224094391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
224194391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
224294391a14SAngeloGioacchino Del Regno 		},
224394391a14SAngeloGioacchino Del Regno 	},
224494391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
224594391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
224694391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
224794391a14SAngeloGioacchino Del Regno 	},
224894391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
224994391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
225094391a14SAngeloGioacchino Del Regno };
225194391a14SAngeloGioacchino Del Regno 
2252abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
225325fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
225425fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
225525fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
225625fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
225725fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
225825fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
225925fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
226025fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
226125fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
226225fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
226325fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
226425fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
226525fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
226625fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
226725fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22685bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
226925fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
227025fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
227125fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
227225fdd593SJeykumar Sankaran 		},
227325fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
227425fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
227525fdd593SJeykumar Sankaran 		},
227625fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
227725fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
227825fdd593SJeykumar Sankaran 		},
227925fdd593SJeykumar Sankaran 	},
228025fdd593SJeykumar Sankaran 	.cdp_cfg = {
228125fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
228225fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
228325fdd593SJeykumar Sankaran 	},
22844f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
22854f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
228625fdd593SJeykumar Sankaran };
228725fdd593SJeykumar Sankaran 
22887bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
228971dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
229071dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
22917bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
22927bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
2293c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
2294c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
22957bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22965bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22977bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
22987bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22997bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
23007bdc0c4bSKalyan Thota 		},
23017bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23027bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
23037bdc0c4bSKalyan Thota 		},
23047bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23057bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
23067bdc0c4bSKalyan Thota 		},
23077bdc0c4bSKalyan Thota 	},
23087bdc0c4bSKalyan Thota 	.cdp_cfg = {
23097bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
23107bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
23117bdc0c4bSKalyan Thota 	},
2312c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
2313c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
23147bdc0c4bSKalyan Thota };
23157bdc0c4bSKalyan Thota 
23163581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = {
23173581b706SAdam Skladowski 	.max_bw_low = 3100000,
23183581b706SAdam Skladowski 	.max_bw_high = 4000000,
23193581b706SAdam Skladowski 	.min_core_ib = 2400000,
23203581b706SAdam Skladowski 	.min_llcc_ib = 800000,
23213581b706SAdam Skladowski 	.min_dram_ib = 800000,
23223581b706SAdam Skladowski 	.min_prefill_lines = 24,
23233581b706SAdam Skladowski 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
23243581b706SAdam Skladowski 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
23253581b706SAdam Skladowski 	.qos_lut_tbl = {
23263581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
23273581b706SAdam Skladowski 		.entries = sc7180_qos_linear
23283581b706SAdam Skladowski 		},
23293581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23303581b706SAdam Skladowski 		.entries = sc7180_qos_macrotile
23313581b706SAdam Skladowski 		},
23323581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23333581b706SAdam Skladowski 		.entries = sc7180_qos_nrt
23343581b706SAdam Skladowski 		},
23353581b706SAdam Skladowski 		/* TODO: macrotile-qseed is different from macrotile */
23363581b706SAdam Skladowski 	},
23373581b706SAdam Skladowski 	.cdp_cfg = {
23383581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 1},
23393581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 0}
23403581b706SAdam Skladowski 	},
23413581b706SAdam Skladowski 	.clk_inefficiency_factor = 105,
23423581b706SAdam Skladowski 	.bw_inefficiency_factor = 120,
23433581b706SAdam Skladowski };
23443581b706SAdam Skladowski 
2345386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
2346386fced3SJonathan Marek 	.max_bw_low = 12800000,
2347386fced3SJonathan Marek 	.max_bw_high = 12800000,
2348386fced3SJonathan Marek 	.min_core_ib = 2400000,
2349386fced3SJonathan Marek 	.min_llcc_ib = 800000,
2350386fced3SJonathan Marek 	.min_dram_ib = 800000,
23514f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
2352386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23535bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
2354386fced3SJonathan Marek 	.qos_lut_tbl = {
2355386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
2356386fced3SJonathan Marek 		.entries = sm8150_qos_linear
2357386fced3SJonathan Marek 		},
2358386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2359386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
2360386fced3SJonathan Marek 		},
2361386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2362386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
2363386fced3SJonathan Marek 		},
2364386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2365386fced3SJonathan Marek 	},
2366386fced3SJonathan Marek 	.cdp_cfg = {
2367386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2368386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2369386fced3SJonathan Marek 	},
23704f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
23714f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2372386fced3SJonathan Marek };
2373386fced3SJonathan Marek 
2374f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
2375f3af2d6eSRob Clark 	.max_bw_low = 9600000,
2376f3af2d6eSRob Clark 	.max_bw_high = 9600000,
2377f3af2d6eSRob Clark 	.min_core_ib = 2400000,
2378f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
2379f3af2d6eSRob Clark 	.min_dram_ib = 800000,
2380f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
2381f3af2d6eSRob Clark 	.qos_lut_tbl = {
23824a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
23834a352c2fSBjorn Andersson 		.entries = sc7180_qos_linear
23844a352c2fSBjorn Andersson 		},
23854a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23864a352c2fSBjorn Andersson 		.entries = sc7180_qos_macrotile
23874a352c2fSBjorn Andersson 		},
23884a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23894a352c2fSBjorn Andersson 		.entries = sc7180_qos_nrt
23904a352c2fSBjorn Andersson 		},
23914a352c2fSBjorn Andersson 		/* TODO: macrotile-qseed is different from macrotile */
23924a352c2fSBjorn Andersson 	},
23934a352c2fSBjorn Andersson 	.cdp_cfg = {
23944a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 1},
23954a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 0}
23964a352c2fSBjorn Andersson 	},
23974a352c2fSBjorn Andersson 	.clk_inefficiency_factor = 105,
23984a352c2fSBjorn Andersson 	.bw_inefficiency_factor = 120,
23994a352c2fSBjorn Andersson };
24004a352c2fSBjorn Andersson 
24014a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = {
24024a352c2fSBjorn Andersson 	.max_bw_low = 13600000,
24034a352c2fSBjorn Andersson 	.max_bw_high = 18200000,
24044a352c2fSBjorn Andersson 	.min_core_ib = 2500000,
24054a352c2fSBjorn Andersson 	.min_llcc_ib = 0,
24064a352c2fSBjorn Andersson 	.min_dram_ib = 800000,
24074a352c2fSBjorn Andersson 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
24084a352c2fSBjorn Andersson 	.qos_lut_tbl = {
2409f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
2410f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
2411f3af2d6eSRob Clark 		},
2412f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
2413f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
2414f3af2d6eSRob Clark 		},
2415f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2416f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
2417f3af2d6eSRob Clark 		},
2418f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
2419f3af2d6eSRob Clark 	},
2420f3af2d6eSRob Clark 	.cdp_cfg = {
2421f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
2422f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
2423f3af2d6eSRob Clark 	},
2424f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
2425f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
2426f3af2d6eSRob Clark };
2427f3af2d6eSRob Clark 
2428af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
2429af776a3eSJonathan Marek 	.max_bw_low = 13700000,
2430af776a3eSJonathan Marek 	.max_bw_high = 16600000,
2431af776a3eSJonathan Marek 	.min_core_ib = 4800000,
2432af776a3eSJonathan Marek 	.min_llcc_ib = 0,
2433af776a3eSJonathan Marek 	.min_dram_ib = 800000,
24344f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
2435af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
24365bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
2437af776a3eSJonathan Marek 	.qos_lut_tbl = {
2438af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2439af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
2440af776a3eSJonathan Marek 		},
2441af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2442af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
2443af776a3eSJonathan Marek 		},
2444af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2445af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
2446af776a3eSJonathan Marek 		},
2447af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2448af776a3eSJonathan Marek 	},
2449af776a3eSJonathan Marek 	.cdp_cfg = {
2450af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2451af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2452af776a3eSJonathan Marek 	},
24534f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
24544f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2455af776a3eSJonathan Marek };
2456af776a3eSJonathan Marek 
2457100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = {
2458100d7ef6SDmitry Baryshkov 	.max_bw_low = 13600000,
2459100d7ef6SDmitry Baryshkov 	.max_bw_high = 18200000,
2460100d7ef6SDmitry Baryshkov 	.min_core_ib = 2500000,
2461100d7ef6SDmitry Baryshkov 	.min_llcc_ib = 0,
2462100d7ef6SDmitry Baryshkov 	.min_dram_ib = 800000,
2463100d7ef6SDmitry Baryshkov 	.min_prefill_lines = 35,
2464100d7ef6SDmitry Baryshkov 	/* FIXME: lut tables */
2465100d7ef6SDmitry Baryshkov 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
2466100d7ef6SDmitry Baryshkov 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
2467100d7ef6SDmitry Baryshkov 	.qos_lut_tbl = {
2468100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2469100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_linear
2470100d7ef6SDmitry Baryshkov 		},
2471100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2472100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_macrotile
2473100d7ef6SDmitry Baryshkov 		},
2474100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2475100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_nrt
2476100d7ef6SDmitry Baryshkov 		},
2477100d7ef6SDmitry Baryshkov 		/* TODO: macrotile-qseed is different from macrotile */
2478100d7ef6SDmitry Baryshkov 	},
2479100d7ef6SDmitry Baryshkov 	.cdp_cfg = {
2480100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 1},
2481100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 0}
2482100d7ef6SDmitry Baryshkov 	},
2483100d7ef6SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
2484100d7ef6SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2485100d7ef6SDmitry Baryshkov };
2486100d7ef6SDmitry Baryshkov 
2487591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
2488591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
2489591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
2490591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
2491591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
2492591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
2493591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
2494591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
24955bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
2496591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
2497591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2498591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2499591e34a0SKrishna Manikandan 		},
2500591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2501591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2502591e34a0SKrishna Manikandan 		},
2503591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2504591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
2505591e34a0SKrishna Manikandan 		},
2506591e34a0SKrishna Manikandan 	},
2507591e34a0SKrishna Manikandan 	.cdp_cfg = {
2508591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
2509591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
2510591e34a0SKrishna Manikandan 	},
2511591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
2512591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
2513591e34a0SKrishna Manikandan };
2514591e34a0SKrishna Manikandan 
25150e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = {
25160e91bcbbSRobert Foss 	.max_bw_low = 11800000,
25170e91bcbbSRobert Foss 	.max_bw_high = 15500000,
25180e91bcbbSRobert Foss 	.min_core_ib = 2500000,
25190e91bcbbSRobert Foss 	.min_llcc_ib = 0,
25200e91bcbbSRobert Foss 	.min_dram_ib = 800000,
25210e91bcbbSRobert Foss 	.min_prefill_lines = 40,
25220e91bcbbSRobert Foss 	/* FIXME: lut tables */
25230e91bcbbSRobert Foss 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
25240e91bcbbSRobert Foss 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
25250e91bcbbSRobert Foss 	.qos_lut_tbl = {
25260e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
25270e91bcbbSRobert Foss 		.entries = sc7180_qos_linear
25280e91bcbbSRobert Foss 		},
25290e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
25300e91bcbbSRobert Foss 		.entries = sc7180_qos_macrotile
25310e91bcbbSRobert Foss 		},
25320e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
25330e91bcbbSRobert Foss 		.entries = sc7180_qos_nrt
25340e91bcbbSRobert Foss 		},
25350e91bcbbSRobert Foss 		/* TODO: macrotile-qseed is different from macrotile */
25360e91bcbbSRobert Foss 	},
25370e91bcbbSRobert Foss 	.cdp_cfg = {
25380e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 1},
25390e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 0}
25400e91bcbbSRobert Foss 	},
25410e91bcbbSRobert Foss 	.clk_inefficiency_factor = 105,
25420e91bcbbSRobert Foss 	.bw_inefficiency_factor = 120,
25430e91bcbbSRobert Foss };
25440e91bcbbSRobert Foss 
25455334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
25465334087eSLoic Poulain 	.max_bw_low = 2700000,
25475334087eSLoic Poulain 	.max_bw_high = 2700000,
25485334087eSLoic Poulain 	.min_core_ib = 1300000,
25495334087eSLoic Poulain 	.min_llcc_ib = 0,
25505334087eSLoic Poulain 	.min_dram_ib = 1600000,
25515334087eSLoic Poulain 	.min_prefill_lines = 24,
25525334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
25535334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
25545334087eSLoic Poulain 	.qos_lut_tbl = {
25555334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
25565334087eSLoic Poulain 		.entries = qcm2290_qos_linear
25575334087eSLoic Poulain 		},
25585334087eSLoic Poulain 	},
25595334087eSLoic Poulain 	.cdp_cfg = {
25605334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
25615334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
25625334087eSLoic Poulain 	},
25635334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
25645334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
25655334087eSLoic Poulain };
256625fdd593SJeykumar Sankaran /*************************************************************
2567de7d480fSDmitry Baryshkov  * Hardware catalog
256825fdd593SJeykumar Sankaran  *************************************************************/
256925fdd593SJeykumar Sankaran 
2570de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
257194391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
2572*fbbd8cceSDmitry Baryshkov 	.ubwc = &msm8998_ubwc_cfg,
257394391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
257494391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
257594391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
257694391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
257794391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
257894391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
257994391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
258094391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
25816452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
25826452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
258394391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
258494391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
258594391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
258694391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
258794391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
258894391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
258994391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
2590477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
259194391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
259294391a14SAngeloGioacchino Del Regno };
259394391a14SAngeloGioacchino Del Regno 
2594de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
259525fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
2596*fbbd8cceSDmitry Baryshkov 	.ubwc = &sdm845_ubwc_cfg,
259725fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
259825fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
259925fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
260025fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
260125fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
260225fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
260325fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
260425fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
260525fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
260625fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
26077c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
26087c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
260925fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
261025fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
261125fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
261225fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
261325fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
2614481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2615477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
2616597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
261725fdd593SJeykumar Sankaran };
261825fdd593SJeykumar Sankaran 
2619de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
26207bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
2621*fbbd8cceSDmitry Baryshkov 	.ubwc = &sc7180_ubwc_cfg,
26227bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
26237bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
26247bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
26257bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
26267bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
26277bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
26287bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
26297bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
2630e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2631e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
26327bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
26337bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
26347bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
26357bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
263651e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
263751e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
26387bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26397bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
26407bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
2641481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2642477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
2643597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
26447bdc0c4bSKalyan Thota };
26457bdc0c4bSKalyan Thota 
26463581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
26473581b706SAdam Skladowski 	.caps = &sm6115_dpu_caps,
2648*fbbd8cceSDmitry Baryshkov 	.ubwc = &sm6115_ubwc_cfg,
26493581b706SAdam Skladowski 	.mdp_count = ARRAY_SIZE(sm6115_mdp),
26503581b706SAdam Skladowski 	.mdp = sm6115_mdp,
26513581b706SAdam Skladowski 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
26523581b706SAdam Skladowski 	.ctl = qcm2290_ctl,
26533581b706SAdam Skladowski 	.sspp_count = ARRAY_SIZE(sm6115_sspp),
26543581b706SAdam Skladowski 	.sspp = sm6115_sspp,
26553581b706SAdam Skladowski 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
26563581b706SAdam Skladowski 	.mixer = qcm2290_lm,
26573581b706SAdam Skladowski 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
26583581b706SAdam Skladowski 	.dspp = qcm2290_dspp,
26593581b706SAdam Skladowski 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
26603581b706SAdam Skladowski 	.pingpong = qcm2290_pp,
26613581b706SAdam Skladowski 	.intf_count = ARRAY_SIZE(qcm2290_intf),
26623581b706SAdam Skladowski 	.intf = qcm2290_intf,
26633581b706SAdam Skladowski 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26643581b706SAdam Skladowski 	.vbif = sdm845_vbif,
26653581b706SAdam Skladowski 	.perf = &sm6115_perf_data,
26663581b706SAdam Skladowski 	.mdss_irqs = IRQ_SC7180_MASK,
26673581b706SAdam Skladowski };
26683581b706SAdam Skladowski 
2669de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
2670386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
2671*fbbd8cceSDmitry Baryshkov 	.ubwc = &sm8150_ubwc_cfg,
2672386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
2673386fced3SJonathan Marek 	.mdp = sdm845_mdp,
2674386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2675386fced3SJonathan Marek 	.ctl = sm8150_ctl,
2676386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2677386fced3SJonathan Marek 	.sspp = sdm845_sspp,
2678386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2679386fced3SJonathan Marek 	.mixer = sm8150_lm,
268005ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
268105ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
26829da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
26839da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2684386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2685386fced3SJonathan Marek 	.pingpong = sm8150_pp,
26864369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
26874369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2688386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2689386fced3SJonathan Marek 	.intf = sm8150_intf,
2690386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2691386fced3SJonathan Marek 	.vbif = sdm845_vbif,
2692386fced3SJonathan Marek 	.reg_dma_count = 1,
2693481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2694477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
2695597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
2696386fced3SJonathan Marek };
2697386fced3SJonathan Marek 
2698de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
2699f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
2700*fbbd8cceSDmitry Baryshkov 	.ubwc = &sc8180x_ubwc_cfg,
2701f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
2702f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
2703f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2704f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
2705f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2706f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
2707f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2708f3af2d6eSRob Clark 	.mixer = sm8150_lm,
2709f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2710f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
2711f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
2712f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
2713f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
2714f3af2d6eSRob Clark 	.intf = sc8180x_intf,
2715f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2716f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
2717f3af2d6eSRob Clark 	.reg_dma_count = 1,
2718481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2719477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
2720f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
2721f3af2d6eSRob Clark };
2722f3af2d6eSRob Clark 
27234a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = {
27244a352c2fSBjorn Andersson 	.caps = &sc8280xp_dpu_caps,
2725*fbbd8cceSDmitry Baryshkov 	.ubwc = &sc8280xp_ubwc_cfg,
27264a352c2fSBjorn Andersson 	.mdp_count = ARRAY_SIZE(sc8280xp_mdp),
27274a352c2fSBjorn Andersson 	.mdp = sc8280xp_mdp,
27284a352c2fSBjorn Andersson 	.ctl_count = ARRAY_SIZE(sc8280xp_ctl),
27294a352c2fSBjorn Andersson 	.ctl = sc8280xp_ctl,
27304a352c2fSBjorn Andersson 	.sspp_count = ARRAY_SIZE(sc8280xp_sspp),
27314a352c2fSBjorn Andersson 	.sspp = sc8280xp_sspp,
27324a352c2fSBjorn Andersson 	.mixer_count = ARRAY_SIZE(sc8280xp_lm),
27334a352c2fSBjorn Andersson 	.mixer = sc8280xp_lm,
27344a352c2fSBjorn Andersson 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
27354a352c2fSBjorn Andersson 	.dspp = sm8150_dspp,
27364a352c2fSBjorn Andersson 	.pingpong_count = ARRAY_SIZE(sc8280xp_pp),
27374a352c2fSBjorn Andersson 	.pingpong = sc8280xp_pp,
27384a352c2fSBjorn Andersson 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
27394a352c2fSBjorn Andersson 	.merge_3d = sm8350_merge_3d,
27404a352c2fSBjorn Andersson 	.intf_count = ARRAY_SIZE(sc8280xp_intf),
27414a352c2fSBjorn Andersson 	.intf = sc8280xp_intf,
27424a352c2fSBjorn Andersson 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
27434a352c2fSBjorn Andersson 	.vbif = sdm845_vbif,
274483bb1f13SDmitry Baryshkov 	.reg_dma_count = 1,
274583bb1f13SDmitry Baryshkov 	.dma_cfg = &sc8280xp_regdma,
27464a352c2fSBjorn Andersson 	.perf = &sc8280xp_perf_data,
27474a352c2fSBjorn Andersson 	.mdss_irqs = IRQ_SC8280XP_MASK,
27484a352c2fSBjorn Andersson };
27494a352c2fSBjorn Andersson 
2750de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
2751af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
2752*fbbd8cceSDmitry Baryshkov 	.ubwc = &sm8250_ubwc_cfg,
2753af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
2754af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
2755af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2756af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
2757d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
2758d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
2759af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2760af776a3eSJonathan Marek 	.mixer = sm8150_lm,
276105ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
276205ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
27639da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
27649da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2765af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2766af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
27674369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
27684369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2769af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2770af776a3eSJonathan Marek 	.intf = sm8150_intf,
2771af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2772af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
277353324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
277453324b99SAbhinav Kumar 	.wb = sm8250_wb,
2775af776a3eSJonathan Marek 	.reg_dma_count = 1,
2776481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
2777477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
2778597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
2779af776a3eSJonathan Marek };
2780af776a3eSJonathan Marek 
27810e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = {
27820e91bcbbSRobert Foss 	.caps = &sm8350_dpu_caps,
2783*fbbd8cceSDmitry Baryshkov 	.ubwc = &sm8350_ubwc_cfg,
27840e91bcbbSRobert Foss 	.mdp_count = ARRAY_SIZE(sm8350_mdp),
27850e91bcbbSRobert Foss 	.mdp = sm8350_mdp,
27860e91bcbbSRobert Foss 	.ctl_count = ARRAY_SIZE(sm8350_ctl),
27870e91bcbbSRobert Foss 	.ctl = sm8350_ctl,
27880e91bcbbSRobert Foss 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
27890e91bcbbSRobert Foss 	.sspp = sm8250_sspp,
27900e91bcbbSRobert Foss 	.mixer_count = ARRAY_SIZE(sm8150_lm),
27910e91bcbbSRobert Foss 	.mixer = sm8150_lm,
27920e91bcbbSRobert Foss 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
27930e91bcbbSRobert Foss 	.dspp = sm8150_dspp,
27940e91bcbbSRobert Foss 	.pingpong_count = ARRAY_SIZE(sm8350_pp),
27950e91bcbbSRobert Foss 	.pingpong = sm8350_pp,
27960e91bcbbSRobert Foss 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
27970e91bcbbSRobert Foss 	.merge_3d = sm8350_merge_3d,
27980e91bcbbSRobert Foss 	.intf_count = ARRAY_SIZE(sm8350_intf),
27990e91bcbbSRobert Foss 	.intf = sm8350_intf,
28000e91bcbbSRobert Foss 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
28010e91bcbbSRobert Foss 	.vbif = sdm845_vbif,
28020e91bcbbSRobert Foss 	.reg_dma_count = 1,
2803764b9481SDmitry Baryshkov 	.dma_cfg = &sm8350_regdma,
28040e91bcbbSRobert Foss 	.perf = &sm8350_perf_data,
28050e91bcbbSRobert Foss 	.mdss_irqs = IRQ_SM8350_MASK,
28060e91bcbbSRobert Foss };
28070e91bcbbSRobert Foss 
2808100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = {
2809100d7ef6SDmitry Baryshkov 	.caps = &sm8450_dpu_caps,
2810*fbbd8cceSDmitry Baryshkov 	.ubwc = &sm8450_ubwc_cfg,
2811100d7ef6SDmitry Baryshkov 	.mdp_count = ARRAY_SIZE(sm8450_mdp),
2812100d7ef6SDmitry Baryshkov 	.mdp = sm8450_mdp,
2813100d7ef6SDmitry Baryshkov 	.ctl_count = ARRAY_SIZE(sm8450_ctl),
2814100d7ef6SDmitry Baryshkov 	.ctl = sm8450_ctl,
2815100d7ef6SDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8450_sspp),
2816100d7ef6SDmitry Baryshkov 	.sspp = sm8450_sspp,
2817100d7ef6SDmitry Baryshkov 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2818100d7ef6SDmitry Baryshkov 	.mixer = sm8150_lm,
2819100d7ef6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2820100d7ef6SDmitry Baryshkov 	.dspp = sm8150_dspp,
2821100d7ef6SDmitry Baryshkov 	.pingpong_count = ARRAY_SIZE(sm8450_pp),
2822100d7ef6SDmitry Baryshkov 	.pingpong = sm8450_pp,
2823100d7ef6SDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8450_merge_3d),
2824100d7ef6SDmitry Baryshkov 	.merge_3d = sm8450_merge_3d,
2825100d7ef6SDmitry Baryshkov 	.intf_count = ARRAY_SIZE(sm8450_intf),
2826100d7ef6SDmitry Baryshkov 	.intf = sm8450_intf,
2827100d7ef6SDmitry Baryshkov 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2828100d7ef6SDmitry Baryshkov 	.vbif = sdm845_vbif,
2829100d7ef6SDmitry Baryshkov 	.reg_dma_count = 1,
2830100d7ef6SDmitry Baryshkov 	.dma_cfg = &sm8450_regdma,
2831100d7ef6SDmitry Baryshkov 	.perf = &sm8450_perf_data,
2832100d7ef6SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8450_MASK,
2833100d7ef6SDmitry Baryshkov };
2834100d7ef6SDmitry Baryshkov 
2835efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = {
2836efcd0107SNeil Armstrong 	.caps = &sm8550_dpu_caps,
2837*fbbd8cceSDmitry Baryshkov 	.ubwc = &sm8550_ubwc_cfg,
2838efcd0107SNeil Armstrong 	.mdp_count = ARRAY_SIZE(sm8550_mdp),
2839efcd0107SNeil Armstrong 	.mdp = sm8550_mdp,
2840efcd0107SNeil Armstrong 	.ctl_count = ARRAY_SIZE(sm8550_ctl),
2841efcd0107SNeil Armstrong 	.ctl = sm8550_ctl,
2842efcd0107SNeil Armstrong 	.sspp_count = ARRAY_SIZE(sm8550_sspp),
2843efcd0107SNeil Armstrong 	.sspp = sm8550_sspp,
2844efcd0107SNeil Armstrong 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2845efcd0107SNeil Armstrong 	.mixer = sm8150_lm,
2846efcd0107SNeil Armstrong 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2847efcd0107SNeil Armstrong 	.dspp = sm8150_dspp,
2848efcd0107SNeil Armstrong 	.pingpong_count = ARRAY_SIZE(sm8550_pp),
2849efcd0107SNeil Armstrong 	.pingpong = sm8550_pp,
2850efcd0107SNeil Armstrong 	.merge_3d_count = ARRAY_SIZE(sm8550_merge_3d),
2851efcd0107SNeil Armstrong 	.merge_3d = sm8550_merge_3d,
2852efcd0107SNeil Armstrong 	.intf_count = ARRAY_SIZE(sm8550_intf),
2853efcd0107SNeil Armstrong 	.intf = sm8550_intf,
2854efcd0107SNeil Armstrong 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2855efcd0107SNeil Armstrong 	.vbif = sdm845_vbif,
2856efcd0107SNeil Armstrong 	.reg_dma_count = 1,
2857efcd0107SNeil Armstrong 	.dma_cfg = &sm8450_regdma,
2858efcd0107SNeil Armstrong 	.perf = &sm8450_perf_data,
2859efcd0107SNeil Armstrong 	.mdss_irqs = IRQ_SM8450_MASK,
2860efcd0107SNeil Armstrong };
2861efcd0107SNeil Armstrong 
2862de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
2863591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
2864*fbbd8cceSDmitry Baryshkov 	.ubwc = &sc7280_ubwc_cfg,
2865591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
2866591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
2867591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
2868591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
2869591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
2870591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
2871fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2872fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
2873591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
2874591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
2875591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
2876591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
2877591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
2878591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
2879591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2880591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
2881477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
2882597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
2883591e34a0SKrishna Manikandan };
2884591e34a0SKrishna Manikandan 
2885de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
28865334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
2887*fbbd8cceSDmitry Baryshkov 	.ubwc = &qcm2290_ubwc_cfg,
28885334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
28895334087eSLoic Poulain 	.mdp = qcm2290_mdp,
28905334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
28915334087eSLoic Poulain 	.ctl = qcm2290_ctl,
28925334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
28935334087eSLoic Poulain 	.sspp = qcm2290_sspp,
28945334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
28955334087eSLoic Poulain 	.mixer = qcm2290_lm,
28965334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
28975334087eSLoic Poulain 	.dspp = qcm2290_dspp,
28985334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
28995334087eSLoic Poulain 	.pingpong = qcm2290_pp,
29005334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
29015334087eSLoic Poulain 	.intf = qcm2290_intf,
29025334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
29035334087eSLoic Poulain 	.vbif = sdm845_vbif,
2904477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
29055334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
29065334087eSLoic Poulain };
29075334087eSLoic Poulain 
2908abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
2909de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
2910de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
2911de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
2912de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
2913de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
2914de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
2915de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
2916de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
2917de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
29183581b706SAdam Skladowski 	{ .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg},
2919de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
29200e91bcbbSRobert Foss 	{ .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg},
2921de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
29224a352c2fSBjorn Andersson 	{ .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg},
2923100d7ef6SDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg},
2924efcd0107SNeil Armstrong 	{ .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg},
292525fdd593SJeykumar Sankaran };
292625fdd593SJeykumar Sankaran 
2927de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
292825fdd593SJeykumar Sankaran {
292925fdd593SJeykumar Sankaran 	int i;
293025fdd593SJeykumar Sankaran 
293125fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
2932de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
2933de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
293425fdd593SJeykumar Sankaran 	}
293525fdd593SJeykumar Sankaran 
293625fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
293732084967SDmitry Baryshkov 
293825fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
293925fdd593SJeykumar Sankaran }
294025fdd593SJeykumar Sankaran 
2941