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_INTF4_INTR) | \
90597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_0_INTR) | \
91597762d5SDmitry Baryshkov 			 BIT(MDP_AD4_1_INTR))
92597762d5SDmitry Baryshkov 
93597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
94597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
95597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
96597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
97597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR))
98597762d5SDmitry Baryshkov 
99597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
100597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
101597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
102597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_7xxx_INTR) | \
103597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_7xxx_INTR) | \
104597762d5SDmitry Baryshkov 			 BIT(MDP_INTF5_7xxx_INTR))
105597762d5SDmitry Baryshkov 
106597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
107597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_INTR2) | \
108597762d5SDmitry Baryshkov 			 BIT(MDP_SSPP_TOP0_HIST_INTR) | \
109597762d5SDmitry Baryshkov 			 BIT(MDP_INTF0_INTR) | \
110597762d5SDmitry Baryshkov 			 BIT(MDP_INTF1_INTR) | \
111597762d5SDmitry Baryshkov 			 BIT(MDP_INTF2_INTR) | \
112597762d5SDmitry Baryshkov 			 BIT(MDP_INTF3_INTR) | \
113597762d5SDmitry Baryshkov 			 BIT(MDP_INTF4_INTR))
114597762d5SDmitry Baryshkov 
115f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \
116f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_INTR2) | \
117f3af2d6eSRob Clark 			  BIT(MDP_SSPP_TOP0_HIST_INTR) | \
118f3af2d6eSRob Clark 			  BIT(MDP_INTF0_INTR) | \
119f3af2d6eSRob Clark 			  BIT(MDP_INTF1_INTR) | \
120f3af2d6eSRob Clark 			  BIT(MDP_INTF2_INTR) | \
121f3af2d6eSRob Clark 			  BIT(MDP_INTF3_INTR) | \
122f3af2d6eSRob Clark 			  BIT(MDP_INTF4_INTR) | \
123f3af2d6eSRob Clark 			  BIT(MDP_INTF5_INTR) | \
124f3af2d6eSRob Clark 			  BIT(MDP_AD4_0_INTR) | \
125f3af2d6eSRob Clark 			  BIT(MDP_AD4_1_INTR))
126597762d5SDmitry Baryshkov 
12753324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \
12853324b99SAbhinav Kumar 			 BIT(DPU_WB_UBWC) | \
12953324b99SAbhinav Kumar 			 BIT(DPU_WB_YUV_CONFIG) | \
13053324b99SAbhinav Kumar 			 BIT(DPU_WB_PIPE_ALPHA) | \
13153324b99SAbhinav Kumar 			 BIT(DPU_WB_XY_ROI_OFFSET) | \
13253324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS) | \
13353324b99SAbhinav Kumar 			 BIT(DPU_WB_QOS_8LVL) | \
13453324b99SAbhinav Kumar 			 BIT(DPU_WB_CDP) | \
13553324b99SAbhinav Kumar 			 BIT(DPU_WB_INPUT_CTRL))
13653324b99SAbhinav Kumar 
13725fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE		(50 * 1024)
13825fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH		2048
13925fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH	2560
14025fdd593SJeykumar Sankaran 
14125fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION	4
14225fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION	4
14325fdd593SJeykumar Sankaran 
14425fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO	20
14525fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO	4
14625fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE	1
14725fdd593SJeykumar Sankaran 
14825fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y)
14925fdd593SJeykumar Sankaran 
15009c7e370SLee Jones static const uint32_t plane_formats[] = {
15109c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
15209c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
15309c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
15409c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
15509c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
15609c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
15709c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
15809c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
15909c7e370SLee Jones 	DRM_FORMAT_RGB888,
16009c7e370SLee Jones 	DRM_FORMAT_BGR888,
16109c7e370SLee Jones 	DRM_FORMAT_RGB565,
16209c7e370SLee Jones 	DRM_FORMAT_BGR565,
16309c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
16409c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
16509c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
16609c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
16709c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
16809c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
16909c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
17009c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
17109c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
17209c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
17309c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
17409c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
17509c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
17609c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
17709c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
17809c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
17909c7e370SLee Jones };
18009c7e370SLee Jones 
18109c7e370SLee Jones static const uint32_t plane_formats_yuv[] = {
18209c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
18309c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
18409c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
18509c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
18609c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
18709c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
18809c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
18909c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
19009c7e370SLee Jones 	DRM_FORMAT_RGB888,
19109c7e370SLee Jones 	DRM_FORMAT_BGR888,
19209c7e370SLee Jones 	DRM_FORMAT_RGB565,
19309c7e370SLee Jones 	DRM_FORMAT_BGR565,
19409c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
19509c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
19609c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
19709c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
19809c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
19909c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
20009c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
20109c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
20209c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
20309c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
20409c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
20509c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
20609c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
20709c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
20809c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
20909c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
21009c7e370SLee Jones 
21109c7e370SLee Jones 	DRM_FORMAT_NV12,
21209c7e370SLee Jones 	DRM_FORMAT_NV21,
21309c7e370SLee Jones 	DRM_FORMAT_NV16,
21409c7e370SLee Jones 	DRM_FORMAT_NV61,
21509c7e370SLee Jones 	DRM_FORMAT_VYUY,
21609c7e370SLee Jones 	DRM_FORMAT_UYVY,
21709c7e370SLee Jones 	DRM_FORMAT_YUYV,
21809c7e370SLee Jones 	DRM_FORMAT_YVYU,
21909c7e370SLee Jones 	DRM_FORMAT_YUV420,
22009c7e370SLee Jones 	DRM_FORMAT_YVU420,
22109c7e370SLee Jones };
22209c7e370SLee Jones 
223dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = {
224dabfdd89SVinod Polimera 	DRM_FORMAT_NV12,
225dabfdd89SVinod Polimera 	/* TODO add formats after validation */
226dabfdd89SVinod Polimera };
227dabfdd89SVinod Polimera 
22853324b99SAbhinav Kumar static const uint32_t wb2_formats[] = {
22953324b99SAbhinav Kumar 	DRM_FORMAT_RGB565,
23053324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
23153324b99SAbhinav Kumar 	DRM_FORMAT_RGB888,
23253324b99SAbhinav Kumar 	DRM_FORMAT_ARGB8888,
23353324b99SAbhinav Kumar 	DRM_FORMAT_RGBA8888,
23453324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
23553324b99SAbhinav Kumar 	DRM_FORMAT_XRGB8888,
23653324b99SAbhinav Kumar 	DRM_FORMAT_RGBX8888,
23753324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
23853324b99SAbhinav Kumar 	DRM_FORMAT_ARGB1555,
23953324b99SAbhinav Kumar 	DRM_FORMAT_RGBA5551,
24053324b99SAbhinav Kumar 	DRM_FORMAT_XRGB1555,
24153324b99SAbhinav Kumar 	DRM_FORMAT_RGBX5551,
24253324b99SAbhinav Kumar 	DRM_FORMAT_ARGB4444,
24353324b99SAbhinav Kumar 	DRM_FORMAT_RGBA4444,
24453324b99SAbhinav Kumar 	DRM_FORMAT_RGBX4444,
24553324b99SAbhinav Kumar 	DRM_FORMAT_XRGB4444,
24653324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
24753324b99SAbhinav Kumar 	DRM_FORMAT_BGR888,
24853324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
24953324b99SAbhinav Kumar 	DRM_FORMAT_BGRA8888,
25053324b99SAbhinav Kumar 	DRM_FORMAT_BGRX8888,
25153324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
25253324b99SAbhinav Kumar 	DRM_FORMAT_ABGR1555,
25353324b99SAbhinav Kumar 	DRM_FORMAT_BGRA5551,
25453324b99SAbhinav Kumar 	DRM_FORMAT_XBGR1555,
25553324b99SAbhinav Kumar 	DRM_FORMAT_BGRX5551,
25653324b99SAbhinav Kumar 	DRM_FORMAT_ABGR4444,
25753324b99SAbhinav Kumar 	DRM_FORMAT_BGRA4444,
25853324b99SAbhinav Kumar 	DRM_FORMAT_BGRX4444,
25953324b99SAbhinav Kumar 	DRM_FORMAT_XBGR4444,
26053324b99SAbhinav Kumar };
26153324b99SAbhinav Kumar 
26225fdd593SJeykumar Sankaran /*************************************************************
26325fdd593SJeykumar Sankaran  * DPU sub blocks config
26425fdd593SJeykumar Sankaran  *************************************************************/
26525fdd593SJeykumar Sankaran /* DPU top level caps */
26694391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = {
26794391a14SAngeloGioacchino Del Regno 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
26894391a14SAngeloGioacchino Del Regno 	.max_mixer_blendstages = 0x7,
26994391a14SAngeloGioacchino Del Regno 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
27094391a14SAngeloGioacchino Del Regno 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V1,
27194391a14SAngeloGioacchino Del Regno 	.ubwc_version = DPU_HW_UBWC_VER_10,
27294391a14SAngeloGioacchino Del Regno 	.has_src_split = true,
27394391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
27494391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
27594391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
27694391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
27794391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
27894391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
27994391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
28094391a14SAngeloGioacchino Del Regno };
28194391a14SAngeloGioacchino Del Regno 
282c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
283c162352eSKonrad Dybcio 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
284c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
285c162352eSKonrad Dybcio 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
286c162352eSKonrad Dybcio 	.ubwc_version = DPU_HW_UBWC_VER_20,
287c162352eSKonrad Dybcio 	.has_dim_layer = true,
288c162352eSKonrad Dybcio 	.has_idle_pc = true,
289c162352eSKonrad Dybcio 	.max_linewidth = 2160,
290c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
291c162352eSKonrad Dybcio };
292c162352eSKonrad Dybcio 
29325fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
29425fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
29525fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
29625fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
29725fdd593SJeykumar Sankaran 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
29825fdd593SJeykumar Sankaran 	.ubwc_version = DPU_HW_UBWC_VER_20,
29925fdd593SJeykumar Sankaran 	.has_src_split = true,
30025fdd593SJeykumar Sankaran 	.has_dim_layer = true,
30125fdd593SJeykumar Sankaran 	.has_idle_pc = true,
30242a558b7SKalyan Thota 	.has_3d_merge = true,
3037e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3047e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3057e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3067e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
30725fdd593SJeykumar Sankaran };
30825fdd593SJeykumar Sankaran 
3097bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3107bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3117bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3127bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3137bdc0c4bSKalyan Thota 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
3147bdc0c4bSKalyan Thota 	.ubwc_version = DPU_HW_UBWC_VER_20,
3157bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3167bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3177e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3187e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3197bdc0c4bSKalyan Thota };
3207bdc0c4bSKalyan Thota 
321386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
322386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
323386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
324386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
325386fced3SJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
326386fced3SJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_30,
327386fced3SJonathan Marek 	.has_src_split = true,
328386fced3SJonathan Marek 	.has_dim_layer = true,
329386fced3SJonathan Marek 	.has_idle_pc = true,
330386fced3SJonathan Marek 	.has_3d_merge = true,
331386fced3SJonathan Marek 	.max_linewidth = 4096,
332386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
333386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
334386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
335386fced3SJonathan Marek };
336386fced3SJonathan Marek 
337f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
338f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
339f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
340f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
341f3af2d6eSRob Clark 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
342f3af2d6eSRob Clark 	.ubwc_version = DPU_HW_UBWC_VER_30,
343f3af2d6eSRob Clark 	.has_src_split = true,
344f3af2d6eSRob Clark 	.has_dim_layer = true,
345f3af2d6eSRob Clark 	.has_idle_pc = true,
346f3af2d6eSRob Clark 	.has_3d_merge = true,
347f3af2d6eSRob Clark 	.max_linewidth = 4096,
348f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
349f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
350f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
351f3af2d6eSRob Clark };
352f3af2d6eSRob Clark 
353af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
354af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
355af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
356d21fc5dfSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
357af776a3eSJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
358af776a3eSJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_40,
359af776a3eSJonathan Marek 	.has_src_split = true,
360af776a3eSJonathan Marek 	.has_dim_layer = true,
361af776a3eSJonathan Marek 	.has_idle_pc = true,
362af776a3eSJonathan Marek 	.has_3d_merge = true,
363af776a3eSJonathan Marek 	.max_linewidth = 4096,
364af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
365af776a3eSJonathan Marek };
366af776a3eSJonathan Marek 
367591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
368591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
369591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
370591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
371591e34a0SKrishna Manikandan 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
372591e34a0SKrishna Manikandan 	.ubwc_version = DPU_HW_UBWC_VER_30,
373591e34a0SKrishna Manikandan 	.has_dim_layer = true,
374591e34a0SKrishna Manikandan 	.has_idle_pc = true,
375591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
376591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
377591e34a0SKrishna Manikandan };
378591e34a0SKrishna Manikandan 
37994391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
38094391a14SAngeloGioacchino Del Regno 	{
38194391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
38294391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
38394391a14SAngeloGioacchino Del Regno 	.features = 0,
38494391a14SAngeloGioacchino Del Regno 	.highest_bank_bit = 0x2,
38594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
38694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
38794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
38894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
38994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
39094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
39194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
39294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
39394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
39494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
39594391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
39694391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
39794391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
39894391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
39994391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
40094391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
40194391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
40294391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
40394391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
40494391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
40594391a14SAngeloGioacchino Del Regno 	},
40694391a14SAngeloGioacchino Del Regno };
40794391a14SAngeloGioacchino Del Regno 
408abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
40925fdd593SJeykumar Sankaran 	{
41025fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
41125fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
41203490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
41325fdd593SJeykumar Sankaran 	.highest_bank_bit = 0x2,
41425fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
41525fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
41625fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
41725fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
41825fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
41925fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
42025fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
42125fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
42225fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
42325fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
42425fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
42525fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
42625fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
42725fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
42825fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
42925fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
43025fdd593SJeykumar Sankaran 	},
43125fdd593SJeykumar Sankaran };
43225fdd593SJeykumar Sankaran 
4337bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
4347bdc0c4bSKalyan Thota 	{
4357bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
4367bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
4377bdc0c4bSKalyan Thota 	.features = 0,
4387bdc0c4bSKalyan Thota 	.highest_bank_bit = 0x3,
4397bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
4407bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
4417bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
4427bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
4437bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
4447b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
4457b149f2bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
4467b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
4477bdc0c4bSKalyan Thota 	},
4487bdc0c4bSKalyan Thota };
4497bdc0c4bSKalyan Thota 
450f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
451f3af2d6eSRob Clark 	{
452f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
453f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
454f3af2d6eSRob Clark 	.features = 0,
455f3af2d6eSRob Clark 	.highest_bank_bit = 0x3,
456f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
457f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
458f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
459f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
460f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
461f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
462f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
463f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
464f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
465f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
466f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
467f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
468f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
469f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
470f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
471f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
472f3af2d6eSRob Clark 	},
473f3af2d6eSRob Clark };
474f3af2d6eSRob Clark 
475af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
476af776a3eSJonathan Marek 	{
477af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
478b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
479af776a3eSJonathan Marek 	.features = 0,
480af776a3eSJonathan Marek 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
481af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
482af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
483af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
484af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
485af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
486af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
487af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
488af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
489af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
490af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
491af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
492af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
493af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
494af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
495af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
496af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
497af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
498af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
49953324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
50053324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
501af776a3eSJonathan Marek 	},
502af776a3eSJonathan Marek };
503af776a3eSJonathan Marek 
504591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
505591e34a0SKrishna Manikandan 	{
506591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
507591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
508591e34a0SKrishna Manikandan 	.highest_bank_bit = 0x1,
509591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
510591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
511591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
512591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
513591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
514591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
515591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
516591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
517591e34a0SKrishna Manikandan 	},
518591e34a0SKrishna Manikandan };
519591e34a0SKrishna Manikandan 
5205334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
5215334087eSLoic Poulain 	{
5225334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
5235334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
5245334087eSLoic Poulain 	.features = 0,
5255334087eSLoic Poulain 	.highest_bank_bit = 0x2,
5265334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5275334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
5285334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5295334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
5305334087eSLoic Poulain 	},
5315334087eSLoic Poulain };
5325334087eSLoic Poulain 
53325fdd593SJeykumar Sankaran /*************************************************************
53425fdd593SJeykumar Sankaran  * CTL sub blocks config
53525fdd593SJeykumar Sankaran  *************************************************************/
53694391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
53794391a14SAngeloGioacchino Del Regno 	{
53894391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
53994391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
54094391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
54194391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
54294391a14SAngeloGioacchino Del Regno 	},
54394391a14SAngeloGioacchino Del Regno 	{
54494391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
54594391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
54694391a14SAngeloGioacchino Del Regno 	.features = 0,
54794391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
54894391a14SAngeloGioacchino Del Regno 	},
54994391a14SAngeloGioacchino Del Regno 	{
55094391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
55194391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
55294391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
55394391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
55494391a14SAngeloGioacchino Del Regno 	},
55594391a14SAngeloGioacchino Del Regno 	{
55694391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
55794391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
55894391a14SAngeloGioacchino Del Regno 	.features = 0,
55994391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
56094391a14SAngeloGioacchino Del Regno 	},
56194391a14SAngeloGioacchino Del Regno 	{
56294391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
56394391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
56494391a14SAngeloGioacchino Del Regno 	.features = 0,
56594391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
56694391a14SAngeloGioacchino Del Regno 	},
56794391a14SAngeloGioacchino Del Regno };
56894391a14SAngeloGioacchino Del Regno 
569abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
57025fdd593SJeykumar Sankaran 	{
57125fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
57225fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
573667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
574667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
57525fdd593SJeykumar Sankaran 	},
57625fdd593SJeykumar Sankaran 	{
57725fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
57825fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
579667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
580667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
58125fdd593SJeykumar Sankaran 	},
58225fdd593SJeykumar Sankaran 	{
58325fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
58425fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
585667e9985SDmitry Baryshkov 	.features = 0,
586667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
58725fdd593SJeykumar Sankaran 	},
58825fdd593SJeykumar Sankaran 	{
58925fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
59025fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
591667e9985SDmitry Baryshkov 	.features = 0,
592667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
59325fdd593SJeykumar Sankaran 	},
59425fdd593SJeykumar Sankaran 	{
59525fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
59625fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
597667e9985SDmitry Baryshkov 	.features = 0,
598667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
59925fdd593SJeykumar Sankaran 	},
60025fdd593SJeykumar Sankaran };
60125fdd593SJeykumar Sankaran 
6027bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
6037bdc0c4bSKalyan Thota 	{
6047bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
6057bdc0c4bSKalyan Thota 	.base = 0x1000, .len = 0xE4,
606667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
607667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
6087bdc0c4bSKalyan Thota 	},
6097bdc0c4bSKalyan Thota 	{
6107bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
6117bdc0c4bSKalyan Thota 	.base = 0x1200, .len = 0xE4,
612667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
613667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
6147bdc0c4bSKalyan Thota 	},
6157bdc0c4bSKalyan Thota 	{
6167bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
6177bdc0c4bSKalyan Thota 	.base = 0x1400, .len = 0xE4,
618667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
619667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
6207bdc0c4bSKalyan Thota 	},
6217bdc0c4bSKalyan Thota };
6227bdc0c4bSKalyan Thota 
623386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
624386fced3SJonathan Marek 	{
625386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
626386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
627667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
628667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
629386fced3SJonathan Marek 	},
630386fced3SJonathan Marek 	{
631386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
632386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
633667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
634667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
635386fced3SJonathan Marek 	},
636386fced3SJonathan Marek 	{
637386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
638386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
639667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
640667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
641386fced3SJonathan Marek 	},
642386fced3SJonathan Marek 	{
643386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
644386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
645667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
646667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
647386fced3SJonathan Marek 	},
648386fced3SJonathan Marek 	{
649386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
650386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
651667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
652667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
653386fced3SJonathan Marek 	},
654386fced3SJonathan Marek 	{
655386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
656386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
657667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
658667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
659386fced3SJonathan Marek 	},
660386fced3SJonathan Marek };
661386fced3SJonathan Marek 
662591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
663591e34a0SKrishna Manikandan 	{
664591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
665591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
666667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
667667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
668591e34a0SKrishna Manikandan 	},
669591e34a0SKrishna Manikandan 	{
670591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
671591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
672667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
673667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
674591e34a0SKrishna Manikandan 	},
675591e34a0SKrishna Manikandan 	{
676591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
677591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
678667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
679667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
680591e34a0SKrishna Manikandan 	},
681591e34a0SKrishna Manikandan 	{
682591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
683591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
684667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
685667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
686591e34a0SKrishna Manikandan 	},
687591e34a0SKrishna Manikandan };
688591e34a0SKrishna Manikandan 
6895334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
6905334087eSLoic Poulain 	{
6915334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
6925334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
6935334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
6945334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
6955334087eSLoic Poulain 	},
6965334087eSLoic Poulain };
6975334087eSLoic Poulain 
69825fdd593SJeykumar Sankaran /*************************************************************
69925fdd593SJeykumar Sankaran  * SSPP sub blocks config
70025fdd593SJeykumar Sankaran  *************************************************************/
70125fdd593SJeykumar Sankaran 
70225fdd593SJeykumar Sankaran /* SSPP common configuration */
703b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
70425fdd593SJeykumar Sankaran 	{ \
70525fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
70625fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
70725fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
70825fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
70925fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
71025fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
711b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
71225fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
71325fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
71425fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
71525fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
71625fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
717e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
71825fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
719e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
720dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
721dabfdd89SVinod Polimera 	}
722dabfdd89SVinod Polimera 
723dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
724dabfdd89SVinod Polimera 	{ \
725dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
726dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
727dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
728dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
729dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
730dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
731dabfdd89SVinod Polimera 		.id = qseed_ver, \
732dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
733dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
734dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
735dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
736dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
737dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
738dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
739dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
740dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
74125fdd593SJeykumar Sankaran 	}
74225fdd593SJeykumar Sankaran 
74325fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
74425fdd593SJeykumar Sankaran 	{ \
74525fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
74625fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
74725fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
74825fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
74925fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
75025fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
751e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
75225fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
753e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
75425fdd593SJeykumar Sankaran 	}
75525fdd593SJeykumar Sankaran 
75694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
75794391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
75894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
75994391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
76094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
76194391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
76294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
76394391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
76494391a14SAngeloGioacchino Del Regno 
765dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
766dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
767dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
768dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
769dabfdd89SVinod Polimera };
770dabfdd89SVinod Polimera 
771b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
772b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
773b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
774b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
775b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
776b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
777b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
778b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
77925fdd593SJeykumar Sankaran 
78025fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
78125fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
78225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
78325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
78425fdd593SJeykumar Sankaran 
78507ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \
78607ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
78725fdd593SJeykumar Sankaran 	{ \
78825fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
78925fdd593SJeykumar Sankaran 	.base = _base, .len = 0x1c8, \
79007ca1fc0SSravanthi Kollukuduru 	.features = _features, \
79125fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
79225fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
79307ca1fc0SSravanthi Kollukuduru 	.type = _type, \
79425fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
79525fdd593SJeykumar Sankaran 	}
79625fdd593SJeykumar Sankaran 
79794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
79894391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK,
79994391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
80094391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK,
80194391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
80294391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK,
80394391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
80494391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK,
80594391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
80694391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_MSM8998_MASK,
80794391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
80894391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_MSM8998_MASK,
80994391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
81094391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_MSM8998_MASK,
81194391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
81294391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_MSM8998_MASK,
81394391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
81494391a14SAngeloGioacchino Del Regno };
81594391a14SAngeloGioacchino Del Regno 
816abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
81707ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
81807ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
81907ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
82007ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
82107ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK,
82207ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
82307ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK,
82407ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
82507ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
82607ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
82707ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
82807ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
82907ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
83007ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
83107ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
83207ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
83325fdd593SJeykumar Sankaran };
83425fdd593SJeykumar Sankaran 
835b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
836b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
837b75ab05aSShubhashree Dhar 
838dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
839dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
840dabfdd89SVinod Polimera 
8417bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
8427bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
843b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
8447bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
8457bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
8467b149f2bSKalyan Thota 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
8477b149f2bSKalyan Thota 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
8487bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
8497b149f2bSKalyan Thota 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
8507bdc0c4bSKalyan Thota };
8517bdc0c4bSKalyan Thota 
852d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
853d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
854d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
855d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
856d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
857d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
858d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
859d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
860d21fc5dfSDmitry Baryshkov 
861d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
862d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
863d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
864d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
865d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
866d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
867d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
868d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
869d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
870d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
871d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
872d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
873d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
874d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
875d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
876d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
877d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
878d21fc5dfSDmitry Baryshkov };
879d21fc5dfSDmitry Baryshkov 
880591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
881dabfdd89SVinod Polimera 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK,
882dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
883591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
884591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
885591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
886591e34a0SKrishna Manikandan 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
887591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
888591e34a0SKrishna Manikandan 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
889591e34a0SKrishna Manikandan };
890591e34a0SKrishna Manikandan 
8915334087eSLoic Poulain 
8925334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
8935334087eSLoic Poulain 	{ \
8945334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
8955334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
8965334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
8975334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
8985334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
8995334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
9005334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
9015334087eSLoic Poulain 	.virt_format_list = plane_formats, \
9025334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
9035334087eSLoic Poulain 	}
9045334087eSLoic Poulain 
9055334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
9065334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
9075334087eSLoic Poulain 
9085334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
9095334087eSLoic Poulain 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK,
9105334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
9115334087eSLoic Poulain 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
9125334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
9135334087eSLoic Poulain };
9145334087eSLoic Poulain 
91525fdd593SJeykumar Sankaran /*************************************************************
91625fdd593SJeykumar Sankaran  * MIXER sub blocks config
91725fdd593SJeykumar Sankaran  *************************************************************/
9187bdc0c4bSKalyan Thota 
919e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
92025fdd593SJeykumar Sankaran 	{ \
92125fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
92225fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
9237bdc0c4bSKalyan Thota 	.features = _fmask, \
9247bdc0c4bSKalyan Thota 	.sblk = _sblk, \
92525fdd593SJeykumar Sankaran 	.pingpong = _pp, \
926e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
927e47616dfSKalyan Thota 	.dspp = _dspp \
92825fdd593SJeykumar Sankaran 	}
92925fdd593SJeykumar Sankaran 
93094391a14SAngeloGioacchino Del Regno /* MSM8998 */
93194391a14SAngeloGioacchino Del Regno 
93294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
93394391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
93494391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
93594391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
93694391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
93794391a14SAngeloGioacchino Del Regno 		0x260, 0x290
93894391a14SAngeloGioacchino Del Regno 	},
93994391a14SAngeloGioacchino Del Regno };
94094391a14SAngeloGioacchino Del Regno 
94194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
9422d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
94394391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
9442d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
94594391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
9462d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
94794391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
9482d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
94994391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
9502d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
95194391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
9522d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
95394391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
95494391a14SAngeloGioacchino Del Regno };
95594391a14SAngeloGioacchino Del Regno 
95694391a14SAngeloGioacchino Del Regno /* SDM845 */
95794391a14SAngeloGioacchino Del Regno 
95894391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
95994391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
96094391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
96194391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
96294391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
96394391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
96494391a14SAngeloGioacchino Del Regno 	},
96594391a14SAngeloGioacchino Del Regno };
96694391a14SAngeloGioacchino Del Regno 
967abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
9687bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
969e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
9707bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
971e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
9727bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
973e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
9747bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
975e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
9767bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
977e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
9787bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
979e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
9807bdc0c4bSKalyan Thota };
9817bdc0c4bSKalyan Thota 
9827bdc0c4bSKalyan Thota /* SC7180 */
9837bdc0c4bSKalyan Thota 
9847bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
9857bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
9867bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
9877bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
9887bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
9897bdc0c4bSKalyan Thota 	},
9907bdc0c4bSKalyan Thota };
9917bdc0c4bSKalyan Thota 
9927bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
9937bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
994e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
9957bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SC7180_MASK,
996e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
99725fdd593SJeykumar Sankaran };
99825fdd593SJeykumar Sankaran 
999386fced3SJonathan Marek /* SM8150 */
1000386fced3SJonathan Marek 
1001386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1002386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
100305ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1004386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
100505ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1006386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1007386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1008386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1009386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1010386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1011386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1012386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1013386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1014386fced3SJonathan Marek };
1015386fced3SJonathan Marek 
1016591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
1017591e34a0SKrishna Manikandan 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
1018fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
1019591e34a0SKrishna Manikandan 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SC7180_MASK,
1020591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
1021591e34a0SKrishna Manikandan 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SC7180_MASK,
1022591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1023591e34a0SKrishna Manikandan };
1024591e34a0SKrishna Manikandan 
10255334087eSLoic Poulain /* QCM2290 */
10265334087eSLoic Poulain 
10275334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
10285334087eSLoic Poulain 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
10295334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
10305334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
10315334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
10325334087eSLoic Poulain 	},
10335334087eSLoic Poulain };
10345334087eSLoic Poulain 
10355334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
10365334087eSLoic Poulain 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
10375334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
10385334087eSLoic Poulain };
10395334087eSLoic Poulain 
104025fdd593SJeykumar Sankaran /*************************************************************
1041e47616dfSKalyan Thota  * DSPP sub blocks config
1042e47616dfSKalyan Thota  *************************************************************/
104394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
104494391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
104594391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
104694391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
104794391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
104894391a14SAngeloGioacchino Del Regno };
104994391a14SAngeloGioacchino Del Regno 
10504259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
10514259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
10524259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
10534259ff7aSKalyan Thota };
10544259ff7aSKalyan Thota 
105505ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
105605ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
105705ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
105805ae91d9SDmitry Baryshkov };
105905ae91d9SDmitry Baryshkov 
1060862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1061e47616dfSKalyan Thota 		{\
1062e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1063e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1064862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
106505ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1066e47616dfSKalyan Thota 		}
1067e47616dfSKalyan Thota 
106894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
106994391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
107094391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
107194391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
107294391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
107394391a14SAngeloGioacchino Del Regno };
107494391a14SAngeloGioacchino Del Regno 
1075e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1076862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1077862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
107805ae91d9SDmitry Baryshkov };
107905ae91d9SDmitry Baryshkov 
108005ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1081862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1082862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1083862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1084862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1085862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1086862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1087862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1088862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1089e47616dfSKalyan Thota };
1090386fced3SJonathan Marek 
10915334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
10925334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
10935334087eSLoic Poulain 		 &sm8150_dspp_sblk),
10945334087eSLoic Poulain };
10955334087eSLoic Poulain 
1096e47616dfSKalyan Thota /*************************************************************
109725fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
109825fdd593SJeykumar Sankaran  *************************************************************/
109925fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
110025fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
110125fdd593SJeykumar Sankaran 		.version = 0x1},
110225fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
110325fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
110425fdd593SJeykumar Sankaran };
110525fdd593SJeykumar Sankaran 
110625fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
110725fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
110825fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
110925fdd593SJeykumar Sankaran };
111025fdd593SJeykumar Sankaran 
1111591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1112591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1113591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1114591e34a0SKrishna Manikandan };
1115591e34a0SKrishna Manikandan 
1116667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
111725fdd593SJeykumar Sankaran 	{\
111825fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
111925fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
112025fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
11214369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1122667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1123667e9985SDmitry Baryshkov 	.intr_done = _done, \
1124667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
112525fdd593SJeykumar Sankaran 	}
1126667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
112725fdd593SJeykumar Sankaran 	{\
112825fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
112925fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
113025fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_MASK, \
11314369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1132667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1133667e9985SDmitry Baryshkov 	.intr_done = _done, \
1134667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
113525fdd593SJeykumar Sankaran 	}
113625fdd593SJeykumar Sankaran 
1137abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1138667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1139667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1140667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1141667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1142667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1143667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1144667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1145667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1146667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1147667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1148667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1149667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
115025fdd593SJeykumar Sankaran };
115125fdd593SJeykumar Sankaran 
11527bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = {
1153667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1154667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
11557bdc0c4bSKalyan Thota };
11567bdc0c4bSKalyan Thota 
1157386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1158667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1159667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1160667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1161667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1162667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1163667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1164667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1165667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1166667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1167667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1168667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1169667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1170667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1171667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1172667e9985SDmitry Baryshkov 			-1),
1173667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
11743431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1175667e9985SDmitry Baryshkov 			-1),
11764369c93cSDmitry Baryshkov };
11774369c93cSDmitry Baryshkov 
11785334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = {
11795334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
11805334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
11815334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
11825334087eSLoic Poulain };
11835334087eSLoic Poulain 
11844369c93cSDmitry Baryshkov /*************************************************************
11854369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
11864369c93cSDmitry Baryshkov  *************************************************************/
11874369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
11884369c93cSDmitry Baryshkov 	{\
11894369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
11904369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
11914369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
11924369c93cSDmitry Baryshkov 	.sblk = NULL \
11934369c93cSDmitry Baryshkov 	}
11944369c93cSDmitry Baryshkov 
11954369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
11964369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
11974369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
11984369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1199386fced3SJonathan Marek };
1200386fced3SJonathan Marek 
1201591e34a0SKrishna Manikandan static const struct dpu_pingpong_cfg sc7280_pp[] = {
1202667e9985SDmitry Baryshkov 	PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1),
1203667e9985SDmitry Baryshkov 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
1204667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
1205667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
1206591e34a0SKrishna Manikandan };
12077c5ab05eSVinod Koul 
12087c5ab05eSVinod Koul /*************************************************************
12097c5ab05eSVinod Koul  * DSC sub blocks config
12107c5ab05eSVinod Koul  *************************************************************/
12117c5ab05eSVinod Koul #define DSC_BLK(_name, _id, _base) \
12127c5ab05eSVinod Koul 	{\
12137c5ab05eSVinod Koul 	.name = _name, .id = _id, \
12147c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
12157c5ab05eSVinod Koul 	.features = 0, \
12167c5ab05eSVinod Koul 	}
12177c5ab05eSVinod Koul 
12187c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = {
12197c5ab05eSVinod Koul 	DSC_BLK("dsc_0", DSC_0, 0x80000),
12207c5ab05eSVinod Koul 	DSC_BLK("dsc_1", DSC_1, 0x80400),
12217c5ab05eSVinod Koul 	DSC_BLK("dsc_2", DSC_2, 0x80800),
12227c5ab05eSVinod Koul 	DSC_BLK("dsc_3", DSC_3, 0x80c00),
12237c5ab05eSVinod Koul };
12247c5ab05eSVinod Koul 
122525fdd593SJeykumar Sankaran /*************************************************************
122625fdd593SJeykumar Sankaran  * INTF sub blocks config
122725fdd593SJeykumar Sankaran  *************************************************************/
1228667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
122925fdd593SJeykumar Sankaran 	{\
123025fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
123125fdd593SJeykumar Sankaran 	.base = _base, .len = 0x280, \
1232cace3ac4SJonathan Marek 	.features = _features, \
123325fdd593SJeykumar Sankaran 	.type = _type, \
123425fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1235667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1236667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1237667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
123825fdd593SJeykumar Sankaran 	}
123925fdd593SJeykumar Sankaran 
124094391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
124194391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
124294391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
124394391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
124494391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
124594391a14SAngeloGioacchino Del Regno };
124694391a14SAngeloGioacchino Del Regno 
1247abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
1248667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1249667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1250667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1251667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
125225fdd593SJeykumar Sankaran };
125325fdd593SJeykumar Sankaran 
12547bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
1255bb3de286SBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1256667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
12577bdc0c4bSKalyan Thota };
12587bdc0c4bSKalyan Thota 
1259386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
1260667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1261667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1262667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1263667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1264386fced3SJonathan Marek };
1265386fced3SJonathan Marek 
1266591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
1267ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1268667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1269ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1270591e34a0SKrishna Manikandan };
1271591e34a0SKrishna Manikandan 
1272f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
1273f3af2d6eSRob Clark 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1274f3af2d6eSRob Clark 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1275f3af2d6eSRob Clark 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1276f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
1277f3af2d6eSRob Clark 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1278f3af2d6eSRob Clark 	INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
1279f3af2d6eSRob Clark 	INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1280f3af2d6eSRob Clark };
1281f3af2d6eSRob Clark 
12825334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
12835334087eSLoic Poulain 	INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0),
12845334087eSLoic Poulain 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
12855334087eSLoic Poulain };
12865334087eSLoic Poulain 
128725fdd593SJeykumar Sankaran /*************************************************************
128853324b99SAbhinav Kumar  * Writeback blocks config
128953324b99SAbhinav Kumar  *************************************************************/
129053324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1291a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
129253324b99SAbhinav Kumar 	{ \
129353324b99SAbhinav Kumar 	.name = _name, .id = _id, \
129453324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
129553324b99SAbhinav Kumar 	.features = _features, \
129653324b99SAbhinav Kumar 	.format_list = wb2_formats, \
129753324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
129853324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
129953324b99SAbhinav Kumar 	.xin_id = __xin_id, \
130053324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
1301a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
130253324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
130353324b99SAbhinav Kumar 	}
130453324b99SAbhinav Kumar 
130553324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
130653324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
1307a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
130853324b99SAbhinav Kumar };
130953324b99SAbhinav Kumar 
131053324b99SAbhinav Kumar /*************************************************************
131125fdd593SJeykumar Sankaran  * VBIF sub blocks config
131225fdd593SJeykumar Sankaran  *************************************************************/
131325fdd593SJeykumar Sankaran /* VBIF QOS remap */
131494391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
131594391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
1316abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
1317abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
131825fdd593SJeykumar Sankaran 
131994391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
132094391a14SAngeloGioacchino Del Regno 	{
132194391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
132294391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
132394391a14SAngeloGioacchino Del Regno 	},
132494391a14SAngeloGioacchino Del Regno 	{
132594391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
132694391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
132794391a14SAngeloGioacchino Del Regno 	},
132894391a14SAngeloGioacchino Del Regno 	{
132994391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
133094391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
133194391a14SAngeloGioacchino Del Regno 	},
133294391a14SAngeloGioacchino Del Regno };
133394391a14SAngeloGioacchino Del Regno 
133494391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
133594391a14SAngeloGioacchino Del Regno 	{
1336*606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
133794391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
133894391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
133994391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
134094391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
134194391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
1342c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
134394391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
134494391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
134594391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
134694391a14SAngeloGioacchino Del Regno 		},
134794391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
134894391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
134994391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
135094391a14SAngeloGioacchino Del Regno 		},
135194391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
135294391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
135394391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
135494391a14SAngeloGioacchino Del Regno 		},
135594391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
135694391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
135794391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
135894391a14SAngeloGioacchino Del Regno 		},
135994391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
136094391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
136194391a14SAngeloGioacchino Del Regno 	},
136294391a14SAngeloGioacchino Del Regno };
136394391a14SAngeloGioacchino Del Regno 
1364abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
136525fdd593SJeykumar Sankaran 	{
1366*606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
136725fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
136825fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
136925fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
1370c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
137125fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
137225fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
137325fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
137425fdd593SJeykumar Sankaran 		},
137525fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
137625fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
137725fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
137825fdd593SJeykumar Sankaran 		},
137925fdd593SJeykumar Sankaran 	.memtype_count = 14,
138025fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
138125fdd593SJeykumar Sankaran 	},
138225fdd593SJeykumar Sankaran };
138325fdd593SJeykumar Sankaran 
1384abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
138525fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
138625fdd593SJeykumar Sankaran };
138725fdd593SJeykumar Sankaran 
1388386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
1389386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
1390386fced3SJonathan Marek };
1391386fced3SJonathan Marek 
1392af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
1393af776a3eSJonathan Marek 	.base = 0x0,
1394af776a3eSJonathan Marek 	.version = 0x00010002,
1395af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
1396af776a3eSJonathan Marek 	.xin_id = 7,
1397af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
1398af776a3eSJonathan Marek };
1399af776a3eSJonathan Marek 
140025fdd593SJeykumar Sankaran /*************************************************************
140125fdd593SJeykumar Sankaran  * PERF data config
140225fdd593SJeykumar Sankaran  *************************************************************/
140325fdd593SJeykumar Sankaran 
140425fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
140594391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
140694391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
140794391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
140894391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
140994391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
141094391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
141194391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
141294391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
141394391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
141494391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
141594391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
141694391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
141794391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
141894391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
141994391a14SAngeloGioacchino Del Regno };
142094391a14SAngeloGioacchino Del Regno 
1421abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
142225fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
142325fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
142425fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
142525fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
142625fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
142725fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
142825fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
142925fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
143025fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
143125fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
143225fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
143325fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
143425fdd593SJeykumar Sankaran };
143525fdd593SJeykumar Sankaran 
143694391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
143794391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
143894391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
143994391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
144094391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
144194391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
144294391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
144394391a14SAngeloGioacchino Del Regno };
144494391a14SAngeloGioacchino Del Regno 
14457bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
14467bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
14477bdc0c4bSKalyan Thota };
14487bdc0c4bSKalyan Thota 
1449386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
1450386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
1451386fced3SJonathan Marek };
1452386fced3SJonathan Marek 
1453f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
1454f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
1455f3af2d6eSRob Clark };
1456f3af2d6eSRob Clark 
14575334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
14585334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
14595334087eSLoic Poulain };
14605334087eSLoic Poulain 
1461abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
146225fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
146325fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
146425fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
146525fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
146625fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
146725fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
146825fdd593SJeykumar Sankaran };
146925fdd593SJeykumar Sankaran 
14707bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
14717bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
14727bdc0c4bSKalyan Thota };
14737bdc0c4bSKalyan Thota 
1474f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
1475f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
1476f3af2d6eSRob Clark };
1477f3af2d6eSRob Clark 
147894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
147994391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
148094391a14SAngeloGioacchino Del Regno };
148194391a14SAngeloGioacchino Del Regno 
1482abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
148325fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
148425fdd593SJeykumar Sankaran };
148525fdd593SJeykumar Sankaran 
14867bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
14877bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
14887bdc0c4bSKalyan Thota };
14897bdc0c4bSKalyan Thota 
149094391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
149194391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
149294391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
149394391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
149494391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
149594391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
149694391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
149794391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
149894391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
149994391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
150094391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
150194391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
150294391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
150394391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
150494391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
150594391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
150694391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
150794391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
150894391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
150994391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
151094391a14SAngeloGioacchino Del Regno 		},
151194391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
151294391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
151394391a14SAngeloGioacchino Del Regno 		},
151494391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
151594391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
151694391a14SAngeloGioacchino Del Regno 		},
151794391a14SAngeloGioacchino Del Regno 	},
151894391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
151994391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
152094391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
152194391a14SAngeloGioacchino Del Regno 	},
152294391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
152394391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
152494391a14SAngeloGioacchino Del Regno };
152594391a14SAngeloGioacchino Del Regno 
1526abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
152725fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
152825fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
152925fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
153025fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
153125fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
153225fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
153325fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
153425fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
153525fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
153625fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
153725fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
153825fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
153925fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
154025fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
154125fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
15425bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
154325fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
154425fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
154525fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
154625fdd593SJeykumar Sankaran 		},
154725fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
154825fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
154925fdd593SJeykumar Sankaran 		},
155025fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
155125fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
155225fdd593SJeykumar Sankaran 		},
155325fdd593SJeykumar Sankaran 	},
155425fdd593SJeykumar Sankaran 	.cdp_cfg = {
155525fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
155625fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
155725fdd593SJeykumar Sankaran 	},
15584f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
15594f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
156025fdd593SJeykumar Sankaran };
156125fdd593SJeykumar Sankaran 
15627bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
156371dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
156471dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
15657bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
15667bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
1567c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
1568c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
15697bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
15705bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
15717bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
15727bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
15737bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
15747bdc0c4bSKalyan Thota 		},
15757bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
15767bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
15777bdc0c4bSKalyan Thota 		},
15787bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
15797bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
15807bdc0c4bSKalyan Thota 		},
15817bdc0c4bSKalyan Thota 	},
15827bdc0c4bSKalyan Thota 	.cdp_cfg = {
15837bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
15847bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
15857bdc0c4bSKalyan Thota 	},
1586c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
1587c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
15887bdc0c4bSKalyan Thota };
15897bdc0c4bSKalyan Thota 
1590386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
1591386fced3SJonathan Marek 	.max_bw_low = 12800000,
1592386fced3SJonathan Marek 	.max_bw_high = 12800000,
1593386fced3SJonathan Marek 	.min_core_ib = 2400000,
1594386fced3SJonathan Marek 	.min_llcc_ib = 800000,
1595386fced3SJonathan Marek 	.min_dram_ib = 800000,
15964f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
1597386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
15985bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
1599386fced3SJonathan Marek 	.qos_lut_tbl = {
1600386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
1601386fced3SJonathan Marek 		.entries = sm8150_qos_linear
1602386fced3SJonathan Marek 		},
1603386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1604386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
1605386fced3SJonathan Marek 		},
1606386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1607386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
1608386fced3SJonathan Marek 		},
1609386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
1610386fced3SJonathan Marek 	},
1611386fced3SJonathan Marek 	.cdp_cfg = {
1612386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
1613386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
1614386fced3SJonathan Marek 	},
16154f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
16164f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
1617386fced3SJonathan Marek };
1618386fced3SJonathan Marek 
1619f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
1620f3af2d6eSRob Clark 	.max_bw_low = 9600000,
1621f3af2d6eSRob Clark 	.max_bw_high = 9600000,
1622f3af2d6eSRob Clark 	.min_core_ib = 2400000,
1623f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
1624f3af2d6eSRob Clark 	.min_dram_ib = 800000,
1625f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
1626f3af2d6eSRob Clark 	.qos_lut_tbl = {
1627f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
1628f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
1629f3af2d6eSRob Clark 		},
1630f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
1631f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
1632f3af2d6eSRob Clark 		},
1633f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1634f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
1635f3af2d6eSRob Clark 		},
1636f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
1637f3af2d6eSRob Clark 	},
1638f3af2d6eSRob Clark 	.cdp_cfg = {
1639f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
1640f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
1641f3af2d6eSRob Clark 	},
1642f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
1643f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
1644f3af2d6eSRob Clark };
1645f3af2d6eSRob Clark 
1646af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
1647af776a3eSJonathan Marek 	.max_bw_low = 13700000,
1648af776a3eSJonathan Marek 	.max_bw_high = 16600000,
1649af776a3eSJonathan Marek 	.min_core_ib = 4800000,
1650af776a3eSJonathan Marek 	.min_llcc_ib = 0,
1651af776a3eSJonathan Marek 	.min_dram_ib = 800000,
16524f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
1653af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
16545bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
1655af776a3eSJonathan Marek 	.qos_lut_tbl = {
1656af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
1657af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
1658af776a3eSJonathan Marek 		},
1659af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1660af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
1661af776a3eSJonathan Marek 		},
1662af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1663af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
1664af776a3eSJonathan Marek 		},
1665af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
1666af776a3eSJonathan Marek 	},
1667af776a3eSJonathan Marek 	.cdp_cfg = {
1668af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
1669af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
1670af776a3eSJonathan Marek 	},
16714f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
16724f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
1673af776a3eSJonathan Marek };
1674af776a3eSJonathan Marek 
1675591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
1676591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
1677591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
1678591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
1679591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
1680591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
1681591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
1682591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
16835bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
1684591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
1685591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1686591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
1687591e34a0SKrishna Manikandan 		},
1688591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1689591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
1690591e34a0SKrishna Manikandan 		},
1691591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1692591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
1693591e34a0SKrishna Manikandan 		},
1694591e34a0SKrishna Manikandan 	},
1695591e34a0SKrishna Manikandan 	.cdp_cfg = {
1696591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
1697591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
1698591e34a0SKrishna Manikandan 	},
1699591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
1700591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
1701591e34a0SKrishna Manikandan };
1702591e34a0SKrishna Manikandan 
17035334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
17045334087eSLoic Poulain 	.max_bw_low = 2700000,
17055334087eSLoic Poulain 	.max_bw_high = 2700000,
17065334087eSLoic Poulain 	.min_core_ib = 1300000,
17075334087eSLoic Poulain 	.min_llcc_ib = 0,
17085334087eSLoic Poulain 	.min_dram_ib = 1600000,
17095334087eSLoic Poulain 	.min_prefill_lines = 24,
17105334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
17115334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
17125334087eSLoic Poulain 	.qos_lut_tbl = {
17135334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
17145334087eSLoic Poulain 		.entries = qcm2290_qos_linear
17155334087eSLoic Poulain 		},
17165334087eSLoic Poulain 	},
17175334087eSLoic Poulain 	.cdp_cfg = {
17185334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
17195334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
17205334087eSLoic Poulain 	},
17215334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
17225334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
17235334087eSLoic Poulain };
172425fdd593SJeykumar Sankaran /*************************************************************
1725de7d480fSDmitry Baryshkov  * Hardware catalog
172625fdd593SJeykumar Sankaran  *************************************************************/
172725fdd593SJeykumar Sankaran 
1728de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
172994391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
173094391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
173194391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
173294391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
173394391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
173494391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
173594391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
173694391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
173794391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
17386452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
17396452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
174094391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
174194391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
174294391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
174394391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
174494391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
174594391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
174694391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
1747477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
174894391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
174994391a14SAngeloGioacchino Del Regno };
175094391a14SAngeloGioacchino Del Regno 
1751de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
175225fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
175325fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
175425fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
175525fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
175625fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
175725fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
175825fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
175925fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
176025fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
176125fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
176225fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
17637c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
17647c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
176525fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
176625fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
176725fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
176825fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
176925fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
1770481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
1771477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
1772597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
177325fdd593SJeykumar Sankaran };
177425fdd593SJeykumar Sankaran 
1775de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
17767bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
17777bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
17787bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
17797bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
17807bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
17817bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
17827bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
17837bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
17847bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
1785e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
1786e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
17877bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
17887bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
17897bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
17907bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
179151e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
179251e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
17937bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
17947bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
17957bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
1796481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
1797477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
1798597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
17997bdc0c4bSKalyan Thota };
18007bdc0c4bSKalyan Thota 
1801de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
1802386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
1803386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
1804386fced3SJonathan Marek 	.mdp = sdm845_mdp,
1805386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
1806386fced3SJonathan Marek 	.ctl = sm8150_ctl,
1807386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
1808386fced3SJonathan Marek 	.sspp = sdm845_sspp,
1809386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
1810386fced3SJonathan Marek 	.mixer = sm8150_lm,
181105ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
181205ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
1813386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
1814386fced3SJonathan Marek 	.pingpong = sm8150_pp,
18154369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
18164369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
1817386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
1818386fced3SJonathan Marek 	.intf = sm8150_intf,
1819386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1820386fced3SJonathan Marek 	.vbif = sdm845_vbif,
1821386fced3SJonathan Marek 	.reg_dma_count = 1,
1822481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
1823477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
1824597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
1825386fced3SJonathan Marek };
1826386fced3SJonathan Marek 
1827de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
1828f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
1829f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
1830f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
1831f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
1832f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
1833f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
1834f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
1835f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
1836f3af2d6eSRob Clark 	.mixer = sm8150_lm,
1837f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
1838f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
1839f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
1840f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
1841f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
1842f3af2d6eSRob Clark 	.intf = sc8180x_intf,
1843f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1844f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
1845f3af2d6eSRob Clark 	.reg_dma_count = 1,
1846481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
1847477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
1848f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
1849f3af2d6eSRob Clark };
1850f3af2d6eSRob Clark 
1851de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
1852af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
1853af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
1854af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
1855af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
1856af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
1857d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
1858d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
1859af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
1860af776a3eSJonathan Marek 	.mixer = sm8150_lm,
186105ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
186205ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
1863af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
1864af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
18654369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
18664369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
1867af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
1868af776a3eSJonathan Marek 	.intf = sm8150_intf,
1869af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1870af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
187153324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
187253324b99SAbhinav Kumar 	.wb = sm8250_wb,
1873af776a3eSJonathan Marek 	.reg_dma_count = 1,
1874481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
1875477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
1876597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
1877af776a3eSJonathan Marek };
1878af776a3eSJonathan Marek 
1879de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
1880591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
1881591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
1882591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
1883591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
1884591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
1885591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
1886591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
1887fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
1888fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
1889591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
1890591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
1891591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
1892591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
1893591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
1894591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
1895591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1896591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
1897477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
1898597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
1899591e34a0SKrishna Manikandan };
1900591e34a0SKrishna Manikandan 
1901de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
19025334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
19035334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
19045334087eSLoic Poulain 	.mdp = qcm2290_mdp,
19055334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
19065334087eSLoic Poulain 	.ctl = qcm2290_ctl,
19075334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
19085334087eSLoic Poulain 	.sspp = qcm2290_sspp,
19095334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
19105334087eSLoic Poulain 	.mixer = qcm2290_lm,
19115334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
19125334087eSLoic Poulain 	.dspp = qcm2290_dspp,
19135334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
19145334087eSLoic Poulain 	.pingpong = qcm2290_pp,
19155334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
19165334087eSLoic Poulain 	.intf = qcm2290_intf,
19175334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
19185334087eSLoic Poulain 	.vbif = sdm845_vbif,
19195334087eSLoic Poulain 	.reg_dma_count = 1,
1920481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
1921477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
19225334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
19235334087eSLoic Poulain };
19245334087eSLoic Poulain 
1925abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
1926de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
1927de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
1928de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
1929de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
1930de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
1931de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
1932de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
1933de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
1934de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
1935de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
1936de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
193725fdd593SJeykumar Sankaran };
193825fdd593SJeykumar Sankaran 
1939de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
194025fdd593SJeykumar Sankaran {
194125fdd593SJeykumar Sankaran 	int i;
194225fdd593SJeykumar Sankaran 	struct dpu_mdss_cfg *dpu_cfg;
194325fdd593SJeykumar Sankaran 
1944de7d480fSDmitry Baryshkov 	dpu_cfg = kzalloc(sizeof(*dpu_cfg), GFP_KERNEL);
194525fdd593SJeykumar Sankaran 	if (!dpu_cfg)
194625fdd593SJeykumar Sankaran 		return ERR_PTR(-ENOMEM);
194725fdd593SJeykumar Sankaran 
194825fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
1949de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
1950de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
195125fdd593SJeykumar Sankaran 	}
195225fdd593SJeykumar Sankaran 
195325fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
195432084967SDmitry Baryshkov 
195525fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
195625fdd593SJeykumar Sankaran }
195725fdd593SJeykumar Sankaran 
1958