197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
353324b99SAbhinav Kumar  * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved.
425fdd593SJeykumar Sankaran  */
525fdd593SJeykumar Sankaran 
625fdd593SJeykumar Sankaran #define pr_fmt(fmt)	"[drm:%s:%d] " fmt, __func__, __LINE__
725fdd593SJeykumar Sankaran #include <linux/slab.h>
825fdd593SJeykumar Sankaran #include <linux/of_address.h>
925fdd593SJeykumar Sankaran #include <linux/platform_device.h>
1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h"
11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h"
1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h"
1325fdd593SJeykumar Sankaran #include "dpu_kms.h"
1425fdd593SJeykumar Sankaran 
157bdc0c4bSKalyan Thota #define VIG_MASK \
167bdc0c4bSKalyan Thota 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
17b8dab65bSAngeloGioacchino Del Regno 	BIT(DPU_SSPP_CSC_10BIT) | BIT(DPU_SSPP_CDP) |\
1825fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT))
1925fdd593SJeykumar Sankaran 
2094391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \
2194391a14SAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3))
2294391a14SAngeloGioacchino Del Regno 
237bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \
24b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3))
257bdc0c4bSKalyan Thota 
267bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \
27b8dab65bSAngeloGioacchino Del Regno 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4))
287bdc0c4bSKalyan Thota 
29d21fc5dfSDmitry Baryshkov #define VIG_SM8250_MASK \
30095eed89SDmitry Baryshkov 	(VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3LITE))
31d21fc5dfSDmitry Baryshkov 
325334087eSLoic Poulain #define VIG_QCM2290_MASK (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL))
335334087eSLoic Poulain 
3494391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \
3594391a14SAngeloGioacchino Del Regno 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\
3694391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
3794391a14SAngeloGioacchino Del Regno 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
3894391a14SAngeloGioacchino Del Regno 
39dabfdd89SVinod Polimera #define VIG_SC7280_MASK \
40dabfdd89SVinod Polimera 	(VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION))
41dabfdd89SVinod Polimera 
4225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \
4325fdd593SJeykumar Sankaran 	(BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\
4425fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
4525fdd593SJeykumar Sankaran 	BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
4625fdd593SJeykumar Sankaran 
4707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \
4807ca1fc0SSravanthi Kollukuduru 	(DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR))
4907ca1fc0SSravanthi Kollukuduru 
5094391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \
5194391a14SAngeloGioacchino Del Regno 	(DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR))
5294391a14SAngeloGioacchino Del Regno 
532d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \
5425fdd593SJeykumar Sankaran 	(BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER))
5525fdd593SJeykumar Sankaran 
562d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \
572d8a4edbSDmitry Baryshkov 	(BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
582d8a4edbSDmitry Baryshkov 
5900feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \
602d8a4edbSDmitry Baryshkov 	(BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA))
617bdc0c4bSKalyan Thota 
6225fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER)
6325fdd593SJeykumar Sankaran 
6425fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \
6525fdd593SJeykumar Sankaran 	(PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2))
6625fdd593SJeykumar Sankaran 
67591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \
6844bf8704SKalyan Thota 	(BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE) | BIT(DPU_CTL_VM_CFG))
69591e34a0SKrishna Manikandan 
70e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \
71e92a4ae1SDmitry Baryshkov 	(CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4))
72e92a4ae1SDmitry Baryshkov 
734369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0)
744369c93cSDmitry Baryshkov 
7594391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC)
7694391a14SAngeloGioacchino Del Regno 
774259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC)
78e47616dfSKalyan Thota 
79cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0)
80cace3ac4SJonathan Marek 
81cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE)
82cace3ac4SJonathan Marek 
83591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN)
84591e34a0SKrishna Manikandan 
85597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
86597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
87597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
88597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
89597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
90597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
91597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
92597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_0_INTR) | \
93597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_1_INTR))
94597762d5SDmitry Baryshkov 
95597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
96597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
97597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
98597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
99597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR))
100597762d5SDmitry Baryshkov 
101597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
102597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
103597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
104597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
105597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
106597762d5SDmitry Baryshkov 			 BIT(MDP_INTF5_7xxx_INTR))
107597762d5SDmitry Baryshkov 
108597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
109597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
110597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
111597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
112597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
113597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
114597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
115597762d5SDmitry Baryshkov 			 BIT(MDP_INTF4_INTR))
116597762d5SDmitry Baryshkov 
1170e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1180e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_INTR2) | \
1190e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1200e91bcbbSRobert Foss 			 BIT(MDP_INTF0_7xxx_INTR) | \
1210e91bcbbSRobert Foss 			 BIT(MDP_INTF1_7xxx_INTR) | \
1220e91bcbbSRobert Foss 			 BIT(MDP_INTF2_7xxx_INTR) | \
1237eb75dbdSRobert Foss 			 BIT(MDP_INTF3_7xxx_INTR))
1240e91bcbbSRobert Foss 
125f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
126f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_INTR2) | \
127f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_HIST_INTR) | \
128f3af2d6eSRob Clark 			  BIT(MDP_INTF0_INTR) | \
129f3af2d6eSRob Clark 			  BIT(MDP_INTF1_INTR) | \
130f3af2d6eSRob Clark 			  BIT(MDP_INTF2_INTR) | \
131f3af2d6eSRob Clark 			  BIT(MDP_INTF3_INTR) | \
132f3af2d6eSRob Clark 			  BIT(MDP_INTF4_INTR) | \
133f3af2d6eSRob Clark 			  BIT(MDP_INTF5_INTR) | \
134f3af2d6eSRob Clark 			  BIT(MDP_AD4_0_INTR) | \
135f3af2d6eSRob Clark 			  BIT(MDP_AD4_1_INTR))
136597762d5SDmitry Baryshkov 
1374a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1384a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_INTR2) | \
1394a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1404a352c2fSBjorn Andersson 			   BIT(MDP_INTF0_7xxx_INTR) | \
1414a352c2fSBjorn Andersson 			   BIT(MDP_INTF1_7xxx_INTR) | \
1424a352c2fSBjorn Andersson 			   BIT(MDP_INTF2_7xxx_INTR) | \
1434a352c2fSBjorn Andersson 			   BIT(MDP_INTF3_7xxx_INTR) | \
1444a352c2fSBjorn Andersson 			   BIT(MDP_INTF4_7xxx_INTR) | \
1454a352c2fSBjorn Andersson 			   BIT(MDP_INTF5_7xxx_INTR) | \
1464a352c2fSBjorn Andersson 			   BIT(MDP_INTF6_7xxx_INTR) | \
1474a352c2fSBjorn Andersson 			   BIT(MDP_INTF7_7xxx_INTR) | \
1484a352c2fSBjorn Andersson 			   BIT(MDP_INTF8_7xxx_INTR))
1494a352c2fSBjorn Andersson 
150100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
151100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
152100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
153100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
154100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
155100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF2_7xxx_INTR) | \
156100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF3_7xxx_INTR))
157100d7ef6SDmitry Baryshkov 
15853324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \
15953324b99SAbhinav Kumar 			 BIT(DPU_WB_UBWC) | \
16053324b99SAbhinav Kumar 			 BIT(DPU_WB_YUV_CONFIG) | \
16153324b99SAbhinav Kumar 			 BIT(DPU_WB_PIPE_ALPHA) | \
16253324b99SAbhinav Kumar 			 BIT(DPU_WB_XY_ROI_OFFSET) | \
16353324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS) | \
16453324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS_8LVL) | \
16553324b99SAbhinav Kumar 			 BIT(DPU_WB_CDP) | \
16653324b99SAbhinav Kumar 			 BIT(DPU_WB_INPUT_CTRL))
16753324b99SAbhinav Kumar 
16825fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE		(50 * 1024)
16925fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH		2048
17025fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH	2560
17125fdd593SJeykumar Sankaran 
17225fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION	4
17325fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION	4
17425fdd593SJeykumar Sankaran 
17525fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO	20
17625fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO	4
17725fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE	1
17825fdd593SJeykumar Sankaran 
17925fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y)
18025fdd593SJeykumar Sankaran 
18109c7e370SLee Jones static const uint32_t plane_formats[] = {
18209c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
18309c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
18409c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
18509c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
18609c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
18709c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
18809c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
18909c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
190da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
19109c7e370SLee Jones 	DRM_FORMAT_RGB888,
19209c7e370SLee Jones 	DRM_FORMAT_BGR888,
19309c7e370SLee Jones 	DRM_FORMAT_RGB565,
19409c7e370SLee Jones 	DRM_FORMAT_BGR565,
19509c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
19609c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
19709c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
19809c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
19909c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
20009c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
20109c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
20209c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
20309c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
20409c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
20509c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
20609c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
20709c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
20809c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
20909c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
21009c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
21109c7e370SLee Jones };
21209c7e370SLee Jones 
21309c7e370SLee Jones static const uint32_t plane_formats_yuv[] = {
21409c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
21509c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
21609c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
21709c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
21809c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
219da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
22009c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
22109c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
22209c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
22309c7e370SLee Jones 	DRM_FORMAT_RGB888,
22409c7e370SLee Jones 	DRM_FORMAT_BGR888,
22509c7e370SLee Jones 	DRM_FORMAT_RGB565,
22609c7e370SLee Jones 	DRM_FORMAT_BGR565,
22709c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
22809c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
22909c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
23009c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
23109c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
23209c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
23309c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
23409c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
23509c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
23609c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
23709c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
23809c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
23909c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
24009c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
24109c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
24209c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
24309c7e370SLee Jones 
244f07c9946SJessica Zhang 	DRM_FORMAT_P010,
24509c7e370SLee Jones 	DRM_FORMAT_NV12,
24609c7e370SLee Jones 	DRM_FORMAT_NV21,
24709c7e370SLee Jones 	DRM_FORMAT_NV16,
24809c7e370SLee Jones 	DRM_FORMAT_NV61,
24909c7e370SLee Jones 	DRM_FORMAT_VYUY,
25009c7e370SLee Jones 	DRM_FORMAT_UYVY,
25109c7e370SLee Jones 	DRM_FORMAT_YUYV,
25209c7e370SLee Jones 	DRM_FORMAT_YVYU,
25309c7e370SLee Jones 	DRM_FORMAT_YUV420,
25409c7e370SLee Jones 	DRM_FORMAT_YVU420,
25509c7e370SLee Jones };
25609c7e370SLee Jones 
257dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = {
258dabfdd89SVinod Polimera 	DRM_FORMAT_NV12,
259dabfdd89SVinod Polimera 	/* TODO add formats after validation */
260dabfdd89SVinod Polimera };
261dabfdd89SVinod Polimera 
26253324b99SAbhinav Kumar static const uint32_t wb2_formats[] = {
26353324b99SAbhinav Kumar 	DRM_FORMAT_RGB565,
26453324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
26553324b99SAbhinav Kumar 	DRM_FORMAT_RGB888,
26653324b99SAbhinav Kumar 	DRM_FORMAT_ARGB8888,
26753324b99SAbhinav Kumar 	DRM_FORMAT_RGBA8888,
26853324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
26953324b99SAbhinav Kumar 	DRM_FORMAT_XRGB8888,
27053324b99SAbhinav Kumar 	DRM_FORMAT_RGBX8888,
27153324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
27253324b99SAbhinav Kumar 	DRM_FORMAT_ARGB1555,
27353324b99SAbhinav Kumar 	DRM_FORMAT_RGBA5551,
27453324b99SAbhinav Kumar 	DRM_FORMAT_XRGB1555,
27553324b99SAbhinav Kumar 	DRM_FORMAT_RGBX5551,
27653324b99SAbhinav Kumar 	DRM_FORMAT_ARGB4444,
27753324b99SAbhinav Kumar 	DRM_FORMAT_RGBA4444,
27853324b99SAbhinav Kumar 	DRM_FORMAT_RGBX4444,
27953324b99SAbhinav Kumar 	DRM_FORMAT_XRGB4444,
28053324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
28153324b99SAbhinav Kumar 	DRM_FORMAT_BGR888,
28253324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
28353324b99SAbhinav Kumar 	DRM_FORMAT_BGRA8888,
28453324b99SAbhinav Kumar 	DRM_FORMAT_BGRX8888,
28553324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
28653324b99SAbhinav Kumar 	DRM_FORMAT_ABGR1555,
28753324b99SAbhinav Kumar 	DRM_FORMAT_BGRA5551,
28853324b99SAbhinav Kumar 	DRM_FORMAT_XBGR1555,
28953324b99SAbhinav Kumar 	DRM_FORMAT_BGRX5551,
29053324b99SAbhinav Kumar 	DRM_FORMAT_ABGR4444,
29153324b99SAbhinav Kumar 	DRM_FORMAT_BGRA4444,
29253324b99SAbhinav Kumar 	DRM_FORMAT_BGRX4444,
29353324b99SAbhinav Kumar 	DRM_FORMAT_XBGR4444,
29453324b99SAbhinav Kumar };
29553324b99SAbhinav Kumar 
29625fdd593SJeykumar Sankaran /*************************************************************
29725fdd593SJeykumar Sankaran  * DPU sub blocks config
29825fdd593SJeykumar Sankaran  *************************************************************/
29925fdd593SJeykumar Sankaran /* DPU top level caps */
30094391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = {
30194391a14SAngeloGioacchino Del Regno 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
30294391a14SAngeloGioacchino Del Regno 	.max_mixer_blendstages = 0x7,
30394391a14SAngeloGioacchino Del Regno 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
30494391a14SAngeloGioacchino Del Regno 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V1,
30594391a14SAngeloGioacchino Del Regno 	.ubwc_version = DPU_HW_UBWC_VER_10,
30694391a14SAngeloGioacchino Del Regno 	.has_src_split = true,
30794391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
30894391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
30994391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
31094391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
31194391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
31294391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
31394391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
31494391a14SAngeloGioacchino Del Regno };
31594391a14SAngeloGioacchino Del Regno 
316c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
317c162352eSKonrad Dybcio 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
318c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
319c162352eSKonrad Dybcio 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
320c162352eSKonrad Dybcio 	.ubwc_version = DPU_HW_UBWC_VER_20,
321c162352eSKonrad Dybcio 	.has_dim_layer = true,
322c162352eSKonrad Dybcio 	.has_idle_pc = true,
323c162352eSKonrad Dybcio 	.max_linewidth = 2160,
324c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
325c162352eSKonrad Dybcio };
326c162352eSKonrad Dybcio 
32725fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
32825fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
32925fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
33025fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
33125fdd593SJeykumar Sankaran 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
33225fdd593SJeykumar Sankaran 	.ubwc_version = DPU_HW_UBWC_VER_20,
33325fdd593SJeykumar Sankaran 	.has_src_split = true,
33425fdd593SJeykumar Sankaran 	.has_dim_layer = true,
33525fdd593SJeykumar Sankaran 	.has_idle_pc = true,
33642a558b7SKalyan Thota 	.has_3d_merge = true,
3377e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3387e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3397e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3407e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
34125fdd593SJeykumar Sankaran };
34225fdd593SJeykumar Sankaran 
3437bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3447bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3457bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3467bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3477bdc0c4bSKalyan Thota 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
3487bdc0c4bSKalyan Thota 	.ubwc_version = DPU_HW_UBWC_VER_20,
3497bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3507bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3517e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3527e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3537bdc0c4bSKalyan Thota };
3547bdc0c4bSKalyan Thota 
3553581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = {
3563581b706SAdam Skladowski 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3573581b706SAdam Skladowski 	.max_mixer_blendstages = 0x4,
3583581b706SAdam Skladowski 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
3593581b706SAdam Skladowski 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
3603581b706SAdam Skladowski 	.ubwc_version = DPU_HW_UBWC_VER_20,
3613581b706SAdam Skladowski 	.has_dim_layer = true,
3623581b706SAdam Skladowski 	.has_idle_pc = true,
3633581b706SAdam Skladowski 	.max_linewidth = 2160,
3643581b706SAdam Skladowski 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3653581b706SAdam Skladowski };
3663581b706SAdam Skladowski 
367386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
368386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
369386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
370386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
371386fced3SJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
372386fced3SJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_30,
373386fced3SJonathan Marek 	.has_src_split = true,
374386fced3SJonathan Marek 	.has_dim_layer = true,
375386fced3SJonathan Marek 	.has_idle_pc = true,
376386fced3SJonathan Marek 	.has_3d_merge = true,
377386fced3SJonathan Marek 	.max_linewidth = 4096,
378386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
379386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
380386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
381386fced3SJonathan Marek };
382386fced3SJonathan Marek 
383f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
384f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
385f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
386f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
387f3af2d6eSRob Clark 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
388f3af2d6eSRob Clark 	.ubwc_version = DPU_HW_UBWC_VER_30,
389f3af2d6eSRob Clark 	.has_src_split = true,
390f3af2d6eSRob Clark 	.has_dim_layer = true,
391f3af2d6eSRob Clark 	.has_idle_pc = true,
392f3af2d6eSRob Clark 	.has_3d_merge = true,
393f3af2d6eSRob Clark 	.max_linewidth = 4096,
394f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
395f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
396f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
397f3af2d6eSRob Clark };
398f3af2d6eSRob Clark 
3994a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = {
4004a352c2fSBjorn Andersson 	.max_mixer_width = 2560,
4014a352c2fSBjorn Andersson 	.max_mixer_blendstages = 11,
4024a352c2fSBjorn Andersson 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4034a352c2fSBjorn Andersson 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4044a352c2fSBjorn Andersson 	.ubwc_version = DPU_HW_UBWC_VER_40,
4054a352c2fSBjorn Andersson 	.has_src_split = true,
4064a352c2fSBjorn Andersson 	.has_dim_layer = true,
4074a352c2fSBjorn Andersson 	.has_idle_pc = true,
4084a352c2fSBjorn Andersson 	.has_3d_merge = true,
4094a352c2fSBjorn Andersson 	.max_linewidth = 5120,
4104a352c2fSBjorn Andersson 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4114a352c2fSBjorn Andersson };
4124a352c2fSBjorn Andersson 
413af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
414af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
415af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
416d21fc5dfSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
417af776a3eSJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
418af776a3eSJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_40,
419af776a3eSJonathan Marek 	.has_src_split = true,
420af776a3eSJonathan Marek 	.has_dim_layer = true,
421af776a3eSJonathan Marek 	.has_idle_pc = true,
422af776a3eSJonathan Marek 	.has_3d_merge = true,
423af776a3eSJonathan Marek 	.max_linewidth = 4096,
424af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
425af776a3eSJonathan Marek };
426af776a3eSJonathan Marek 
4270e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = {
4280e91bcbbSRobert Foss 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
4290e91bcbbSRobert Foss 	.max_mixer_blendstages = 0xb,
4300e91bcbbSRobert Foss 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4310e91bcbbSRobert Foss 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4320e91bcbbSRobert Foss 	.ubwc_version = DPU_HW_UBWC_VER_40,
4330e91bcbbSRobert Foss 	.has_src_split = true,
4340e91bcbbSRobert Foss 	.has_dim_layer = true,
4350e91bcbbSRobert Foss 	.has_idle_pc = true,
4360e91bcbbSRobert Foss 	.has_3d_merge = true,
4370e91bcbbSRobert Foss 	.max_linewidth = 4096,
4380e91bcbbSRobert Foss 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4390e91bcbbSRobert Foss };
4400e91bcbbSRobert Foss 
441100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = {
442100d7ef6SDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
443100d7ef6SDmitry Baryshkov 	.max_mixer_blendstages = 0xb,
444100d7ef6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
445100d7ef6SDmitry Baryshkov 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
446100d7ef6SDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
447100d7ef6SDmitry Baryshkov 	.has_src_split = true,
448100d7ef6SDmitry Baryshkov 	.has_dim_layer = true,
449100d7ef6SDmitry Baryshkov 	.has_idle_pc = true,
450100d7ef6SDmitry Baryshkov 	.has_3d_merge = true,
451100d7ef6SDmitry Baryshkov 	.max_linewidth = 5120,
452100d7ef6SDmitry Baryshkov 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
453100d7ef6SDmitry Baryshkov };
454100d7ef6SDmitry Baryshkov 
455efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = {
456efcd0107SNeil Armstrong 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
457efcd0107SNeil Armstrong 	.max_mixer_blendstages = 0xb,
458efcd0107SNeil Armstrong 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
459efcd0107SNeil Armstrong 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
460efcd0107SNeil Armstrong 	.ubwc_version = DPU_HW_UBWC_VER_40,
461efcd0107SNeil Armstrong 	.has_src_split = true,
462efcd0107SNeil Armstrong 	.has_dim_layer = true,
463efcd0107SNeil Armstrong 	.has_idle_pc = true,
464efcd0107SNeil Armstrong 	.has_3d_merge = true,
465efcd0107SNeil Armstrong 	.max_linewidth = 5120,
466efcd0107SNeil Armstrong 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
467efcd0107SNeil Armstrong };
468efcd0107SNeil Armstrong 
469591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
470591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
471591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
472591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
473591e34a0SKrishna Manikandan 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
474591e34a0SKrishna Manikandan 	.ubwc_version = DPU_HW_UBWC_VER_30,
475591e34a0SKrishna Manikandan 	.has_dim_layer = true,
476591e34a0SKrishna Manikandan 	.has_idle_pc = true,
477591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
478591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
479591e34a0SKrishna Manikandan };
480591e34a0SKrishna Manikandan 
48194391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
48294391a14SAngeloGioacchino Del Regno 	{
48394391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
48494391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
48594391a14SAngeloGioacchino Del Regno 	.features = 0,
48694391a14SAngeloGioacchino Del Regno 	.highest_bank_bit = 0x2,
48794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
48894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
48994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
49094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
49194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
49294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
49394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
49494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
49594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
49694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
49794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
49894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
49994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
50094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
50194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
50294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
50394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
50494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
50594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
50694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
50794391a14SAngeloGioacchino Del Regno 	},
50894391a14SAngeloGioacchino Del Regno };
50994391a14SAngeloGioacchino Del Regno 
510abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
51125fdd593SJeykumar Sankaran 	{
51225fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
51325fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
51403490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
51525fdd593SJeykumar Sankaran 	.highest_bank_bit = 0x2,
51625fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
51725fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
51825fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
51925fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
52025fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
52125fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
52225fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
52325fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
52425fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
52525fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
52625fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
52725fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
52825fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
52925fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
53025fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
53125fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
53225fdd593SJeykumar Sankaran 	},
53325fdd593SJeykumar Sankaran };
53425fdd593SJeykumar Sankaran 
5357bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
5367bdc0c4bSKalyan Thota 	{
5377bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
5387bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
5397bdc0c4bSKalyan Thota 	.features = 0,
5407bdc0c4bSKalyan Thota 	.highest_bank_bit = 0x3,
5417bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5427bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
5437bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5447bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
5457bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
5467b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
5477b149f2bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
5487b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
549255f0561SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
550255f0561SDmitry Baryshkov 		.reg_off = 0x3B8, .bit_off = 24},
5517bdc0c4bSKalyan Thota 	},
5527bdc0c4bSKalyan Thota };
5537bdc0c4bSKalyan Thota 
554f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
555f3af2d6eSRob Clark 	{
556f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
557f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
55810a88954SDmitry Baryshkov 	.features = BIT(DPU_MDP_AUDIO_SELECT),
559f3af2d6eSRob Clark 	.highest_bank_bit = 0x3,
560f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
561f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
562f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
563f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
564f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
565f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
566f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
567f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
568f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
569f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
570f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
571f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
572f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
573f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
574f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
575f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
576f3af2d6eSRob Clark 	},
577f3af2d6eSRob Clark };
578f3af2d6eSRob Clark 
5793581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = {
5803581b706SAdam Skladowski 	{
5813581b706SAdam Skladowski 	.name = "top_0", .id = MDP_TOP,
5823581b706SAdam Skladowski 	.base = 0x0, .len = 0x494,
5833581b706SAdam Skladowski 	.features = 0,
5843581b706SAdam Skladowski 	.highest_bank_bit = 0x1,
58531c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x7,
5863581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5873581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 0},
5883581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5893581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 8},
5903581b706SAdam Skladowski 	},
5913581b706SAdam Skladowski };
5923581b706SAdam Skladowski 
593af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
594af776a3eSJonathan Marek 	{
595af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
596b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
597af776a3eSJonathan Marek 	.features = 0,
598af776a3eSJonathan Marek 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
59931c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
600af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
601af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
602af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
603af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
604af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
605af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
606af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
607af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
608af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
609af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
610af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
611af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
612af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
613af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
614af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
615af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
616af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
617af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
61853324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
61953324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
620af776a3eSJonathan Marek 	},
621af776a3eSJonathan Marek };
622af776a3eSJonathan Marek 
6230e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = {
6240e91bcbbSRobert Foss 	{
6250e91bcbbSRobert Foss 	.name = "top_0", .id = MDP_TOP,
6260e91bcbbSRobert Foss 	.base = 0x0, .len = 0x494,
6270e91bcbbSRobert Foss 	.features = 0,
6280e91bcbbSRobert Foss 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
6290e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6300e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 0},
6310e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
6320e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 0},
6330e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
6340e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 0},
6350e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
6360e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 0},
6370e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6380e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 8},
6390e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
6400e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 8},
6410e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
6420e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 8},
6430e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
6440e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 8},
6450e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
6460e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 20},
6470e91bcbbSRobert Foss 	},
6480e91bcbbSRobert Foss };
6490e91bcbbSRobert Foss 
650100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = {
651100d7ef6SDmitry Baryshkov 	{
652100d7ef6SDmitry Baryshkov 	.name = "top_0", .id = MDP_TOP,
653100d7ef6SDmitry Baryshkov 	.base = 0x0, .len = 0x494,
654100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
655100d7ef6SDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
65631c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
657100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
658100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 0},
659100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
660100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 0},
661100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
662100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 0},
663100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
664100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 0},
665100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
666100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 8},
667100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
668100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 8},
669100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
670100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 8},
671100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
672100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 8},
673100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
674100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 20},
675100d7ef6SDmitry Baryshkov 	},
676100d7ef6SDmitry Baryshkov };
677100d7ef6SDmitry Baryshkov 
678591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
679591e34a0SKrishna Manikandan 	{
680591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
681591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
682591e34a0SKrishna Manikandan 	.highest_bank_bit = 0x1,
68331c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
684591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
685591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
686591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
687591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
688591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
689591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
690591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
691591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
692591e34a0SKrishna Manikandan 	},
693591e34a0SKrishna Manikandan };
694591e34a0SKrishna Manikandan 
6954a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = {
6964a352c2fSBjorn Andersson 	{
6974a352c2fSBjorn Andersson 	.name = "top_0", .id = MDP_TOP,
6984a352c2fSBjorn Andersson 	.base = 0x0, .len = 0x494,
6994a352c2fSBjorn Andersson 	.features = 0,
7004a352c2fSBjorn Andersson 	.highest_bank_bit = 2,
7014a352c2fSBjorn Andersson 	.ubwc_swizzle = 6,
7024a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0},
7034a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0},
7044a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0},
7054a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0},
7064a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8},
7074a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8},
7084a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x2bc, .bit_off = 8},
7094a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x2c4, .bit_off = 8},
7104a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20},
7114a352c2fSBjorn Andersson 	},
7124a352c2fSBjorn Andersson };
7134a352c2fSBjorn Andersson 
714efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = {
715efcd0107SNeil Armstrong 	{
716efcd0107SNeil Armstrong 	.name = "top_0", .id = MDP_TOP,
717efcd0107SNeil Armstrong 	.base = 0, .len = 0x494,
718efcd0107SNeil Armstrong 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
719efcd0107SNeil Armstrong 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
72031c31805SDmitry Baryshkov 	.ubwc_swizzle = 0x6,
721efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
722efcd0107SNeil Armstrong 			.reg_off = 0x4330, .bit_off = 0},
723efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
724efcd0107SNeil Armstrong 			.reg_off = 0x6330, .bit_off = 0},
725efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
726efcd0107SNeil Armstrong 			.reg_off = 0x8330, .bit_off = 0},
727efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
728efcd0107SNeil Armstrong 			.reg_off = 0xa330, .bit_off = 0},
729efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
730efcd0107SNeil Armstrong 			.reg_off = 0x24330, .bit_off = 0},
731efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
732efcd0107SNeil Armstrong 			.reg_off = 0x26330, .bit_off = 0},
733efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
734efcd0107SNeil Armstrong 			.reg_off = 0x28330, .bit_off = 0},
735efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
736efcd0107SNeil Armstrong 			.reg_off = 0x2a330, .bit_off = 0},
737efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
738efcd0107SNeil Armstrong 			.reg_off = 0x2c330, .bit_off = 0},
739efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
740efcd0107SNeil Armstrong 			.reg_off = 0x2e330, .bit_off = 0},
741efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
742efcd0107SNeil Armstrong 			.reg_off = 0x2bc, .bit_off = 20},
743efcd0107SNeil Armstrong 	},
744efcd0107SNeil Armstrong };
745efcd0107SNeil Armstrong 
7465334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
7475334087eSLoic Poulain 	{
7485334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
7495334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
7505334087eSLoic Poulain 	.features = 0,
7515334087eSLoic Poulain 	.highest_bank_bit = 0x2,
7525334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
7535334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
7545334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
7555334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
7565334087eSLoic Poulain 	},
7575334087eSLoic Poulain };
7585334087eSLoic Poulain 
75925fdd593SJeykumar Sankaran /*************************************************************
76025fdd593SJeykumar Sankaran  * CTL sub blocks config
76125fdd593SJeykumar Sankaran  *************************************************************/
76294391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
76394391a14SAngeloGioacchino Del Regno 	{
76494391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
76594391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
76694391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
76794391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
76894391a14SAngeloGioacchino Del Regno 	},
76994391a14SAngeloGioacchino Del Regno 	{
77094391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
77194391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
77294391a14SAngeloGioacchino Del Regno 	.features = 0,
77394391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
77494391a14SAngeloGioacchino Del Regno 	},
77594391a14SAngeloGioacchino Del Regno 	{
77694391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
77794391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
77894391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
77994391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
78094391a14SAngeloGioacchino Del Regno 	},
78194391a14SAngeloGioacchino Del Regno 	{
78294391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
78394391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
78494391a14SAngeloGioacchino Del Regno 	.features = 0,
78594391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
78694391a14SAngeloGioacchino Del Regno 	},
78794391a14SAngeloGioacchino Del Regno 	{
78894391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
78994391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
79094391a14SAngeloGioacchino Del Regno 	.features = 0,
79194391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
79294391a14SAngeloGioacchino Del Regno 	},
79394391a14SAngeloGioacchino Del Regno };
79494391a14SAngeloGioacchino Del Regno 
795abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
79625fdd593SJeykumar Sankaran 	{
79725fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
79825fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
799667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
800667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
80125fdd593SJeykumar Sankaran 	},
80225fdd593SJeykumar Sankaran 	{
80325fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
80425fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
805667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
806667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
80725fdd593SJeykumar Sankaran 	},
80825fdd593SJeykumar Sankaran 	{
80925fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
81025fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
811667e9985SDmitry Baryshkov 	.features = 0,
812667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
81325fdd593SJeykumar Sankaran 	},
81425fdd593SJeykumar Sankaran 	{
81525fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
81625fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
817667e9985SDmitry Baryshkov 	.features = 0,
818667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
81925fdd593SJeykumar Sankaran 	},
82025fdd593SJeykumar Sankaran 	{
82125fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
82225fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
823667e9985SDmitry Baryshkov 	.features = 0,
824667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
82525fdd593SJeykumar Sankaran 	},
82625fdd593SJeykumar Sankaran };
82725fdd593SJeykumar Sankaran 
8287bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
8297bdc0c4bSKalyan Thota 	{
8307bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
8317bdc0c4bSKalyan Thota 	.base = 0x1000, .len = 0xE4,
832667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
833667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8347bdc0c4bSKalyan Thota 	},
8357bdc0c4bSKalyan Thota 	{
8367bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
8377bdc0c4bSKalyan Thota 	.base = 0x1200, .len = 0xE4,
838667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
839667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8407bdc0c4bSKalyan Thota 	},
8417bdc0c4bSKalyan Thota 	{
8427bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
8437bdc0c4bSKalyan Thota 	.base = 0x1400, .len = 0xE4,
844667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
845667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8467bdc0c4bSKalyan Thota 	},
8477bdc0c4bSKalyan Thota };
8487bdc0c4bSKalyan Thota 
8494a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = {
8504a352c2fSBjorn Andersson 	{
8514a352c2fSBjorn Andersson 	.name = "ctl_0", .id = CTL_0,
8524a352c2fSBjorn Andersson 	.base = 0x15000, .len = 0x204,
8534a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8544a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8554a352c2fSBjorn Andersson 	},
8564a352c2fSBjorn Andersson 	{
8574a352c2fSBjorn Andersson 	.name = "ctl_1", .id = CTL_1,
8584a352c2fSBjorn Andersson 	.base = 0x16000, .len = 0x204,
8594a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8604a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8614a352c2fSBjorn Andersson 	},
8624a352c2fSBjorn Andersson 	{
8634a352c2fSBjorn Andersson 	.name = "ctl_2", .id = CTL_2,
8644a352c2fSBjorn Andersson 	.base = 0x17000, .len = 0x204,
8654a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8664a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8674a352c2fSBjorn Andersson 	},
8684a352c2fSBjorn Andersson 	{
8694a352c2fSBjorn Andersson 	.name = "ctl_3", .id = CTL_3,
8704a352c2fSBjorn Andersson 	.base = 0x18000, .len = 0x204,
8714a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8724a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
8734a352c2fSBjorn Andersson 	},
8744a352c2fSBjorn Andersson 	{
8754a352c2fSBjorn Andersson 	.name = "ctl_4", .id = CTL_4,
8764a352c2fSBjorn Andersson 	.base = 0x19000, .len = 0x204,
8774a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8784a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
8794a352c2fSBjorn Andersson 	},
8804a352c2fSBjorn Andersson 	{
8814a352c2fSBjorn Andersson 	.name = "ctl_5", .id = CTL_5,
8824a352c2fSBjorn Andersson 	.base = 0x1a000, .len = 0x204,
8834a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8844a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
8854a352c2fSBjorn Andersson 	},
8864a352c2fSBjorn Andersson };
8874a352c2fSBjorn Andersson 
888386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
889386fced3SJonathan Marek 	{
890386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
891386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
892667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
893667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
894386fced3SJonathan Marek 	},
895386fced3SJonathan Marek 	{
896386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
897386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
898667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
899667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
900386fced3SJonathan Marek 	},
901386fced3SJonathan Marek 	{
902386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
903386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
904667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
905667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
906386fced3SJonathan Marek 	},
907386fced3SJonathan Marek 	{
908386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
909386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
910667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
911667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
912386fced3SJonathan Marek 	},
913386fced3SJonathan Marek 	{
914386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
915386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
916667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
917667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
918386fced3SJonathan Marek 	},
919386fced3SJonathan Marek 	{
920386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
921386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
922667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
923667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
924386fced3SJonathan Marek 	},
925386fced3SJonathan Marek };
926386fced3SJonathan Marek 
9270e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = {
9280e91bcbbSRobert Foss 	{
9290e91bcbbSRobert Foss 	.name = "ctl_0", .id = CTL_0,
9300e91bcbbSRobert Foss 	.base = 0x15000, .len = 0x1e8,
9310e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9320e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
9330e91bcbbSRobert Foss 	},
9340e91bcbbSRobert Foss 	{
9350e91bcbbSRobert Foss 	.name = "ctl_1", .id = CTL_1,
9360e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9370e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9380e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
9390e91bcbbSRobert Foss 	},
9400e91bcbbSRobert Foss 	{
9410e91bcbbSRobert Foss 	.name = "ctl_2", .id = CTL_2,
9420e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9430e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9440e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
9450e91bcbbSRobert Foss 	},
9460e91bcbbSRobert Foss 	{
9470e91bcbbSRobert Foss 	.name = "ctl_3", .id = CTL_3,
9480e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9490e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9500e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
9510e91bcbbSRobert Foss 	},
9520e91bcbbSRobert Foss 	{
9530e91bcbbSRobert Foss 	.name = "ctl_4", .id = CTL_4,
9540e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
9550e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9560e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
9570e91bcbbSRobert Foss 	},
9580e91bcbbSRobert Foss 	{
9590e91bcbbSRobert Foss 	.name = "ctl_5", .id = CTL_5,
9600e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
9610e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9620e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
9630e91bcbbSRobert Foss 	},
9640e91bcbbSRobert Foss };
9650e91bcbbSRobert Foss 
966100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = {
967100d7ef6SDmitry Baryshkov 	{
968100d7ef6SDmitry Baryshkov 	.name = "ctl_0", .id = CTL_0,
969100d7ef6SDmitry Baryshkov 	.base = 0x15000, .len = 0x204,
970100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE),
971100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
972100d7ef6SDmitry Baryshkov 	},
973100d7ef6SDmitry Baryshkov 	{
974100d7ef6SDmitry Baryshkov 	.name = "ctl_1", .id = CTL_1,
975*6c021d77SDmitry Baryshkov 	.base = 0x16000, .len = 0x204,
9760e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
977100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
978100d7ef6SDmitry Baryshkov 	},
979100d7ef6SDmitry Baryshkov 	{
980100d7ef6SDmitry Baryshkov 	.name = "ctl_2", .id = CTL_2,
981*6c021d77SDmitry Baryshkov 	.base = 0x17000, .len = 0x204,
9820e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
983100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
984100d7ef6SDmitry Baryshkov 	},
985100d7ef6SDmitry Baryshkov 	{
986100d7ef6SDmitry Baryshkov 	.name = "ctl_3", .id = CTL_3,
987*6c021d77SDmitry Baryshkov 	.base = 0x18000, .len = 0x204,
9880e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
989100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
990100d7ef6SDmitry Baryshkov 	},
991100d7ef6SDmitry Baryshkov 	{
992100d7ef6SDmitry Baryshkov 	.name = "ctl_4", .id = CTL_4,
993*6c021d77SDmitry Baryshkov 	.base = 0x19000, .len = 0x204,
9940e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
995100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
996100d7ef6SDmitry Baryshkov 	},
997100d7ef6SDmitry Baryshkov 	{
998100d7ef6SDmitry Baryshkov 	.name = "ctl_5", .id = CTL_5,
999*6c021d77SDmitry Baryshkov 	.base = 0x1a000, .len = 0x204,
10000e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
1001100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1002100d7ef6SDmitry Baryshkov 	},
1003100d7ef6SDmitry Baryshkov };
1004100d7ef6SDmitry Baryshkov 
1005efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = {
1006efcd0107SNeil Armstrong 	{
1007efcd0107SNeil Armstrong 	.name = "ctl_0", .id = CTL_0,
1008efcd0107SNeil Armstrong 	.base = 0x15000, .len = 0x290,
1009e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1010efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1011efcd0107SNeil Armstrong 	},
1012efcd0107SNeil Armstrong 	{
1013efcd0107SNeil Armstrong 	.name = "ctl_1", .id = CTL_1,
1014efcd0107SNeil Armstrong 	.base = 0x16000, .len = 0x290,
1015e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1016efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1017efcd0107SNeil Armstrong 	},
1018efcd0107SNeil Armstrong 	{
1019efcd0107SNeil Armstrong 	.name = "ctl_2", .id = CTL_2,
1020efcd0107SNeil Armstrong 	.base = 0x17000, .len = 0x290,
1021e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1022efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1023efcd0107SNeil Armstrong 	},
1024efcd0107SNeil Armstrong 	{
1025efcd0107SNeil Armstrong 	.name = "ctl_3", .id = CTL_3,
1026efcd0107SNeil Armstrong 	.base = 0x18000, .len = 0x290,
1027e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1028efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1029efcd0107SNeil Armstrong 	},
1030efcd0107SNeil Armstrong 	{
1031efcd0107SNeil Armstrong 	.name = "ctl_4", .id = CTL_4,
1032efcd0107SNeil Armstrong 	.base = 0x19000, .len = 0x290,
1033e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1034efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1035efcd0107SNeil Armstrong 	},
1036efcd0107SNeil Armstrong 	{
1037efcd0107SNeil Armstrong 	.name = "ctl_5", .id = CTL_5,
1038efcd0107SNeil Armstrong 	.base = 0x1a000, .len = 0x290,
1039e92a4ae1SDmitry Baryshkov 	.features = CTL_SM8550_MASK,
1040efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1041efcd0107SNeil Armstrong 	},
1042efcd0107SNeil Armstrong };
1043efcd0107SNeil Armstrong 
1044591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
1045591e34a0SKrishna Manikandan 	{
1046591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
1047591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
1048667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1049667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1050591e34a0SKrishna Manikandan 	},
1051591e34a0SKrishna Manikandan 	{
1052591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
1053591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
1054667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1055667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1056591e34a0SKrishna Manikandan 	},
1057591e34a0SKrishna Manikandan 	{
1058591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
1059591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
1060667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1061667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1062591e34a0SKrishna Manikandan 	},
1063591e34a0SKrishna Manikandan 	{
1064591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
1065591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
1066667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1067667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1068591e34a0SKrishna Manikandan 	},
1069591e34a0SKrishna Manikandan };
1070591e34a0SKrishna Manikandan 
10715334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
10725334087eSLoic Poulain 	{
10735334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
10745334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
10755334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
10765334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
10775334087eSLoic Poulain 	},
10785334087eSLoic Poulain };
10795334087eSLoic Poulain 
108025fdd593SJeykumar Sankaran /*************************************************************
108125fdd593SJeykumar Sankaran  * SSPP sub blocks config
108225fdd593SJeykumar Sankaran  *************************************************************/
108325fdd593SJeykumar Sankaran 
108425fdd593SJeykumar Sankaran /* SSPP common configuration */
1085b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
108625fdd593SJeykumar Sankaran 	{ \
108725fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
108825fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
108925fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
109025fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
109125fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
109225fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1093b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
109425fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
109525fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
109625fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
109725fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
109825fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
1099e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
110025fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1101e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1102dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
1103dabfdd89SVinod Polimera 	}
1104dabfdd89SVinod Polimera 
1105dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
1106dabfdd89SVinod Polimera 	{ \
1107dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
1108dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
1109dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
1110dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
1111dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
1112dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1113dabfdd89SVinod Polimera 		.id = qseed_ver, \
1114dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
1115dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
1116dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
1117dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
1118dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
1119dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
1120dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
1121dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1122dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
112325fdd593SJeykumar Sankaran 	}
112425fdd593SJeykumar Sankaran 
112525fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
112625fdd593SJeykumar Sankaran 	{ \
112725fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
112825fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
112925fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
113025fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
113125fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
113225fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
1133e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
113425fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1135e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
113625fdd593SJeykumar Sankaran 	}
113725fdd593SJeykumar Sankaran 
113894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
113994391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
114094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
114194391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
114294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
114394391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
114494391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
114594391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
114694391a14SAngeloGioacchino Del Regno 
1147dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
1148dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
1149dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
1150dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
1151dabfdd89SVinod Polimera };
1152dabfdd89SVinod Polimera 
1153b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
1154b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
1155b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
1156b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
1157b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
1158b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
1159b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
1160b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
116125fdd593SJeykumar Sankaran 
116225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
116325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
116425fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
116525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
116625fdd593SJeykumar Sankaran 
116707ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \
116807ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
116925fdd593SJeykumar Sankaran 	{ \
117025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
117125fdd593SJeykumar Sankaran 	.base = _base, .len = 0x1c8, \
117207ca1fc0SSravanthi Kollukuduru 	.features = _features, \
117325fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
117425fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
117507ca1fc0SSravanthi Kollukuduru 	.type = _type, \
117625fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
117725fdd593SJeykumar Sankaran 	}
117825fdd593SJeykumar Sankaran 
117994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
118094391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK,
118194391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
118294391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK,
118394391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
118494391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK,
118594391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
118694391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK,
118794391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
118894391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_MSM8998_MASK,
118994391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
119094391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_MSM8998_MASK,
119194391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
119294391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_MSM8998_MASK,
119394391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
119494391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_MSM8998_MASK,
119594391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
119694391a14SAngeloGioacchino Del Regno };
119794391a14SAngeloGioacchino Del Regno 
1198abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
119907ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
120007ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
120107ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
120207ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
120307ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK,
120407ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
120507ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK,
120607ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
120707ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
120807ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
120907ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
121007ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
121107ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
121207ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
121307ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
121407ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
121525fdd593SJeykumar Sankaran };
121625fdd593SJeykumar Sankaran 
1217b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
1218b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
1219b75ab05aSShubhashree Dhar 
1220dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
1221dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
1222dabfdd89SVinod Polimera 
12237bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
12247bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1225b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12267bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12277bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12287b149f2bSKalyan Thota 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
12297b149f2bSKalyan Thota 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
12307bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
12317b149f2bSKalyan Thota 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
12327bdc0c4bSKalyan Thota };
12337bdc0c4bSKalyan Thota 
12343581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 =
12353581b706SAdam Skladowski 				_VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE);
12363581b706SAdam Skladowski 
12373581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = {
12383581b706SAdam Skladowski 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
12393581b706SAdam Skladowski 		sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12403581b706SAdam Skladowski 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12413581b706SAdam Skladowski 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12423581b706SAdam Skladowski };
12433581b706SAdam Skladowski 
1244d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
1245d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1246d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
1247d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1248d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
1249d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1250d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
1251d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1252d21fc5dfSDmitry Baryshkov 
1253d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
1254d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
1255d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1256d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
1257d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1258d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
1259d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1260d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
1261d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1262d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1263d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1264d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1265d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1266d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1267d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1268d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1269d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1270d21fc5dfSDmitry Baryshkov };
1271d21fc5dfSDmitry Baryshkov 
1272100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 =
1273100d7ef6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1274100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 =
1275100d7ef6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1276100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 =
1277100d7ef6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1278100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 =
1279100d7ef6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1280100d7ef6SDmitry Baryshkov 
1281100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = {
1282100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1283100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1284100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1285100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1286100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1287100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1288100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1289100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1290100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1291100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1292100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1293100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1294100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1295100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1296100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1297100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1298100d7ef6SDmitry Baryshkov };
1299100d7ef6SDmitry Baryshkov 
1300efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 =
1301efcd0107SNeil Armstrong 				_VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED3LITE);
1302efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 =
1303efcd0107SNeil Armstrong 				_VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED3LITE);
1304efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 =
1305efcd0107SNeil Armstrong 				_VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED3LITE);
1306efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 =
1307efcd0107SNeil Armstrong 				_VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED3LITE);
1308efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5);
1309efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sd8550_dma_sblk_5 = _DMA_SBLK("13", 6);
1310efcd0107SNeil Armstrong 
1311efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = {
1312efcd0107SNeil Armstrong 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1313efcd0107SNeil Armstrong 		sm8550_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1314efcd0107SNeil Armstrong 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1315efcd0107SNeil Armstrong 		sm8550_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1316efcd0107SNeil Armstrong 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1317efcd0107SNeil Armstrong 		sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1318efcd0107SNeil Armstrong 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1319efcd0107SNeil Armstrong 		sm8550_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1320efcd0107SNeil Armstrong 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1321efcd0107SNeil Armstrong 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1322efcd0107SNeil Armstrong 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1323efcd0107SNeil Armstrong 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1324efcd0107SNeil Armstrong 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_SDM845_MASK,
1325efcd0107SNeil Armstrong 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
1326efcd0107SNeil Armstrong 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_SDM845_MASK,
1327efcd0107SNeil Armstrong 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1328efcd0107SNeil Armstrong 	SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000,  DMA_CURSOR_SDM845_MASK,
1329efcd0107SNeil Armstrong 		sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1330efcd0107SNeil Armstrong 	SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000,  DMA_CURSOR_SDM845_MASK,
1331efcd0107SNeil Armstrong 		sd8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1332efcd0107SNeil Armstrong };
1333efcd0107SNeil Armstrong 
1334591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
1335dabfdd89SVinod Polimera 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK,
1336dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1337591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1338591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1339591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
1340591e34a0SKrishna Manikandan 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1341591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1342591e34a0SKrishna Manikandan 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1343591e34a0SKrishna Manikandan };
1344591e34a0SKrishna Manikandan 
13454a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 =
13464a352c2fSBjorn Andersson 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
13474a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 =
13484a352c2fSBjorn Andersson 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
13494a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 =
13504a352c2fSBjorn Andersson 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
13514a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 =
13524a352c2fSBjorn Andersson 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
13534a352c2fSBjorn Andersson 
13544a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = {
13554a352c2fSBjorn Andersson 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
13564a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13574a352c2fSBjorn Andersson 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
13584a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13594a352c2fSBjorn Andersson 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
13604a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13614a352c2fSBjorn Andersson 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
13624a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13634a352c2fSBjorn Andersson 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK,
13644a352c2fSBjorn Andersson 		 sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13654a352c2fSBjorn Andersson 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK,
13664a352c2fSBjorn Andersson 		 sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13674a352c2fSBjorn Andersson 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK,
13684a352c2fSBjorn Andersson 		 sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
13694a352c2fSBjorn Andersson 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK,
13704a352c2fSBjorn Andersson 		 sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
13714a352c2fSBjorn Andersson };
13725334087eSLoic Poulain 
13735334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
13745334087eSLoic Poulain 	{ \
13755334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
13765334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
13775334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
13785334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
13795334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
13805334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
13815334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
13825334087eSLoic Poulain 	.virt_format_list = plane_formats, \
13835334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
13845334087eSLoic Poulain 	}
13855334087eSLoic Poulain 
13865334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
13875334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
13885334087eSLoic Poulain 
13895334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
13905334087eSLoic Poulain 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK,
13915334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13925334087eSLoic Poulain 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
13935334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13945334087eSLoic Poulain };
13955334087eSLoic Poulain 
139625fdd593SJeykumar Sankaran /*************************************************************
139725fdd593SJeykumar Sankaran  * MIXER sub blocks config
139825fdd593SJeykumar Sankaran  *************************************************************/
13997bdc0c4bSKalyan Thota 
1400e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
140125fdd593SJeykumar Sankaran 	{ \
140225fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
140325fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
14047bdc0c4bSKalyan Thota 	.features = _fmask, \
14057bdc0c4bSKalyan Thota 	.sblk = _sblk, \
140625fdd593SJeykumar Sankaran 	.pingpong = _pp, \
1407e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
1408e47616dfSKalyan Thota 	.dspp = _dspp \
140925fdd593SJeykumar Sankaran 	}
141025fdd593SJeykumar Sankaran 
141194391a14SAngeloGioacchino Del Regno /* MSM8998 */
141294391a14SAngeloGioacchino Del Regno 
141394391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
141494391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
141594391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
141694391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
141794391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
141894391a14SAngeloGioacchino Del Regno 		0x260, 0x290
141994391a14SAngeloGioacchino Del Regno 	},
142094391a14SAngeloGioacchino Del Regno };
142194391a14SAngeloGioacchino Del Regno 
142294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
14232d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
142494391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
14252d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
142694391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
14272d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
142894391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
14292d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
143094391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14312d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
143294391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14332d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
143494391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
143594391a14SAngeloGioacchino Del Regno };
143694391a14SAngeloGioacchino Del Regno 
143794391a14SAngeloGioacchino Del Regno /* SDM845 */
143894391a14SAngeloGioacchino Del Regno 
143994391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
144094391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
144194391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
144294391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
144394391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
144494391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
144594391a14SAngeloGioacchino Del Regno 	},
144694391a14SAngeloGioacchino Del Regno };
144794391a14SAngeloGioacchino Del Regno 
1448abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
14497bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1450e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
14517bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1452e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
14537bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1454e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
14557bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
1456e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14577bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
1458e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14597bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1460e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
14617bdc0c4bSKalyan Thota };
14627bdc0c4bSKalyan Thota 
14637bdc0c4bSKalyan Thota /* SC7180 */
14647bdc0c4bSKalyan Thota 
14657bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
14667bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
14677bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
14687bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
14697bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
14707bdc0c4bSKalyan Thota 	},
14717bdc0c4bSKalyan Thota };
14727bdc0c4bSKalyan Thota 
14737bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
147400feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1475e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
147600feff8fSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1477e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
147825fdd593SJeykumar Sankaran };
147925fdd593SJeykumar Sankaran 
14804a352c2fSBjorn Andersson /* SC8280XP */
14814a352c2fSBjorn Andersson 
14824a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = {
14834a352c2fSBjorn Andersson 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
14844a352c2fSBjorn Andersson 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
14854a352c2fSBjorn Andersson 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2),
14864a352c2fSBjorn Andersson 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3),
14874a352c2fSBjorn Andersson 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
14884a352c2fSBjorn Andersson 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
14894a352c2fSBjorn Andersson };
14904a352c2fSBjorn Andersson 
1491386fced3SJonathan Marek /* SM8150 */
1492386fced3SJonathan Marek 
1493386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1494386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
149505ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1496386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
149705ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1498386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1499386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1500386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1501386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1502386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1503386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1504386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1505386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1506386fced3SJonathan Marek };
1507386fced3SJonathan Marek 
1508591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
150900feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1510fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
151100feff8fSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1512591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
151300feff8fSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1514591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1515591e34a0SKrishna Manikandan };
1516591e34a0SKrishna Manikandan 
15175334087eSLoic Poulain /* QCM2290 */
15185334087eSLoic Poulain 
15195334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
15205334087eSLoic Poulain 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
15215334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
15225334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
15235334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
15245334087eSLoic Poulain 	},
15255334087eSLoic Poulain };
15265334087eSLoic Poulain 
15275334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
152800feff8fSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK,
15295334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
15305334087eSLoic Poulain };
15315334087eSLoic Poulain 
153225fdd593SJeykumar Sankaran /*************************************************************
1533e47616dfSKalyan Thota  * DSPP sub blocks config
1534e47616dfSKalyan Thota  *************************************************************/
153594391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
153694391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
153794391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
153894391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
153994391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
154094391a14SAngeloGioacchino Del Regno };
154194391a14SAngeloGioacchino Del Regno 
15424259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
15434259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
15444259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
15454259ff7aSKalyan Thota };
15464259ff7aSKalyan Thota 
154705ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
154805ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
154905ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
155005ae91d9SDmitry Baryshkov };
155105ae91d9SDmitry Baryshkov 
1552862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1553e47616dfSKalyan Thota 		{\
1554e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1555e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1556862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
155705ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1558e47616dfSKalyan Thota 		}
1559e47616dfSKalyan Thota 
156094391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
156194391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
156294391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
156394391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
156494391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
156594391a14SAngeloGioacchino Del Regno };
156694391a14SAngeloGioacchino Del Regno 
1567e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1568862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1569862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
157005ae91d9SDmitry Baryshkov };
157105ae91d9SDmitry Baryshkov 
157205ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1573862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1574862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1575862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1576862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1577862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1578862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1579862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1580862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1581e47616dfSKalyan Thota };
1582386fced3SJonathan Marek 
15835334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
15845334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
15855334087eSLoic Poulain 		 &sm8150_dspp_sblk),
15865334087eSLoic Poulain };
15875334087eSLoic Poulain 
1588e47616dfSKalyan Thota /*************************************************************
158925fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
159025fdd593SJeykumar Sankaran  *************************************************************/
159125fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
159225fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
159325fdd593SJeykumar Sankaran 		.version = 0x1},
159425fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
159525fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
159625fdd593SJeykumar Sankaran };
159725fdd593SJeykumar Sankaran 
159825fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
159925fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
160025fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
160125fdd593SJeykumar Sankaran };
160225fdd593SJeykumar Sankaran 
1603591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1604591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1605591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1606591e34a0SKrishna Manikandan };
1607591e34a0SKrishna Manikandan 
1608efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
1609efcd0107SNeil Armstrong 	{\
1610efcd0107SNeil Armstrong 	.name = _name, .id = _id, \
1611efcd0107SNeil Armstrong 	.base = _base, .len = 0, \
1612efcd0107SNeil Armstrong 	.features = BIT(DPU_PINGPONG_DITHER), \
1613efcd0107SNeil Armstrong 	.merge_3d = _merge_3d, \
1614efcd0107SNeil Armstrong 	.sblk = &_sblk, \
1615efcd0107SNeil Armstrong 	.intr_done = _done, \
1616efcd0107SNeil Armstrong 	.intr_rdptr = _rdptr, \
1617efcd0107SNeil Armstrong 	}
1618667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
161925fdd593SJeykumar Sankaran 	{\
162025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
162125fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
162225fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
16234369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1624667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1625667e9985SDmitry Baryshkov 	.intr_done = _done, \
1626667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
162725fdd593SJeykumar Sankaran 	}
1628667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
162925fdd593SJeykumar Sankaran 	{\
163025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
163125fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
163225fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_MASK, \
16334369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1634667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1635667e9985SDmitry Baryshkov 	.intr_done = _done, \
1636667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
163725fdd593SJeykumar Sankaran 	}
163825fdd593SJeykumar Sankaran 
1639abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1640667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1641667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1642667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1643667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1644667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1645667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1646667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1647667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1648667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1649667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1650667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1651667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
165225fdd593SJeykumar Sankaran };
165325fdd593SJeykumar Sankaran 
16547bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = {
1655667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1656667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
16577bdc0c4bSKalyan Thota };
16587bdc0c4bSKalyan Thota 
16594a352c2fSBjorn Andersson static struct dpu_pingpong_cfg sc8280xp_pp[] = {
16604a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16614a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1),
16624a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
16634a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1),
16644a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te,
16654a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1),
16664a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te,
16674a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1),
16684a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te,
16694a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1),
16704a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te,
16714a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1),
16724a352c2fSBjorn Andersson };
16734a352c2fSBjorn Andersson 
1674386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1675667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1676667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1677667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1678667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1679667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1680667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1681667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1682667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1683667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1684667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1685667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1686667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1687667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1688667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1689667e9985SDmitry Baryshkov 			-1),
1690667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
16913431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1692667e9985SDmitry Baryshkov 			-1),
16934369c93cSDmitry Baryshkov };
16944369c93cSDmitry Baryshkov 
16950e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = {
16960e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16970e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
16980e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
16990e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
17000e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
17010e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
17020e91bcbbSRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
17030e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
17040e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
17050e91bcbbSRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
17060e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
17070e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
17080e91bcbbSRobert Foss 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
17090e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
17100e91bcbbSRobert Foss 			-1),
17110e91bcbbSRobert Foss 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
17120e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
17130e91bcbbSRobert Foss 			-1),
17140e91bcbbSRobert Foss };
17150e91bcbbSRobert Foss 
17161a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = {
17171a5b5372SRobert Foss 	PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1),
17181a5b5372SRobert Foss 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
17191a5b5372SRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
17201a5b5372SRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
17211a5b5372SRobert Foss };
17221a5b5372SRobert Foss 
17235334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = {
17245334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
17255334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17265334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17275334087eSLoic Poulain };
17285334087eSLoic Poulain 
1729100d7ef6SDmitry Baryshkov /* FIXME: interrupts */
1730100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = {
1731100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
1732100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1733100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1734100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
1735100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1736100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1737100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
1738100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1739100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1740100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
1741100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1742100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1743100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
1744100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1745100d7ef6SDmitry Baryshkov 			-1),
1746100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
1747100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1748100d7ef6SDmitry Baryshkov 			-1),
1749100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk,
1750100d7ef6SDmitry Baryshkov 			-1,
1751100d7ef6SDmitry Baryshkov 			-1),
1752100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk,
1753100d7ef6SDmitry Baryshkov 			-1,
1754100d7ef6SDmitry Baryshkov 			-1),
1755100d7ef6SDmitry Baryshkov };
1756100d7ef6SDmitry Baryshkov 
1757efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = {
1758efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk,
1759efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1760efcd0107SNeil Armstrong 			-1),
1761efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk,
1762efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1763efcd0107SNeil Armstrong 			-1),
1764efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk,
1765efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1766efcd0107SNeil Armstrong 			-1),
1767efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk,
1768efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1769efcd0107SNeil Armstrong 			-1),
1770efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk,
1771efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1772efcd0107SNeil Armstrong 			-1),
1773efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk,
1774efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1775efcd0107SNeil Armstrong 			-1),
1776efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk,
1777efcd0107SNeil Armstrong 			-1,
1778efcd0107SNeil Armstrong 			-1),
1779efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk,
1780efcd0107SNeil Armstrong 			-1,
1781efcd0107SNeil Armstrong 			-1),
1782efcd0107SNeil Armstrong };
1783efcd0107SNeil Armstrong 
17844369c93cSDmitry Baryshkov /*************************************************************
17854369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
17864369c93cSDmitry Baryshkov  *************************************************************/
17874369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
17884369c93cSDmitry Baryshkov 	{\
17894369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
17904369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
17914369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
17924369c93cSDmitry Baryshkov 	.sblk = NULL \
17934369c93cSDmitry Baryshkov 	}
17944369c93cSDmitry Baryshkov 
17954369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
17964369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
17974369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
17984369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1799386fced3SJonathan Marek };
1800386fced3SJonathan Marek 
18010e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = {
18020e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
18030e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
18040e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
18050e91bcbbSRobert Foss };
18060e91bcbbSRobert Foss 
1807100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = {
1808100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1809100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1810100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1811100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00),
1812100d7ef6SDmitry Baryshkov };
1813100d7ef6SDmitry Baryshkov 
1814efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = {
1815efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1816efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1817efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1818efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700),
1819efcd0107SNeil Armstrong };
1820efcd0107SNeil Armstrong 
18217c5ab05eSVinod Koul /*************************************************************
18227c5ab05eSVinod Koul  * DSC sub blocks config
18237c5ab05eSVinod Koul  *************************************************************/
18249da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \
18257c5ab05eSVinod Koul 	{\
18267c5ab05eSVinod Koul 	.name = _name, .id = _id, \
18277c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
18289da5daa0SMarijn Suijten 	.features = _features, \
18297c5ab05eSVinod Koul 	}
18307c5ab05eSVinod Koul 
18317c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = {
18329da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, 0),
18339da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, 0),
18349da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, 0),
18359da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, 0),
18369da5daa0SMarijn Suijten };
18379da5daa0SMarijn Suijten 
18389da5daa0SMarijn Suijten static struct dpu_dsc_cfg sm8150_dsc[] = {
18399da5daa0SMarijn Suijten 	DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)),
18409da5daa0SMarijn Suijten 	DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)),
18419da5daa0SMarijn Suijten 	DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)),
18429da5daa0SMarijn Suijten 	DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)),
18437c5ab05eSVinod Koul };
18447c5ab05eSVinod Koul 
184525fdd593SJeykumar Sankaran /*************************************************************
184625fdd593SJeykumar Sankaran  * INTF sub blocks config
184725fdd593SJeykumar Sankaran  *************************************************************/
1848667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
184925fdd593SJeykumar Sankaran 	{\
185025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
185125fdd593SJeykumar Sankaran 	.base = _base, .len = 0x280, \
1852cace3ac4SJonathan Marek 	.features = _features, \
185325fdd593SJeykumar Sankaran 	.type = _type, \
185425fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1855667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1856667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1857667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
185825fdd593SJeykumar Sankaran 	}
185925fdd593SJeykumar Sankaran 
186094391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
186194391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
186294391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
186394391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
186494391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
186594391a14SAngeloGioacchino Del Regno };
186694391a14SAngeloGioacchino Del Regno 
1867abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
1868667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1869667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1870667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1871667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
187225fdd593SJeykumar Sankaran };
187325fdd593SJeykumar Sankaran 
18747bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
1875bb3de286SBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1876667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18777bdc0c4bSKalyan Thota };
18787bdc0c4bSKalyan Thota 
1879386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
1880667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1881667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1882667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1883667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1884386fced3SJonathan Marek };
1885386fced3SJonathan Marek 
1886591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
1887ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1888667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1889ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1890591e34a0SKrishna Manikandan };
1891591e34a0SKrishna Manikandan 
18920e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = {
18930e91bcbbSRobert Foss 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18940e91bcbbSRobert Foss 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18950e91bcbbSRobert Foss 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18960e91bcbbSRobert Foss 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
18970e91bcbbSRobert Foss };
18980e91bcbbSRobert Foss 
1899f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
1900f3af2d6eSRob Clark 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1901f3af2d6eSRob Clark 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1902f3af2d6eSRob Clark 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1903f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
1904f3af2d6eSRob Clark 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1905f3af2d6eSRob Clark 	INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
1906f3af2d6eSRob Clark 	INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1907f3af2d6eSRob Clark };
1908f3af2d6eSRob Clark 
19094a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */
19104a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = {
19114a352c2fSBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
19124a352c2fSBjorn Andersson 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19134a352c2fSBjorn Andersson 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
19144a352c2fSBjorn Andersson 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_NONE, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
19154a352c2fSBjorn Andersson 	INTF_BLK("intf_4", INTF_4, 0x38000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
19164a352c2fSBjorn Andersson 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
19174a352c2fSBjorn Andersson 	INTF_BLK("intf_6", INTF_6, 0x3a000, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17),
19184a352c2fSBjorn Andersson 	INTF_BLK("intf_7", INTF_7, 0x3b000, INTF_NONE, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19),
19194a352c2fSBjorn Andersson 	INTF_BLK("intf_8", INTF_8, 0x3c000, INTF_NONE, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13),
19204a352c2fSBjorn Andersson };
19214a352c2fSBjorn Andersson 
19225334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
19235334087eSLoic Poulain 	INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0),
19245334087eSLoic Poulain 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19255334087eSLoic Poulain };
19265334087eSLoic Poulain 
1927100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = {
1928100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1929100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1930100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1931100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1932100d7ef6SDmitry Baryshkov };
1933100d7ef6SDmitry Baryshkov 
1934efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = {
1935efcd0107SNeil Armstrong 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1936efcd0107SNeil Armstrong 	/* TODO TE sub-blocks for intf1 & intf2 */
1937efcd0107SNeil Armstrong 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1938efcd0107SNeil Armstrong 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1939efcd0107SNeil Armstrong 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1940efcd0107SNeil Armstrong };
1941efcd0107SNeil Armstrong 
194225fdd593SJeykumar Sankaran /*************************************************************
194353324b99SAbhinav Kumar  * Writeback blocks config
194453324b99SAbhinav Kumar  *************************************************************/
194553324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1946a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
194753324b99SAbhinav Kumar 	{ \
194853324b99SAbhinav Kumar 	.name = _name, .id = _id, \
194953324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
195053324b99SAbhinav Kumar 	.features = _features, \
195153324b99SAbhinav Kumar 	.format_list = wb2_formats, \
195253324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
195353324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
195453324b99SAbhinav Kumar 	.xin_id = __xin_id, \
195553324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
1956a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
195753324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
195853324b99SAbhinav Kumar 	}
195953324b99SAbhinav Kumar 
196053324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
196153324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
1962a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
196353324b99SAbhinav Kumar };
196453324b99SAbhinav Kumar 
196553324b99SAbhinav Kumar /*************************************************************
196625fdd593SJeykumar Sankaran  * VBIF sub blocks config
196725fdd593SJeykumar Sankaran  *************************************************************/
196825fdd593SJeykumar Sankaran /* VBIF QOS remap */
196994391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
197094391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
1971abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
1972abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
197325fdd593SJeykumar Sankaran 
197494391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
197594391a14SAngeloGioacchino Del Regno 	{
197694391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
197794391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
197894391a14SAngeloGioacchino Del Regno 	},
197994391a14SAngeloGioacchino Del Regno 	{
198094391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
198194391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
198294391a14SAngeloGioacchino Del Regno 	},
198394391a14SAngeloGioacchino Del Regno 	{
198494391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
198594391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
198694391a14SAngeloGioacchino Del Regno 	},
198794391a14SAngeloGioacchino Del Regno };
198894391a14SAngeloGioacchino Del Regno 
198994391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
199094391a14SAngeloGioacchino Del Regno 	{
1991606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
199294391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
199394391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
199494391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
199594391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
199694391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
1997c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
199894391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
199994391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
200094391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
200194391a14SAngeloGioacchino Del Regno 		},
200294391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
200394391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
200494391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
200594391a14SAngeloGioacchino Del Regno 		},
200694391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
200794391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
200894391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
200994391a14SAngeloGioacchino Del Regno 		},
201094391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
201194391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
201294391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
201394391a14SAngeloGioacchino Del Regno 		},
201494391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
201594391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
201694391a14SAngeloGioacchino Del Regno 	},
201794391a14SAngeloGioacchino Del Regno };
201894391a14SAngeloGioacchino Del Regno 
2019abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
202025fdd593SJeykumar Sankaran 	{
2021606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
202225fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
202325fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
202425fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
2025c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
202625fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
202725fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
202825fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
202925fdd593SJeykumar Sankaran 		},
203025fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
203125fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
203225fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
203325fdd593SJeykumar Sankaran 		},
203425fdd593SJeykumar Sankaran 	.memtype_count = 14,
203525fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
203625fdd593SJeykumar Sankaran 	},
203725fdd593SJeykumar Sankaran };
203825fdd593SJeykumar Sankaran 
20394a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = {
20404a352c2fSBjorn Andersson 	.base = 0x0,
20414a352c2fSBjorn Andersson 	.version = 0x00020000,
20424a352c2fSBjorn Andersson 	.trigger_sel_off = 0x119c,
20434a352c2fSBjorn Andersson 	.xin_id = 7,
20444a352c2fSBjorn Andersson 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20454a352c2fSBjorn Andersson };
20464a352c2fSBjorn Andersson 
2047abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
204825fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
204925fdd593SJeykumar Sankaran };
205025fdd593SJeykumar Sankaran 
2051386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
2052386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
2053386fced3SJonathan Marek };
2054386fced3SJonathan Marek 
2055af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
2056af776a3eSJonathan Marek 	.base = 0x0,
2057af776a3eSJonathan Marek 	.version = 0x00010002,
2058af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
2059af776a3eSJonathan Marek 	.xin_id = 7,
2060af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2061af776a3eSJonathan Marek };
2062af776a3eSJonathan Marek 
20630e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = {
20640e91bcbbSRobert Foss 	.base = 0x400,
20650e91bcbbSRobert Foss 	.version = 0x00020000,
20660e91bcbbSRobert Foss 	.trigger_sel_off = 0x119c,
20670e91bcbbSRobert Foss 	.xin_id = 7,
20680e91bcbbSRobert Foss 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20690e91bcbbSRobert Foss };
20700e91bcbbSRobert Foss 
2071100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = {
2072100d7ef6SDmitry Baryshkov 	.base = 0x0,
2073100d7ef6SDmitry Baryshkov 	.version = 0x00020000,
2074100d7ef6SDmitry Baryshkov 	.trigger_sel_off = 0x119c,
2075100d7ef6SDmitry Baryshkov 	.xin_id = 7,
2076100d7ef6SDmitry Baryshkov 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2077100d7ef6SDmitry Baryshkov };
2078100d7ef6SDmitry Baryshkov 
207925fdd593SJeykumar Sankaran /*************************************************************
208025fdd593SJeykumar Sankaran  * PERF data config
208125fdd593SJeykumar Sankaran  *************************************************************/
208225fdd593SJeykumar Sankaran 
208325fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
208494391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
208594391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
208694391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
208794391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
208894391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
208994391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
209094391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
209194391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
209294391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
209394391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
209494391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
209594391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
209694391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
209794391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
209894391a14SAngeloGioacchino Del Regno };
209994391a14SAngeloGioacchino Del Regno 
2100abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
210125fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
210225fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
210325fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
210425fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
210525fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
210625fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
210725fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
210825fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
210925fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
211025fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
211125fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
211225fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
211325fdd593SJeykumar Sankaran };
211425fdd593SJeykumar Sankaran 
211594391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
211694391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
211794391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
211894391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
211994391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
212094391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
212194391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
212294391a14SAngeloGioacchino Del Regno };
212394391a14SAngeloGioacchino Del Regno 
21247bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
21257bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
21267bdc0c4bSKalyan Thota };
21277bdc0c4bSKalyan Thota 
2128386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
2129386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
2130386fced3SJonathan Marek };
2131386fced3SJonathan Marek 
2132f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
2133f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
2134f3af2d6eSRob Clark };
2135f3af2d6eSRob Clark 
21365334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
21375334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
21385334087eSLoic Poulain };
21395334087eSLoic Poulain 
2140abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
214125fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
214225fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
214325fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
214425fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
214525fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
214625fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
214725fdd593SJeykumar Sankaran };
214825fdd593SJeykumar Sankaran 
21497bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
21507bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
21517bdc0c4bSKalyan Thota };
21527bdc0c4bSKalyan Thota 
2153f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
2154f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
2155f3af2d6eSRob Clark };
2156f3af2d6eSRob Clark 
215794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
215894391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
215994391a14SAngeloGioacchino Del Regno };
216094391a14SAngeloGioacchino Del Regno 
2161abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
216225fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
216325fdd593SJeykumar Sankaran };
216425fdd593SJeykumar Sankaran 
21657bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
21667bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
21677bdc0c4bSKalyan Thota };
21687bdc0c4bSKalyan Thota 
216994391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
217094391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
217194391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
217294391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
217394391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
217494391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
217594391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
217694391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
217794391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
217894391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
217994391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
218094391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
218194391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
218294391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
218394391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
218494391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
218594391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
218694391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
218794391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
218894391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
218994391a14SAngeloGioacchino Del Regno 		},
219094391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
219194391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
219294391a14SAngeloGioacchino Del Regno 		},
219394391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
219494391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
219594391a14SAngeloGioacchino Del Regno 		},
219694391a14SAngeloGioacchino Del Regno 	},
219794391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
219894391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
219994391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
220094391a14SAngeloGioacchino Del Regno 	},
220194391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
220294391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
220394391a14SAngeloGioacchino Del Regno };
220494391a14SAngeloGioacchino Del Regno 
2205abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
220625fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
220725fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
220825fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
220925fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
221025fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
221125fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
221225fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
221325fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
221425fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
221525fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
221625fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
221725fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
221825fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
221925fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
222025fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22215bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
222225fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
222325fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
222425fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
222525fdd593SJeykumar Sankaran 		},
222625fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
222725fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
222825fdd593SJeykumar Sankaran 		},
222925fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
223025fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
223125fdd593SJeykumar Sankaran 		},
223225fdd593SJeykumar Sankaran 	},
223325fdd593SJeykumar Sankaran 	.cdp_cfg = {
223425fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
223525fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
223625fdd593SJeykumar Sankaran 	},
22374f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
22384f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
223925fdd593SJeykumar Sankaran };
224025fdd593SJeykumar Sankaran 
22417bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
224271dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
224371dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
22447bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
22457bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
2246c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
2247c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
22487bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22495bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22507bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
22517bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22527bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
22537bdc0c4bSKalyan Thota 		},
22547bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22557bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
22567bdc0c4bSKalyan Thota 		},
22577bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22587bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
22597bdc0c4bSKalyan Thota 		},
22607bdc0c4bSKalyan Thota 	},
22617bdc0c4bSKalyan Thota 	.cdp_cfg = {
22627bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
22637bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
22647bdc0c4bSKalyan Thota 	},
2265c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
2266c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
22677bdc0c4bSKalyan Thota };
22687bdc0c4bSKalyan Thota 
22693581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = {
22703581b706SAdam Skladowski 	.max_bw_low = 3100000,
22713581b706SAdam Skladowski 	.max_bw_high = 4000000,
22723581b706SAdam Skladowski 	.min_core_ib = 2400000,
22733581b706SAdam Skladowski 	.min_llcc_ib = 800000,
22743581b706SAdam Skladowski 	.min_dram_ib = 800000,
22753581b706SAdam Skladowski 	.min_prefill_lines = 24,
22763581b706SAdam Skladowski 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22773581b706SAdam Skladowski 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22783581b706SAdam Skladowski 	.qos_lut_tbl = {
22793581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22803581b706SAdam Skladowski 		.entries = sc7180_qos_linear
22813581b706SAdam Skladowski 		},
22823581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22833581b706SAdam Skladowski 		.entries = sc7180_qos_macrotile
22843581b706SAdam Skladowski 		},
22853581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22863581b706SAdam Skladowski 		.entries = sc7180_qos_nrt
22873581b706SAdam Skladowski 		},
22883581b706SAdam Skladowski 		/* TODO: macrotile-qseed is different from macrotile */
22893581b706SAdam Skladowski 	},
22903581b706SAdam Skladowski 	.cdp_cfg = {
22913581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 1},
22923581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 0}
22933581b706SAdam Skladowski 	},
22943581b706SAdam Skladowski 	.clk_inefficiency_factor = 105,
22953581b706SAdam Skladowski 	.bw_inefficiency_factor = 120,
22963581b706SAdam Skladowski };
22973581b706SAdam Skladowski 
2298386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
2299386fced3SJonathan Marek 	.max_bw_low = 12800000,
2300386fced3SJonathan Marek 	.max_bw_high = 12800000,
2301386fced3SJonathan Marek 	.min_core_ib = 2400000,
2302386fced3SJonathan Marek 	.min_llcc_ib = 800000,
2303386fced3SJonathan Marek 	.min_dram_ib = 800000,
23044f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
2305386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23065bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
2307386fced3SJonathan Marek 	.qos_lut_tbl = {
2308386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
2309386fced3SJonathan Marek 		.entries = sm8150_qos_linear
2310386fced3SJonathan Marek 		},
2311386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2312386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
2313386fced3SJonathan Marek 		},
2314386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2315386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
2316386fced3SJonathan Marek 		},
2317386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2318386fced3SJonathan Marek 	},
2319386fced3SJonathan Marek 	.cdp_cfg = {
2320386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2321386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2322386fced3SJonathan Marek 	},
23234f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
23244f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2325386fced3SJonathan Marek };
2326386fced3SJonathan Marek 
2327f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
2328f3af2d6eSRob Clark 	.max_bw_low = 9600000,
2329f3af2d6eSRob Clark 	.max_bw_high = 9600000,
2330f3af2d6eSRob Clark 	.min_core_ib = 2400000,
2331f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
2332f3af2d6eSRob Clark 	.min_dram_ib = 800000,
2333f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
2334f3af2d6eSRob Clark 	.qos_lut_tbl = {
23354a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
23364a352c2fSBjorn Andersson 		.entries = sc7180_qos_linear
23374a352c2fSBjorn Andersson 		},
23384a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23394a352c2fSBjorn Andersson 		.entries = sc7180_qos_macrotile
23404a352c2fSBjorn Andersson 		},
23414a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23424a352c2fSBjorn Andersson 		.entries = sc7180_qos_nrt
23434a352c2fSBjorn Andersson 		},
23444a352c2fSBjorn Andersson 		/* TODO: macrotile-qseed is different from macrotile */
23454a352c2fSBjorn Andersson 	},
23464a352c2fSBjorn Andersson 	.cdp_cfg = {
23474a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 1},
23484a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 0}
23494a352c2fSBjorn Andersson 	},
23504a352c2fSBjorn Andersson 	.clk_inefficiency_factor = 105,
23514a352c2fSBjorn Andersson 	.bw_inefficiency_factor = 120,
23524a352c2fSBjorn Andersson };
23534a352c2fSBjorn Andersson 
23544a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = {
23554a352c2fSBjorn Andersson 	.max_bw_low = 13600000,
23564a352c2fSBjorn Andersson 	.max_bw_high = 18200000,
23574a352c2fSBjorn Andersson 	.min_core_ib = 2500000,
23584a352c2fSBjorn Andersson 	.min_llcc_ib = 0,
23594a352c2fSBjorn Andersson 	.min_dram_ib = 800000,
23604a352c2fSBjorn Andersson 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23614a352c2fSBjorn Andersson 	.qos_lut_tbl = {
2362f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
2363f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
2364f3af2d6eSRob Clark 		},
2365f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
2366f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
2367f3af2d6eSRob Clark 		},
2368f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2369f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
2370f3af2d6eSRob Clark 		},
2371f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
2372f3af2d6eSRob Clark 	},
2373f3af2d6eSRob Clark 	.cdp_cfg = {
2374f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
2375f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
2376f3af2d6eSRob Clark 	},
2377f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
2378f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
2379f3af2d6eSRob Clark };
2380f3af2d6eSRob Clark 
2381af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
2382af776a3eSJonathan Marek 	.max_bw_low = 13700000,
2383af776a3eSJonathan Marek 	.max_bw_high = 16600000,
2384af776a3eSJonathan Marek 	.min_core_ib = 4800000,
2385af776a3eSJonathan Marek 	.min_llcc_ib = 0,
2386af776a3eSJonathan Marek 	.min_dram_ib = 800000,
23874f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
2388af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23895bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
2390af776a3eSJonathan Marek 	.qos_lut_tbl = {
2391af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2392af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
2393af776a3eSJonathan Marek 		},
2394af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2395af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
2396af776a3eSJonathan Marek 		},
2397af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2398af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
2399af776a3eSJonathan Marek 		},
2400af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2401af776a3eSJonathan Marek 	},
2402af776a3eSJonathan Marek 	.cdp_cfg = {
2403af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2404af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2405af776a3eSJonathan Marek 	},
24064f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
24074f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2408af776a3eSJonathan Marek };
2409af776a3eSJonathan Marek 
2410100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = {
2411100d7ef6SDmitry Baryshkov 	.max_bw_low = 13600000,
2412100d7ef6SDmitry Baryshkov 	.max_bw_high = 18200000,
2413100d7ef6SDmitry Baryshkov 	.min_core_ib = 2500000,
2414100d7ef6SDmitry Baryshkov 	.min_llcc_ib = 0,
2415100d7ef6SDmitry Baryshkov 	.min_dram_ib = 800000,
2416100d7ef6SDmitry Baryshkov 	.min_prefill_lines = 35,
2417100d7ef6SDmitry Baryshkov 	/* FIXME: lut tables */
2418100d7ef6SDmitry Baryshkov 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
2419100d7ef6SDmitry Baryshkov 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
2420100d7ef6SDmitry Baryshkov 	.qos_lut_tbl = {
2421100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2422100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_linear
2423100d7ef6SDmitry Baryshkov 		},
2424100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2425100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_macrotile
2426100d7ef6SDmitry Baryshkov 		},
2427100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2428100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_nrt
2429100d7ef6SDmitry Baryshkov 		},
2430100d7ef6SDmitry Baryshkov 		/* TODO: macrotile-qseed is different from macrotile */
2431100d7ef6SDmitry Baryshkov 	},
2432100d7ef6SDmitry Baryshkov 	.cdp_cfg = {
2433100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 1},
2434100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 0}
2435100d7ef6SDmitry Baryshkov 	},
2436100d7ef6SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
2437100d7ef6SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2438100d7ef6SDmitry Baryshkov };
2439100d7ef6SDmitry Baryshkov 
2440591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
2441591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
2442591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
2443591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
2444591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
2445591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
2446591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
2447591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
24485bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
2449591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
2450591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2451591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2452591e34a0SKrishna Manikandan 		},
2453591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2454591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2455591e34a0SKrishna Manikandan 		},
2456591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2457591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
2458591e34a0SKrishna Manikandan 		},
2459591e34a0SKrishna Manikandan 	},
2460591e34a0SKrishna Manikandan 	.cdp_cfg = {
2461591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
2462591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
2463591e34a0SKrishna Manikandan 	},
2464591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
2465591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
2466591e34a0SKrishna Manikandan };
2467591e34a0SKrishna Manikandan 
24680e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = {
24690e91bcbbSRobert Foss 	.max_bw_low = 11800000,
24700e91bcbbSRobert Foss 	.max_bw_high = 15500000,
24710e91bcbbSRobert Foss 	.min_core_ib = 2500000,
24720e91bcbbSRobert Foss 	.min_llcc_ib = 0,
24730e91bcbbSRobert Foss 	.min_dram_ib = 800000,
24740e91bcbbSRobert Foss 	.min_prefill_lines = 40,
24750e91bcbbSRobert Foss 	/* FIXME: lut tables */
24760e91bcbbSRobert Foss 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
24770e91bcbbSRobert Foss 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
24780e91bcbbSRobert Foss 	.qos_lut_tbl = {
24790e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
24800e91bcbbSRobert Foss 		.entries = sc7180_qos_linear
24810e91bcbbSRobert Foss 		},
24820e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
24830e91bcbbSRobert Foss 		.entries = sc7180_qos_macrotile
24840e91bcbbSRobert Foss 		},
24850e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
24860e91bcbbSRobert Foss 		.entries = sc7180_qos_nrt
24870e91bcbbSRobert Foss 		},
24880e91bcbbSRobert Foss 		/* TODO: macrotile-qseed is different from macrotile */
24890e91bcbbSRobert Foss 	},
24900e91bcbbSRobert Foss 	.cdp_cfg = {
24910e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 1},
24920e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 0}
24930e91bcbbSRobert Foss 	},
24940e91bcbbSRobert Foss 	.clk_inefficiency_factor = 105,
24950e91bcbbSRobert Foss 	.bw_inefficiency_factor = 120,
24960e91bcbbSRobert Foss };
24970e91bcbbSRobert Foss 
24985334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
24995334087eSLoic Poulain 	.max_bw_low = 2700000,
25005334087eSLoic Poulain 	.max_bw_high = 2700000,
25015334087eSLoic Poulain 	.min_core_ib = 1300000,
25025334087eSLoic Poulain 	.min_llcc_ib = 0,
25035334087eSLoic Poulain 	.min_dram_ib = 1600000,
25045334087eSLoic Poulain 	.min_prefill_lines = 24,
25055334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
25065334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
25075334087eSLoic Poulain 	.qos_lut_tbl = {
25085334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
25095334087eSLoic Poulain 		.entries = qcm2290_qos_linear
25105334087eSLoic Poulain 		},
25115334087eSLoic Poulain 	},
25125334087eSLoic Poulain 	.cdp_cfg = {
25135334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
25145334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
25155334087eSLoic Poulain 	},
25165334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
25175334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
25185334087eSLoic Poulain };
251925fdd593SJeykumar Sankaran /*************************************************************
2520de7d480fSDmitry Baryshkov  * Hardware catalog
252125fdd593SJeykumar Sankaran  *************************************************************/
252225fdd593SJeykumar Sankaran 
2523de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
252494391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
252594391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
252694391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
252794391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
252894391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
252994391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
253094391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
253194391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
253294391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
25336452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
25346452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
253594391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
253694391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
253794391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
253894391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
253994391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
254094391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
254194391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
2542477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
254394391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
254494391a14SAngeloGioacchino Del Regno };
254594391a14SAngeloGioacchino Del Regno 
2546de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
254725fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
254825fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
254925fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
255025fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
255125fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
255225fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
255325fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
255425fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
255525fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
255625fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
255725fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
25587c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
25597c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
256025fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
256125fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
256225fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
256325fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
256425fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
2565481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2566477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
2567597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
256825fdd593SJeykumar Sankaran };
256925fdd593SJeykumar Sankaran 
2570de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
25717bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
25727bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
25737bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
25747bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
25757bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
25767bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
25777bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
25787bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
25797bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
2580e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2581e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
25827bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
25837bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
25847bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
25857bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
258651e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
258751e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
25887bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
25897bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
25907bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
2591481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2592477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
2593597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
25947bdc0c4bSKalyan Thota };
25957bdc0c4bSKalyan Thota 
25963581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
25973581b706SAdam Skladowski 	.caps = &sm6115_dpu_caps,
25983581b706SAdam Skladowski 	.mdp_count = ARRAY_SIZE(sm6115_mdp),
25993581b706SAdam Skladowski 	.mdp = sm6115_mdp,
26003581b706SAdam Skladowski 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
26013581b706SAdam Skladowski 	.ctl = qcm2290_ctl,
26023581b706SAdam Skladowski 	.sspp_count = ARRAY_SIZE(sm6115_sspp),
26033581b706SAdam Skladowski 	.sspp = sm6115_sspp,
26043581b706SAdam Skladowski 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
26053581b706SAdam Skladowski 	.mixer = qcm2290_lm,
26063581b706SAdam Skladowski 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
26073581b706SAdam Skladowski 	.dspp = qcm2290_dspp,
26083581b706SAdam Skladowski 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
26093581b706SAdam Skladowski 	.pingpong = qcm2290_pp,
26103581b706SAdam Skladowski 	.intf_count = ARRAY_SIZE(qcm2290_intf),
26113581b706SAdam Skladowski 	.intf = qcm2290_intf,
26123581b706SAdam Skladowski 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26133581b706SAdam Skladowski 	.vbif = sdm845_vbif,
26143581b706SAdam Skladowski 	.perf = &sm6115_perf_data,
26153581b706SAdam Skladowski 	.mdss_irqs = IRQ_SC7180_MASK,
26163581b706SAdam Skladowski };
26173581b706SAdam Skladowski 
2618de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
2619386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
2620386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
2621386fced3SJonathan Marek 	.mdp = sdm845_mdp,
2622386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2623386fced3SJonathan Marek 	.ctl = sm8150_ctl,
2624386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2625386fced3SJonathan Marek 	.sspp = sdm845_sspp,
2626386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2627386fced3SJonathan Marek 	.mixer = sm8150_lm,
262805ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
262905ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
26309da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
26319da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2632386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2633386fced3SJonathan Marek 	.pingpong = sm8150_pp,
26344369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
26354369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2636386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2637386fced3SJonathan Marek 	.intf = sm8150_intf,
2638386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2639386fced3SJonathan Marek 	.vbif = sdm845_vbif,
2640386fced3SJonathan Marek 	.reg_dma_count = 1,
2641481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2642477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
2643597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
2644386fced3SJonathan Marek };
2645386fced3SJonathan Marek 
2646de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
2647f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
2648f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
2649f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
2650f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2651f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
2652f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2653f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
2654f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2655f3af2d6eSRob Clark 	.mixer = sm8150_lm,
2656f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2657f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
2658f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
2659f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
2660f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
2661f3af2d6eSRob Clark 	.intf = sc8180x_intf,
2662f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2663f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
2664f3af2d6eSRob Clark 	.reg_dma_count = 1,
2665481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2666477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
2667f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
2668f3af2d6eSRob Clark };
2669f3af2d6eSRob Clark 
26704a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = {
26714a352c2fSBjorn Andersson 	.caps = &sc8280xp_dpu_caps,
26724a352c2fSBjorn Andersson 	.mdp_count = ARRAY_SIZE(sc8280xp_mdp),
26734a352c2fSBjorn Andersson 	.mdp = sc8280xp_mdp,
26744a352c2fSBjorn Andersson 	.ctl_count = ARRAY_SIZE(sc8280xp_ctl),
26754a352c2fSBjorn Andersson 	.ctl = sc8280xp_ctl,
26764a352c2fSBjorn Andersson 	.sspp_count = ARRAY_SIZE(sc8280xp_sspp),
26774a352c2fSBjorn Andersson 	.sspp = sc8280xp_sspp,
26784a352c2fSBjorn Andersson 	.mixer_count = ARRAY_SIZE(sc8280xp_lm),
26794a352c2fSBjorn Andersson 	.mixer = sc8280xp_lm,
26804a352c2fSBjorn Andersson 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
26814a352c2fSBjorn Andersson 	.dspp = sm8150_dspp,
26824a352c2fSBjorn Andersson 	.pingpong_count = ARRAY_SIZE(sc8280xp_pp),
26834a352c2fSBjorn Andersson 	.pingpong = sc8280xp_pp,
26844a352c2fSBjorn Andersson 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
26854a352c2fSBjorn Andersson 	.merge_3d = sm8350_merge_3d,
26864a352c2fSBjorn Andersson 	.intf_count = ARRAY_SIZE(sc8280xp_intf),
26874a352c2fSBjorn Andersson 	.intf = sc8280xp_intf,
26884a352c2fSBjorn Andersson 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26894a352c2fSBjorn Andersson 	.vbif = sdm845_vbif,
269083bb1f13SDmitry Baryshkov 	.reg_dma_count = 1,
269183bb1f13SDmitry Baryshkov 	.dma_cfg = &sc8280xp_regdma,
26924a352c2fSBjorn Andersson 	.perf = &sc8280xp_perf_data,
26934a352c2fSBjorn Andersson 	.mdss_irqs = IRQ_SC8280XP_MASK,
26944a352c2fSBjorn Andersson };
26954a352c2fSBjorn Andersson 
2696de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
2697af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
2698af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
2699af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
2700af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2701af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
2702d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
2703d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
2704af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2705af776a3eSJonathan Marek 	.mixer = sm8150_lm,
270605ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
270705ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
27089da5daa0SMarijn Suijten 	.dsc_count = ARRAY_SIZE(sm8150_dsc),
27099da5daa0SMarijn Suijten 	.dsc = sm8150_dsc,
2710af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2711af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
27124369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
27134369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2714af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2715af776a3eSJonathan Marek 	.intf = sm8150_intf,
2716af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2717af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
271853324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
271953324b99SAbhinav Kumar 	.wb = sm8250_wb,
2720af776a3eSJonathan Marek 	.reg_dma_count = 1,
2721481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
2722477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
2723597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
2724af776a3eSJonathan Marek };
2725af776a3eSJonathan Marek 
27260e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = {
27270e91bcbbSRobert Foss 	.caps = &sm8350_dpu_caps,
27280e91bcbbSRobert Foss 	.mdp_count = ARRAY_SIZE(sm8350_mdp),
27290e91bcbbSRobert Foss 	.mdp = sm8350_mdp,
27300e91bcbbSRobert Foss 	.ctl_count = ARRAY_SIZE(sm8350_ctl),
27310e91bcbbSRobert Foss 	.ctl = sm8350_ctl,
27320e91bcbbSRobert Foss 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
27330e91bcbbSRobert Foss 	.sspp = sm8250_sspp,
27340e91bcbbSRobert Foss 	.mixer_count = ARRAY_SIZE(sm8150_lm),
27350e91bcbbSRobert Foss 	.mixer = sm8150_lm,
27360e91bcbbSRobert Foss 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
27370e91bcbbSRobert Foss 	.dspp = sm8150_dspp,
27380e91bcbbSRobert Foss 	.pingpong_count = ARRAY_SIZE(sm8350_pp),
27390e91bcbbSRobert Foss 	.pingpong = sm8350_pp,
27400e91bcbbSRobert Foss 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
27410e91bcbbSRobert Foss 	.merge_3d = sm8350_merge_3d,
27420e91bcbbSRobert Foss 	.intf_count = ARRAY_SIZE(sm8350_intf),
27430e91bcbbSRobert Foss 	.intf = sm8350_intf,
27440e91bcbbSRobert Foss 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
27450e91bcbbSRobert Foss 	.vbif = sdm845_vbif,
27460e91bcbbSRobert Foss 	.reg_dma_count = 1,
2747764b9481SDmitry Baryshkov 	.dma_cfg = &sm8350_regdma,
27480e91bcbbSRobert Foss 	.perf = &sm8350_perf_data,
27490e91bcbbSRobert Foss 	.mdss_irqs = IRQ_SM8350_MASK,
27500e91bcbbSRobert Foss };
27510e91bcbbSRobert Foss 
2752100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = {
2753100d7ef6SDmitry Baryshkov 	.caps = &sm8450_dpu_caps,
2754100d7ef6SDmitry Baryshkov 	.mdp_count = ARRAY_SIZE(sm8450_mdp),
2755100d7ef6SDmitry Baryshkov 	.mdp = sm8450_mdp,
2756100d7ef6SDmitry Baryshkov 	.ctl_count = ARRAY_SIZE(sm8450_ctl),
2757100d7ef6SDmitry Baryshkov 	.ctl = sm8450_ctl,
2758100d7ef6SDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8450_sspp),
2759100d7ef6SDmitry Baryshkov 	.sspp = sm8450_sspp,
2760100d7ef6SDmitry Baryshkov 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2761100d7ef6SDmitry Baryshkov 	.mixer = sm8150_lm,
2762100d7ef6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2763100d7ef6SDmitry Baryshkov 	.dspp = sm8150_dspp,
2764100d7ef6SDmitry Baryshkov 	.pingpong_count = ARRAY_SIZE(sm8450_pp),
2765100d7ef6SDmitry Baryshkov 	.pingpong = sm8450_pp,
2766100d7ef6SDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8450_merge_3d),
2767100d7ef6SDmitry Baryshkov 	.merge_3d = sm8450_merge_3d,
2768100d7ef6SDmitry Baryshkov 	.intf_count = ARRAY_SIZE(sm8450_intf),
2769100d7ef6SDmitry Baryshkov 	.intf = sm8450_intf,
2770100d7ef6SDmitry Baryshkov 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2771100d7ef6SDmitry Baryshkov 	.vbif = sdm845_vbif,
2772100d7ef6SDmitry Baryshkov 	.reg_dma_count = 1,
2773100d7ef6SDmitry Baryshkov 	.dma_cfg = &sm8450_regdma,
2774100d7ef6SDmitry Baryshkov 	.perf = &sm8450_perf_data,
2775100d7ef6SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8450_MASK,
2776100d7ef6SDmitry Baryshkov };
2777100d7ef6SDmitry Baryshkov 
2778efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = {
2779efcd0107SNeil Armstrong 	.caps = &sm8550_dpu_caps,
2780efcd0107SNeil Armstrong 	.mdp_count = ARRAY_SIZE(sm8550_mdp),
2781efcd0107SNeil Armstrong 	.mdp = sm8550_mdp,
2782efcd0107SNeil Armstrong 	.ctl_count = ARRAY_SIZE(sm8550_ctl),
2783efcd0107SNeil Armstrong 	.ctl = sm8550_ctl,
2784efcd0107SNeil Armstrong 	.sspp_count = ARRAY_SIZE(sm8550_sspp),
2785efcd0107SNeil Armstrong 	.sspp = sm8550_sspp,
2786efcd0107SNeil Armstrong 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2787efcd0107SNeil Armstrong 	.mixer = sm8150_lm,
2788efcd0107SNeil Armstrong 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2789efcd0107SNeil Armstrong 	.dspp = sm8150_dspp,
2790efcd0107SNeil Armstrong 	.pingpong_count = ARRAY_SIZE(sm8550_pp),
2791efcd0107SNeil Armstrong 	.pingpong = sm8550_pp,
2792efcd0107SNeil Armstrong 	.merge_3d_count = ARRAY_SIZE(sm8550_merge_3d),
2793efcd0107SNeil Armstrong 	.merge_3d = sm8550_merge_3d,
2794efcd0107SNeil Armstrong 	.intf_count = ARRAY_SIZE(sm8550_intf),
2795efcd0107SNeil Armstrong 	.intf = sm8550_intf,
2796efcd0107SNeil Armstrong 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2797efcd0107SNeil Armstrong 	.vbif = sdm845_vbif,
2798efcd0107SNeil Armstrong 	.reg_dma_count = 1,
2799efcd0107SNeil Armstrong 	.dma_cfg = &sm8450_regdma,
2800efcd0107SNeil Armstrong 	.perf = &sm8450_perf_data,
2801efcd0107SNeil Armstrong 	.mdss_irqs = IRQ_SM8450_MASK,
2802efcd0107SNeil Armstrong };
2803efcd0107SNeil Armstrong 
2804de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
2805591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
2806591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
2807591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
2808591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
2809591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
2810591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
2811591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
2812fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2813fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
2814591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
2815591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
2816591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
2817591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
2818591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
2819591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
2820591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2821591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
2822477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
2823597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
2824591e34a0SKrishna Manikandan };
2825591e34a0SKrishna Manikandan 
2826de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
28275334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
28285334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
28295334087eSLoic Poulain 	.mdp = qcm2290_mdp,
28305334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
28315334087eSLoic Poulain 	.ctl = qcm2290_ctl,
28325334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
28335334087eSLoic Poulain 	.sspp = qcm2290_sspp,
28345334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
28355334087eSLoic Poulain 	.mixer = qcm2290_lm,
28365334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
28375334087eSLoic Poulain 	.dspp = qcm2290_dspp,
28385334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
28395334087eSLoic Poulain 	.pingpong = qcm2290_pp,
28405334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
28415334087eSLoic Poulain 	.intf = qcm2290_intf,
28425334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
28435334087eSLoic Poulain 	.vbif = sdm845_vbif,
28445334087eSLoic Poulain 	.reg_dma_count = 1,
2845481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2846477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
28475334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
28485334087eSLoic Poulain };
28495334087eSLoic Poulain 
2850abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
2851de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
2852de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
2853de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
2854de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
2855de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
2856de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
2857de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
2858de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
2859de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
28603581b706SAdam Skladowski 	{ .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg},
2861de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
28620e91bcbbSRobert Foss 	{ .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg},
2863de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
28644a352c2fSBjorn Andersson 	{ .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg},
2865100d7ef6SDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg},
2866efcd0107SNeil Armstrong 	{ .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg},
286725fdd593SJeykumar Sankaran };
286825fdd593SJeykumar Sankaran 
2869de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
287025fdd593SJeykumar Sankaran {
287125fdd593SJeykumar Sankaran 	int i;
287225fdd593SJeykumar Sankaran 
287325fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
2874de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
2875de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
287625fdd593SJeykumar Sankaran 	}
287725fdd593SJeykumar Sankaran 
287825fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
287932084967SDmitry Baryshkov 
288025fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
288125fdd593SJeykumar Sankaran }
288225fdd593SJeykumar Sankaran 
2883