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 
597bdc0c4bSKalyan Thota #define MIXER_SC7180_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 
704369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0)
714369c93cSDmitry Baryshkov 
7294391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC)
7394391a14SAngeloGioacchino Del Regno 
744259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC)
75e47616dfSKalyan Thota 
76cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0)
77cace3ac4SJonathan Marek 
78cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE)
79cace3ac4SJonathan Marek 
80591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN)
81591e34a0SKrishna Manikandan 
82597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
83597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
84597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
85597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
86597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
87597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
88597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
89597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_0_INTR) | \
90597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_1_INTR))
91597762d5SDmitry Baryshkov 
92597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
93597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
94597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
95597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
96597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR))
97597762d5SDmitry Baryshkov 
98597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
99597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
100597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
101597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
102597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
103597762d5SDmitry Baryshkov 			 BIT(MDP_INTF5_7xxx_INTR))
104597762d5SDmitry Baryshkov 
105597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
106597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
107597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
108597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
109597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
110597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
111597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
112597762d5SDmitry Baryshkov 			 BIT(MDP_INTF4_INTR))
113597762d5SDmitry Baryshkov 
1140e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1150e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_INTR2) | \
1160e91bcbbSRobert Foss 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1170e91bcbbSRobert Foss 			 BIT(MDP_INTF0_7xxx_INTR) | \
1180e91bcbbSRobert Foss 			 BIT(MDP_INTF1_7xxx_INTR) | \
1190e91bcbbSRobert Foss 			 BIT(MDP_INTF2_7xxx_INTR) | \
1207eb75dbdSRobert Foss 			 BIT(MDP_INTF3_7xxx_INTR))
1210e91bcbbSRobert Foss 
122f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
123f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_INTR2) | \
124f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_HIST_INTR) | \
125f3af2d6eSRob Clark 			  BIT(MDP_INTF0_INTR) | \
126f3af2d6eSRob Clark 			  BIT(MDP_INTF1_INTR) | \
127f3af2d6eSRob Clark 			  BIT(MDP_INTF2_INTR) | \
128f3af2d6eSRob Clark 			  BIT(MDP_INTF3_INTR) | \
129f3af2d6eSRob Clark 			  BIT(MDP_INTF4_INTR) | \
130f3af2d6eSRob Clark 			  BIT(MDP_INTF5_INTR) | \
131f3af2d6eSRob Clark 			  BIT(MDP_AD4_0_INTR) | \
132f3af2d6eSRob Clark 			  BIT(MDP_AD4_1_INTR))
133597762d5SDmitry Baryshkov 
1344a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
1354a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_INTR2) | \
1364a352c2fSBjorn Andersson 			   BIT(MDP_SSPP_TOP0_HIST_INTR) | \
1374a352c2fSBjorn Andersson 			   BIT(MDP_INTF0_7xxx_INTR) | \
1384a352c2fSBjorn Andersson 			   BIT(MDP_INTF1_7xxx_INTR) | \
1394a352c2fSBjorn Andersson 			   BIT(MDP_INTF2_7xxx_INTR) | \
1404a352c2fSBjorn Andersson 			   BIT(MDP_INTF3_7xxx_INTR) | \
1414a352c2fSBjorn Andersson 			   BIT(MDP_INTF4_7xxx_INTR) | \
1424a352c2fSBjorn Andersson 			   BIT(MDP_INTF5_7xxx_INTR) | \
1434a352c2fSBjorn Andersson 			   BIT(MDP_INTF6_7xxx_INTR) | \
1444a352c2fSBjorn Andersson 			   BIT(MDP_INTF7_7xxx_INTR) | \
1454a352c2fSBjorn Andersson 			   BIT(MDP_INTF8_7xxx_INTR))
1464a352c2fSBjorn Andersson 
147100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
148100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
149100d7ef6SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
150100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
151100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
152100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF2_7xxx_INTR) | \
153100d7ef6SDmitry Baryshkov 			 BIT(MDP_INTF3_7xxx_INTR))
154100d7ef6SDmitry Baryshkov 
15553324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \
15653324b99SAbhinav Kumar 			 BIT(DPU_WB_UBWC) | \
15753324b99SAbhinav Kumar 			 BIT(DPU_WB_YUV_CONFIG) | \
15853324b99SAbhinav Kumar 			 BIT(DPU_WB_PIPE_ALPHA) | \
15953324b99SAbhinav Kumar 			 BIT(DPU_WB_XY_ROI_OFFSET) | \
16053324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS) | \
16153324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS_8LVL) | \
16253324b99SAbhinav Kumar 			 BIT(DPU_WB_CDP) | \
16353324b99SAbhinav Kumar 			 BIT(DPU_WB_INPUT_CTRL))
16453324b99SAbhinav Kumar 
16525fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE		(50 * 1024)
16625fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH		2048
16725fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH	2560
16825fdd593SJeykumar Sankaran 
16925fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION	4
17025fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION	4
17125fdd593SJeykumar Sankaran 
17225fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO	20
17325fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO	4
17425fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE	1
17525fdd593SJeykumar Sankaran 
17625fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y)
17725fdd593SJeykumar Sankaran 
17809c7e370SLee Jones static const uint32_t plane_formats[] = {
17909c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
18009c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
18109c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
18209c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
18309c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
18409c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
18509c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
18609c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
187da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
18809c7e370SLee Jones 	DRM_FORMAT_RGB888,
18909c7e370SLee Jones 	DRM_FORMAT_BGR888,
19009c7e370SLee Jones 	DRM_FORMAT_RGB565,
19109c7e370SLee Jones 	DRM_FORMAT_BGR565,
19209c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
19309c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
19409c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
19509c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
19609c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
19709c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
19809c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
19909c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
20009c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
20109c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
20209c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
20309c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
20409c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
20509c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
20609c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
20709c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
20809c7e370SLee Jones };
20909c7e370SLee Jones 
21009c7e370SLee Jones static const uint32_t plane_formats_yuv[] = {
21109c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
21209c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
21309c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
21409c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
21509c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
216da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
21709c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
21809c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
21909c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
22009c7e370SLee Jones 	DRM_FORMAT_RGB888,
22109c7e370SLee Jones 	DRM_FORMAT_BGR888,
22209c7e370SLee Jones 	DRM_FORMAT_RGB565,
22309c7e370SLee Jones 	DRM_FORMAT_BGR565,
22409c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
22509c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
22609c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
22709c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
22809c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
22909c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
23009c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
23109c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
23209c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
23309c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
23409c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
23509c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
23609c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
23709c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
23809c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
23909c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
24009c7e370SLee Jones 
241f07c9946SJessica Zhang 	DRM_FORMAT_P010,
24209c7e370SLee Jones 	DRM_FORMAT_NV12,
24309c7e370SLee Jones 	DRM_FORMAT_NV21,
24409c7e370SLee Jones 	DRM_FORMAT_NV16,
24509c7e370SLee Jones 	DRM_FORMAT_NV61,
24609c7e370SLee Jones 	DRM_FORMAT_VYUY,
24709c7e370SLee Jones 	DRM_FORMAT_UYVY,
24809c7e370SLee Jones 	DRM_FORMAT_YUYV,
24909c7e370SLee Jones 	DRM_FORMAT_YVYU,
25009c7e370SLee Jones 	DRM_FORMAT_YUV420,
25109c7e370SLee Jones 	DRM_FORMAT_YVU420,
25209c7e370SLee Jones };
25309c7e370SLee Jones 
254dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = {
255dabfdd89SVinod Polimera 	DRM_FORMAT_NV12,
256dabfdd89SVinod Polimera 	/* TODO add formats after validation */
257dabfdd89SVinod Polimera };
258dabfdd89SVinod Polimera 
25953324b99SAbhinav Kumar static const uint32_t wb2_formats[] = {
26053324b99SAbhinav Kumar 	DRM_FORMAT_RGB565,
26153324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
26253324b99SAbhinav Kumar 	DRM_FORMAT_RGB888,
26353324b99SAbhinav Kumar 	DRM_FORMAT_ARGB8888,
26453324b99SAbhinav Kumar 	DRM_FORMAT_RGBA8888,
26553324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
26653324b99SAbhinav Kumar 	DRM_FORMAT_XRGB8888,
26753324b99SAbhinav Kumar 	DRM_FORMAT_RGBX8888,
26853324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
26953324b99SAbhinav Kumar 	DRM_FORMAT_ARGB1555,
27053324b99SAbhinav Kumar 	DRM_FORMAT_RGBA5551,
27153324b99SAbhinav Kumar 	DRM_FORMAT_XRGB1555,
27253324b99SAbhinav Kumar 	DRM_FORMAT_RGBX5551,
27353324b99SAbhinav Kumar 	DRM_FORMAT_ARGB4444,
27453324b99SAbhinav Kumar 	DRM_FORMAT_RGBA4444,
27553324b99SAbhinav Kumar 	DRM_FORMAT_RGBX4444,
27653324b99SAbhinav Kumar 	DRM_FORMAT_XRGB4444,
27753324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
27853324b99SAbhinav Kumar 	DRM_FORMAT_BGR888,
27953324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
28053324b99SAbhinav Kumar 	DRM_FORMAT_BGRA8888,
28153324b99SAbhinav Kumar 	DRM_FORMAT_BGRX8888,
28253324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
28353324b99SAbhinav Kumar 	DRM_FORMAT_ABGR1555,
28453324b99SAbhinav Kumar 	DRM_FORMAT_BGRA5551,
28553324b99SAbhinav Kumar 	DRM_FORMAT_XBGR1555,
28653324b99SAbhinav Kumar 	DRM_FORMAT_BGRX5551,
28753324b99SAbhinav Kumar 	DRM_FORMAT_ABGR4444,
28853324b99SAbhinav Kumar 	DRM_FORMAT_BGRA4444,
28953324b99SAbhinav Kumar 	DRM_FORMAT_BGRX4444,
29053324b99SAbhinav Kumar 	DRM_FORMAT_XBGR4444,
29153324b99SAbhinav Kumar };
29253324b99SAbhinav Kumar 
29325fdd593SJeykumar Sankaran /*************************************************************
29425fdd593SJeykumar Sankaran  * DPU sub blocks config
29525fdd593SJeykumar Sankaran  *************************************************************/
29625fdd593SJeykumar Sankaran /* DPU top level caps */
29794391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = {
29894391a14SAngeloGioacchino Del Regno 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
29994391a14SAngeloGioacchino Del Regno 	.max_mixer_blendstages = 0x7,
30094391a14SAngeloGioacchino Del Regno 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
30194391a14SAngeloGioacchino Del Regno 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V1,
30294391a14SAngeloGioacchino Del Regno 	.ubwc_version = DPU_HW_UBWC_VER_10,
30394391a14SAngeloGioacchino Del Regno 	.has_src_split = true,
30494391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
30594391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
30694391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
30794391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
30894391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
30994391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
31094391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
31194391a14SAngeloGioacchino Del Regno };
31294391a14SAngeloGioacchino Del Regno 
313c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
314c162352eSKonrad Dybcio 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
315c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
316c162352eSKonrad Dybcio 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
317c162352eSKonrad Dybcio 	.ubwc_version = DPU_HW_UBWC_VER_20,
318c162352eSKonrad Dybcio 	.has_dim_layer = true,
319c162352eSKonrad Dybcio 	.has_idle_pc = true,
320c162352eSKonrad Dybcio 	.max_linewidth = 2160,
321c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
322c162352eSKonrad Dybcio };
323c162352eSKonrad Dybcio 
32425fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
32525fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
32625fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
32725fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
32825fdd593SJeykumar Sankaran 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
32925fdd593SJeykumar Sankaran 	.ubwc_version = DPU_HW_UBWC_VER_20,
33025fdd593SJeykumar Sankaran 	.has_src_split = true,
33125fdd593SJeykumar Sankaran 	.has_dim_layer = true,
33225fdd593SJeykumar Sankaran 	.has_idle_pc = true,
33342a558b7SKalyan Thota 	.has_3d_merge = true,
3347e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3357e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3367e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3377e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
33825fdd593SJeykumar Sankaran };
33925fdd593SJeykumar Sankaran 
3407bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3417bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3427bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3437bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3447bdc0c4bSKalyan Thota 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
3457bdc0c4bSKalyan Thota 	.ubwc_version = DPU_HW_UBWC_VER_20,
3467bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3477bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3487e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3497e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3507bdc0c4bSKalyan Thota };
3517bdc0c4bSKalyan Thota 
3523581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = {
3533581b706SAdam Skladowski 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3543581b706SAdam Skladowski 	.max_mixer_blendstages = 0x4,
3553581b706SAdam Skladowski 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
3563581b706SAdam Skladowski 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
3573581b706SAdam Skladowski 	.ubwc_version = DPU_HW_UBWC_VER_20,
3583581b706SAdam Skladowski 	.has_dim_layer = true,
3593581b706SAdam Skladowski 	.has_idle_pc = true,
3603581b706SAdam Skladowski 	.max_linewidth = 2160,
3613581b706SAdam Skladowski 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3623581b706SAdam Skladowski };
3633581b706SAdam Skladowski 
364386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
365386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
366386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
367386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
368386fced3SJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
369386fced3SJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_30,
370386fced3SJonathan Marek 	.has_src_split = true,
371386fced3SJonathan Marek 	.has_dim_layer = true,
372386fced3SJonathan Marek 	.has_idle_pc = true,
373386fced3SJonathan Marek 	.has_3d_merge = true,
374386fced3SJonathan Marek 	.max_linewidth = 4096,
375386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
376386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
377386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
378386fced3SJonathan Marek };
379386fced3SJonathan Marek 
380f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
381f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
382f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
383f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
384f3af2d6eSRob Clark 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
385f3af2d6eSRob Clark 	.ubwc_version = DPU_HW_UBWC_VER_30,
386f3af2d6eSRob Clark 	.has_src_split = true,
387f3af2d6eSRob Clark 	.has_dim_layer = true,
388f3af2d6eSRob Clark 	.has_idle_pc = true,
389f3af2d6eSRob Clark 	.has_3d_merge = true,
390f3af2d6eSRob Clark 	.max_linewidth = 4096,
391f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
392f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
393f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
394f3af2d6eSRob Clark };
395f3af2d6eSRob Clark 
3964a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = {
3974a352c2fSBjorn Andersson 	.max_mixer_width = 2560,
3984a352c2fSBjorn Andersson 	.max_mixer_blendstages = 11,
3994a352c2fSBjorn Andersson 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4004a352c2fSBjorn Andersson 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4014a352c2fSBjorn Andersson 	.ubwc_version = DPU_HW_UBWC_VER_40,
4024a352c2fSBjorn Andersson 	.has_src_split = true,
4034a352c2fSBjorn Andersson 	.has_dim_layer = true,
4044a352c2fSBjorn Andersson 	.has_idle_pc = true,
4054a352c2fSBjorn Andersson 	.has_3d_merge = true,
4064a352c2fSBjorn Andersson 	.max_linewidth = 5120,
4074a352c2fSBjorn Andersson 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4084a352c2fSBjorn Andersson };
4094a352c2fSBjorn Andersson 
410af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
411af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
412af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
413d21fc5dfSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
414af776a3eSJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
415af776a3eSJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_40,
416af776a3eSJonathan Marek 	.has_src_split = true,
417af776a3eSJonathan Marek 	.has_dim_layer = true,
418af776a3eSJonathan Marek 	.has_idle_pc = true,
419af776a3eSJonathan Marek 	.has_3d_merge = true,
420af776a3eSJonathan Marek 	.max_linewidth = 4096,
421af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
422af776a3eSJonathan Marek };
423af776a3eSJonathan Marek 
4240e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = {
4250e91bcbbSRobert Foss 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
4260e91bcbbSRobert Foss 	.max_mixer_blendstages = 0xb,
4270e91bcbbSRobert Foss 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
4280e91bcbbSRobert Foss 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
4290e91bcbbSRobert Foss 	.ubwc_version = DPU_HW_UBWC_VER_40,
4300e91bcbbSRobert Foss 	.has_src_split = true,
4310e91bcbbSRobert Foss 	.has_dim_layer = true,
4320e91bcbbSRobert Foss 	.has_idle_pc = true,
4330e91bcbbSRobert Foss 	.has_3d_merge = true,
4340e91bcbbSRobert Foss 	.max_linewidth = 4096,
4350e91bcbbSRobert Foss 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
4360e91bcbbSRobert Foss };
4370e91bcbbSRobert Foss 
438100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = {
439100d7ef6SDmitry Baryshkov 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
440100d7ef6SDmitry Baryshkov 	.max_mixer_blendstages = 0xb,
441100d7ef6SDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
442100d7ef6SDmitry Baryshkov 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
443100d7ef6SDmitry Baryshkov 	.ubwc_version = DPU_HW_UBWC_VER_40,
444100d7ef6SDmitry Baryshkov 	.has_src_split = true,
445100d7ef6SDmitry Baryshkov 	.has_dim_layer = true,
446100d7ef6SDmitry Baryshkov 	.has_idle_pc = true,
447100d7ef6SDmitry Baryshkov 	.has_3d_merge = true,
448100d7ef6SDmitry Baryshkov 	.max_linewidth = 5120,
449100d7ef6SDmitry Baryshkov 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
450100d7ef6SDmitry Baryshkov };
451100d7ef6SDmitry Baryshkov 
452*efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = {
453*efcd0107SNeil Armstrong 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
454*efcd0107SNeil Armstrong 	.max_mixer_blendstages = 0xb,
455*efcd0107SNeil Armstrong 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
456*efcd0107SNeil Armstrong 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
457*efcd0107SNeil Armstrong 	.ubwc_version = DPU_HW_UBWC_VER_40,
458*efcd0107SNeil Armstrong 	.has_src_split = true,
459*efcd0107SNeil Armstrong 	.has_dim_layer = true,
460*efcd0107SNeil Armstrong 	.has_idle_pc = true,
461*efcd0107SNeil Armstrong 	.has_3d_merge = true,
462*efcd0107SNeil Armstrong 	.max_linewidth = 5120,
463*efcd0107SNeil Armstrong 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
464*efcd0107SNeil Armstrong };
465*efcd0107SNeil Armstrong 
466591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
467591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
468591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
469591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
470591e34a0SKrishna Manikandan 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
471591e34a0SKrishna Manikandan 	.ubwc_version = DPU_HW_UBWC_VER_30,
472591e34a0SKrishna Manikandan 	.has_dim_layer = true,
473591e34a0SKrishna Manikandan 	.has_idle_pc = true,
474591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
475591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
476591e34a0SKrishna Manikandan };
477591e34a0SKrishna Manikandan 
47894391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
47994391a14SAngeloGioacchino Del Regno 	{
48094391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
48194391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
48294391a14SAngeloGioacchino Del Regno 	.features = 0,
48394391a14SAngeloGioacchino Del Regno 	.highest_bank_bit = 0x2,
48494391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
48594391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
48694391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
48794391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
48894391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
48994391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
49094391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
49194391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
49294391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
49394391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
49494391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
49594391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
49694391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
49794391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
49894391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
49994391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
50094391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
50194391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
50294391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
50394391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
50494391a14SAngeloGioacchino Del Regno 	},
50594391a14SAngeloGioacchino Del Regno };
50694391a14SAngeloGioacchino Del Regno 
507abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
50825fdd593SJeykumar Sankaran 	{
50925fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
51025fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
51103490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
51225fdd593SJeykumar Sankaran 	.highest_bank_bit = 0x2,
51325fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
51425fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
51525fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
51625fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
51725fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
51825fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
51925fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
52025fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
52125fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
52225fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
52325fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
52425fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
52525fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
52625fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
52725fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
52825fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
52925fdd593SJeykumar Sankaran 	},
53025fdd593SJeykumar Sankaran };
53125fdd593SJeykumar Sankaran 
5327bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
5337bdc0c4bSKalyan Thota 	{
5347bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
5357bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
5367bdc0c4bSKalyan Thota 	.features = 0,
5377bdc0c4bSKalyan Thota 	.highest_bank_bit = 0x3,
5387bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5397bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
5407bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5417bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
5427bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
5437b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
5447b149f2bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
5457b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
5467bdc0c4bSKalyan Thota 	},
5477bdc0c4bSKalyan Thota };
5487bdc0c4bSKalyan Thota 
549f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
550f3af2d6eSRob Clark 	{
551f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
552f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
553f3af2d6eSRob Clark 	.features = 0,
554f3af2d6eSRob Clark 	.highest_bank_bit = 0x3,
555f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
556f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
557f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
558f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
559f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
560f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
561f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
562f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
563f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
564f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
565f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
566f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
567f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
568f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
569f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
570f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
571f3af2d6eSRob Clark 	},
572f3af2d6eSRob Clark };
573f3af2d6eSRob Clark 
5743581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = {
5753581b706SAdam Skladowski 	{
5763581b706SAdam Skladowski 	.name = "top_0", .id = MDP_TOP,
5773581b706SAdam Skladowski 	.base = 0x0, .len = 0x494,
5783581b706SAdam Skladowski 	.features = 0,
5793581b706SAdam Skladowski 	.highest_bank_bit = 0x1,
5803581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5813581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 0},
5823581b706SAdam Skladowski 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5833581b706SAdam Skladowski 		.reg_off = 0x2ac, .bit_off = 8},
5843581b706SAdam Skladowski 	},
5853581b706SAdam Skladowski };
5863581b706SAdam Skladowski 
587af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
588af776a3eSJonathan Marek 	{
589af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
590b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
591af776a3eSJonathan Marek 	.features = 0,
592af776a3eSJonathan Marek 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
593af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
594af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
595af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
596af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
597af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
598af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
599af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
600af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
601af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
602af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
603af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
604af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
605af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
606af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
607af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
608af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
609af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
610af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
61153324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
61253324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
613af776a3eSJonathan Marek 	},
614af776a3eSJonathan Marek };
615af776a3eSJonathan Marek 
6160e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = {
6170e91bcbbSRobert Foss 	{
6180e91bcbbSRobert Foss 	.name = "top_0", .id = MDP_TOP,
6190e91bcbbSRobert Foss 	.base = 0x0, .len = 0x494,
6200e91bcbbSRobert Foss 	.features = 0,
6210e91bcbbSRobert Foss 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
6220e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
6230e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 0},
6240e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
6250e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 0},
6260e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
6270e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 0},
6280e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
6290e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 0},
6300e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
6310e91bcbbSRobert Foss 			.reg_off = 0x2ac, .bit_off = 8},
6320e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
6330e91bcbbSRobert Foss 			.reg_off = 0x2b4, .bit_off = 8},
6340e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
6350e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 8},
6360e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
6370e91bcbbSRobert Foss 			.reg_off = 0x2c4, .bit_off = 8},
6380e91bcbbSRobert Foss 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
6390e91bcbbSRobert Foss 			.reg_off = 0x2bc, .bit_off = 20},
6400e91bcbbSRobert Foss 	},
6410e91bcbbSRobert Foss };
6420e91bcbbSRobert Foss 
643100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = {
644100d7ef6SDmitry Baryshkov 	{
645100d7ef6SDmitry Baryshkov 	.name = "top_0", .id = MDP_TOP,
646100d7ef6SDmitry Baryshkov 	.base = 0x0, .len = 0x494,
647100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
648100d7ef6SDmitry Baryshkov 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
649100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
650100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 0},
651100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
652100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 0},
653100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
654100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 0},
655100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
656100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 0},
657100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
658100d7ef6SDmitry Baryshkov 			.reg_off = 0x2AC, .bit_off = 8},
659100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
660100d7ef6SDmitry Baryshkov 			.reg_off = 0x2B4, .bit_off = 8},
661100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
662100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 8},
663100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
664100d7ef6SDmitry Baryshkov 			.reg_off = 0x2C4, .bit_off = 8},
665100d7ef6SDmitry Baryshkov 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
666100d7ef6SDmitry Baryshkov 			.reg_off = 0x2BC, .bit_off = 20},
667100d7ef6SDmitry Baryshkov 	},
668100d7ef6SDmitry Baryshkov };
669100d7ef6SDmitry Baryshkov 
670591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
671591e34a0SKrishna Manikandan 	{
672591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
673591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
674591e34a0SKrishna Manikandan 	.highest_bank_bit = 0x1,
675591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
676591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
677591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
678591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
679591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
680591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
681591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
682591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
683591e34a0SKrishna Manikandan 	},
684591e34a0SKrishna Manikandan };
685591e34a0SKrishna Manikandan 
6864a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = {
6874a352c2fSBjorn Andersson 	{
6884a352c2fSBjorn Andersson 	.name = "top_0", .id = MDP_TOP,
6894a352c2fSBjorn Andersson 	.base = 0x0, .len = 0x494,
6904a352c2fSBjorn Andersson 	.features = 0,
6914a352c2fSBjorn Andersson 	.highest_bank_bit = 2,
6924a352c2fSBjorn Andersson 	.ubwc_swizzle = 6,
6934a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0},
6944a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0},
6954a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0},
6964a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0},
6974a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8},
6984a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8},
6994a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x2bc, .bit_off = 8},
7004a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x2c4, .bit_off = 8},
7014a352c2fSBjorn Andersson 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20},
7024a352c2fSBjorn Andersson 	},
7034a352c2fSBjorn Andersson };
7044a352c2fSBjorn Andersson 
705*efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = {
706*efcd0107SNeil Armstrong 	{
707*efcd0107SNeil Armstrong 	.name = "top_0", .id = MDP_TOP,
708*efcd0107SNeil Armstrong 	.base = 0, .len = 0x494,
709*efcd0107SNeil Armstrong 	.features = BIT(DPU_MDP_PERIPH_0_REMOVED),
710*efcd0107SNeil Armstrong 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
711*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
712*efcd0107SNeil Armstrong 			.reg_off = 0x4330, .bit_off = 0},
713*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
714*efcd0107SNeil Armstrong 			.reg_off = 0x6330, .bit_off = 0},
715*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
716*efcd0107SNeil Armstrong 			.reg_off = 0x8330, .bit_off = 0},
717*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
718*efcd0107SNeil Armstrong 			.reg_off = 0xa330, .bit_off = 0},
719*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
720*efcd0107SNeil Armstrong 			.reg_off = 0x24330, .bit_off = 0},
721*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
722*efcd0107SNeil Armstrong 			.reg_off = 0x26330, .bit_off = 0},
723*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
724*efcd0107SNeil Armstrong 			.reg_off = 0x28330, .bit_off = 0},
725*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
726*efcd0107SNeil Armstrong 			.reg_off = 0x2a330, .bit_off = 0},
727*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
728*efcd0107SNeil Armstrong 			.reg_off = 0x2c330, .bit_off = 0},
729*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
730*efcd0107SNeil Armstrong 			.reg_off = 0x2e330, .bit_off = 0},
731*efcd0107SNeil Armstrong 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
732*efcd0107SNeil Armstrong 			.reg_off = 0x2bc, .bit_off = 20},
733*efcd0107SNeil Armstrong 	},
734*efcd0107SNeil Armstrong };
735*efcd0107SNeil Armstrong 
7365334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
7375334087eSLoic Poulain 	{
7385334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
7395334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
7405334087eSLoic Poulain 	.features = 0,
7415334087eSLoic Poulain 	.highest_bank_bit = 0x2,
7425334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
7435334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
7445334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
7455334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
7465334087eSLoic Poulain 	},
7475334087eSLoic Poulain };
7485334087eSLoic Poulain 
74925fdd593SJeykumar Sankaran /*************************************************************
75025fdd593SJeykumar Sankaran  * CTL sub blocks config
75125fdd593SJeykumar Sankaran  *************************************************************/
75294391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
75394391a14SAngeloGioacchino Del Regno 	{
75494391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
75594391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
75694391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
75794391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
75894391a14SAngeloGioacchino Del Regno 	},
75994391a14SAngeloGioacchino Del Regno 	{
76094391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
76194391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
76294391a14SAngeloGioacchino Del Regno 	.features = 0,
76394391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
76494391a14SAngeloGioacchino Del Regno 	},
76594391a14SAngeloGioacchino Del Regno 	{
76694391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
76794391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
76894391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
76994391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
77094391a14SAngeloGioacchino Del Regno 	},
77194391a14SAngeloGioacchino Del Regno 	{
77294391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
77394391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
77494391a14SAngeloGioacchino Del Regno 	.features = 0,
77594391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
77694391a14SAngeloGioacchino Del Regno 	},
77794391a14SAngeloGioacchino Del Regno 	{
77894391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
77994391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
78094391a14SAngeloGioacchino Del Regno 	.features = 0,
78194391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
78294391a14SAngeloGioacchino Del Regno 	},
78394391a14SAngeloGioacchino Del Regno };
78494391a14SAngeloGioacchino Del Regno 
785abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
78625fdd593SJeykumar Sankaran 	{
78725fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
78825fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
789667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
790667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
79125fdd593SJeykumar Sankaran 	},
79225fdd593SJeykumar Sankaran 	{
79325fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
79425fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
795667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
796667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
79725fdd593SJeykumar Sankaran 	},
79825fdd593SJeykumar Sankaran 	{
79925fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
80025fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
801667e9985SDmitry Baryshkov 	.features = 0,
802667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
80325fdd593SJeykumar Sankaran 	},
80425fdd593SJeykumar Sankaran 	{
80525fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
80625fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
807667e9985SDmitry Baryshkov 	.features = 0,
808667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
80925fdd593SJeykumar Sankaran 	},
81025fdd593SJeykumar Sankaran 	{
81125fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
81225fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
813667e9985SDmitry Baryshkov 	.features = 0,
814667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
81525fdd593SJeykumar Sankaran 	},
81625fdd593SJeykumar Sankaran };
81725fdd593SJeykumar Sankaran 
8187bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
8197bdc0c4bSKalyan Thota 	{
8207bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
8217bdc0c4bSKalyan Thota 	.base = 0x1000, .len = 0xE4,
822667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
823667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8247bdc0c4bSKalyan Thota 	},
8257bdc0c4bSKalyan Thota 	{
8267bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
8277bdc0c4bSKalyan Thota 	.base = 0x1200, .len = 0xE4,
828667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
829667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8307bdc0c4bSKalyan Thota 	},
8317bdc0c4bSKalyan Thota 	{
8327bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
8337bdc0c4bSKalyan Thota 	.base = 0x1400, .len = 0xE4,
834667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
835667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8367bdc0c4bSKalyan Thota 	},
8377bdc0c4bSKalyan Thota };
8387bdc0c4bSKalyan Thota 
8394a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = {
8404a352c2fSBjorn Andersson 	{
8414a352c2fSBjorn Andersson 	.name = "ctl_0", .id = CTL_0,
8424a352c2fSBjorn Andersson 	.base = 0x15000, .len = 0x204,
8434a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8444a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
8454a352c2fSBjorn Andersson 	},
8464a352c2fSBjorn Andersson 	{
8474a352c2fSBjorn Andersson 	.name = "ctl_1", .id = CTL_1,
8484a352c2fSBjorn Andersson 	.base = 0x16000, .len = 0x204,
8494a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8504a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
8514a352c2fSBjorn Andersson 	},
8524a352c2fSBjorn Andersson 	{
8534a352c2fSBjorn Andersson 	.name = "ctl_2", .id = CTL_2,
8544a352c2fSBjorn Andersson 	.base = 0x17000, .len = 0x204,
8554a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8564a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
8574a352c2fSBjorn Andersson 	},
8584a352c2fSBjorn Andersson 	{
8594a352c2fSBjorn Andersson 	.name = "ctl_3", .id = CTL_3,
8604a352c2fSBjorn Andersson 	.base = 0x18000, .len = 0x204,
8614a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8624a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
8634a352c2fSBjorn Andersson 	},
8644a352c2fSBjorn Andersson 	{
8654a352c2fSBjorn Andersson 	.name = "ctl_4", .id = CTL_4,
8664a352c2fSBjorn Andersson 	.base = 0x19000, .len = 0x204,
8674a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8684a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
8694a352c2fSBjorn Andersson 	},
8704a352c2fSBjorn Andersson 	{
8714a352c2fSBjorn Andersson 	.name = "ctl_5", .id = CTL_5,
8724a352c2fSBjorn Andersson 	.base = 0x1a000, .len = 0x204,
8734a352c2fSBjorn Andersson 	.features = CTL_SC7280_MASK,
8744a352c2fSBjorn Andersson 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
8754a352c2fSBjorn Andersson 	},
8764a352c2fSBjorn Andersson };
8774a352c2fSBjorn Andersson 
878386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
879386fced3SJonathan Marek 	{
880386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
881386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
882667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
883667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
884386fced3SJonathan Marek 	},
885386fced3SJonathan Marek 	{
886386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
887386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
888667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
889667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
890386fced3SJonathan Marek 	},
891386fced3SJonathan Marek 	{
892386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
893386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
894667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
895667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
896386fced3SJonathan Marek 	},
897386fced3SJonathan Marek 	{
898386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
899386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
900667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
901667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
902386fced3SJonathan Marek 	},
903386fced3SJonathan Marek 	{
904386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
905386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
906667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
907667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
908386fced3SJonathan Marek 	},
909386fced3SJonathan Marek 	{
910386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
911386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
912667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
913667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
914386fced3SJonathan Marek 	},
915386fced3SJonathan Marek };
916386fced3SJonathan Marek 
9170e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = {
9180e91bcbbSRobert Foss 	{
9190e91bcbbSRobert Foss 	.name = "ctl_0", .id = CTL_0,
9200e91bcbbSRobert Foss 	.base = 0x15000, .len = 0x1e8,
9210e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9220e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
9230e91bcbbSRobert Foss 	},
9240e91bcbbSRobert Foss 	{
9250e91bcbbSRobert Foss 	.name = "ctl_1", .id = CTL_1,
9260e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9270e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
9280e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
9290e91bcbbSRobert Foss 	},
9300e91bcbbSRobert Foss 	{
9310e91bcbbSRobert Foss 	.name = "ctl_2", .id = CTL_2,
9320e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9330e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9340e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
9350e91bcbbSRobert Foss 	},
9360e91bcbbSRobert Foss 	{
9370e91bcbbSRobert Foss 	.name = "ctl_3", .id = CTL_3,
9380e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9390e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9400e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
9410e91bcbbSRobert Foss 	},
9420e91bcbbSRobert Foss 	{
9430e91bcbbSRobert Foss 	.name = "ctl_4", .id = CTL_4,
9440e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
9450e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9460e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
9470e91bcbbSRobert Foss 	},
9480e91bcbbSRobert Foss 	{
9490e91bcbbSRobert Foss 	.name = "ctl_5", .id = CTL_5,
9500e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
9510e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
9520e91bcbbSRobert Foss 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
9530e91bcbbSRobert Foss 	},
9540e91bcbbSRobert Foss };
9550e91bcbbSRobert Foss 
956100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = {
957100d7ef6SDmitry Baryshkov 	{
958100d7ef6SDmitry Baryshkov 	.name = "ctl_0", .id = CTL_0,
959100d7ef6SDmitry Baryshkov 	.base = 0x15000, .len = 0x204,
960100d7ef6SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE),
961100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
962100d7ef6SDmitry Baryshkov 	},
963100d7ef6SDmitry Baryshkov 	{
964100d7ef6SDmitry Baryshkov 	.name = "ctl_1", .id = CTL_1,
9650e91bcbbSRobert Foss 	.base = 0x16000, .len = 0x1e8,
9660e91bcbbSRobert Foss 	.features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK,
967100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
968100d7ef6SDmitry Baryshkov 	},
969100d7ef6SDmitry Baryshkov 	{
970100d7ef6SDmitry Baryshkov 	.name = "ctl_2", .id = CTL_2,
9710e91bcbbSRobert Foss 	.base = 0x17000, .len = 0x1e8,
9720e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
973100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
974100d7ef6SDmitry Baryshkov 	},
975100d7ef6SDmitry Baryshkov 	{
976100d7ef6SDmitry Baryshkov 	.name = "ctl_3", .id = CTL_3,
9770e91bcbbSRobert Foss 	.base = 0x18000, .len = 0x1e8,
9780e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
979100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
980100d7ef6SDmitry Baryshkov 	},
981100d7ef6SDmitry Baryshkov 	{
982100d7ef6SDmitry Baryshkov 	.name = "ctl_4", .id = CTL_4,
9830e91bcbbSRobert Foss 	.base = 0x19000, .len = 0x1e8,
9840e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
985100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
986100d7ef6SDmitry Baryshkov 	},
987100d7ef6SDmitry Baryshkov 	{
988100d7ef6SDmitry Baryshkov 	.name = "ctl_5", .id = CTL_5,
9890e91bcbbSRobert Foss 	.base = 0x1a000, .len = 0x1e8,
9900e91bcbbSRobert Foss 	.features = CTL_SC7280_MASK,
991100d7ef6SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
992100d7ef6SDmitry Baryshkov 	},
993100d7ef6SDmitry Baryshkov };
994100d7ef6SDmitry Baryshkov 
995*efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = {
996*efcd0107SNeil Armstrong 	{
997*efcd0107SNeil Armstrong 	.name = "ctl_0", .id = CTL_0,
998*efcd0107SNeil Armstrong 	.base = 0x15000, .len = 0x290,
999*efcd0107SNeil Armstrong 	.features = CTL_SC7280_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1000*efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1001*efcd0107SNeil Armstrong 	},
1002*efcd0107SNeil Armstrong 	{
1003*efcd0107SNeil Armstrong 	.name = "ctl_1", .id = CTL_1,
1004*efcd0107SNeil Armstrong 	.base = 0x16000, .len = 0x290,
1005*efcd0107SNeil Armstrong 	.features = CTL_SC7280_MASK | BIT(DPU_CTL_SPLIT_DISPLAY),
1006*efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1007*efcd0107SNeil Armstrong 	},
1008*efcd0107SNeil Armstrong 	{
1009*efcd0107SNeil Armstrong 	.name = "ctl_2", .id = CTL_2,
1010*efcd0107SNeil Armstrong 	.base = 0x17000, .len = 0x290,
1011*efcd0107SNeil Armstrong 	.features = CTL_SC7280_MASK,
1012*efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1013*efcd0107SNeil Armstrong 	},
1014*efcd0107SNeil Armstrong 	{
1015*efcd0107SNeil Armstrong 	.name = "ctl_3", .id = CTL_3,
1016*efcd0107SNeil Armstrong 	.base = 0x18000, .len = 0x290,
1017*efcd0107SNeil Armstrong 	.features = CTL_SC7280_MASK,
1018*efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1019*efcd0107SNeil Armstrong 	},
1020*efcd0107SNeil Armstrong 	{
1021*efcd0107SNeil Armstrong 	.name = "ctl_4", .id = CTL_4,
1022*efcd0107SNeil Armstrong 	.base = 0x19000, .len = 0x290,
1023*efcd0107SNeil Armstrong 	.features = CTL_SC7280_MASK,
1024*efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
1025*efcd0107SNeil Armstrong 	},
1026*efcd0107SNeil Armstrong 	{
1027*efcd0107SNeil Armstrong 	.name = "ctl_5", .id = CTL_5,
1028*efcd0107SNeil Armstrong 	.base = 0x1a000, .len = 0x290,
1029*efcd0107SNeil Armstrong 	.features = CTL_SC7280_MASK,
1030*efcd0107SNeil Armstrong 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
1031*efcd0107SNeil Armstrong 	},
1032*efcd0107SNeil Armstrong };
1033*efcd0107SNeil Armstrong 
1034591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
1035591e34a0SKrishna Manikandan 	{
1036591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
1037591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
1038667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1039667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
1040591e34a0SKrishna Manikandan 	},
1041591e34a0SKrishna Manikandan 	{
1042591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
1043591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
1044667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1045667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
1046591e34a0SKrishna Manikandan 	},
1047591e34a0SKrishna Manikandan 	{
1048591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
1049591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
1050667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1051667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
1052591e34a0SKrishna Manikandan 	},
1053591e34a0SKrishna Manikandan 	{
1054591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
1055591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
1056667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
1057667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
1058591e34a0SKrishna Manikandan 	},
1059591e34a0SKrishna Manikandan };
1060591e34a0SKrishna Manikandan 
10615334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
10625334087eSLoic Poulain 	{
10635334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
10645334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
10655334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
10665334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
10675334087eSLoic Poulain 	},
10685334087eSLoic Poulain };
10695334087eSLoic Poulain 
107025fdd593SJeykumar Sankaran /*************************************************************
107125fdd593SJeykumar Sankaran  * SSPP sub blocks config
107225fdd593SJeykumar Sankaran  *************************************************************/
107325fdd593SJeykumar Sankaran 
107425fdd593SJeykumar Sankaran /* SSPP common configuration */
1075b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
107625fdd593SJeykumar Sankaran 	{ \
107725fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
107825fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
107925fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
108025fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
108125fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
108225fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1083b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
108425fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
108525fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
108625fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
108725fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
108825fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
1089e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
109025fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1091e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1092dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
1093dabfdd89SVinod Polimera 	}
1094dabfdd89SVinod Polimera 
1095dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
1096dabfdd89SVinod Polimera 	{ \
1097dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
1098dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
1099dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
1100dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
1101dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
1102dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
1103dabfdd89SVinod Polimera 		.id = qseed_ver, \
1104dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
1105dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
1106dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
1107dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
1108dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
1109dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
1110dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
1111dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
1112dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
111325fdd593SJeykumar Sankaran 	}
111425fdd593SJeykumar Sankaran 
111525fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
111625fdd593SJeykumar Sankaran 	{ \
111725fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
111825fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
111925fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
112025fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
112125fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
112225fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
1123e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
112425fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
1125e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
112625fdd593SJeykumar Sankaran 	}
112725fdd593SJeykumar Sankaran 
112894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
112994391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
113094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
113194391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
113294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
113394391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
113494391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
113594391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
113694391a14SAngeloGioacchino Del Regno 
1137dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
1138dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
1139dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
1140dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
1141dabfdd89SVinod Polimera };
1142dabfdd89SVinod Polimera 
1143b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
1144b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
1145b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
1146b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
1147b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
1148b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
1149b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
1150b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
115125fdd593SJeykumar Sankaran 
115225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
115325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
115425fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
115525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
115625fdd593SJeykumar Sankaran 
115707ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \
115807ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
115925fdd593SJeykumar Sankaran 	{ \
116025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
116125fdd593SJeykumar Sankaran 	.base = _base, .len = 0x1c8, \
116207ca1fc0SSravanthi Kollukuduru 	.features = _features, \
116325fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
116425fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
116507ca1fc0SSravanthi Kollukuduru 	.type = _type, \
116625fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
116725fdd593SJeykumar Sankaran 	}
116825fdd593SJeykumar Sankaran 
116994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
117094391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK,
117194391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
117294391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK,
117394391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
117494391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK,
117594391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
117694391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK,
117794391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
117894391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_MSM8998_MASK,
117994391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
118094391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_MSM8998_MASK,
118194391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
118294391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_MSM8998_MASK,
118394391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
118494391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_MSM8998_MASK,
118594391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
118694391a14SAngeloGioacchino Del Regno };
118794391a14SAngeloGioacchino Del Regno 
1188abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
118907ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
119007ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
119107ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
119207ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
119307ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK,
119407ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
119507ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK,
119607ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
119707ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
119807ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
119907ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
120007ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
120107ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
120207ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
120307ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
120407ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
120525fdd593SJeykumar Sankaran };
120625fdd593SJeykumar Sankaran 
1207b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
1208b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
1209b75ab05aSShubhashree Dhar 
1210dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
1211dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
1212dabfdd89SVinod Polimera 
12137bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
12147bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1215b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12167bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12177bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12187b149f2bSKalyan Thota 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
12197b149f2bSKalyan Thota 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
12207bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
12217b149f2bSKalyan Thota 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
12227bdc0c4bSKalyan Thota };
12237bdc0c4bSKalyan Thota 
12243581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 =
12253581b706SAdam Skladowski 				_VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE);
12263581b706SAdam Skladowski 
12273581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = {
12283581b706SAdam Skladowski 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
12293581b706SAdam Skladowski 		sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
12303581b706SAdam Skladowski 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
12313581b706SAdam Skladowski 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
12323581b706SAdam Skladowski };
12333581b706SAdam Skladowski 
1234d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
1235d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1236d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
1237d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1238d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
1239d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1240d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
1241d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1242d21fc5dfSDmitry Baryshkov 
1243d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
1244d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
1245d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1246d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
1247d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1248d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
1249d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1250d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
1251d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1252d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1253d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1254d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1255d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1256d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1257d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1258d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1259d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1260d21fc5dfSDmitry Baryshkov };
1261d21fc5dfSDmitry Baryshkov 
1262100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 =
1263100d7ef6SDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
1264100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 =
1265100d7ef6SDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
1266100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 =
1267100d7ef6SDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
1268100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 =
1269100d7ef6SDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
1270100d7ef6SDmitry Baryshkov 
1271100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = {
1272100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1273100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1274100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1275100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1276100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1277100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1278100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1279100d7ef6SDmitry Baryshkov 		sm8450_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1280100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1281100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1282100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1283100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1284100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1285100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1286100d7ef6SDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
1287100d7ef6SDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1288100d7ef6SDmitry Baryshkov };
1289100d7ef6SDmitry Baryshkov 
1290*efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 =
1291*efcd0107SNeil Armstrong 				_VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED3LITE);
1292*efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 =
1293*efcd0107SNeil Armstrong 				_VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED3LITE);
1294*efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 =
1295*efcd0107SNeil Armstrong 				_VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED3LITE);
1296*efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 =
1297*efcd0107SNeil Armstrong 				_VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED3LITE);
1298*efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5);
1299*efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sd8550_dma_sblk_5 = _DMA_SBLK("13", 6);
1300*efcd0107SNeil Armstrong 
1301*efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = {
1302*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
1303*efcd0107SNeil Armstrong 		sm8550_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1304*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK,
1305*efcd0107SNeil Armstrong 		sm8550_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
1306*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK,
1307*efcd0107SNeil Armstrong 		sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
1308*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK,
1309*efcd0107SNeil Armstrong 		sm8550_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
1310*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1311*efcd0107SNeil Armstrong 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1312*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
1313*efcd0107SNeil Armstrong 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
1314*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_SDM845_MASK,
1315*efcd0107SNeil Armstrong 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2),
1316*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_SDM845_MASK,
1317*efcd0107SNeil Armstrong 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3),
1318*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000,  DMA_CURSOR_SDM845_MASK,
1319*efcd0107SNeil Armstrong 		sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1320*efcd0107SNeil Armstrong 	SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000,  DMA_CURSOR_SDM845_MASK,
1321*efcd0107SNeil Armstrong 		sd8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1322*efcd0107SNeil Armstrong };
1323*efcd0107SNeil Armstrong 
1324591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
1325dabfdd89SVinod Polimera 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK,
1326dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
1327591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
1328591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
1329591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
1330591e34a0SKrishna Manikandan 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
1331591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
1332591e34a0SKrishna Manikandan 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
1333591e34a0SKrishna Manikandan };
1334591e34a0SKrishna Manikandan 
13354a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 =
13364a352c2fSBjorn Andersson 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
13374a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 =
13384a352c2fSBjorn Andersson 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
13394a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 =
13404a352c2fSBjorn Andersson 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
13414a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 =
13424a352c2fSBjorn Andersson 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
13434a352c2fSBjorn Andersson 
13444a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = {
13454a352c2fSBjorn Andersson 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
13464a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13474a352c2fSBjorn Andersson 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
13484a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
13494a352c2fSBjorn Andersson 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
13504a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
13514a352c2fSBjorn Andersson 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
13524a352c2fSBjorn Andersson 		 sc8280xp_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
13534a352c2fSBjorn Andersson 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK,
13544a352c2fSBjorn Andersson 		 sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13554a352c2fSBjorn Andersson 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK,
13564a352c2fSBjorn Andersson 		 sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
13574a352c2fSBjorn Andersson 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK,
13584a352c2fSBjorn Andersson 		 sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
13594a352c2fSBjorn Andersson 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK,
13604a352c2fSBjorn Andersson 		 sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
13614a352c2fSBjorn Andersson };
13625334087eSLoic Poulain 
13635334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
13645334087eSLoic Poulain 	{ \
13655334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
13665334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
13675334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
13685334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
13695334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
13705334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
13715334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
13725334087eSLoic Poulain 	.virt_format_list = plane_formats, \
13735334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
13745334087eSLoic Poulain 	}
13755334087eSLoic Poulain 
13765334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
13775334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
13785334087eSLoic Poulain 
13795334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
13805334087eSLoic Poulain 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK,
13815334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
13825334087eSLoic Poulain 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
13835334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
13845334087eSLoic Poulain };
13855334087eSLoic Poulain 
138625fdd593SJeykumar Sankaran /*************************************************************
138725fdd593SJeykumar Sankaran  * MIXER sub blocks config
138825fdd593SJeykumar Sankaran  *************************************************************/
13897bdc0c4bSKalyan Thota 
1390e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
139125fdd593SJeykumar Sankaran 	{ \
139225fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
139325fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
13947bdc0c4bSKalyan Thota 	.features = _fmask, \
13957bdc0c4bSKalyan Thota 	.sblk = _sblk, \
139625fdd593SJeykumar Sankaran 	.pingpong = _pp, \
1397e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
1398e47616dfSKalyan Thota 	.dspp = _dspp \
139925fdd593SJeykumar Sankaran 	}
140025fdd593SJeykumar Sankaran 
140194391a14SAngeloGioacchino Del Regno /* MSM8998 */
140294391a14SAngeloGioacchino Del Regno 
140394391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
140494391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
140594391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
140694391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
140794391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
140894391a14SAngeloGioacchino Del Regno 		0x260, 0x290
140994391a14SAngeloGioacchino Del Regno 	},
141094391a14SAngeloGioacchino Del Regno };
141194391a14SAngeloGioacchino Del Regno 
141294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
14132d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
141494391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
14152d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
141694391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
14172d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
141894391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
14192d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
142094391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14212d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
142294391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
14232d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
142494391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
142594391a14SAngeloGioacchino Del Regno };
142694391a14SAngeloGioacchino Del Regno 
142794391a14SAngeloGioacchino Del Regno /* SDM845 */
142894391a14SAngeloGioacchino Del Regno 
142994391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
143094391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
143194391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
143294391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
143394391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
143494391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
143594391a14SAngeloGioacchino Del Regno 	},
143694391a14SAngeloGioacchino Del Regno };
143794391a14SAngeloGioacchino Del Regno 
1438abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
14397bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
1440e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
14417bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
1442e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
14437bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1444e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
14457bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
1446e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14477bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
1448e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
14497bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1450e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
14517bdc0c4bSKalyan Thota };
14527bdc0c4bSKalyan Thota 
14537bdc0c4bSKalyan Thota /* SC7180 */
14547bdc0c4bSKalyan Thota 
14557bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
14567bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
14577bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
14587bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
14597bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
14607bdc0c4bSKalyan Thota 	},
14617bdc0c4bSKalyan Thota };
14627bdc0c4bSKalyan Thota 
14637bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
14647bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
1465e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
14667bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SC7180_MASK,
1467e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
146825fdd593SJeykumar Sankaran };
146925fdd593SJeykumar Sankaran 
14704a352c2fSBjorn Andersson /* SC8280XP */
14714a352c2fSBjorn Andersson 
14724a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = {
14734a352c2fSBjorn Andersson 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
14744a352c2fSBjorn Andersson 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
14754a352c2fSBjorn Andersson 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2),
14764a352c2fSBjorn Andersson 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3),
14774a352c2fSBjorn Andersson 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
14784a352c2fSBjorn Andersson 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
14794a352c2fSBjorn Andersson };
14804a352c2fSBjorn Andersson 
1481386fced3SJonathan Marek /* SM8150 */
1482386fced3SJonathan Marek 
1483386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1484386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
148505ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1486386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
148705ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1488386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1489386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1490386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1491386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1492386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1493386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1494386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1495386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1496386fced3SJonathan Marek };
1497386fced3SJonathan Marek 
1498591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
1499591e34a0SKrishna Manikandan 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
1500fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
1501591e34a0SKrishna Manikandan 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SC7180_MASK,
1502591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
1503591e34a0SKrishna Manikandan 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SC7180_MASK,
1504591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1505591e34a0SKrishna Manikandan };
1506591e34a0SKrishna Manikandan 
15075334087eSLoic Poulain /* QCM2290 */
15085334087eSLoic Poulain 
15095334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
15105334087eSLoic Poulain 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
15115334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
15125334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
15135334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
15145334087eSLoic Poulain 	},
15155334087eSLoic Poulain };
15165334087eSLoic Poulain 
15175334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
15185334087eSLoic Poulain 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
15195334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
15205334087eSLoic Poulain };
15215334087eSLoic Poulain 
152225fdd593SJeykumar Sankaran /*************************************************************
1523e47616dfSKalyan Thota  * DSPP sub blocks config
1524e47616dfSKalyan Thota  *************************************************************/
152594391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
152694391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
152794391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
152894391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
152994391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
153094391a14SAngeloGioacchino Del Regno };
153194391a14SAngeloGioacchino Del Regno 
15324259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
15334259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
15344259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
15354259ff7aSKalyan Thota };
15364259ff7aSKalyan Thota 
153705ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
153805ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
153905ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
154005ae91d9SDmitry Baryshkov };
154105ae91d9SDmitry Baryshkov 
1542862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1543e47616dfSKalyan Thota 		{\
1544e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1545e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1546862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
154705ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1548e47616dfSKalyan Thota 		}
1549e47616dfSKalyan Thota 
155094391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
155194391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
155294391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
155394391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
155494391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
155594391a14SAngeloGioacchino Del Regno };
155694391a14SAngeloGioacchino Del Regno 
1557e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1558862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1559862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
156005ae91d9SDmitry Baryshkov };
156105ae91d9SDmitry Baryshkov 
156205ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1563862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1564862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1565862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1566862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1567862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1568862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1569862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1570862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1571e47616dfSKalyan Thota };
1572386fced3SJonathan Marek 
15735334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
15745334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
15755334087eSLoic Poulain 		 &sm8150_dspp_sblk),
15765334087eSLoic Poulain };
15775334087eSLoic Poulain 
1578e47616dfSKalyan Thota /*************************************************************
157925fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
158025fdd593SJeykumar Sankaran  *************************************************************/
158125fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
158225fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
158325fdd593SJeykumar Sankaran 		.version = 0x1},
158425fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
158525fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
158625fdd593SJeykumar Sankaran };
158725fdd593SJeykumar Sankaran 
158825fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
158925fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
159025fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
159125fdd593SJeykumar Sankaran };
159225fdd593SJeykumar Sankaran 
1593591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1594591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1595591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1596591e34a0SKrishna Manikandan };
1597591e34a0SKrishna Manikandan 
1598*efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
1599*efcd0107SNeil Armstrong 	{\
1600*efcd0107SNeil Armstrong 	.name = _name, .id = _id, \
1601*efcd0107SNeil Armstrong 	.base = _base, .len = 0, \
1602*efcd0107SNeil Armstrong 	.features = BIT(DPU_PINGPONG_DITHER), \
1603*efcd0107SNeil Armstrong 	.merge_3d = _merge_3d, \
1604*efcd0107SNeil Armstrong 	.sblk = &_sblk, \
1605*efcd0107SNeil Armstrong 	.intr_done = _done, \
1606*efcd0107SNeil Armstrong 	.intr_rdptr = _rdptr, \
1607*efcd0107SNeil Armstrong 	}
1608667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
160925fdd593SJeykumar Sankaran 	{\
161025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
161125fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
161225fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
16134369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1614667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1615667e9985SDmitry Baryshkov 	.intr_done = _done, \
1616667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
161725fdd593SJeykumar Sankaran 	}
1618667e9985SDmitry Baryshkov #define PP_BLK(_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_MASK, \
16234369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1624667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1625667e9985SDmitry Baryshkov 	.intr_done = _done, \
1626667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
162725fdd593SJeykumar Sankaran 	}
162825fdd593SJeykumar Sankaran 
1629abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1630667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1631667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1632667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1633667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1634667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1635667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1636667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1637667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1638667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1639667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1640667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1641667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
164225fdd593SJeykumar Sankaran };
164325fdd593SJeykumar Sankaran 
16447bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = {
1645667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1646667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
16477bdc0c4bSKalyan Thota };
16487bdc0c4bSKalyan Thota 
16494a352c2fSBjorn Andersson static struct dpu_pingpong_cfg sc8280xp_pp[] = {
16504a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16514a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1),
16524a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
16534a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1),
16544a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te,
16554a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1),
16564a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te,
16574a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1),
16584a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te,
16594a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1),
16604a352c2fSBjorn Andersson 	PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te,
16614a352c2fSBjorn Andersson 		  DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1),
16624a352c2fSBjorn Andersson };
16634a352c2fSBjorn Andersson 
1664386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1665667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1666667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1667667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1668667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1669667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1670667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1671667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1672667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1673667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1674667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1675667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1676667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1677667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1678667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1679667e9985SDmitry Baryshkov 			-1),
1680667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
16813431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1682667e9985SDmitry Baryshkov 			-1),
16834369c93cSDmitry Baryshkov };
16844369c93cSDmitry Baryshkov 
16850e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = {
16860e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
16870e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
16880e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
16890e91bcbbSRobert Foss 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
16900e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
16910e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
16920e91bcbbSRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
16930e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
16940e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
16950e91bcbbSRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
16960e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
16970e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
16980e91bcbbSRobert Foss 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
16990e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
17000e91bcbbSRobert Foss 			-1),
17010e91bcbbSRobert Foss 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
17020e91bcbbSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
17030e91bcbbSRobert Foss 			-1),
17040e91bcbbSRobert Foss };
17050e91bcbbSRobert Foss 
17061a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = {
17071a5b5372SRobert Foss 	PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1),
17081a5b5372SRobert Foss 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
17091a5b5372SRobert Foss 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
17101a5b5372SRobert Foss 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
17111a5b5372SRobert Foss };
17121a5b5372SRobert Foss 
17135334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = {
17145334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
17155334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
17165334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
17175334087eSLoic Poulain };
17185334087eSLoic Poulain 
1719100d7ef6SDmitry Baryshkov /* FIXME: interrupts */
1720100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = {
1721100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te,
1722100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1723100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1724100d7ef6SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te,
1725100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1726100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1727100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk,
1728100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1729100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1730100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk,
1731100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1732100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1733100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk,
1734100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1735100d7ef6SDmitry Baryshkov 			-1),
1736100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk,
1737100d7ef6SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1738100d7ef6SDmitry Baryshkov 			-1),
1739100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk,
1740100d7ef6SDmitry Baryshkov 			-1,
1741100d7ef6SDmitry Baryshkov 			-1),
1742100d7ef6SDmitry Baryshkov 	PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk,
1743100d7ef6SDmitry Baryshkov 			-1,
1744100d7ef6SDmitry Baryshkov 			-1),
1745100d7ef6SDmitry Baryshkov };
1746100d7ef6SDmitry Baryshkov 
1747*efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = {
1748*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk,
1749*efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1750*efcd0107SNeil Armstrong 			-1),
1751*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk,
1752*efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1753*efcd0107SNeil Armstrong 			-1),
1754*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk,
1755*efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1756*efcd0107SNeil Armstrong 			-1),
1757*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk,
1758*efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1759*efcd0107SNeil Armstrong 			-1),
1760*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk,
1761*efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1762*efcd0107SNeil Armstrong 			-1),
1763*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk,
1764*efcd0107SNeil Armstrong 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1765*efcd0107SNeil Armstrong 			-1),
1766*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk,
1767*efcd0107SNeil Armstrong 			-1,
1768*efcd0107SNeil Armstrong 			-1),
1769*efcd0107SNeil Armstrong 	PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk,
1770*efcd0107SNeil Armstrong 			-1,
1771*efcd0107SNeil Armstrong 			-1),
1772*efcd0107SNeil Armstrong };
1773*efcd0107SNeil Armstrong 
17744369c93cSDmitry Baryshkov /*************************************************************
17754369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
17764369c93cSDmitry Baryshkov  *************************************************************/
17774369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
17784369c93cSDmitry Baryshkov 	{\
17794369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
17804369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
17814369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
17824369c93cSDmitry Baryshkov 	.sblk = NULL \
17834369c93cSDmitry Baryshkov 	}
17844369c93cSDmitry Baryshkov 
17854369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
17864369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
17874369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
17884369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1789386fced3SJonathan Marek };
1790386fced3SJonathan Marek 
17910e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = {
17920e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
17930e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
17940e91bcbbSRobert Foss 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
17950e91bcbbSRobert Foss };
17960e91bcbbSRobert Foss 
1797100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = {
1798100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1799100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1800100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1801100d7ef6SDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00),
1802100d7ef6SDmitry Baryshkov };
1803100d7ef6SDmitry Baryshkov 
1804*efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = {
1805*efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000),
1806*efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000),
1807*efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000),
1808*efcd0107SNeil Armstrong 	MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700),
1809*efcd0107SNeil Armstrong };
1810*efcd0107SNeil Armstrong 
18117c5ab05eSVinod Koul /*************************************************************
18127c5ab05eSVinod Koul  * DSC sub blocks config
18137c5ab05eSVinod Koul  *************************************************************/
18147c5ab05eSVinod Koul #define DSC_BLK(_name, _id, _base) \
18157c5ab05eSVinod Koul 	{\
18167c5ab05eSVinod Koul 	.name = _name, .id = _id, \
18177c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
18187c5ab05eSVinod Koul 	.features = 0, \
18197c5ab05eSVinod Koul 	}
18207c5ab05eSVinod Koul 
18217c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = {
18227c5ab05eSVinod Koul 	DSC_BLK("dsc_0", DSC_0, 0x80000),
18237c5ab05eSVinod Koul 	DSC_BLK("dsc_1", DSC_1, 0x80400),
18247c5ab05eSVinod Koul 	DSC_BLK("dsc_2", DSC_2, 0x80800),
18257c5ab05eSVinod Koul 	DSC_BLK("dsc_3", DSC_3, 0x80c00),
18267c5ab05eSVinod Koul };
18277c5ab05eSVinod Koul 
182825fdd593SJeykumar Sankaran /*************************************************************
182925fdd593SJeykumar Sankaran  * INTF sub blocks config
183025fdd593SJeykumar Sankaran  *************************************************************/
1831667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
183225fdd593SJeykumar Sankaran 	{\
183325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
183425fdd593SJeykumar Sankaran 	.base = _base, .len = 0x280, \
1835cace3ac4SJonathan Marek 	.features = _features, \
183625fdd593SJeykumar Sankaran 	.type = _type, \
183725fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1838667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1839667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1840667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
184125fdd593SJeykumar Sankaran 	}
184225fdd593SJeykumar Sankaran 
184394391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
184494391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
184594391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
184694391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
184794391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
184894391a14SAngeloGioacchino Del Regno };
184994391a14SAngeloGioacchino Del Regno 
1850abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
1851667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1852667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1853667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1854667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
185525fdd593SJeykumar Sankaran };
185625fdd593SJeykumar Sankaran 
18577bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
1858bb3de286SBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1859667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18607bdc0c4bSKalyan Thota };
18617bdc0c4bSKalyan Thota 
1862386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
1863667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1864667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1865667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1866667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1867386fced3SJonathan Marek };
1868386fced3SJonathan Marek 
1869591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
1870ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1871667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1872ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1873591e34a0SKrishna Manikandan };
1874591e34a0SKrishna Manikandan 
18750e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = {
18760e91bcbbSRobert Foss 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18770e91bcbbSRobert Foss 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18780e91bcbbSRobert Foss 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18790e91bcbbSRobert Foss 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
18800e91bcbbSRobert Foss };
18810e91bcbbSRobert Foss 
1882f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
1883f3af2d6eSRob Clark 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1884f3af2d6eSRob Clark 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1885f3af2d6eSRob Clark 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1886f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
1887f3af2d6eSRob Clark 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1888f3af2d6eSRob Clark 	INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
1889f3af2d6eSRob Clark 	INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1890f3af2d6eSRob Clark };
1891f3af2d6eSRob Clark 
18924a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */
18934a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = {
18944a352c2fSBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
18954a352c2fSBjorn Andersson 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
18964a352c2fSBjorn Andersson 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
18974a352c2fSBjorn Andersson 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_NONE, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
18984a352c2fSBjorn Andersson 	INTF_BLK("intf_4", INTF_4, 0x38000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
18994a352c2fSBjorn Andersson 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
19004a352c2fSBjorn Andersson 	INTF_BLK("intf_6", INTF_6, 0x3a000, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17),
19014a352c2fSBjorn Andersson 	INTF_BLK("intf_7", INTF_7, 0x3b000, INTF_NONE, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19),
19024a352c2fSBjorn Andersson 	INTF_BLK("intf_8", INTF_8, 0x3c000, INTF_NONE, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13),
19034a352c2fSBjorn Andersson };
19044a352c2fSBjorn Andersson 
19055334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
19065334087eSLoic Poulain 	INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0),
19075334087eSLoic Poulain 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
19085334087eSLoic Poulain };
19095334087eSLoic Poulain 
1910100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = {
1911100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1912100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1913100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1914100d7ef6SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1915100d7ef6SDmitry Baryshkov };
1916100d7ef6SDmitry Baryshkov 
1917*efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = {
1918*efcd0107SNeil Armstrong 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1919*efcd0107SNeil Armstrong 	/* TODO TE sub-blocks for intf1 & intf2 */
1920*efcd0107SNeil Armstrong 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1921*efcd0107SNeil Armstrong 	INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1922*efcd0107SNeil Armstrong 	INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1923*efcd0107SNeil Armstrong };
1924*efcd0107SNeil Armstrong 
192525fdd593SJeykumar Sankaran /*************************************************************
192653324b99SAbhinav Kumar  * Writeback blocks config
192753324b99SAbhinav Kumar  *************************************************************/
192853324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1929a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
193053324b99SAbhinav Kumar 	{ \
193153324b99SAbhinav Kumar 	.name = _name, .id = _id, \
193253324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
193353324b99SAbhinav Kumar 	.features = _features, \
193453324b99SAbhinav Kumar 	.format_list = wb2_formats, \
193553324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
193653324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
193753324b99SAbhinav Kumar 	.xin_id = __xin_id, \
193853324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
1939a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
194053324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
194153324b99SAbhinav Kumar 	}
194253324b99SAbhinav Kumar 
194353324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
194453324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
1945a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
194653324b99SAbhinav Kumar };
194753324b99SAbhinav Kumar 
194853324b99SAbhinav Kumar /*************************************************************
194925fdd593SJeykumar Sankaran  * VBIF sub blocks config
195025fdd593SJeykumar Sankaran  *************************************************************/
195125fdd593SJeykumar Sankaran /* VBIF QOS remap */
195294391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
195394391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
1954abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
1955abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
195625fdd593SJeykumar Sankaran 
195794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
195894391a14SAngeloGioacchino Del Regno 	{
195994391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
196094391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
196194391a14SAngeloGioacchino Del Regno 	},
196294391a14SAngeloGioacchino Del Regno 	{
196394391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
196494391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
196594391a14SAngeloGioacchino Del Regno 	},
196694391a14SAngeloGioacchino Del Regno 	{
196794391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
196894391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
196994391a14SAngeloGioacchino Del Regno 	},
197094391a14SAngeloGioacchino Del Regno };
197194391a14SAngeloGioacchino Del Regno 
197294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
197394391a14SAngeloGioacchino Del Regno 	{
1974606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
197594391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
197694391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
197794391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
197894391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
197994391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
1980c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
198194391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
198294391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
198394391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
198494391a14SAngeloGioacchino Del Regno 		},
198594391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
198694391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
198794391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
198894391a14SAngeloGioacchino Del Regno 		},
198994391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
199094391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
199194391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
199294391a14SAngeloGioacchino Del Regno 		},
199394391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
199494391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
199594391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
199694391a14SAngeloGioacchino Del Regno 		},
199794391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
199894391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
199994391a14SAngeloGioacchino Del Regno 	},
200094391a14SAngeloGioacchino Del Regno };
200194391a14SAngeloGioacchino Del Regno 
2002abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
200325fdd593SJeykumar Sankaran 	{
2004606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
200525fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
200625fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
200725fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
2008c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
200925fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
201025fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
201125fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
201225fdd593SJeykumar Sankaran 		},
201325fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
201425fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
201525fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
201625fdd593SJeykumar Sankaran 		},
201725fdd593SJeykumar Sankaran 	.memtype_count = 14,
201825fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
201925fdd593SJeykumar Sankaran 	},
202025fdd593SJeykumar Sankaran };
202125fdd593SJeykumar Sankaran 
20224a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = {
20234a352c2fSBjorn Andersson 	.base = 0x0,
20244a352c2fSBjorn Andersson 	.version = 0x00020000,
20254a352c2fSBjorn Andersson 	.trigger_sel_off = 0x119c,
20264a352c2fSBjorn Andersson 	.xin_id = 7,
20274a352c2fSBjorn Andersson 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20284a352c2fSBjorn Andersson };
20294a352c2fSBjorn Andersson 
2030abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
203125fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
203225fdd593SJeykumar Sankaran };
203325fdd593SJeykumar Sankaran 
2034386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
2035386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
2036386fced3SJonathan Marek };
2037386fced3SJonathan Marek 
2038af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
2039af776a3eSJonathan Marek 	.base = 0x0,
2040af776a3eSJonathan Marek 	.version = 0x00010002,
2041af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
2042af776a3eSJonathan Marek 	.xin_id = 7,
2043af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2044af776a3eSJonathan Marek };
2045af776a3eSJonathan Marek 
20460e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = {
20470e91bcbbSRobert Foss 	.base = 0x400,
20480e91bcbbSRobert Foss 	.version = 0x00020000,
20490e91bcbbSRobert Foss 	.trigger_sel_off = 0x119c,
20500e91bcbbSRobert Foss 	.xin_id = 7,
20510e91bcbbSRobert Foss 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
20520e91bcbbSRobert Foss };
20530e91bcbbSRobert Foss 
2054100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = {
2055100d7ef6SDmitry Baryshkov 	.base = 0x0,
2056100d7ef6SDmitry Baryshkov 	.version = 0x00020000,
2057100d7ef6SDmitry Baryshkov 	.trigger_sel_off = 0x119c,
2058100d7ef6SDmitry Baryshkov 	.xin_id = 7,
2059100d7ef6SDmitry Baryshkov 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
2060100d7ef6SDmitry Baryshkov };
2061100d7ef6SDmitry Baryshkov 
206225fdd593SJeykumar Sankaran /*************************************************************
206325fdd593SJeykumar Sankaran  * PERF data config
206425fdd593SJeykumar Sankaran  *************************************************************/
206525fdd593SJeykumar Sankaran 
206625fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
206794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
206894391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
206994391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
207094391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
207194391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
207294391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
207394391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
207494391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
207594391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
207694391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
207794391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
207894391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
207994391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
208094391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
208194391a14SAngeloGioacchino Del Regno };
208294391a14SAngeloGioacchino Del Regno 
2083abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
208425fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
208525fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
208625fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
208725fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
208825fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
208925fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
209025fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
209125fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
209225fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
209325fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
209425fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
209525fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
209625fdd593SJeykumar Sankaran };
209725fdd593SJeykumar Sankaran 
209894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
209994391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
210094391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
210194391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
210294391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
210394391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
210494391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
210594391a14SAngeloGioacchino Del Regno };
210694391a14SAngeloGioacchino Del Regno 
21077bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
21087bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
21097bdc0c4bSKalyan Thota };
21107bdc0c4bSKalyan Thota 
2111386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
2112386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
2113386fced3SJonathan Marek };
2114386fced3SJonathan Marek 
2115f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
2116f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
2117f3af2d6eSRob Clark };
2118f3af2d6eSRob Clark 
21195334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
21205334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
21215334087eSLoic Poulain };
21225334087eSLoic Poulain 
2123abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
212425fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
212525fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
212625fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
212725fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
212825fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
212925fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
213025fdd593SJeykumar Sankaran };
213125fdd593SJeykumar Sankaran 
21327bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
21337bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
21347bdc0c4bSKalyan Thota };
21357bdc0c4bSKalyan Thota 
2136f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
2137f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
2138f3af2d6eSRob Clark };
2139f3af2d6eSRob Clark 
214094391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
214194391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
214294391a14SAngeloGioacchino Del Regno };
214394391a14SAngeloGioacchino Del Regno 
2144abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
214525fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
214625fdd593SJeykumar Sankaran };
214725fdd593SJeykumar Sankaran 
21487bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
21497bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
21507bdc0c4bSKalyan Thota };
21517bdc0c4bSKalyan Thota 
215294391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
215394391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
215494391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
215594391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
215694391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
215794391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
215894391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
215994391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
216094391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
216194391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
216294391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
216394391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
216494391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
216594391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
216694391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
216794391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
216894391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
216994391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
217094391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
217194391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
217294391a14SAngeloGioacchino Del Regno 		},
217394391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
217494391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
217594391a14SAngeloGioacchino Del Regno 		},
217694391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
217794391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
217894391a14SAngeloGioacchino Del Regno 		},
217994391a14SAngeloGioacchino Del Regno 	},
218094391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
218194391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
218294391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
218394391a14SAngeloGioacchino Del Regno 	},
218494391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
218594391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
218694391a14SAngeloGioacchino Del Regno };
218794391a14SAngeloGioacchino Del Regno 
2188abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
218925fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
219025fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
219125fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
219225fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
219325fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
219425fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
219525fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
219625fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
219725fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
219825fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
219925fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
220025fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
220125fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
220225fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
220325fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22045bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
220525fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
220625fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
220725fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
220825fdd593SJeykumar Sankaran 		},
220925fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
221025fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
221125fdd593SJeykumar Sankaran 		},
221225fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
221325fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
221425fdd593SJeykumar Sankaran 		},
221525fdd593SJeykumar Sankaran 	},
221625fdd593SJeykumar Sankaran 	.cdp_cfg = {
221725fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
221825fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
221925fdd593SJeykumar Sankaran 	},
22204f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
22214f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
222225fdd593SJeykumar Sankaran };
222325fdd593SJeykumar Sankaran 
22247bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
222571dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
222671dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
22277bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
22287bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
2229c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
2230c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
22317bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22325bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22337bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
22347bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22357bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
22367bdc0c4bSKalyan Thota 		},
22377bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22387bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
22397bdc0c4bSKalyan Thota 		},
22407bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22417bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
22427bdc0c4bSKalyan Thota 		},
22437bdc0c4bSKalyan Thota 	},
22447bdc0c4bSKalyan Thota 	.cdp_cfg = {
22457bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
22467bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
22477bdc0c4bSKalyan Thota 	},
2248c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
2249c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
22507bdc0c4bSKalyan Thota };
22517bdc0c4bSKalyan Thota 
22523581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = {
22533581b706SAdam Skladowski 	.max_bw_low = 3100000,
22543581b706SAdam Skladowski 	.max_bw_high = 4000000,
22553581b706SAdam Skladowski 	.min_core_ib = 2400000,
22563581b706SAdam Skladowski 	.min_llcc_ib = 800000,
22573581b706SAdam Skladowski 	.min_dram_ib = 800000,
22583581b706SAdam Skladowski 	.min_prefill_lines = 24,
22593581b706SAdam Skladowski 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
22603581b706SAdam Skladowski 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
22613581b706SAdam Skladowski 	.qos_lut_tbl = {
22623581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
22633581b706SAdam Skladowski 		.entries = sc7180_qos_linear
22643581b706SAdam Skladowski 		},
22653581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
22663581b706SAdam Skladowski 		.entries = sc7180_qos_macrotile
22673581b706SAdam Skladowski 		},
22683581b706SAdam Skladowski 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
22693581b706SAdam Skladowski 		.entries = sc7180_qos_nrt
22703581b706SAdam Skladowski 		},
22713581b706SAdam Skladowski 		/* TODO: macrotile-qseed is different from macrotile */
22723581b706SAdam Skladowski 	},
22733581b706SAdam Skladowski 	.cdp_cfg = {
22743581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 1},
22753581b706SAdam Skladowski 		{.rd_enable = 1, .wr_enable = 0}
22763581b706SAdam Skladowski 	},
22773581b706SAdam Skladowski 	.clk_inefficiency_factor = 105,
22783581b706SAdam Skladowski 	.bw_inefficiency_factor = 120,
22793581b706SAdam Skladowski };
22803581b706SAdam Skladowski 
2281386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
2282386fced3SJonathan Marek 	.max_bw_low = 12800000,
2283386fced3SJonathan Marek 	.max_bw_high = 12800000,
2284386fced3SJonathan Marek 	.min_core_ib = 2400000,
2285386fced3SJonathan Marek 	.min_llcc_ib = 800000,
2286386fced3SJonathan Marek 	.min_dram_ib = 800000,
22874f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
2288386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
22895bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
2290386fced3SJonathan Marek 	.qos_lut_tbl = {
2291386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
2292386fced3SJonathan Marek 		.entries = sm8150_qos_linear
2293386fced3SJonathan Marek 		},
2294386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2295386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
2296386fced3SJonathan Marek 		},
2297386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2298386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
2299386fced3SJonathan Marek 		},
2300386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2301386fced3SJonathan Marek 	},
2302386fced3SJonathan Marek 	.cdp_cfg = {
2303386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2304386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2305386fced3SJonathan Marek 	},
23064f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
23074f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2308386fced3SJonathan Marek };
2309386fced3SJonathan Marek 
2310f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
2311f3af2d6eSRob Clark 	.max_bw_low = 9600000,
2312f3af2d6eSRob Clark 	.max_bw_high = 9600000,
2313f3af2d6eSRob Clark 	.min_core_ib = 2400000,
2314f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
2315f3af2d6eSRob Clark 	.min_dram_ib = 800000,
2316f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
2317f3af2d6eSRob Clark 	.qos_lut_tbl = {
23184a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
23194a352c2fSBjorn Andersson 		.entries = sc7180_qos_linear
23204a352c2fSBjorn Andersson 		},
23214a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
23224a352c2fSBjorn Andersson 		.entries = sc7180_qos_macrotile
23234a352c2fSBjorn Andersson 		},
23244a352c2fSBjorn Andersson 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
23254a352c2fSBjorn Andersson 		.entries = sc7180_qos_nrt
23264a352c2fSBjorn Andersson 		},
23274a352c2fSBjorn Andersson 		/* TODO: macrotile-qseed is different from macrotile */
23284a352c2fSBjorn Andersson 	},
23294a352c2fSBjorn Andersson 	.cdp_cfg = {
23304a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 1},
23314a352c2fSBjorn Andersson 		{.rd_enable = 1, .wr_enable = 0}
23324a352c2fSBjorn Andersson 	},
23334a352c2fSBjorn Andersson 	.clk_inefficiency_factor = 105,
23344a352c2fSBjorn Andersson 	.bw_inefficiency_factor = 120,
23354a352c2fSBjorn Andersson };
23364a352c2fSBjorn Andersson 
23374a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = {
23384a352c2fSBjorn Andersson 	.max_bw_low = 13600000,
23394a352c2fSBjorn Andersson 	.max_bw_high = 18200000,
23404a352c2fSBjorn Andersson 	.min_core_ib = 2500000,
23414a352c2fSBjorn Andersson 	.min_llcc_ib = 0,
23424a352c2fSBjorn Andersson 	.min_dram_ib = 800000,
23434a352c2fSBjorn Andersson 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23444a352c2fSBjorn Andersson 	.qos_lut_tbl = {
2345f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
2346f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
2347f3af2d6eSRob Clark 		},
2348f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
2349f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
2350f3af2d6eSRob Clark 		},
2351f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2352f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
2353f3af2d6eSRob Clark 		},
2354f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
2355f3af2d6eSRob Clark 	},
2356f3af2d6eSRob Clark 	.cdp_cfg = {
2357f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
2358f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
2359f3af2d6eSRob Clark 	},
2360f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
2361f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
2362f3af2d6eSRob Clark };
2363f3af2d6eSRob Clark 
2364af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
2365af776a3eSJonathan Marek 	.max_bw_low = 13700000,
2366af776a3eSJonathan Marek 	.max_bw_high = 16600000,
2367af776a3eSJonathan Marek 	.min_core_ib = 4800000,
2368af776a3eSJonathan Marek 	.min_llcc_ib = 0,
2369af776a3eSJonathan Marek 	.min_dram_ib = 800000,
23704f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
2371af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
23725bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
2373af776a3eSJonathan Marek 	.qos_lut_tbl = {
2374af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2375af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
2376af776a3eSJonathan Marek 		},
2377af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2378af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
2379af776a3eSJonathan Marek 		},
2380af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2381af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
2382af776a3eSJonathan Marek 		},
2383af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
2384af776a3eSJonathan Marek 	},
2385af776a3eSJonathan Marek 	.cdp_cfg = {
2386af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
2387af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
2388af776a3eSJonathan Marek 	},
23894f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
23904f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2391af776a3eSJonathan Marek };
2392af776a3eSJonathan Marek 
2393100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = {
2394100d7ef6SDmitry Baryshkov 	.max_bw_low = 13600000,
2395100d7ef6SDmitry Baryshkov 	.max_bw_high = 18200000,
2396100d7ef6SDmitry Baryshkov 	.min_core_ib = 2500000,
2397100d7ef6SDmitry Baryshkov 	.min_llcc_ib = 0,
2398100d7ef6SDmitry Baryshkov 	.min_dram_ib = 800000,
2399100d7ef6SDmitry Baryshkov 	.min_prefill_lines = 35,
2400100d7ef6SDmitry Baryshkov 	/* FIXME: lut tables */
2401100d7ef6SDmitry Baryshkov 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
2402100d7ef6SDmitry Baryshkov 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
2403100d7ef6SDmitry Baryshkov 	.qos_lut_tbl = {
2404100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
2405100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_linear
2406100d7ef6SDmitry Baryshkov 		},
2407100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2408100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_macrotile
2409100d7ef6SDmitry Baryshkov 		},
2410100d7ef6SDmitry Baryshkov 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2411100d7ef6SDmitry Baryshkov 		.entries = sc7180_qos_nrt
2412100d7ef6SDmitry Baryshkov 		},
2413100d7ef6SDmitry Baryshkov 		/* TODO: macrotile-qseed is different from macrotile */
2414100d7ef6SDmitry Baryshkov 	},
2415100d7ef6SDmitry Baryshkov 	.cdp_cfg = {
2416100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 1},
2417100d7ef6SDmitry Baryshkov 		{.rd_enable = 1, .wr_enable = 0}
2418100d7ef6SDmitry Baryshkov 	},
2419100d7ef6SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
2420100d7ef6SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
2421100d7ef6SDmitry Baryshkov };
2422100d7ef6SDmitry Baryshkov 
2423591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
2424591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
2425591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
2426591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
2427591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
2428591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
2429591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
2430591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
24315bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
2432591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
2433591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2434591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2435591e34a0SKrishna Manikandan 		},
2436591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
2437591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
2438591e34a0SKrishna Manikandan 		},
2439591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
2440591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
2441591e34a0SKrishna Manikandan 		},
2442591e34a0SKrishna Manikandan 	},
2443591e34a0SKrishna Manikandan 	.cdp_cfg = {
2444591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
2445591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
2446591e34a0SKrishna Manikandan 	},
2447591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
2448591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
2449591e34a0SKrishna Manikandan };
2450591e34a0SKrishna Manikandan 
24510e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = {
24520e91bcbbSRobert Foss 	.max_bw_low = 11800000,
24530e91bcbbSRobert Foss 	.max_bw_high = 15500000,
24540e91bcbbSRobert Foss 	.min_core_ib = 2500000,
24550e91bcbbSRobert Foss 	.min_llcc_ib = 0,
24560e91bcbbSRobert Foss 	.min_dram_ib = 800000,
24570e91bcbbSRobert Foss 	.min_prefill_lines = 40,
24580e91bcbbSRobert Foss 	/* FIXME: lut tables */
24590e91bcbbSRobert Foss 	.danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0},
24600e91bcbbSRobert Foss 	.safe_lut_tbl = {0xfe00, 0xfe00, 0xffff},
24610e91bcbbSRobert Foss 	.qos_lut_tbl = {
24620e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
24630e91bcbbSRobert Foss 		.entries = sc7180_qos_linear
24640e91bcbbSRobert Foss 		},
24650e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
24660e91bcbbSRobert Foss 		.entries = sc7180_qos_macrotile
24670e91bcbbSRobert Foss 		},
24680e91bcbbSRobert Foss 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
24690e91bcbbSRobert Foss 		.entries = sc7180_qos_nrt
24700e91bcbbSRobert Foss 		},
24710e91bcbbSRobert Foss 		/* TODO: macrotile-qseed is different from macrotile */
24720e91bcbbSRobert Foss 	},
24730e91bcbbSRobert Foss 	.cdp_cfg = {
24740e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 1},
24750e91bcbbSRobert Foss 		{.rd_enable = 1, .wr_enable = 0}
24760e91bcbbSRobert Foss 	},
24770e91bcbbSRobert Foss 	.clk_inefficiency_factor = 105,
24780e91bcbbSRobert Foss 	.bw_inefficiency_factor = 120,
24790e91bcbbSRobert Foss };
24800e91bcbbSRobert Foss 
24815334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
24825334087eSLoic Poulain 	.max_bw_low = 2700000,
24835334087eSLoic Poulain 	.max_bw_high = 2700000,
24845334087eSLoic Poulain 	.min_core_ib = 1300000,
24855334087eSLoic Poulain 	.min_llcc_ib = 0,
24865334087eSLoic Poulain 	.min_dram_ib = 1600000,
24875334087eSLoic Poulain 	.min_prefill_lines = 24,
24885334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
24895334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
24905334087eSLoic Poulain 	.qos_lut_tbl = {
24915334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
24925334087eSLoic Poulain 		.entries = qcm2290_qos_linear
24935334087eSLoic Poulain 		},
24945334087eSLoic Poulain 	},
24955334087eSLoic Poulain 	.cdp_cfg = {
24965334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
24975334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
24985334087eSLoic Poulain 	},
24995334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
25005334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
25015334087eSLoic Poulain };
250225fdd593SJeykumar Sankaran /*************************************************************
2503de7d480fSDmitry Baryshkov  * Hardware catalog
250425fdd593SJeykumar Sankaran  *************************************************************/
250525fdd593SJeykumar Sankaran 
2506de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
250794391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
250894391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
250994391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
251094391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
251194391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
251294391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
251394391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
251494391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
251594391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
25166452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
25176452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
251894391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
251994391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
252094391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
252194391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
252294391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
252394391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
252494391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
2525477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
252694391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
252794391a14SAngeloGioacchino Del Regno };
252894391a14SAngeloGioacchino Del Regno 
2529de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
253025fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
253125fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
253225fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
253325fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
253425fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
253525fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
253625fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
253725fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
253825fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
253925fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
254025fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
25417c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
25427c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
254325fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
254425fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
254525fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
254625fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
254725fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
2548481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2549477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
2550597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
255125fdd593SJeykumar Sankaran };
255225fdd593SJeykumar Sankaran 
2553de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
25547bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
25557bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
25567bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
25577bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
25587bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
25597bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
25607bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
25617bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
25627bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
2563e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2564e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
25657bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
25667bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
25677bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
25687bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
256951e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
257051e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
25717bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
25727bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
25737bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
2574481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2575477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
2576597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
25777bdc0c4bSKalyan Thota };
25787bdc0c4bSKalyan Thota 
25793581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
25803581b706SAdam Skladowski 	.caps = &sm6115_dpu_caps,
25813581b706SAdam Skladowski 	.mdp_count = ARRAY_SIZE(sm6115_mdp),
25823581b706SAdam Skladowski 	.mdp = sm6115_mdp,
25833581b706SAdam Skladowski 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
25843581b706SAdam Skladowski 	.ctl = qcm2290_ctl,
25853581b706SAdam Skladowski 	.sspp_count = ARRAY_SIZE(sm6115_sspp),
25863581b706SAdam Skladowski 	.sspp = sm6115_sspp,
25873581b706SAdam Skladowski 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
25883581b706SAdam Skladowski 	.mixer = qcm2290_lm,
25893581b706SAdam Skladowski 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
25903581b706SAdam Skladowski 	.dspp = qcm2290_dspp,
25913581b706SAdam Skladowski 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
25923581b706SAdam Skladowski 	.pingpong = qcm2290_pp,
25933581b706SAdam Skladowski 	.intf_count = ARRAY_SIZE(qcm2290_intf),
25943581b706SAdam Skladowski 	.intf = qcm2290_intf,
25953581b706SAdam Skladowski 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
25963581b706SAdam Skladowski 	.vbif = sdm845_vbif,
25973581b706SAdam Skladowski 	.perf = &sm6115_perf_data,
25983581b706SAdam Skladowski 	.mdss_irqs = IRQ_SC7180_MASK,
25993581b706SAdam Skladowski };
26003581b706SAdam Skladowski 
2601de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
2602386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
2603386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
2604386fced3SJonathan Marek 	.mdp = sdm845_mdp,
2605386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2606386fced3SJonathan Marek 	.ctl = sm8150_ctl,
2607386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2608386fced3SJonathan Marek 	.sspp = sdm845_sspp,
2609386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2610386fced3SJonathan Marek 	.mixer = sm8150_lm,
261105ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
261205ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
2613386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2614386fced3SJonathan Marek 	.pingpong = sm8150_pp,
26154369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
26164369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2617386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2618386fced3SJonathan Marek 	.intf = sm8150_intf,
2619386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2620386fced3SJonathan Marek 	.vbif = sdm845_vbif,
2621386fced3SJonathan Marek 	.reg_dma_count = 1,
2622481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2623477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
2624597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
2625386fced3SJonathan Marek };
2626386fced3SJonathan Marek 
2627de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
2628f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
2629f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
2630f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
2631f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2632f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
2633f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
2634f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
2635f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2636f3af2d6eSRob Clark 	.mixer = sm8150_lm,
2637f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2638f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
2639f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
2640f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
2641f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
2642f3af2d6eSRob Clark 	.intf = sc8180x_intf,
2643f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2644f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
2645f3af2d6eSRob Clark 	.reg_dma_count = 1,
2646481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
2647477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
2648f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
2649f3af2d6eSRob Clark };
2650f3af2d6eSRob Clark 
26514a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = {
26524a352c2fSBjorn Andersson 	.caps = &sc8280xp_dpu_caps,
26534a352c2fSBjorn Andersson 	.mdp_count = ARRAY_SIZE(sc8280xp_mdp),
26544a352c2fSBjorn Andersson 	.mdp = sc8280xp_mdp,
26554a352c2fSBjorn Andersson 	.ctl_count = ARRAY_SIZE(sc8280xp_ctl),
26564a352c2fSBjorn Andersson 	.ctl = sc8280xp_ctl,
26574a352c2fSBjorn Andersson 	.sspp_count = ARRAY_SIZE(sc8280xp_sspp),
26584a352c2fSBjorn Andersson 	.sspp = sc8280xp_sspp,
26594a352c2fSBjorn Andersson 	.mixer_count = ARRAY_SIZE(sc8280xp_lm),
26604a352c2fSBjorn Andersson 	.mixer = sc8280xp_lm,
26614a352c2fSBjorn Andersson 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
26624a352c2fSBjorn Andersson 	.dspp = sm8150_dspp,
26634a352c2fSBjorn Andersson 	.pingpong_count = ARRAY_SIZE(sc8280xp_pp),
26644a352c2fSBjorn Andersson 	.pingpong = sc8280xp_pp,
26654a352c2fSBjorn Andersson 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
26664a352c2fSBjorn Andersson 	.merge_3d = sm8350_merge_3d,
26674a352c2fSBjorn Andersson 	.intf_count = ARRAY_SIZE(sc8280xp_intf),
26684a352c2fSBjorn Andersson 	.intf = sc8280xp_intf,
26694a352c2fSBjorn Andersson 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
26704a352c2fSBjorn Andersson 	.vbif = sdm845_vbif,
26714a352c2fSBjorn Andersson 	.perf = &sc8280xp_perf_data,
26724a352c2fSBjorn Andersson 	.mdss_irqs = IRQ_SC8280XP_MASK,
26734a352c2fSBjorn Andersson };
26744a352c2fSBjorn Andersson 
2675de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
2676af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
2677af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
2678af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
2679af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
2680af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
2681d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
2682d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
2683af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2684af776a3eSJonathan Marek 	.mixer = sm8150_lm,
268505ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
268605ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
2687af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
2688af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
26894369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
26904369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
2691af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
2692af776a3eSJonathan Marek 	.intf = sm8150_intf,
2693af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2694af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
269553324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
269653324b99SAbhinav Kumar 	.wb = sm8250_wb,
2697af776a3eSJonathan Marek 	.reg_dma_count = 1,
2698481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
2699477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
2700597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
2701af776a3eSJonathan Marek };
2702af776a3eSJonathan Marek 
27030e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = {
27040e91bcbbSRobert Foss 	.caps = &sm8350_dpu_caps,
27050e91bcbbSRobert Foss 	.mdp_count = ARRAY_SIZE(sm8350_mdp),
27060e91bcbbSRobert Foss 	.mdp = sm8350_mdp,
27070e91bcbbSRobert Foss 	.ctl_count = ARRAY_SIZE(sm8350_ctl),
27080e91bcbbSRobert Foss 	.ctl = sm8350_ctl,
27090e91bcbbSRobert Foss 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
27100e91bcbbSRobert Foss 	.sspp = sm8250_sspp,
27110e91bcbbSRobert Foss 	.mixer_count = ARRAY_SIZE(sm8150_lm),
27120e91bcbbSRobert Foss 	.mixer = sm8150_lm,
27130e91bcbbSRobert Foss 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
27140e91bcbbSRobert Foss 	.dspp = sm8150_dspp,
27150e91bcbbSRobert Foss 	.pingpong_count = ARRAY_SIZE(sm8350_pp),
27160e91bcbbSRobert Foss 	.pingpong = sm8350_pp,
27170e91bcbbSRobert Foss 	.merge_3d_count = ARRAY_SIZE(sm8350_merge_3d),
27180e91bcbbSRobert Foss 	.merge_3d = sm8350_merge_3d,
27190e91bcbbSRobert Foss 	.intf_count = ARRAY_SIZE(sm8350_intf),
27200e91bcbbSRobert Foss 	.intf = sm8350_intf,
27210e91bcbbSRobert Foss 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
27220e91bcbbSRobert Foss 	.vbif = sdm845_vbif,
27230e91bcbbSRobert Foss 	.reg_dma_count = 1,
27240e91bcbbSRobert Foss 	.dma_cfg = &sm8250_regdma,
27250e91bcbbSRobert Foss 	.perf = &sm8350_perf_data,
27260e91bcbbSRobert Foss 	.mdss_irqs = IRQ_SM8350_MASK,
27270e91bcbbSRobert Foss };
27280e91bcbbSRobert Foss 
2729100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = {
2730100d7ef6SDmitry Baryshkov 	.caps = &sm8450_dpu_caps,
2731100d7ef6SDmitry Baryshkov 	.mdp_count = ARRAY_SIZE(sm8450_mdp),
2732100d7ef6SDmitry Baryshkov 	.mdp = sm8450_mdp,
2733100d7ef6SDmitry Baryshkov 	.ctl_count = ARRAY_SIZE(sm8450_ctl),
2734100d7ef6SDmitry Baryshkov 	.ctl = sm8450_ctl,
2735100d7ef6SDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8450_sspp),
2736100d7ef6SDmitry Baryshkov 	.sspp = sm8450_sspp,
2737100d7ef6SDmitry Baryshkov 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2738100d7ef6SDmitry Baryshkov 	.mixer = sm8150_lm,
2739100d7ef6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2740100d7ef6SDmitry Baryshkov 	.dspp = sm8150_dspp,
2741100d7ef6SDmitry Baryshkov 	.pingpong_count = ARRAY_SIZE(sm8450_pp),
2742100d7ef6SDmitry Baryshkov 	.pingpong = sm8450_pp,
2743100d7ef6SDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8450_merge_3d),
2744100d7ef6SDmitry Baryshkov 	.merge_3d = sm8450_merge_3d,
2745100d7ef6SDmitry Baryshkov 	.intf_count = ARRAY_SIZE(sm8450_intf),
2746100d7ef6SDmitry Baryshkov 	.intf = sm8450_intf,
2747100d7ef6SDmitry Baryshkov 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2748100d7ef6SDmitry Baryshkov 	.vbif = sdm845_vbif,
2749100d7ef6SDmitry Baryshkov 	.reg_dma_count = 1,
2750100d7ef6SDmitry Baryshkov 	.dma_cfg = &sm8450_regdma,
2751100d7ef6SDmitry Baryshkov 	.perf = &sm8450_perf_data,
2752100d7ef6SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8450_MASK,
2753100d7ef6SDmitry Baryshkov };
2754100d7ef6SDmitry Baryshkov 
2755*efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = {
2756*efcd0107SNeil Armstrong 	.caps = &sm8550_dpu_caps,
2757*efcd0107SNeil Armstrong 	.mdp_count = ARRAY_SIZE(sm8550_mdp),
2758*efcd0107SNeil Armstrong 	.mdp = sm8550_mdp,
2759*efcd0107SNeil Armstrong 	.ctl_count = ARRAY_SIZE(sm8550_ctl),
2760*efcd0107SNeil Armstrong 	.ctl = sm8550_ctl,
2761*efcd0107SNeil Armstrong 	.sspp_count = ARRAY_SIZE(sm8550_sspp),
2762*efcd0107SNeil Armstrong 	.sspp = sm8550_sspp,
2763*efcd0107SNeil Armstrong 	.mixer_count = ARRAY_SIZE(sm8150_lm),
2764*efcd0107SNeil Armstrong 	.mixer = sm8150_lm,
2765*efcd0107SNeil Armstrong 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
2766*efcd0107SNeil Armstrong 	.dspp = sm8150_dspp,
2767*efcd0107SNeil Armstrong 	.pingpong_count = ARRAY_SIZE(sm8550_pp),
2768*efcd0107SNeil Armstrong 	.pingpong = sm8550_pp,
2769*efcd0107SNeil Armstrong 	.merge_3d_count = ARRAY_SIZE(sm8550_merge_3d),
2770*efcd0107SNeil Armstrong 	.merge_3d = sm8550_merge_3d,
2771*efcd0107SNeil Armstrong 	.intf_count = ARRAY_SIZE(sm8550_intf),
2772*efcd0107SNeil Armstrong 	.intf = sm8550_intf,
2773*efcd0107SNeil Armstrong 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2774*efcd0107SNeil Armstrong 	.vbif = sdm845_vbif,
2775*efcd0107SNeil Armstrong 	.reg_dma_count = 1,
2776*efcd0107SNeil Armstrong 	.dma_cfg = &sm8450_regdma,
2777*efcd0107SNeil Armstrong 	.perf = &sm8450_perf_data,
2778*efcd0107SNeil Armstrong 	.mdss_irqs = IRQ_SM8450_MASK,
2779*efcd0107SNeil Armstrong };
2780*efcd0107SNeil Armstrong 
2781de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
2782591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
2783591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
2784591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
2785591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
2786591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
2787591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
2788591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
2789fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
2790fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
2791591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
2792591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
2793591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
2794591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
2795591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
2796591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
2797591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
2798591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
2799477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
2800597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
2801591e34a0SKrishna Manikandan };
2802591e34a0SKrishna Manikandan 
2803de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
28045334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
28055334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
28065334087eSLoic Poulain 	.mdp = qcm2290_mdp,
28075334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
28085334087eSLoic Poulain 	.ctl = qcm2290_ctl,
28095334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
28105334087eSLoic Poulain 	.sspp = qcm2290_sspp,
28115334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
28125334087eSLoic Poulain 	.mixer = qcm2290_lm,
28135334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
28145334087eSLoic Poulain 	.dspp = qcm2290_dspp,
28155334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
28165334087eSLoic Poulain 	.pingpong = qcm2290_pp,
28175334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
28185334087eSLoic Poulain 	.intf = qcm2290_intf,
28195334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
28205334087eSLoic Poulain 	.vbif = sdm845_vbif,
28215334087eSLoic Poulain 	.reg_dma_count = 1,
2822481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
2823477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
28245334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
28255334087eSLoic Poulain };
28265334087eSLoic Poulain 
2827abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
2828de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
2829de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
2830de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
2831de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
2832de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
2833de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
2834de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
2835de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
2836de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
28373581b706SAdam Skladowski 	{ .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg},
2838de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
28390e91bcbbSRobert Foss 	{ .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg},
2840de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
28414a352c2fSBjorn Andersson 	{ .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg},
2842100d7ef6SDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg},
2843*efcd0107SNeil Armstrong 	{ .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg},
284425fdd593SJeykumar Sankaran };
284525fdd593SJeykumar Sankaran 
2846de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
284725fdd593SJeykumar Sankaran {
284825fdd593SJeykumar Sankaran 	int i;
284925fdd593SJeykumar Sankaran 
285025fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
2851de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
2852de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
285325fdd593SJeykumar Sankaran 	}
285425fdd593SJeykumar Sankaran 
285525fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
285632084967SDmitry Baryshkov 
285725fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
285825fdd593SJeykumar Sankaran }
285925fdd593SJeykumar Sankaran 
2860