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,
159da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
16009c7e370SLee Jones 	DRM_FORMAT_RGB888,
16109c7e370SLee Jones 	DRM_FORMAT_BGR888,
16209c7e370SLee Jones 	DRM_FORMAT_RGB565,
16309c7e370SLee Jones 	DRM_FORMAT_BGR565,
16409c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
16509c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
16609c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
16709c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
16809c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
16909c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
17009c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
17109c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
17209c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
17309c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
17409c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
17509c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
17609c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
17709c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
17809c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
17909c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
18009c7e370SLee Jones };
18109c7e370SLee Jones 
18209c7e370SLee Jones static const uint32_t plane_formats_yuv[] = {
18309c7e370SLee Jones 	DRM_FORMAT_ARGB8888,
18409c7e370SLee Jones 	DRM_FORMAT_ABGR8888,
18509c7e370SLee Jones 	DRM_FORMAT_RGBA8888,
18609c7e370SLee Jones 	DRM_FORMAT_BGRX8888,
18709c7e370SLee Jones 	DRM_FORMAT_BGRA8888,
188da7716a2SJessica Zhang 	DRM_FORMAT_XRGB2101010,
18909c7e370SLee Jones 	DRM_FORMAT_XRGB8888,
19009c7e370SLee Jones 	DRM_FORMAT_XBGR8888,
19109c7e370SLee Jones 	DRM_FORMAT_RGBX8888,
19209c7e370SLee Jones 	DRM_FORMAT_RGB888,
19309c7e370SLee Jones 	DRM_FORMAT_BGR888,
19409c7e370SLee Jones 	DRM_FORMAT_RGB565,
19509c7e370SLee Jones 	DRM_FORMAT_BGR565,
19609c7e370SLee Jones 	DRM_FORMAT_ARGB1555,
19709c7e370SLee Jones 	DRM_FORMAT_ABGR1555,
19809c7e370SLee Jones 	DRM_FORMAT_RGBA5551,
19909c7e370SLee Jones 	DRM_FORMAT_BGRA5551,
20009c7e370SLee Jones 	DRM_FORMAT_XRGB1555,
20109c7e370SLee Jones 	DRM_FORMAT_XBGR1555,
20209c7e370SLee Jones 	DRM_FORMAT_RGBX5551,
20309c7e370SLee Jones 	DRM_FORMAT_BGRX5551,
20409c7e370SLee Jones 	DRM_FORMAT_ARGB4444,
20509c7e370SLee Jones 	DRM_FORMAT_ABGR4444,
20609c7e370SLee Jones 	DRM_FORMAT_RGBA4444,
20709c7e370SLee Jones 	DRM_FORMAT_BGRA4444,
20809c7e370SLee Jones 	DRM_FORMAT_XRGB4444,
20909c7e370SLee Jones 	DRM_FORMAT_XBGR4444,
21009c7e370SLee Jones 	DRM_FORMAT_RGBX4444,
21109c7e370SLee Jones 	DRM_FORMAT_BGRX4444,
21209c7e370SLee Jones 
213*f07c9946SJessica Zhang 	DRM_FORMAT_P010,
21409c7e370SLee Jones 	DRM_FORMAT_NV12,
21509c7e370SLee Jones 	DRM_FORMAT_NV21,
21609c7e370SLee Jones 	DRM_FORMAT_NV16,
21709c7e370SLee Jones 	DRM_FORMAT_NV61,
21809c7e370SLee Jones 	DRM_FORMAT_VYUY,
21909c7e370SLee Jones 	DRM_FORMAT_UYVY,
22009c7e370SLee Jones 	DRM_FORMAT_YUYV,
22109c7e370SLee Jones 	DRM_FORMAT_YVYU,
22209c7e370SLee Jones 	DRM_FORMAT_YUV420,
22309c7e370SLee Jones 	DRM_FORMAT_YVU420,
22409c7e370SLee Jones };
22509c7e370SLee Jones 
226dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = {
227dabfdd89SVinod Polimera 	DRM_FORMAT_NV12,
228dabfdd89SVinod Polimera 	/* TODO add formats after validation */
229dabfdd89SVinod Polimera };
230dabfdd89SVinod Polimera 
23153324b99SAbhinav Kumar static const uint32_t wb2_formats[] = {
23253324b99SAbhinav Kumar 	DRM_FORMAT_RGB565,
23353324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
23453324b99SAbhinav Kumar 	DRM_FORMAT_RGB888,
23553324b99SAbhinav Kumar 	DRM_FORMAT_ARGB8888,
23653324b99SAbhinav Kumar 	DRM_FORMAT_RGBA8888,
23753324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
23853324b99SAbhinav Kumar 	DRM_FORMAT_XRGB8888,
23953324b99SAbhinav Kumar 	DRM_FORMAT_RGBX8888,
24053324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
24153324b99SAbhinav Kumar 	DRM_FORMAT_ARGB1555,
24253324b99SAbhinav Kumar 	DRM_FORMAT_RGBA5551,
24353324b99SAbhinav Kumar 	DRM_FORMAT_XRGB1555,
24453324b99SAbhinav Kumar 	DRM_FORMAT_RGBX5551,
24553324b99SAbhinav Kumar 	DRM_FORMAT_ARGB4444,
24653324b99SAbhinav Kumar 	DRM_FORMAT_RGBA4444,
24753324b99SAbhinav Kumar 	DRM_FORMAT_RGBX4444,
24853324b99SAbhinav Kumar 	DRM_FORMAT_XRGB4444,
24953324b99SAbhinav Kumar 	DRM_FORMAT_BGR565,
25053324b99SAbhinav Kumar 	DRM_FORMAT_BGR888,
25153324b99SAbhinav Kumar 	DRM_FORMAT_ABGR8888,
25253324b99SAbhinav Kumar 	DRM_FORMAT_BGRA8888,
25353324b99SAbhinav Kumar 	DRM_FORMAT_BGRX8888,
25453324b99SAbhinav Kumar 	DRM_FORMAT_XBGR8888,
25553324b99SAbhinav Kumar 	DRM_FORMAT_ABGR1555,
25653324b99SAbhinav Kumar 	DRM_FORMAT_BGRA5551,
25753324b99SAbhinav Kumar 	DRM_FORMAT_XBGR1555,
25853324b99SAbhinav Kumar 	DRM_FORMAT_BGRX5551,
25953324b99SAbhinav Kumar 	DRM_FORMAT_ABGR4444,
26053324b99SAbhinav Kumar 	DRM_FORMAT_BGRA4444,
26153324b99SAbhinav Kumar 	DRM_FORMAT_BGRX4444,
26253324b99SAbhinav Kumar 	DRM_FORMAT_XBGR4444,
26353324b99SAbhinav Kumar };
26453324b99SAbhinav Kumar 
26525fdd593SJeykumar Sankaran /*************************************************************
26625fdd593SJeykumar Sankaran  * DPU sub blocks config
26725fdd593SJeykumar Sankaran  *************************************************************/
26825fdd593SJeykumar Sankaran /* DPU top level caps */
26994391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = {
27094391a14SAngeloGioacchino Del Regno 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
27194391a14SAngeloGioacchino Del Regno 	.max_mixer_blendstages = 0x7,
27294391a14SAngeloGioacchino Del Regno 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
27394391a14SAngeloGioacchino Del Regno 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V1,
27494391a14SAngeloGioacchino Del Regno 	.ubwc_version = DPU_HW_UBWC_VER_10,
27594391a14SAngeloGioacchino Del Regno 	.has_src_split = true,
27694391a14SAngeloGioacchino Del Regno 	.has_dim_layer = true,
27794391a14SAngeloGioacchino Del Regno 	.has_idle_pc = true,
27894391a14SAngeloGioacchino Del Regno 	.has_3d_merge = true,
27994391a14SAngeloGioacchino Del Regno 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
28094391a14SAngeloGioacchino Del Regno 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
28194391a14SAngeloGioacchino Del Regno 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
28294391a14SAngeloGioacchino Del Regno 	.max_vdeci_exp = MAX_VERT_DECIMATION,
28394391a14SAngeloGioacchino Del Regno };
28494391a14SAngeloGioacchino Del Regno 
285c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = {
286c162352eSKonrad Dybcio 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
287c162352eSKonrad Dybcio 	.max_mixer_blendstages = 0x4,
288c162352eSKonrad Dybcio 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
289c162352eSKonrad Dybcio 	.ubwc_version = DPU_HW_UBWC_VER_20,
290c162352eSKonrad Dybcio 	.has_dim_layer = true,
291c162352eSKonrad Dybcio 	.has_idle_pc = true,
292c162352eSKonrad Dybcio 	.max_linewidth = 2160,
293c162352eSKonrad Dybcio 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
294c162352eSKonrad Dybcio };
295c162352eSKonrad Dybcio 
29625fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = {
29725fdd593SJeykumar Sankaran 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
29825fdd593SJeykumar Sankaran 	.max_mixer_blendstages = 0xb,
29925fdd593SJeykumar Sankaran 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
30025fdd593SJeykumar Sankaran 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
30125fdd593SJeykumar Sankaran 	.ubwc_version = DPU_HW_UBWC_VER_20,
30225fdd593SJeykumar Sankaran 	.has_src_split = true,
30325fdd593SJeykumar Sankaran 	.has_dim_layer = true,
30425fdd593SJeykumar Sankaran 	.has_idle_pc = true,
30542a558b7SKalyan Thota 	.has_3d_merge = true,
3067e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3077e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3087e9d4cddSJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
3097e9d4cddSJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
31025fdd593SJeykumar Sankaran };
31125fdd593SJeykumar Sankaran 
3127bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = {
3137bdc0c4bSKalyan Thota 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3147bdc0c4bSKalyan Thota 	.max_mixer_blendstages = 0x9,
3157bdc0c4bSKalyan Thota 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
3167bdc0c4bSKalyan Thota 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
3177bdc0c4bSKalyan Thota 	.ubwc_version = DPU_HW_UBWC_VER_20,
3187bdc0c4bSKalyan Thota 	.has_dim_layer = true,
3197bdc0c4bSKalyan Thota 	.has_idle_pc = true,
3207e9d4cddSJonathan Marek 	.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
3217e9d4cddSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
3227bdc0c4bSKalyan Thota };
3237bdc0c4bSKalyan Thota 
324386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = {
325386fced3SJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
326386fced3SJonathan Marek 	.max_mixer_blendstages = 0xb,
327386fced3SJonathan Marek 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
328386fced3SJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
329386fced3SJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_30,
330386fced3SJonathan Marek 	.has_src_split = true,
331386fced3SJonathan Marek 	.has_dim_layer = true,
332386fced3SJonathan Marek 	.has_idle_pc = true,
333386fced3SJonathan Marek 	.has_3d_merge = true,
334386fced3SJonathan Marek 	.max_linewidth = 4096,
335386fced3SJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
336386fced3SJonathan Marek 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
337386fced3SJonathan Marek 	.max_vdeci_exp = MAX_VERT_DECIMATION,
338386fced3SJonathan Marek };
339386fced3SJonathan Marek 
340f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = {
341f3af2d6eSRob Clark 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
342f3af2d6eSRob Clark 	.max_mixer_blendstages = 0xb,
343f3af2d6eSRob Clark 	.qseed_type = DPU_SSPP_SCALER_QSEED3,
344f3af2d6eSRob Clark 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
345f3af2d6eSRob Clark 	.ubwc_version = DPU_HW_UBWC_VER_30,
346f3af2d6eSRob Clark 	.has_src_split = true,
347f3af2d6eSRob Clark 	.has_dim_layer = true,
348f3af2d6eSRob Clark 	.has_idle_pc = true,
349f3af2d6eSRob Clark 	.has_3d_merge = true,
350f3af2d6eSRob Clark 	.max_linewidth = 4096,
351f3af2d6eSRob Clark 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
352f3af2d6eSRob Clark 	.max_hdeci_exp = MAX_HORZ_DECIMATION,
353f3af2d6eSRob Clark 	.max_vdeci_exp = MAX_VERT_DECIMATION,
354f3af2d6eSRob Clark };
355f3af2d6eSRob Clark 
356af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = {
357af776a3eSJonathan Marek 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
358af776a3eSJonathan Marek 	.max_mixer_blendstages = 0xb,
359d21fc5dfSDmitry Baryshkov 	.qseed_type = DPU_SSPP_SCALER_QSEED3LITE,
360af776a3eSJonathan Marek 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */
361af776a3eSJonathan Marek 	.ubwc_version = DPU_HW_UBWC_VER_40,
362af776a3eSJonathan Marek 	.has_src_split = true,
363af776a3eSJonathan Marek 	.has_dim_layer = true,
364af776a3eSJonathan Marek 	.has_idle_pc = true,
365af776a3eSJonathan Marek 	.has_3d_merge = true,
366af776a3eSJonathan Marek 	.max_linewidth = 4096,
367af776a3eSJonathan Marek 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
368af776a3eSJonathan Marek };
369af776a3eSJonathan Marek 
370591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = {
371591e34a0SKrishna Manikandan 	.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
372591e34a0SKrishna Manikandan 	.max_mixer_blendstages = 0x7,
373591e34a0SKrishna Manikandan 	.qseed_type = DPU_SSPP_SCALER_QSEED4,
374591e34a0SKrishna Manikandan 	.smart_dma_rev = DPU_SSPP_SMART_DMA_V2,
375591e34a0SKrishna Manikandan 	.ubwc_version = DPU_HW_UBWC_VER_30,
376591e34a0SKrishna Manikandan 	.has_dim_layer = true,
377591e34a0SKrishna Manikandan 	.has_idle_pc = true,
378591e34a0SKrishna Manikandan 	.max_linewidth = 2400,
379591e34a0SKrishna Manikandan 	.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
380591e34a0SKrishna Manikandan };
381591e34a0SKrishna Manikandan 
38294391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = {
38394391a14SAngeloGioacchino Del Regno 	{
38494391a14SAngeloGioacchino Del Regno 	.name = "top_0", .id = MDP_TOP,
38594391a14SAngeloGioacchino Del Regno 	.base = 0x0, .len = 0x458,
38694391a14SAngeloGioacchino Del Regno 	.features = 0,
38794391a14SAngeloGioacchino Del Regno 	.highest_bank_bit = 0x2,
38894391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
38994391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 0},
39094391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
39194391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 0},
39294391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
39394391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2BC, .bit_off = 0},
39494391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
39594391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 0},
39694391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
39794391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2AC, .bit_off = 8},
39894391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
39994391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2B4, .bit_off = 8},
40094391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA2] = {
40194391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 8},
40294391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_DMA3] = {
40394391a14SAngeloGioacchino Del Regno 			.reg_off = 0x2C4, .bit_off = 12},
40494391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
40594391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3A8, .bit_off = 15},
40694391a14SAngeloGioacchino Del Regno 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
40794391a14SAngeloGioacchino Del Regno 			.reg_off = 0x3B0, .bit_off = 15},
40894391a14SAngeloGioacchino Del Regno 	},
40994391a14SAngeloGioacchino Del Regno };
41094391a14SAngeloGioacchino Del Regno 
411abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = {
41225fdd593SJeykumar Sankaran 	{
41325fdd593SJeykumar Sankaran 	.name = "top_0", .id = MDP_TOP,
41425fdd593SJeykumar Sankaran 	.base = 0x0, .len = 0x45C,
41503490e11SKuogee Hsieh 	.features = BIT(DPU_MDP_AUDIO_SELECT),
41625fdd593SJeykumar Sankaran 	.highest_bank_bit = 0x2,
41725fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
41825fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 0},
41925fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
42025fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 0},
42125fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
42225fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 0},
42325fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
42425fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 0},
42525fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
42625fdd593SJeykumar Sankaran 			.reg_off = 0x2AC, .bit_off = 8},
42725fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
42825fdd593SJeykumar Sankaran 			.reg_off = 0x2B4, .bit_off = 8},
42925fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
43025fdd593SJeykumar Sankaran 			.reg_off = 0x2BC, .bit_off = 8},
43125fdd593SJeykumar Sankaran 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
43225fdd593SJeykumar Sankaran 			.reg_off = 0x2C4, .bit_off = 8},
43325fdd593SJeykumar Sankaran 	},
43425fdd593SJeykumar Sankaran };
43525fdd593SJeykumar Sankaran 
4367bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = {
4377bdc0c4bSKalyan Thota 	{
4387bdc0c4bSKalyan Thota 	.name = "top_0", .id = MDP_TOP,
4397bdc0c4bSKalyan Thota 	.base = 0x0, .len = 0x494,
4407bdc0c4bSKalyan Thota 	.features = 0,
4417bdc0c4bSKalyan Thota 	.highest_bank_bit = 0x3,
4427bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
4437bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 0},
4447bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
4457bdc0c4bSKalyan Thota 		.reg_off = 0x2AC, .bit_off = 8},
4467bdc0c4bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
4477b149f2bSKalyan Thota 		.reg_off = 0x2B4, .bit_off = 8},
4487b149f2bSKalyan Thota 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
4497b149f2bSKalyan Thota 		.reg_off = 0x2C4, .bit_off = 8},
4507bdc0c4bSKalyan Thota 	},
4517bdc0c4bSKalyan Thota };
4527bdc0c4bSKalyan Thota 
453f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = {
454f3af2d6eSRob Clark 	{
455f3af2d6eSRob Clark 	.name = "top_0", .id = MDP_TOP,
456f3af2d6eSRob Clark 	.base = 0x0, .len = 0x45C,
457f3af2d6eSRob Clark 	.features = 0,
458f3af2d6eSRob Clark 	.highest_bank_bit = 0x3,
459f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
460f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 0},
461f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
462f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 0},
463f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
464f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 0},
465f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
466f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 0},
467f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
468f3af2d6eSRob Clark 			.reg_off = 0x2AC, .bit_off = 8},
469f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
470f3af2d6eSRob Clark 			.reg_off = 0x2B4, .bit_off = 8},
471f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
472f3af2d6eSRob Clark 			.reg_off = 0x2BC, .bit_off = 8},
473f3af2d6eSRob Clark 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
474f3af2d6eSRob Clark 			.reg_off = 0x2C4, .bit_off = 8},
475f3af2d6eSRob Clark 	},
476f3af2d6eSRob Clark };
477f3af2d6eSRob Clark 
478af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = {
479af776a3eSJonathan Marek 	{
480af776a3eSJonathan Marek 	.name = "top_0", .id = MDP_TOP,
481b910a020SRobert Foss 	.base = 0x0, .len = 0x494,
482af776a3eSJonathan Marek 	.features = 0,
483af776a3eSJonathan Marek 	.highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */
484af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
485af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 0},
486af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG1] = {
487af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 0},
488af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG2] = {
489af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 0},
490af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_VIG3] = {
491af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 0},
492af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
493af776a3eSJonathan Marek 			.reg_off = 0x2AC, .bit_off = 8},
494af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_DMA1] = {
495af776a3eSJonathan Marek 			.reg_off = 0x2B4, .bit_off = 8},
496af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
497af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 8},
498af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
499af776a3eSJonathan Marek 			.reg_off = 0x2C4, .bit_off = 8},
500af776a3eSJonathan Marek 	.clk_ctrls[DPU_CLK_CTRL_REG_DMA] = {
501af776a3eSJonathan Marek 			.reg_off = 0x2BC, .bit_off = 20},
50253324b99SAbhinav Kumar 	.clk_ctrls[DPU_CLK_CTRL_WB2] = {
50353324b99SAbhinav Kumar 			.reg_off = 0x3B8, .bit_off = 24},
504af776a3eSJonathan Marek 	},
505af776a3eSJonathan Marek };
506af776a3eSJonathan Marek 
507591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = {
508591e34a0SKrishna Manikandan 	{
509591e34a0SKrishna Manikandan 	.name = "top_0", .id = MDP_TOP,
510591e34a0SKrishna Manikandan 	.base = 0x0, .len = 0x2014,
511591e34a0SKrishna Manikandan 	.highest_bank_bit = 0x1,
512591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
513591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 0},
514591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
515591e34a0SKrishna Manikandan 		.reg_off = 0x2AC, .bit_off = 8},
516591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR0] = {
517591e34a0SKrishna Manikandan 		.reg_off = 0x2B4, .bit_off = 8},
518591e34a0SKrishna Manikandan 	.clk_ctrls[DPU_CLK_CTRL_CURSOR1] = {
519591e34a0SKrishna Manikandan 		.reg_off = 0x2C4, .bit_off = 8},
520591e34a0SKrishna Manikandan 	},
521591e34a0SKrishna Manikandan };
522591e34a0SKrishna Manikandan 
5235334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = {
5245334087eSLoic Poulain 	{
5255334087eSLoic Poulain 	.name = "top_0", .id = MDP_TOP,
5265334087eSLoic Poulain 	.base = 0x0, .len = 0x494,
5275334087eSLoic Poulain 	.features = 0,
5285334087eSLoic Poulain 	.highest_bank_bit = 0x2,
5295334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_VIG0] = {
5305334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 0},
5315334087eSLoic Poulain 	.clk_ctrls[DPU_CLK_CTRL_DMA0] = {
5325334087eSLoic Poulain 		.reg_off = 0x2AC, .bit_off = 8},
5335334087eSLoic Poulain 	},
5345334087eSLoic Poulain };
5355334087eSLoic Poulain 
53625fdd593SJeykumar Sankaran /*************************************************************
53725fdd593SJeykumar Sankaran  * CTL sub blocks config
53825fdd593SJeykumar Sankaran  *************************************************************/
53994391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = {
54094391a14SAngeloGioacchino Del Regno 	{
54194391a14SAngeloGioacchino Del Regno 	.name = "ctl_0", .id = CTL_0,
54294391a14SAngeloGioacchino Del Regno 	.base = 0x1000, .len = 0x94,
54394391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
54494391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
54594391a14SAngeloGioacchino Del Regno 	},
54694391a14SAngeloGioacchino Del Regno 	{
54794391a14SAngeloGioacchino Del Regno 	.name = "ctl_1", .id = CTL_1,
54894391a14SAngeloGioacchino Del Regno 	.base = 0x1200, .len = 0x94,
54994391a14SAngeloGioacchino Del Regno 	.features = 0,
55094391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
55194391a14SAngeloGioacchino Del Regno 	},
55294391a14SAngeloGioacchino Del Regno 	{
55394391a14SAngeloGioacchino Del Regno 	.name = "ctl_2", .id = CTL_2,
55494391a14SAngeloGioacchino Del Regno 	.base = 0x1400, .len = 0x94,
55594391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
55694391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
55794391a14SAngeloGioacchino Del Regno 	},
55894391a14SAngeloGioacchino Del Regno 	{
55994391a14SAngeloGioacchino Del Regno 	.name = "ctl_3", .id = CTL_3,
56094391a14SAngeloGioacchino Del Regno 	.base = 0x1600, .len = 0x94,
56194391a14SAngeloGioacchino Del Regno 	.features = 0,
56294391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
56394391a14SAngeloGioacchino Del Regno 	},
56494391a14SAngeloGioacchino Del Regno 	{
56594391a14SAngeloGioacchino Del Regno 	.name = "ctl_4", .id = CTL_4,
56694391a14SAngeloGioacchino Del Regno 	.base = 0x1800, .len = 0x94,
56794391a14SAngeloGioacchino Del Regno 	.features = 0,
56894391a14SAngeloGioacchino Del Regno 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
56994391a14SAngeloGioacchino Del Regno 	},
57094391a14SAngeloGioacchino Del Regno };
57194391a14SAngeloGioacchino Del Regno 
572abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = {
57325fdd593SJeykumar Sankaran 	{
57425fdd593SJeykumar Sankaran 	.name = "ctl_0", .id = CTL_0,
57525fdd593SJeykumar Sankaran 	.base = 0x1000, .len = 0xE4,
576667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
577667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
57825fdd593SJeykumar Sankaran 	},
57925fdd593SJeykumar Sankaran 	{
58025fdd593SJeykumar Sankaran 	.name = "ctl_1", .id = CTL_1,
58125fdd593SJeykumar Sankaran 	.base = 0x1200, .len = 0xE4,
582667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_SPLIT_DISPLAY),
583667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
58425fdd593SJeykumar Sankaran 	},
58525fdd593SJeykumar Sankaran 	{
58625fdd593SJeykumar Sankaran 	.name = "ctl_2", .id = CTL_2,
58725fdd593SJeykumar Sankaran 	.base = 0x1400, .len = 0xE4,
588667e9985SDmitry Baryshkov 	.features = 0,
589667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
59025fdd593SJeykumar Sankaran 	},
59125fdd593SJeykumar Sankaran 	{
59225fdd593SJeykumar Sankaran 	.name = "ctl_3", .id = CTL_3,
59325fdd593SJeykumar Sankaran 	.base = 0x1600, .len = 0xE4,
594667e9985SDmitry Baryshkov 	.features = 0,
595667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
59625fdd593SJeykumar Sankaran 	},
59725fdd593SJeykumar Sankaran 	{
59825fdd593SJeykumar Sankaran 	.name = "ctl_4", .id = CTL_4,
59925fdd593SJeykumar Sankaran 	.base = 0x1800, .len = 0xE4,
600667e9985SDmitry Baryshkov 	.features = 0,
601667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
60225fdd593SJeykumar Sankaran 	},
60325fdd593SJeykumar Sankaran };
60425fdd593SJeykumar Sankaran 
6057bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = {
6067bdc0c4bSKalyan Thota 	{
6077bdc0c4bSKalyan Thota 	.name = "ctl_0", .id = CTL_0,
6087bdc0c4bSKalyan Thota 	.base = 0x1000, .len = 0xE4,
609667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
610667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
6117bdc0c4bSKalyan Thota 	},
6127bdc0c4bSKalyan Thota 	{
6137bdc0c4bSKalyan Thota 	.name = "ctl_1", .id = CTL_1,
6147bdc0c4bSKalyan Thota 	.base = 0x1200, .len = 0xE4,
615667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
616667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
6177bdc0c4bSKalyan Thota 	},
6187bdc0c4bSKalyan Thota 	{
6197bdc0c4bSKalyan Thota 	.name = "ctl_2", .id = CTL_2,
6207bdc0c4bSKalyan Thota 	.base = 0x1400, .len = 0xE4,
621667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
622667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
6237bdc0c4bSKalyan Thota 	},
6247bdc0c4bSKalyan Thota };
6257bdc0c4bSKalyan Thota 
626386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = {
627386fced3SJonathan Marek 	{
628386fced3SJonathan Marek 	.name = "ctl_0", .id = CTL_0,
629386fced3SJonathan Marek 	.base = 0x1000, .len = 0x1e0,
630667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
631667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
632386fced3SJonathan Marek 	},
633386fced3SJonathan Marek 	{
634386fced3SJonathan Marek 	.name = "ctl_1", .id = CTL_1,
635386fced3SJonathan Marek 	.base = 0x1200, .len = 0x1e0,
636667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY),
637667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
638386fced3SJonathan Marek 	},
639386fced3SJonathan Marek 	{
640386fced3SJonathan Marek 	.name = "ctl_2", .id = CTL_2,
641386fced3SJonathan Marek 	.base = 0x1400, .len = 0x1e0,
642667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
643667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
644386fced3SJonathan Marek 	},
645386fced3SJonathan Marek 	{
646386fced3SJonathan Marek 	.name = "ctl_3", .id = CTL_3,
647386fced3SJonathan Marek 	.base = 0x1600, .len = 0x1e0,
648667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
649667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
650386fced3SJonathan Marek 	},
651386fced3SJonathan Marek 	{
652386fced3SJonathan Marek 	.name = "ctl_4", .id = CTL_4,
653386fced3SJonathan Marek 	.base = 0x1800, .len = 0x1e0,
654667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
655667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
656386fced3SJonathan Marek 	},
657386fced3SJonathan Marek 	{
658386fced3SJonathan Marek 	.name = "ctl_5", .id = CTL_5,
659386fced3SJonathan Marek 	.base = 0x1a00, .len = 0x1e0,
660667e9985SDmitry Baryshkov 	.features = BIT(DPU_CTL_ACTIVE_CFG),
661667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23),
662386fced3SJonathan Marek 	},
663386fced3SJonathan Marek };
664386fced3SJonathan Marek 
665591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = {
666591e34a0SKrishna Manikandan 	{
667591e34a0SKrishna Manikandan 	.name = "ctl_0", .id = CTL_0,
668591e34a0SKrishna Manikandan 	.base = 0x15000, .len = 0x1E8,
669667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
670667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
671591e34a0SKrishna Manikandan 	},
672591e34a0SKrishna Manikandan 	{
673591e34a0SKrishna Manikandan 	.name = "ctl_1", .id = CTL_1,
674591e34a0SKrishna Manikandan 	.base = 0x16000, .len = 0x1E8,
675667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
676667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
677591e34a0SKrishna Manikandan 	},
678591e34a0SKrishna Manikandan 	{
679591e34a0SKrishna Manikandan 	.name = "ctl_2", .id = CTL_2,
680591e34a0SKrishna Manikandan 	.base = 0x17000, .len = 0x1E8,
681667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
682667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
683591e34a0SKrishna Manikandan 	},
684591e34a0SKrishna Manikandan 	{
685591e34a0SKrishna Manikandan 	.name = "ctl_3", .id = CTL_3,
686591e34a0SKrishna Manikandan 	.base = 0x18000, .len = 0x1E8,
687667e9985SDmitry Baryshkov 	.features = CTL_SC7280_MASK,
688667e9985SDmitry Baryshkov 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
689591e34a0SKrishna Manikandan 	},
690591e34a0SKrishna Manikandan };
691591e34a0SKrishna Manikandan 
6925334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = {
6935334087eSLoic Poulain 	{
6945334087eSLoic Poulain 	.name = "ctl_0", .id = CTL_0,
6955334087eSLoic Poulain 	.base = 0x1000, .len = 0x1dc,
6965334087eSLoic Poulain 	.features = BIT(DPU_CTL_ACTIVE_CFG),
6975334087eSLoic Poulain 	.intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
6985334087eSLoic Poulain 	},
6995334087eSLoic Poulain };
7005334087eSLoic Poulain 
70125fdd593SJeykumar Sankaran /*************************************************************
70225fdd593SJeykumar Sankaran  * SSPP sub blocks config
70325fdd593SJeykumar Sankaran  *************************************************************/
70425fdd593SJeykumar Sankaran 
70525fdd593SJeykumar Sankaran /* SSPP common configuration */
706b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \
70725fdd593SJeykumar Sankaran 	{ \
70825fdd593SJeykumar Sankaran 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
70925fdd593SJeykumar Sankaran 	.maxupscale = MAX_UPSCALE_RATIO, \
71025fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
71125fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
71225fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
71325fdd593SJeykumar Sankaran 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
714b75ab05aSShubhashree Dhar 		.id = qseed_ver, \
71525fdd593SJeykumar Sankaran 		.base = 0xa00, .len = 0xa0,}, \
71625fdd593SJeykumar Sankaran 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
71725fdd593SJeykumar Sankaran 		.id = DPU_SSPP_CSC_10BIT, \
71825fdd593SJeykumar Sankaran 		.base = 0x1a00, .len = 0x100,}, \
71925fdd593SJeykumar Sankaran 	.format_list = plane_formats_yuv, \
720e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
72125fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
722e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
723dabfdd89SVinod Polimera 	.rotation_cfg = NULL, \
724dabfdd89SVinod Polimera 	}
725dabfdd89SVinod Polimera 
726dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \
727dabfdd89SVinod Polimera 	{ \
728dabfdd89SVinod Polimera 	.maxdwnscale = MAX_DOWNSCALE_RATIO, \
729dabfdd89SVinod Polimera 	.maxupscale = MAX_UPSCALE_RATIO, \
730dabfdd89SVinod Polimera 	.smart_dma_priority = sdma_pri, \
731dabfdd89SVinod Polimera 	.src_blk = {.name = STRCAT("sspp_src_", num), \
732dabfdd89SVinod Polimera 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
733dabfdd89SVinod Polimera 	.scaler_blk = {.name = STRCAT("sspp_scaler", num), \
734dabfdd89SVinod Polimera 		.id = qseed_ver, \
735dabfdd89SVinod Polimera 		.base = 0xa00, .len = 0xa0,}, \
736dabfdd89SVinod Polimera 	.csc_blk = {.name = STRCAT("sspp_csc", num), \
737dabfdd89SVinod Polimera 		.id = DPU_SSPP_CSC_10BIT, \
738dabfdd89SVinod Polimera 		.base = 0x1a00, .len = 0x100,}, \
739dabfdd89SVinod Polimera 	.format_list = plane_formats_yuv, \
740dabfdd89SVinod Polimera 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
741dabfdd89SVinod Polimera 	.virt_format_list = plane_formats, \
742dabfdd89SVinod Polimera 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
743dabfdd89SVinod Polimera 	.rotation_cfg = rot_cfg, \
74425fdd593SJeykumar Sankaran 	}
74525fdd593SJeykumar Sankaran 
74625fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \
74725fdd593SJeykumar Sankaran 	{ \
74825fdd593SJeykumar Sankaran 	.maxdwnscale = SSPP_UNITY_SCALE, \
74925fdd593SJeykumar Sankaran 	.maxupscale = SSPP_UNITY_SCALE, \
75025fdd593SJeykumar Sankaran 	.smart_dma_priority = sdma_pri, \
75125fdd593SJeykumar Sankaran 	.src_blk = {.name = STRCAT("sspp_src_", num), \
75225fdd593SJeykumar Sankaran 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
75325fdd593SJeykumar Sankaran 	.format_list = plane_formats, \
754e6b63a7bSFritz Koenig 	.num_formats = ARRAY_SIZE(plane_formats), \
75525fdd593SJeykumar Sankaran 	.virt_format_list = plane_formats, \
756e6b63a7bSFritz Koenig 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
75725fdd593SJeykumar Sankaran 	}
75825fdd593SJeykumar Sankaran 
75994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 =
76094391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3);
76194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 =
76294391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3);
76394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 =
76494391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3);
76594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 =
76694391a14SAngeloGioacchino Del Regno 				_VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3);
76794391a14SAngeloGioacchino Del Regno 
768dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = {
769dabfdd89SVinod Polimera 	.rot_maxheight = 1088,
770dabfdd89SVinod Polimera 	.rot_num_formats = ARRAY_SIZE(rotation_v2_formats),
771dabfdd89SVinod Polimera 	.rot_format_list = rotation_v2_formats,
772dabfdd89SVinod Polimera };
773dabfdd89SVinod Polimera 
774b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 =
775b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3);
776b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 =
777b75ab05aSShubhashree Dhar 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3);
778b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 =
779b75ab05aSShubhashree Dhar 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3);
780b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 =
781b75ab05aSShubhashree Dhar 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3);
78225fdd593SJeykumar Sankaran 
78325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1);
78425fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2);
78525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3);
78625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4);
78725fdd593SJeykumar Sankaran 
78807ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \
78907ca1fc0SSravanthi Kollukuduru 		_sblk, _xinid, _type, _clkctrl) \
79025fdd593SJeykumar Sankaran 	{ \
79125fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
79225fdd593SJeykumar Sankaran 	.base = _base, .len = 0x1c8, \
79307ca1fc0SSravanthi Kollukuduru 	.features = _features, \
79425fdd593SJeykumar Sankaran 	.sblk = &_sblk, \
79525fdd593SJeykumar Sankaran 	.xin_id = _xinid, \
79607ca1fc0SSravanthi Kollukuduru 	.type = _type, \
79725fdd593SJeykumar Sankaran 	.clk_ctrl = _clkctrl \
79825fdd593SJeykumar Sankaran 	}
79925fdd593SJeykumar Sankaran 
80094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = {
80194391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK,
80294391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
80394391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK,
80494391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
80594391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK,
80694391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
80794391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK,
80894391a14SAngeloGioacchino Del Regno 		msm8998_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
80994391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_MSM8998_MASK,
81094391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
81194391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_MSM8998_MASK,
81294391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
81394391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_MSM8998_MASK,
81494391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
81594391a14SAngeloGioacchino Del Regno 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_MSM8998_MASK,
81694391a14SAngeloGioacchino Del Regno 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
81794391a14SAngeloGioacchino Del Regno };
81894391a14SAngeloGioacchino Del Regno 
819abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = {
82007ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
82107ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
82207ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
82307ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
82407ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK,
82507ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
82607ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK,
82707ca1fc0SSravanthi Kollukuduru 		sdm845_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
82807ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
82907ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
83007ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
83107ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
83207ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
83307ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
83407ca1fc0SSravanthi Kollukuduru 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
83507ca1fc0SSravanthi Kollukuduru 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
83625fdd593SJeykumar Sankaran };
83725fdd593SJeykumar Sankaran 
838b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 =
839b75ab05aSShubhashree Dhar 				_VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4);
840b75ab05aSShubhashree Dhar 
841dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 =
842dabfdd89SVinod Polimera 			_VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2);
843dabfdd89SVinod Polimera 
8447bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = {
8457bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK,
846b75ab05aSShubhashree Dhar 		sc7180_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
8477bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
8487bdc0c4bSKalyan Thota 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
8497b149f2bSKalyan Thota 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
8507b149f2bSKalyan Thota 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
8517bdc0c4bSKalyan Thota 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
8527b149f2bSKalyan Thota 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
8537bdc0c4bSKalyan Thota };
8547bdc0c4bSKalyan Thota 
855d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
856d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE);
857d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
858d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE);
859d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 =
860d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE);
861d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 =
862d21fc5dfSDmitry Baryshkov 				_VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE);
863d21fc5dfSDmitry Baryshkov 
864d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = {
865d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK,
866d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
867d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK,
868d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_1, 4,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1),
869d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK,
870d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2),
871d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK,
872d21fc5dfSDmitry Baryshkov 		sm8250_vig_sblk_3, 12,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3),
873d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
874d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
875d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_SDM845_MASK,
876d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1),
877d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
878d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
879d21fc5dfSDmitry Baryshkov 	SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,  DMA_CURSOR_SDM845_MASK,
880d21fc5dfSDmitry Baryshkov 		sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
881d21fc5dfSDmitry Baryshkov };
882d21fc5dfSDmitry Baryshkov 
883591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = {
884dabfdd89SVinod Polimera 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK,
885dabfdd89SVinod Polimera 		sc7280_vig_sblk_0, 0,  SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
886591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
887591e34a0SKrishna Manikandan 		sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
888591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000,  DMA_CURSOR_SDM845_MASK,
889591e34a0SKrishna Manikandan 		sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0),
890591e34a0SKrishna Manikandan 	SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000,  DMA_CURSOR_SDM845_MASK,
891591e34a0SKrishna Manikandan 		sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1),
892591e34a0SKrishna Manikandan };
893591e34a0SKrishna Manikandan 
8945334087eSLoic Poulain 
8955334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \
8965334087eSLoic Poulain 	{ \
8975334087eSLoic Poulain 	.maxdwnscale = SSPP_UNITY_SCALE, \
8985334087eSLoic Poulain 	.maxupscale = SSPP_UNITY_SCALE, \
8995334087eSLoic Poulain 	.smart_dma_priority = sdma_pri, \
9005334087eSLoic Poulain 	.src_blk = {.name = STRCAT("sspp_src_", num), \
9015334087eSLoic Poulain 		.id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \
9025334087eSLoic Poulain 	.format_list = plane_formats_yuv, \
9035334087eSLoic Poulain 	.num_formats = ARRAY_SIZE(plane_formats_yuv), \
9045334087eSLoic Poulain 	.virt_format_list = plane_formats, \
9055334087eSLoic Poulain 	.virt_num_formats = ARRAY_SIZE(plane_formats), \
9065334087eSLoic Poulain 	}
9075334087eSLoic Poulain 
9085334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2);
9095334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1);
9105334087eSLoic Poulain 
9115334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = {
9125334087eSLoic Poulain 	SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK,
9135334087eSLoic Poulain 		 qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0),
9145334087eSLoic Poulain 	SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000,  DMA_SDM845_MASK,
9155334087eSLoic Poulain 		 qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0),
9165334087eSLoic Poulain };
9175334087eSLoic Poulain 
91825fdd593SJeykumar Sankaran /*************************************************************
91925fdd593SJeykumar Sankaran  * MIXER sub blocks config
92025fdd593SJeykumar Sankaran  *************************************************************/
9217bdc0c4bSKalyan Thota 
922e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \
92325fdd593SJeykumar Sankaran 	{ \
92425fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
92525fdd593SJeykumar Sankaran 	.base = _base, .len = 0x320, \
9267bdc0c4bSKalyan Thota 	.features = _fmask, \
9277bdc0c4bSKalyan Thota 	.sblk = _sblk, \
92825fdd593SJeykumar Sankaran 	.pingpong = _pp, \
929e47616dfSKalyan Thota 	.lm_pair_mask = (1 << _lmpair), \
930e47616dfSKalyan Thota 	.dspp = _dspp \
93125fdd593SJeykumar Sankaran 	}
93225fdd593SJeykumar Sankaran 
93394391a14SAngeloGioacchino Del Regno /* MSM8998 */
93494391a14SAngeloGioacchino Del Regno 
93594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = {
93694391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
93794391a14SAngeloGioacchino Del Regno 	.maxblendstages = 7, /* excluding base layer */
93894391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
93994391a14SAngeloGioacchino Del Regno 		0x20, 0x50, 0x80, 0xb0, 0x230,
94094391a14SAngeloGioacchino Del Regno 		0x260, 0x290
94194391a14SAngeloGioacchino Del Regno 	},
94294391a14SAngeloGioacchino Del Regno };
94394391a14SAngeloGioacchino Del Regno 
94494391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = {
9452d8a4edbSDmitry Baryshkov 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK,
94694391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0),
9472d8a4edbSDmitry Baryshkov 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK,
94894391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1),
9492d8a4edbSDmitry Baryshkov 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK,
95094391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_2, LM_0, 0),
9512d8a4edbSDmitry Baryshkov 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK,
95294391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
9532d8a4edbSDmitry Baryshkov 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK,
95494391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_MAX, 0, 0),
9552d8a4edbSDmitry Baryshkov 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK,
95694391a14SAngeloGioacchino Del Regno 		&msm8998_lm_sblk, PINGPONG_3, LM_1, 0),
95794391a14SAngeloGioacchino Del Regno };
95894391a14SAngeloGioacchino Del Regno 
95994391a14SAngeloGioacchino Del Regno /* SDM845 */
96094391a14SAngeloGioacchino Del Regno 
96194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = {
96294391a14SAngeloGioacchino Del Regno 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
96394391a14SAngeloGioacchino Del Regno 	.maxblendstages = 11, /* excluding base layer */
96494391a14SAngeloGioacchino Del Regno 	.blendstage_base = { /* offsets relative to mixer base */
96594391a14SAngeloGioacchino Del Regno 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98,
96694391a14SAngeloGioacchino Del Regno 		0xb0, 0xc8, 0xe0, 0xf8, 0x110
96794391a14SAngeloGioacchino Del Regno 	},
96894391a14SAngeloGioacchino Del Regno };
96994391a14SAngeloGioacchino Del Regno 
970abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = {
9717bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
972e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_0, LM_1, 0),
9737bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
974e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_1, LM_0, 0),
9757bdc0c4bSKalyan Thota 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
976e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_2, LM_5, 0),
9777bdc0c4bSKalyan Thota 	LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK,
978e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
9797bdc0c4bSKalyan Thota 	LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK,
980e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_MAX, 0, 0),
9817bdc0c4bSKalyan Thota 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
982e47616dfSKalyan Thota 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
9837bdc0c4bSKalyan Thota };
9847bdc0c4bSKalyan Thota 
9857bdc0c4bSKalyan Thota /* SC7180 */
9867bdc0c4bSKalyan Thota 
9877bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = {
9887bdc0c4bSKalyan Thota 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
9897bdc0c4bSKalyan Thota 	.maxblendstages = 7, /* excluding base layer */
9907bdc0c4bSKalyan Thota 	.blendstage_base = { /* offsets relative to mixer base */
9917bdc0c4bSKalyan Thota 		0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0
9927bdc0c4bSKalyan Thota 	},
9937bdc0c4bSKalyan Thota };
9947bdc0c4bSKalyan Thota 
9957bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = {
9967bdc0c4bSKalyan Thota 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
997e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
9987bdc0c4bSKalyan Thota 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SC7180_MASK,
999e47616dfSKalyan Thota 		&sc7180_lm_sblk, PINGPONG_1, LM_0, 0),
100025fdd593SJeykumar Sankaran };
100125fdd593SJeykumar Sankaran 
1002386fced3SJonathan Marek /* SM8150 */
1003386fced3SJonathan Marek 
1004386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = {
1005386fced3SJonathan Marek 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK,
100605ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0),
1007386fced3SJonathan Marek 	LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK,
100805ae91d9SDmitry Baryshkov 		&sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1),
1009386fced3SJonathan Marek 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK,
1010386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_2, LM_3, 0),
1011386fced3SJonathan Marek 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK,
1012386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_3, LM_2, 0),
1013386fced3SJonathan Marek 	LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK,
1014386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_4, LM_5, 0),
1015386fced3SJonathan Marek 	LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK,
1016386fced3SJonathan Marek 		&sdm845_lm_sblk, PINGPONG_5, LM_4, 0),
1017386fced3SJonathan Marek };
1018386fced3SJonathan Marek 
1019591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = {
1020591e34a0SKrishna Manikandan 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
1021fca5ad26SKalyan Thota 		&sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0),
1022591e34a0SKrishna Manikandan 	LM_BLK("lm_2", LM_2, 0x46000, MIXER_SC7180_MASK,
1023591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_2, LM_3, 0),
1024591e34a0SKrishna Manikandan 	LM_BLK("lm_3", LM_3, 0x47000, MIXER_SC7180_MASK,
1025591e34a0SKrishna Manikandan 		&sc7180_lm_sblk, PINGPONG_3, LM_2, 0),
1026591e34a0SKrishna Manikandan };
1027591e34a0SKrishna Manikandan 
10285334087eSLoic Poulain /* QCM2290 */
10295334087eSLoic Poulain 
10305334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = {
10315334087eSLoic Poulain 	.maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
10325334087eSLoic Poulain 	.maxblendstages = 4, /* excluding base layer */
10335334087eSLoic Poulain 	.blendstage_base = { /* offsets relative to mixer base */
10345334087eSLoic Poulain 		0x20, 0x38, 0x50, 0x68
10355334087eSLoic Poulain 	},
10365334087eSLoic Poulain };
10375334087eSLoic Poulain 
10385334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = {
10395334087eSLoic Poulain 	LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK,
10405334087eSLoic Poulain 		&qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0),
10415334087eSLoic Poulain };
10425334087eSLoic Poulain 
104325fdd593SJeykumar Sankaran /*************************************************************
1044e47616dfSKalyan Thota  * DSPP sub blocks config
1045e47616dfSKalyan Thota  *************************************************************/
104694391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = {
104794391a14SAngeloGioacchino Del Regno 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
104894391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
104994391a14SAngeloGioacchino Del Regno 	.gc = { .id = DPU_DSPP_GC, .base = 0x17c0,
105094391a14SAngeloGioacchino Del Regno 		.len = 0x90, .version = 0x10007},
105194391a14SAngeloGioacchino Del Regno };
105294391a14SAngeloGioacchino Del Regno 
10534259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = {
10544259ff7aSKalyan Thota 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
10554259ff7aSKalyan Thota 		.len = 0x90, .version = 0x10000},
10564259ff7aSKalyan Thota };
10574259ff7aSKalyan Thota 
105805ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = {
105905ae91d9SDmitry Baryshkov 	.pcc = {.id = DPU_DSPP_PCC, .base = 0x1700,
106005ae91d9SDmitry Baryshkov 		.len = 0x90, .version = 0x40000},
106105ae91d9SDmitry Baryshkov };
106205ae91d9SDmitry Baryshkov 
1063862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \
1064e47616dfSKalyan Thota 		{\
1065e47616dfSKalyan Thota 		.name = _name, .id = _id, \
1066e47616dfSKalyan Thota 		.base = _base, .len = 0x1800, \
1067862314bcSAngeloGioacchino Del Regno 		.features = _mask, \
106805ae91d9SDmitry Baryshkov 		.sblk = _sblk \
1069e47616dfSKalyan Thota 		}
1070e47616dfSKalyan Thota 
107194391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = {
107294391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK,
107394391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
107494391a14SAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK,
107594391a14SAngeloGioacchino Del Regno 		 &msm8998_dspp_sblk),
107694391a14SAngeloGioacchino Del Regno };
107794391a14SAngeloGioacchino Del Regno 
1078e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = {
1079862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1080862314bcSAngeloGioacchino Del Regno 		 &sc7180_dspp_sblk),
108105ae91d9SDmitry Baryshkov };
108205ae91d9SDmitry Baryshkov 
108305ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = {
1084862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
1085862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1086862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK,
1087862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1088862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK,
1089862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1090862314bcSAngeloGioacchino Del Regno 	DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK,
1091862314bcSAngeloGioacchino Del Regno 		 &sm8150_dspp_sblk),
1092e47616dfSKalyan Thota };
1093386fced3SJonathan Marek 
10945334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = {
10955334087eSLoic Poulain 	DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK,
10965334087eSLoic Poulain 		 &sm8150_dspp_sblk),
10975334087eSLoic Poulain };
10985334087eSLoic Poulain 
1099e47616dfSKalyan Thota /*************************************************************
110025fdd593SJeykumar Sankaran  * PINGPONG sub blocks config
110125fdd593SJeykumar Sankaran  *************************************************************/
110225fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = {
110325fdd593SJeykumar Sankaran 	.te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0,
110425fdd593SJeykumar Sankaran 		.version = 0x1},
110525fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
110625fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
110725fdd593SJeykumar Sankaran };
110825fdd593SJeykumar Sankaran 
110925fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = {
111025fdd593SJeykumar Sankaran 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0,
111125fdd593SJeykumar Sankaran 		.len = 0x20, .version = 0x10000},
111225fdd593SJeykumar Sankaran };
111325fdd593SJeykumar Sankaran 
1114591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = {
1115591e34a0SKrishna Manikandan 	.dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0,
1116591e34a0SKrishna Manikandan 	.len = 0x20, .version = 0x20000},
1117591e34a0SKrishna Manikandan };
1118591e34a0SKrishna Manikandan 
1119667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
112025fdd593SJeykumar Sankaran 	{\
112125fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
112225fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
112325fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_SPLIT_MASK, \
11244369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1125667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1126667e9985SDmitry Baryshkov 	.intr_done = _done, \
1127667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
112825fdd593SJeykumar Sankaran 	}
1129667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \
113025fdd593SJeykumar Sankaran 	{\
113125fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
113225fdd593SJeykumar Sankaran 	.base = _base, .len = 0xd4, \
113325fdd593SJeykumar Sankaran 	.features = PINGPONG_SDM845_MASK, \
11344369c93cSDmitry Baryshkov 	.merge_3d = _merge_3d, \
1135667e9985SDmitry Baryshkov 	.sblk = &_sblk, \
1136667e9985SDmitry Baryshkov 	.intr_done = _done, \
1137667e9985SDmitry Baryshkov 	.intr_rdptr = _rdptr, \
113825fdd593SJeykumar Sankaran 	}
113925fdd593SJeykumar Sankaran 
1140abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = {
1141667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te,
1142667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1143667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1144667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te,
1145667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1146667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1147667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk,
1148667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1149667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1150667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk,
1151667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1152667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
115325fdd593SJeykumar Sankaran };
115425fdd593SJeykumar Sankaran 
11557bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = {
1156667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1),
1157667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1),
11587bdc0c4bSKalyan Thota };
11597bdc0c4bSKalyan Thota 
1160386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = {
1161667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te,
1162667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
1163667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
1164667e9985SDmitry Baryshkov 	PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te,
1165667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9),
1166667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)),
1167667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk,
1168667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10),
1169667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)),
1170667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk,
1171667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11),
1172667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)),
1173667e9985SDmitry Baryshkov 	PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk,
1174667e9985SDmitry Baryshkov 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30),
1175667e9985SDmitry Baryshkov 			-1),
1176667e9985SDmitry Baryshkov 	PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk,
11773431c17bSRobert Foss 			DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31),
1178667e9985SDmitry Baryshkov 			-1),
11794369c93cSDmitry Baryshkov };
11804369c93cSDmitry Baryshkov 
11815334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = {
11825334087eSLoic Poulain 	PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk,
11835334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8),
11845334087eSLoic Poulain 		DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)),
11855334087eSLoic Poulain };
11865334087eSLoic Poulain 
11874369c93cSDmitry Baryshkov /*************************************************************
11884369c93cSDmitry Baryshkov  * MERGE_3D sub blocks config
11894369c93cSDmitry Baryshkov  *************************************************************/
11904369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \
11914369c93cSDmitry Baryshkov 	{\
11924369c93cSDmitry Baryshkov 	.name = _name, .id = _id, \
11934369c93cSDmitry Baryshkov 	.base = _base, .len = 0x100, \
11944369c93cSDmitry Baryshkov 	.features = MERGE_3D_SM8150_MASK, \
11954369c93cSDmitry Baryshkov 	.sblk = NULL \
11964369c93cSDmitry Baryshkov 	}
11974369c93cSDmitry Baryshkov 
11984369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = {
11994369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000),
12004369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100),
12014369c93cSDmitry Baryshkov 	MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200),
1202386fced3SJonathan Marek };
1203386fced3SJonathan Marek 
1204591e34a0SKrishna Manikandan static const struct dpu_pingpong_cfg sc7280_pp[] = {
1205667e9985SDmitry Baryshkov 	PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1),
1206667e9985SDmitry Baryshkov 	PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1),
1207667e9985SDmitry Baryshkov 	PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1),
1208667e9985SDmitry Baryshkov 	PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1),
1209591e34a0SKrishna Manikandan };
12107c5ab05eSVinod Koul 
12117c5ab05eSVinod Koul /*************************************************************
12127c5ab05eSVinod Koul  * DSC sub blocks config
12137c5ab05eSVinod Koul  *************************************************************/
12147c5ab05eSVinod Koul #define DSC_BLK(_name, _id, _base) \
12157c5ab05eSVinod Koul 	{\
12167c5ab05eSVinod Koul 	.name = _name, .id = _id, \
12177c5ab05eSVinod Koul 	.base = _base, .len = 0x140, \
12187c5ab05eSVinod Koul 	.features = 0, \
12197c5ab05eSVinod Koul 	}
12207c5ab05eSVinod Koul 
12217c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = {
12227c5ab05eSVinod Koul 	DSC_BLK("dsc_0", DSC_0, 0x80000),
12237c5ab05eSVinod Koul 	DSC_BLK("dsc_1", DSC_1, 0x80400),
12247c5ab05eSVinod Koul 	DSC_BLK("dsc_2", DSC_2, 0x80800),
12257c5ab05eSVinod Koul 	DSC_BLK("dsc_3", DSC_3, 0x80c00),
12267c5ab05eSVinod Koul };
12277c5ab05eSVinod Koul 
122825fdd593SJeykumar Sankaran /*************************************************************
122925fdd593SJeykumar Sankaran  * INTF sub blocks config
123025fdd593SJeykumar Sankaran  *************************************************************/
1231667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \
123225fdd593SJeykumar Sankaran 	{\
123325fdd593SJeykumar Sankaran 	.name = _name, .id = _id, \
123425fdd593SJeykumar Sankaran 	.base = _base, .len = 0x280, \
1235cace3ac4SJonathan Marek 	.features = _features, \
123625fdd593SJeykumar Sankaran 	.type = _type, \
123725fdd593SJeykumar Sankaran 	.controller_id = _ctrl_id, \
1238667e9985SDmitry Baryshkov 	.prog_fetch_lines_worst_case = _progfetch, \
1239667e9985SDmitry Baryshkov 	.intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \
1240667e9985SDmitry Baryshkov 	.intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \
124125fdd593SJeykumar Sankaran 	}
124225fdd593SJeykumar Sankaran 
124394391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = {
124494391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
124594391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
124694391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
124794391a14SAngeloGioacchino Del Regno 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
124894391a14SAngeloGioacchino Del Regno };
124994391a14SAngeloGioacchino Del Regno 
1250abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = {
1251667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1252667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1253667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1254667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
125525fdd593SJeykumar Sankaran };
125625fdd593SJeykumar Sankaran 
12577bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = {
1258bb3de286SBjorn Andersson 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1259667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
12607bdc0c4bSKalyan Thota };
12617bdc0c4bSKalyan Thota 
1262386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = {
1263667e9985SDmitry Baryshkov 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1264667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1265667e9985SDmitry Baryshkov 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1266667e9985SDmitry Baryshkov 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1267386fced3SJonathan Marek };
1268386fced3SJonathan Marek 
1269591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = {
1270ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1271667e9985SDmitry Baryshkov 	INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1272ef7837ffSSankeerth Billakanti 	INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1273591e34a0SKrishna Manikandan };
1274591e34a0SKrishna Manikandan 
1275f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = {
1276f3af2d6eSRob Clark 	INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25),
1277f3af2d6eSRob Clark 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
1278f3af2d6eSRob Clark 	INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29),
1279f3af2d6eSRob Clark 	/* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */
1280f3af2d6eSRob Clark 	INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31),
1281f3af2d6eSRob Clark 	INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21),
1282f3af2d6eSRob Clark 	INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23),
1283f3af2d6eSRob Clark };
1284f3af2d6eSRob Clark 
12855334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = {
12865334087eSLoic Poulain 	INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0),
12875334087eSLoic Poulain 	INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27),
12885334087eSLoic Poulain };
12895334087eSLoic Poulain 
129025fdd593SJeykumar Sankaran /*************************************************************
129153324b99SAbhinav Kumar  * Writeback blocks config
129253324b99SAbhinav Kumar  *************************************************************/
129353324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \
1294a370cc39SAbhinav Kumar 		__xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \
129553324b99SAbhinav Kumar 	{ \
129653324b99SAbhinav Kumar 	.name = _name, .id = _id, \
129753324b99SAbhinav Kumar 	.base = _base, .len = 0x2c8, \
129853324b99SAbhinav Kumar 	.features = _features, \
129953324b99SAbhinav Kumar 	.format_list = wb2_formats, \
130053324b99SAbhinav Kumar 	.num_formats = ARRAY_SIZE(wb2_formats), \
130153324b99SAbhinav Kumar 	.clk_ctrl = _clk_ctrl, \
130253324b99SAbhinav Kumar 	.xin_id = __xin_id, \
130353324b99SAbhinav Kumar 	.vbif_idx = vbif_id, \
1304a370cc39SAbhinav Kumar 	.maxlinewidth = _max_linewidth, \
130553324b99SAbhinav Kumar 	.intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \
130653324b99SAbhinav Kumar 	}
130753324b99SAbhinav Kumar 
130853324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = {
130953324b99SAbhinav Kumar 	WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6,
1310a370cc39SAbhinav Kumar 			VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4),
131153324b99SAbhinav Kumar };
131253324b99SAbhinav Kumar 
131353324b99SAbhinav Kumar /*************************************************************
131425fdd593SJeykumar Sankaran  * VBIF sub blocks config
131525fdd593SJeykumar Sankaran  *************************************************************/
131625fdd593SJeykumar Sankaran /* VBIF QOS remap */
131794391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2};
131894391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1};
1319abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6};
1320abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3};
132125fdd593SJeykumar Sankaran 
132294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = {
132394391a14SAngeloGioacchino Del Regno 	{
132494391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 30,
132594391a14SAngeloGioacchino Del Regno 		.ot_limit = 2,
132694391a14SAngeloGioacchino Del Regno 	},
132794391a14SAngeloGioacchino Del Regno 	{
132894391a14SAngeloGioacchino Del Regno 		.pps = 1088 * 1920 * 60,
132994391a14SAngeloGioacchino Del Regno 		.ot_limit = 6,
133094391a14SAngeloGioacchino Del Regno 	},
133194391a14SAngeloGioacchino Del Regno 	{
133294391a14SAngeloGioacchino Del Regno 		.pps = 3840 * 2160 * 30,
133394391a14SAngeloGioacchino Del Regno 		.ot_limit = 16,
133494391a14SAngeloGioacchino Del Regno 	},
133594391a14SAngeloGioacchino Del Regno };
133694391a14SAngeloGioacchino Del Regno 
133794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = {
133894391a14SAngeloGioacchino Del Regno 	{
1339606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
134094391a14SAngeloGioacchino Del Regno 	.base = 0, .len = 0x1040,
134194391a14SAngeloGioacchino Del Regno 	.default_ot_rd_limit = 32,
134294391a14SAngeloGioacchino Del Regno 	.default_ot_wr_limit = 32,
134394391a14SAngeloGioacchino Del Regno 	.features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM),
134494391a14SAngeloGioacchino Del Regno 	.xin_halt_timeout = 0x4000,
1345c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x20,
134694391a14SAngeloGioacchino Del Regno 	.dynamic_ot_rd_tbl = {
134794391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
134894391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
134994391a14SAngeloGioacchino Del Regno 		},
135094391a14SAngeloGioacchino Del Regno 	.dynamic_ot_wr_tbl = {
135194391a14SAngeloGioacchino Del Regno 		.count = ARRAY_SIZE(msm8998_ot_rdwr_cfg),
135294391a14SAngeloGioacchino Del Regno 		.cfg = msm8998_ot_rdwr_cfg,
135394391a14SAngeloGioacchino Del Regno 		},
135494391a14SAngeloGioacchino Del Regno 	.qos_rt_tbl = {
135594391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl),
135694391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_rt_pri_lvl,
135794391a14SAngeloGioacchino Del Regno 		},
135894391a14SAngeloGioacchino Del Regno 	.qos_nrt_tbl = {
135994391a14SAngeloGioacchino Del Regno 		.npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl),
136094391a14SAngeloGioacchino Del Regno 		.priority_lvl = msm8998_nrt_pri_lvl,
136194391a14SAngeloGioacchino Del Regno 		},
136294391a14SAngeloGioacchino Del Regno 	.memtype_count = 14,
136394391a14SAngeloGioacchino Del Regno 	.memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
136494391a14SAngeloGioacchino Del Regno 	},
136594391a14SAngeloGioacchino Del Regno };
136694391a14SAngeloGioacchino Del Regno 
1367abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = {
136825fdd593SJeykumar Sankaran 	{
1369606f015bSDmitry Baryshkov 	.name = "vbif_rt", .id = VBIF_RT,
137025fdd593SJeykumar Sankaran 	.base = 0, .len = 0x1040,
137125fdd593SJeykumar Sankaran 	.features = BIT(DPU_VBIF_QOS_REMAP),
137225fdd593SJeykumar Sankaran 	.xin_halt_timeout = 0x4000,
1373c8744315SDmitry Baryshkov 	.qos_rp_remap_size = 0x40,
137425fdd593SJeykumar Sankaran 	.qos_rt_tbl = {
137525fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl),
137625fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_rt_pri_lvl,
137725fdd593SJeykumar Sankaran 		},
137825fdd593SJeykumar Sankaran 	.qos_nrt_tbl = {
137925fdd593SJeykumar Sankaran 		.npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl),
138025fdd593SJeykumar Sankaran 		.priority_lvl = sdm845_nrt_pri_lvl,
138125fdd593SJeykumar Sankaran 		},
138225fdd593SJeykumar Sankaran 	.memtype_count = 14,
138325fdd593SJeykumar Sankaran 	.memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
138425fdd593SJeykumar Sankaran 	},
138525fdd593SJeykumar Sankaran };
138625fdd593SJeykumar Sankaran 
1387abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = {
138825fdd593SJeykumar Sankaran 	.base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c
138925fdd593SJeykumar Sankaran };
139025fdd593SJeykumar Sankaran 
1391386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = {
1392386fced3SJonathan Marek 	.base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c
1393386fced3SJonathan Marek };
1394386fced3SJonathan Marek 
1395af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = {
1396af776a3eSJonathan Marek 	.base = 0x0,
1397af776a3eSJonathan Marek 	.version = 0x00010002,
1398af776a3eSJonathan Marek 	.trigger_sel_off = 0x119c,
1399af776a3eSJonathan Marek 	.xin_id = 7,
1400af776a3eSJonathan Marek 	.clk_ctrl = DPU_CLK_CTRL_REG_DMA,
1401af776a3eSJonathan Marek };
1402af776a3eSJonathan Marek 
140325fdd593SJeykumar Sankaran /*************************************************************
140425fdd593SJeykumar Sankaran  * PERF data config
140525fdd593SJeykumar Sankaran  *************************************************************/
140625fdd593SJeykumar Sankaran 
140725fdd593SJeykumar Sankaran /* SSPP QOS LUTs */
140894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = {
140994391a14SAngeloGioacchino Del Regno 	{.fl = 4,  .lut = 0x1b},
141094391a14SAngeloGioacchino Del Regno 	{.fl = 5,  .lut = 0x5b},
141194391a14SAngeloGioacchino Del Regno 	{.fl = 6,  .lut = 0x15b},
141294391a14SAngeloGioacchino Del Regno 	{.fl = 7,  .lut = 0x55b},
141394391a14SAngeloGioacchino Del Regno 	{.fl = 8,  .lut = 0x155b},
141494391a14SAngeloGioacchino Del Regno 	{.fl = 9,  .lut = 0x555b},
141594391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1555b},
141694391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5555b},
141794391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15555b},
141894391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55555b},
141994391a14SAngeloGioacchino Del Regno 	{.fl = 14, .lut = 0},
142094391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1b},
142194391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0}
142294391a14SAngeloGioacchino Del Regno };
142394391a14SAngeloGioacchino Del Regno 
1424abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = {
142525fdd593SJeykumar Sankaran 	{.fl = 4, .lut = 0x357},
142625fdd593SJeykumar Sankaran 	{.fl = 5, .lut = 0x3357},
142725fdd593SJeykumar Sankaran 	{.fl = 6, .lut = 0x23357},
142825fdd593SJeykumar Sankaran 	{.fl = 7, .lut = 0x223357},
142925fdd593SJeykumar Sankaran 	{.fl = 8, .lut = 0x2223357},
143025fdd593SJeykumar Sankaran 	{.fl = 9, .lut = 0x22223357},
143125fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x222223357},
143225fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x2222223357},
143325fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x22222223357},
143425fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x222222223357},
143525fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1222222223357},
143625fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x11222222223357}
143725fdd593SJeykumar Sankaran };
143825fdd593SJeykumar Sankaran 
143994391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = {
144094391a14SAngeloGioacchino Del Regno 	{.fl = 10, .lut = 0x1aaff},
144194391a14SAngeloGioacchino Del Regno 	{.fl = 11, .lut = 0x5aaff},
144294391a14SAngeloGioacchino Del Regno 	{.fl = 12, .lut = 0x15aaff},
144394391a14SAngeloGioacchino Del Regno 	{.fl = 13, .lut = 0x55aaff},
144494391a14SAngeloGioacchino Del Regno 	{.fl = 1,  .lut = 0x1aaff},
144594391a14SAngeloGioacchino Del Regno 	{.fl = 0,  .lut = 0},
144694391a14SAngeloGioacchino Del Regno };
144794391a14SAngeloGioacchino Del Regno 
14487bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = {
14497bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011222222335777},
14507bdc0c4bSKalyan Thota };
14517bdc0c4bSKalyan Thota 
1452386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = {
1453386fced3SJonathan Marek 	{.fl = 0, .lut = 0x0011222222223357 },
1454386fced3SJonathan Marek };
1455386fced3SJonathan Marek 
1456f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = {
1457f3af2d6eSRob Clark 	{.fl = 4, .lut = 0x0000000000000357 },
1458f3af2d6eSRob Clark };
1459f3af2d6eSRob Clark 
14605334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = {
14615334087eSLoic Poulain 	{.fl = 0, .lut = 0x0011222222335777},
14625334087eSLoic Poulain };
14635334087eSLoic Poulain 
1464abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = {
146525fdd593SJeykumar Sankaran 	{.fl = 10, .lut = 0x344556677},
146625fdd593SJeykumar Sankaran 	{.fl = 11, .lut = 0x3344556677},
146725fdd593SJeykumar Sankaran 	{.fl = 12, .lut = 0x23344556677},
146825fdd593SJeykumar Sankaran 	{.fl = 13, .lut = 0x223344556677},
146925fdd593SJeykumar Sankaran 	{.fl = 14, .lut = 0x1223344556677},
147025fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x112233344556677},
147125fdd593SJeykumar Sankaran };
147225fdd593SJeykumar Sankaran 
14737bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = {
14747bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0011223344556677},
14757bdc0c4bSKalyan Thota };
14767bdc0c4bSKalyan Thota 
1477f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = {
1478f3af2d6eSRob Clark 	{.fl = 10, .lut = 0x0000000344556677},
1479f3af2d6eSRob Clark };
1480f3af2d6eSRob Clark 
148194391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = {
148294391a14SAngeloGioacchino Del Regno 	{.fl = 0, .lut = 0x0},
148394391a14SAngeloGioacchino Del Regno };
148494391a14SAngeloGioacchino Del Regno 
1485abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = {
148625fdd593SJeykumar Sankaran 	{.fl = 0, .lut = 0x0},
148725fdd593SJeykumar Sankaran };
148825fdd593SJeykumar Sankaran 
14897bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
14907bdc0c4bSKalyan Thota 	{.fl = 0, .lut = 0x0},
14917bdc0c4bSKalyan Thota };
14927bdc0c4bSKalyan Thota 
149394391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = {
149494391a14SAngeloGioacchino Del Regno 	.max_bw_low = 6700000,
149594391a14SAngeloGioacchino Del Regno 	.max_bw_high = 6700000,
149694391a14SAngeloGioacchino Del Regno 	.min_core_ib = 2400000,
149794391a14SAngeloGioacchino Del Regno 	.min_llcc_ib = 800000,
149894391a14SAngeloGioacchino Del Regno 	.min_dram_ib = 800000,
149994391a14SAngeloGioacchino Del Regno 	.undersized_prefill_lines = 2,
150094391a14SAngeloGioacchino Del Regno 	.xtra_prefill_lines = 2,
150194391a14SAngeloGioacchino Del Regno 	.dest_scale_prefill_lines = 3,
150294391a14SAngeloGioacchino Del Regno 	.macrotile_prefill_lines = 4,
150394391a14SAngeloGioacchino Del Regno 	.yuv_nv12_prefill_lines = 8,
150494391a14SAngeloGioacchino Del Regno 	.linear_prefill_lines = 1,
150594391a14SAngeloGioacchino Del Regno 	.downscaling_prefill_lines = 1,
150694391a14SAngeloGioacchino Del Regno 	.amortizable_threshold = 25,
150794391a14SAngeloGioacchino Del Regno 	.min_prefill_lines = 25,
150894391a14SAngeloGioacchino Del Regno 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
150994391a14SAngeloGioacchino Del Regno 	.safe_lut_tbl = {0xfffc, 0xff00, 0xffff},
151094391a14SAngeloGioacchino Del Regno 	.qos_lut_tbl = {
151194391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_linear),
151294391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_linear
151394391a14SAngeloGioacchino Del Regno 		},
151494391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_macrotile),
151594391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_macrotile
151694391a14SAngeloGioacchino Del Regno 		},
151794391a14SAngeloGioacchino Del Regno 		{.nentry = ARRAY_SIZE(msm8998_qos_nrt),
151894391a14SAngeloGioacchino Del Regno 		.entries = msm8998_qos_nrt
151994391a14SAngeloGioacchino Del Regno 		},
152094391a14SAngeloGioacchino Del Regno 	},
152194391a14SAngeloGioacchino Del Regno 	.cdp_cfg = {
152294391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 1},
152394391a14SAngeloGioacchino Del Regno 		{.rd_enable = 1, .wr_enable = 0}
152494391a14SAngeloGioacchino Del Regno 	},
152594391a14SAngeloGioacchino Del Regno 	.clk_inefficiency_factor = 200,
152694391a14SAngeloGioacchino Del Regno 	.bw_inefficiency_factor = 120,
152794391a14SAngeloGioacchino Del Regno };
152894391a14SAngeloGioacchino Del Regno 
1529abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = {
153025fdd593SJeykumar Sankaran 	.max_bw_low = 6800000,
153125fdd593SJeykumar Sankaran 	.max_bw_high = 6800000,
153225fdd593SJeykumar Sankaran 	.min_core_ib = 2400000,
153325fdd593SJeykumar Sankaran 	.min_llcc_ib = 800000,
153425fdd593SJeykumar Sankaran 	.min_dram_ib = 800000,
153525fdd593SJeykumar Sankaran 	.undersized_prefill_lines = 2,
153625fdd593SJeykumar Sankaran 	.xtra_prefill_lines = 2,
153725fdd593SJeykumar Sankaran 	.dest_scale_prefill_lines = 3,
153825fdd593SJeykumar Sankaran 	.macrotile_prefill_lines = 4,
153925fdd593SJeykumar Sankaran 	.yuv_nv12_prefill_lines = 8,
154025fdd593SJeykumar Sankaran 	.linear_prefill_lines = 1,
154125fdd593SJeykumar Sankaran 	.downscaling_prefill_lines = 1,
154225fdd593SJeykumar Sankaran 	.amortizable_threshold = 25,
154325fdd593SJeykumar Sankaran 	.min_prefill_lines = 24,
154425fdd593SJeykumar Sankaran 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
15455bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xf000, 0xffff},
154625fdd593SJeykumar Sankaran 	.qos_lut_tbl = {
154725fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_linear),
154825fdd593SJeykumar Sankaran 		.entries = sdm845_qos_linear
154925fdd593SJeykumar Sankaran 		},
155025fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_macrotile),
155125fdd593SJeykumar Sankaran 		.entries = sdm845_qos_macrotile
155225fdd593SJeykumar Sankaran 		},
155325fdd593SJeykumar Sankaran 		{.nentry = ARRAY_SIZE(sdm845_qos_nrt),
155425fdd593SJeykumar Sankaran 		.entries = sdm845_qos_nrt
155525fdd593SJeykumar Sankaran 		},
155625fdd593SJeykumar Sankaran 	},
155725fdd593SJeykumar Sankaran 	.cdp_cfg = {
155825fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 1},
155925fdd593SJeykumar Sankaran 		{.rd_enable = 1, .wr_enable = 0}
156025fdd593SJeykumar Sankaran 	},
15614f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
15624f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
156325fdd593SJeykumar Sankaran };
156425fdd593SJeykumar Sankaran 
15657bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = {
156671dc6c08SKrishna Manikandan 	.max_bw_low = 6800000,
156771dc6c08SKrishna Manikandan 	.max_bw_high = 6800000,
15687bdc0c4bSKalyan Thota 	.min_core_ib = 2400000,
15697bdc0c4bSKalyan Thota 	.min_llcc_ib = 800000,
1570c33b7c03SKalyan Thota 	.min_dram_ib = 1600000,
1571c33b7c03SKalyan Thota 	.min_prefill_lines = 24,
15727bdc0c4bSKalyan Thota 	.danger_lut_tbl = {0xff, 0xffff, 0x0},
15735bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
15747bdc0c4bSKalyan Thota 	.qos_lut_tbl = {
15757bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
15767bdc0c4bSKalyan Thota 		.entries = sc7180_qos_linear
15777bdc0c4bSKalyan Thota 		},
15787bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
15797bdc0c4bSKalyan Thota 		.entries = sc7180_qos_macrotile
15807bdc0c4bSKalyan Thota 		},
15817bdc0c4bSKalyan Thota 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
15827bdc0c4bSKalyan Thota 		.entries = sc7180_qos_nrt
15837bdc0c4bSKalyan Thota 		},
15847bdc0c4bSKalyan Thota 	},
15857bdc0c4bSKalyan Thota 	.cdp_cfg = {
15867bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 1},
15877bdc0c4bSKalyan Thota 		{.rd_enable = 1, .wr_enable = 0}
15887bdc0c4bSKalyan Thota 	},
1589c33b7c03SKalyan Thota 	.clk_inefficiency_factor = 105,
1590c33b7c03SKalyan Thota 	.bw_inefficiency_factor = 120,
15917bdc0c4bSKalyan Thota };
15927bdc0c4bSKalyan Thota 
1593386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = {
1594386fced3SJonathan Marek 	.max_bw_low = 12800000,
1595386fced3SJonathan Marek 	.max_bw_high = 12800000,
1596386fced3SJonathan Marek 	.min_core_ib = 2400000,
1597386fced3SJonathan Marek 	.min_llcc_ib = 800000,
1598386fced3SJonathan Marek 	.min_dram_ib = 800000,
15994f2c9838SDmitry Baryshkov 	.min_prefill_lines = 24,
1600386fced3SJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
16015bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff8, 0xf000, 0xffff},
1602386fced3SJonathan Marek 	.qos_lut_tbl = {
1603386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sm8150_qos_linear),
1604386fced3SJonathan Marek 		.entries = sm8150_qos_linear
1605386fced3SJonathan Marek 		},
1606386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1607386fced3SJonathan Marek 		.entries = sc7180_qos_macrotile
1608386fced3SJonathan Marek 		},
1609386fced3SJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1610386fced3SJonathan Marek 		.entries = sc7180_qos_nrt
1611386fced3SJonathan Marek 		},
1612386fced3SJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
1613386fced3SJonathan Marek 	},
1614386fced3SJonathan Marek 	.cdp_cfg = {
1615386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
1616386fced3SJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
1617386fced3SJonathan Marek 	},
16184f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
16194f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
1620386fced3SJonathan Marek };
1621386fced3SJonathan Marek 
1622f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = {
1623f3af2d6eSRob Clark 	.max_bw_low = 9600000,
1624f3af2d6eSRob Clark 	.max_bw_high = 9600000,
1625f3af2d6eSRob Clark 	.min_core_ib = 2400000,
1626f3af2d6eSRob Clark 	.min_llcc_ib = 800000,
1627f3af2d6eSRob Clark 	.min_dram_ib = 800000,
1628f3af2d6eSRob Clark 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
1629f3af2d6eSRob Clark 	.qos_lut_tbl = {
1630f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_linear),
1631f3af2d6eSRob Clark 		.entries = sc8180x_qos_linear
1632f3af2d6eSRob Clark 		},
1633f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc8180x_qos_macrotile),
1634f3af2d6eSRob Clark 		.entries = sc8180x_qos_macrotile
1635f3af2d6eSRob Clark 		},
1636f3af2d6eSRob Clark 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1637f3af2d6eSRob Clark 		.entries = sc7180_qos_nrt
1638f3af2d6eSRob Clark 		},
1639f3af2d6eSRob Clark 		/* TODO: macrotile-qseed is different from macrotile */
1640f3af2d6eSRob Clark 	},
1641f3af2d6eSRob Clark 	.cdp_cfg = {
1642f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 1},
1643f3af2d6eSRob Clark 		{.rd_enable = 1, .wr_enable = 0}
1644f3af2d6eSRob Clark 	},
1645f3af2d6eSRob Clark 	.clk_inefficiency_factor = 105,
1646f3af2d6eSRob Clark 	.bw_inefficiency_factor = 120,
1647f3af2d6eSRob Clark };
1648f3af2d6eSRob Clark 
1649af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = {
1650af776a3eSJonathan Marek 	.max_bw_low = 13700000,
1651af776a3eSJonathan Marek 	.max_bw_high = 16600000,
1652af776a3eSJonathan Marek 	.min_core_ib = 4800000,
1653af776a3eSJonathan Marek 	.min_llcc_ib = 0,
1654af776a3eSJonathan Marek 	.min_dram_ib = 800000,
16554f2c9838SDmitry Baryshkov 	.min_prefill_lines = 35,
1656af776a3eSJonathan Marek 	.danger_lut_tbl = {0xf, 0xffff, 0x0},
16575bccb945SKalyan Thota 	.safe_lut_tbl = {0xfff0, 0xff00, 0xffff},
1658af776a3eSJonathan Marek 	.qos_lut_tbl = {
1659af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_linear),
1660af776a3eSJonathan Marek 		.entries = sc7180_qos_linear
1661af776a3eSJonathan Marek 		},
1662af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1663af776a3eSJonathan Marek 		.entries = sc7180_qos_macrotile
1664af776a3eSJonathan Marek 		},
1665af776a3eSJonathan Marek 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1666af776a3eSJonathan Marek 		.entries = sc7180_qos_nrt
1667af776a3eSJonathan Marek 		},
1668af776a3eSJonathan Marek 		/* TODO: macrotile-qseed is different from macrotile */
1669af776a3eSJonathan Marek 	},
1670af776a3eSJonathan Marek 	.cdp_cfg = {
1671af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 1},
1672af776a3eSJonathan Marek 		{.rd_enable = 1, .wr_enable = 0}
1673af776a3eSJonathan Marek 	},
16744f2c9838SDmitry Baryshkov 	.clk_inefficiency_factor = 105,
16754f2c9838SDmitry Baryshkov 	.bw_inefficiency_factor = 120,
1676af776a3eSJonathan Marek };
1677af776a3eSJonathan Marek 
1678591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = {
1679591e34a0SKrishna Manikandan 	.max_bw_low = 4700000,
1680591e34a0SKrishna Manikandan 	.max_bw_high = 8800000,
1681591e34a0SKrishna Manikandan 	.min_core_ib = 2500000,
1682591e34a0SKrishna Manikandan 	.min_llcc_ib = 0,
1683591e34a0SKrishna Manikandan 	.min_dram_ib = 1600000,
1684591e34a0SKrishna Manikandan 	.min_prefill_lines = 24,
1685591e34a0SKrishna Manikandan 	.danger_lut_tbl = {0xffff, 0xffff, 0x0},
16865bccb945SKalyan Thota 	.safe_lut_tbl = {0xff00, 0xff00, 0xffff},
1687591e34a0SKrishna Manikandan 	.qos_lut_tbl = {
1688591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1689591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
1690591e34a0SKrishna Manikandan 		},
1691591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_macrotile),
1692591e34a0SKrishna Manikandan 		.entries = sc7180_qos_macrotile
1693591e34a0SKrishna Manikandan 		},
1694591e34a0SKrishna Manikandan 		{.nentry = ARRAY_SIZE(sc7180_qos_nrt),
1695591e34a0SKrishna Manikandan 		.entries = sc7180_qos_nrt
1696591e34a0SKrishna Manikandan 		},
1697591e34a0SKrishna Manikandan 	},
1698591e34a0SKrishna Manikandan 	.cdp_cfg = {
1699591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 1},
1700591e34a0SKrishna Manikandan 		{.rd_enable = 1, .wr_enable = 0}
1701591e34a0SKrishna Manikandan 	},
1702591e34a0SKrishna Manikandan 	.clk_inefficiency_factor = 105,
1703591e34a0SKrishna Manikandan 	.bw_inefficiency_factor = 120,
1704591e34a0SKrishna Manikandan };
1705591e34a0SKrishna Manikandan 
17065334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = {
17075334087eSLoic Poulain 	.max_bw_low = 2700000,
17085334087eSLoic Poulain 	.max_bw_high = 2700000,
17095334087eSLoic Poulain 	.min_core_ib = 1300000,
17105334087eSLoic Poulain 	.min_llcc_ib = 0,
17115334087eSLoic Poulain 	.min_dram_ib = 1600000,
17125334087eSLoic Poulain 	.min_prefill_lines = 24,
17135334087eSLoic Poulain 	.danger_lut_tbl = {0xff, 0x0, 0x0},
17145334087eSLoic Poulain 	.safe_lut_tbl = {0xfff0, 0x0, 0x0},
17155334087eSLoic Poulain 	.qos_lut_tbl = {
17165334087eSLoic Poulain 		{.nentry = ARRAY_SIZE(qcm2290_qos_linear),
17175334087eSLoic Poulain 		.entries = qcm2290_qos_linear
17185334087eSLoic Poulain 		},
17195334087eSLoic Poulain 	},
17205334087eSLoic Poulain 	.cdp_cfg = {
17215334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 1},
17225334087eSLoic Poulain 		{.rd_enable = 1, .wr_enable = 0}
17235334087eSLoic Poulain 	},
17245334087eSLoic Poulain 	.clk_inefficiency_factor = 105,
17255334087eSLoic Poulain 	.bw_inefficiency_factor = 120,
17265334087eSLoic Poulain };
172725fdd593SJeykumar Sankaran /*************************************************************
1728de7d480fSDmitry Baryshkov  * Hardware catalog
172925fdd593SJeykumar Sankaran  *************************************************************/
173025fdd593SJeykumar Sankaran 
1731de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
173294391a14SAngeloGioacchino Del Regno 	.caps = &msm8998_dpu_caps,
173394391a14SAngeloGioacchino Del Regno 	.mdp_count = ARRAY_SIZE(msm8998_mdp),
173494391a14SAngeloGioacchino Del Regno 	.mdp = msm8998_mdp,
173594391a14SAngeloGioacchino Del Regno 	.ctl_count = ARRAY_SIZE(msm8998_ctl),
173694391a14SAngeloGioacchino Del Regno 	.ctl = msm8998_ctl,
173794391a14SAngeloGioacchino Del Regno 	.sspp_count = ARRAY_SIZE(msm8998_sspp),
173894391a14SAngeloGioacchino Del Regno 	.sspp = msm8998_sspp,
173994391a14SAngeloGioacchino Del Regno 	.mixer_count = ARRAY_SIZE(msm8998_lm),
174094391a14SAngeloGioacchino Del Regno 	.mixer = msm8998_lm,
17416452cbd6SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(msm8998_dspp),
17426452cbd6SDmitry Baryshkov 	.dspp = msm8998_dspp,
174394391a14SAngeloGioacchino Del Regno 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
174494391a14SAngeloGioacchino Del Regno 	.pingpong = sdm845_pp,
174594391a14SAngeloGioacchino Del Regno 	.intf_count = ARRAY_SIZE(msm8998_intf),
174694391a14SAngeloGioacchino Del Regno 	.intf = msm8998_intf,
174794391a14SAngeloGioacchino Del Regno 	.vbif_count = ARRAY_SIZE(msm8998_vbif),
174894391a14SAngeloGioacchino Del Regno 	.vbif = msm8998_vbif,
174994391a14SAngeloGioacchino Del Regno 	.reg_dma_count = 0,
1750477db4feSDmitry Baryshkov 	.perf = &msm8998_perf_data,
175194391a14SAngeloGioacchino Del Regno 	.mdss_irqs = IRQ_SM8250_MASK,
175294391a14SAngeloGioacchino Del Regno };
175394391a14SAngeloGioacchino Del Regno 
1754de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
175525fdd593SJeykumar Sankaran 	.caps = &sdm845_dpu_caps,
175625fdd593SJeykumar Sankaran 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
175725fdd593SJeykumar Sankaran 	.mdp = sdm845_mdp,
175825fdd593SJeykumar Sankaran 	.ctl_count = ARRAY_SIZE(sdm845_ctl),
175925fdd593SJeykumar Sankaran 	.ctl = sdm845_ctl,
176025fdd593SJeykumar Sankaran 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
176125fdd593SJeykumar Sankaran 	.sspp = sdm845_sspp,
176225fdd593SJeykumar Sankaran 	.mixer_count = ARRAY_SIZE(sdm845_lm),
176325fdd593SJeykumar Sankaran 	.mixer = sdm845_lm,
176425fdd593SJeykumar Sankaran 	.pingpong_count = ARRAY_SIZE(sdm845_pp),
176525fdd593SJeykumar Sankaran 	.pingpong = sdm845_pp,
17667c5ab05eSVinod Koul 	.dsc_count = ARRAY_SIZE(sdm845_dsc),
17677c5ab05eSVinod Koul 	.dsc = sdm845_dsc,
176825fdd593SJeykumar Sankaran 	.intf_count = ARRAY_SIZE(sdm845_intf),
176925fdd593SJeykumar Sankaran 	.intf = sdm845_intf,
177025fdd593SJeykumar Sankaran 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
177125fdd593SJeykumar Sankaran 	.vbif = sdm845_vbif,
177225fdd593SJeykumar Sankaran 	.reg_dma_count = 1,
1773481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
1774477db4feSDmitry Baryshkov 	.perf = &sdm845_perf_data,
1775597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
177625fdd593SJeykumar Sankaran };
177725fdd593SJeykumar Sankaran 
1778de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
17797bdc0c4bSKalyan Thota 	.caps = &sc7180_dpu_caps,
17807bdc0c4bSKalyan Thota 	.mdp_count = ARRAY_SIZE(sc7180_mdp),
17817bdc0c4bSKalyan Thota 	.mdp = sc7180_mdp,
17827bdc0c4bSKalyan Thota 	.ctl_count = ARRAY_SIZE(sc7180_ctl),
17837bdc0c4bSKalyan Thota 	.ctl = sc7180_ctl,
17847bdc0c4bSKalyan Thota 	.sspp_count = ARRAY_SIZE(sc7180_sspp),
17857bdc0c4bSKalyan Thota 	.sspp = sc7180_sspp,
17867bdc0c4bSKalyan Thota 	.mixer_count = ARRAY_SIZE(sc7180_lm),
17877bdc0c4bSKalyan Thota 	.mixer = sc7180_lm,
1788e47616dfSKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
1789e47616dfSKalyan Thota 	.dspp = sc7180_dspp,
17907bdc0c4bSKalyan Thota 	.pingpong_count = ARRAY_SIZE(sc7180_pp),
17917bdc0c4bSKalyan Thota 	.pingpong = sc7180_pp,
17927bdc0c4bSKalyan Thota 	.intf_count = ARRAY_SIZE(sc7180_intf),
17937bdc0c4bSKalyan Thota 	.intf = sc7180_intf,
179451e4d60eSAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
179551e4d60eSAbhinav Kumar 	.wb = sm8250_wb,
17967bdc0c4bSKalyan Thota 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
17977bdc0c4bSKalyan Thota 	.vbif = sdm845_vbif,
17987bdc0c4bSKalyan Thota 	.reg_dma_count = 1,
1799481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
1800477db4feSDmitry Baryshkov 	.perf = &sc7180_perf_data,
1801597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7180_MASK,
18027bdc0c4bSKalyan Thota };
18037bdc0c4bSKalyan Thota 
1804de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
1805386fced3SJonathan Marek 	.caps = &sm8150_dpu_caps,
1806386fced3SJonathan Marek 	.mdp_count = ARRAY_SIZE(sdm845_mdp),
1807386fced3SJonathan Marek 	.mdp = sdm845_mdp,
1808386fced3SJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
1809386fced3SJonathan Marek 	.ctl = sm8150_ctl,
1810386fced3SJonathan Marek 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
1811386fced3SJonathan Marek 	.sspp = sdm845_sspp,
1812386fced3SJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
1813386fced3SJonathan Marek 	.mixer = sm8150_lm,
181405ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
181505ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
1816386fced3SJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
1817386fced3SJonathan Marek 	.pingpong = sm8150_pp,
18184369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
18194369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
1820386fced3SJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
1821386fced3SJonathan Marek 	.intf = sm8150_intf,
1822386fced3SJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1823386fced3SJonathan Marek 	.vbif = sdm845_vbif,
1824386fced3SJonathan Marek 	.reg_dma_count = 1,
1825481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
1826477db4feSDmitry Baryshkov 	.perf = &sm8150_perf_data,
1827597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SDM845_MASK,
1828386fced3SJonathan Marek };
1829386fced3SJonathan Marek 
1830de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
1831f3af2d6eSRob Clark 	.caps = &sc8180x_dpu_caps,
1832f3af2d6eSRob Clark 	.mdp_count = ARRAY_SIZE(sc8180x_mdp),
1833f3af2d6eSRob Clark 	.mdp = sc8180x_mdp,
1834f3af2d6eSRob Clark 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
1835f3af2d6eSRob Clark 	.ctl = sm8150_ctl,
1836f3af2d6eSRob Clark 	.sspp_count = ARRAY_SIZE(sdm845_sspp),
1837f3af2d6eSRob Clark 	.sspp = sdm845_sspp,
1838f3af2d6eSRob Clark 	.mixer_count = ARRAY_SIZE(sm8150_lm),
1839f3af2d6eSRob Clark 	.mixer = sm8150_lm,
1840f3af2d6eSRob Clark 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
1841f3af2d6eSRob Clark 	.pingpong = sm8150_pp,
1842f3af2d6eSRob Clark 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
1843f3af2d6eSRob Clark 	.merge_3d = sm8150_merge_3d,
1844f3af2d6eSRob Clark 	.intf_count = ARRAY_SIZE(sc8180x_intf),
1845f3af2d6eSRob Clark 	.intf = sc8180x_intf,
1846f3af2d6eSRob Clark 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1847f3af2d6eSRob Clark 	.vbif = sdm845_vbif,
1848f3af2d6eSRob Clark 	.reg_dma_count = 1,
1849481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8150_regdma,
1850477db4feSDmitry Baryshkov 	.perf = &sc8180x_perf_data,
1851f3af2d6eSRob Clark 	.mdss_irqs = IRQ_SC8180X_MASK,
1852f3af2d6eSRob Clark };
1853f3af2d6eSRob Clark 
1854de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
1855af776a3eSJonathan Marek 	.caps = &sm8250_dpu_caps,
1856af776a3eSJonathan Marek 	.mdp_count = ARRAY_SIZE(sm8250_mdp),
1857af776a3eSJonathan Marek 	.mdp = sm8250_mdp,
1858af776a3eSJonathan Marek 	.ctl_count = ARRAY_SIZE(sm8150_ctl),
1859af776a3eSJonathan Marek 	.ctl = sm8150_ctl,
1860d21fc5dfSDmitry Baryshkov 	.sspp_count = ARRAY_SIZE(sm8250_sspp),
1861d21fc5dfSDmitry Baryshkov 	.sspp = sm8250_sspp,
1862af776a3eSJonathan Marek 	.mixer_count = ARRAY_SIZE(sm8150_lm),
1863af776a3eSJonathan Marek 	.mixer = sm8150_lm,
186405ae91d9SDmitry Baryshkov 	.dspp_count = ARRAY_SIZE(sm8150_dspp),
186505ae91d9SDmitry Baryshkov 	.dspp = sm8150_dspp,
1866af776a3eSJonathan Marek 	.pingpong_count = ARRAY_SIZE(sm8150_pp),
1867af776a3eSJonathan Marek 	.pingpong = sm8150_pp,
18684369c93cSDmitry Baryshkov 	.merge_3d_count = ARRAY_SIZE(sm8150_merge_3d),
18694369c93cSDmitry Baryshkov 	.merge_3d = sm8150_merge_3d,
1870af776a3eSJonathan Marek 	.intf_count = ARRAY_SIZE(sm8150_intf),
1871af776a3eSJonathan Marek 	.intf = sm8150_intf,
1872af776a3eSJonathan Marek 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1873af776a3eSJonathan Marek 	.vbif = sdm845_vbif,
187453324b99SAbhinav Kumar 	.wb_count = ARRAY_SIZE(sm8250_wb),
187553324b99SAbhinav Kumar 	.wb = sm8250_wb,
1876af776a3eSJonathan Marek 	.reg_dma_count = 1,
1877481d5dbbSDmitry Baryshkov 	.dma_cfg = &sm8250_regdma,
1878477db4feSDmitry Baryshkov 	.perf = &sm8250_perf_data,
1879597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SM8250_MASK,
1880af776a3eSJonathan Marek };
1881af776a3eSJonathan Marek 
1882de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
1883591e34a0SKrishna Manikandan 	.caps = &sc7280_dpu_caps,
1884591e34a0SKrishna Manikandan 	.mdp_count = ARRAY_SIZE(sc7280_mdp),
1885591e34a0SKrishna Manikandan 	.mdp = sc7280_mdp,
1886591e34a0SKrishna Manikandan 	.ctl_count = ARRAY_SIZE(sc7280_ctl),
1887591e34a0SKrishna Manikandan 	.ctl = sc7280_ctl,
1888591e34a0SKrishna Manikandan 	.sspp_count = ARRAY_SIZE(sc7280_sspp),
1889591e34a0SKrishna Manikandan 	.sspp = sc7280_sspp,
1890fca5ad26SKalyan Thota 	.dspp_count = ARRAY_SIZE(sc7180_dspp),
1891fca5ad26SKalyan Thota 	.dspp = sc7180_dspp,
1892591e34a0SKrishna Manikandan 	.mixer_count = ARRAY_SIZE(sc7280_lm),
1893591e34a0SKrishna Manikandan 	.mixer = sc7280_lm,
1894591e34a0SKrishna Manikandan 	.pingpong_count = ARRAY_SIZE(sc7280_pp),
1895591e34a0SKrishna Manikandan 	.pingpong = sc7280_pp,
1896591e34a0SKrishna Manikandan 	.intf_count = ARRAY_SIZE(sc7280_intf),
1897591e34a0SKrishna Manikandan 	.intf = sc7280_intf,
1898591e34a0SKrishna Manikandan 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
1899591e34a0SKrishna Manikandan 	.vbif = sdm845_vbif,
1900477db4feSDmitry Baryshkov 	.perf = &sc7280_perf_data,
1901597762d5SDmitry Baryshkov 	.mdss_irqs = IRQ_SC7280_MASK,
1902591e34a0SKrishna Manikandan };
1903591e34a0SKrishna Manikandan 
1904de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
19055334087eSLoic Poulain 	.caps = &qcm2290_dpu_caps,
19065334087eSLoic Poulain 	.mdp_count = ARRAY_SIZE(qcm2290_mdp),
19075334087eSLoic Poulain 	.mdp = qcm2290_mdp,
19085334087eSLoic Poulain 	.ctl_count = ARRAY_SIZE(qcm2290_ctl),
19095334087eSLoic Poulain 	.ctl = qcm2290_ctl,
19105334087eSLoic Poulain 	.sspp_count = ARRAY_SIZE(qcm2290_sspp),
19115334087eSLoic Poulain 	.sspp = qcm2290_sspp,
19125334087eSLoic Poulain 	.mixer_count = ARRAY_SIZE(qcm2290_lm),
19135334087eSLoic Poulain 	.mixer = qcm2290_lm,
19145334087eSLoic Poulain 	.dspp_count = ARRAY_SIZE(qcm2290_dspp),
19155334087eSLoic Poulain 	.dspp = qcm2290_dspp,
19165334087eSLoic Poulain 	.pingpong_count = ARRAY_SIZE(qcm2290_pp),
19175334087eSLoic Poulain 	.pingpong = qcm2290_pp,
19185334087eSLoic Poulain 	.intf_count = ARRAY_SIZE(qcm2290_intf),
19195334087eSLoic Poulain 	.intf = qcm2290_intf,
19205334087eSLoic Poulain 	.vbif_count = ARRAY_SIZE(sdm845_vbif),
19215334087eSLoic Poulain 	.vbif = sdm845_vbif,
19225334087eSLoic Poulain 	.reg_dma_count = 1,
1923481d5dbbSDmitry Baryshkov 	.dma_cfg = &sdm845_regdma,
1924477db4feSDmitry Baryshkov 	.perf = &qcm2290_perf_data,
19255334087eSLoic Poulain 	.mdss_irqs = IRQ_SC7180_MASK,
19265334087eSLoic Poulain };
19275334087eSLoic Poulain 
1928abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
1929de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
1930de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
1931de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
1932de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
1933de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
1934de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
1935de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
1936de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
1937de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
1938de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
1939de7d480fSDmitry Baryshkov 	{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
194025fdd593SJeykumar Sankaran };
194125fdd593SJeykumar Sankaran 
1942de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
194325fdd593SJeykumar Sankaran {
194425fdd593SJeykumar Sankaran 	int i;
194525fdd593SJeykumar Sankaran 
194625fdd593SJeykumar Sankaran 	for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
1947de7d480fSDmitry Baryshkov 		if (cfg_handler[i].hw_rev == hw_rev)
1948de7d480fSDmitry Baryshkov 			return cfg_handler[i].dpu_cfg;
194925fdd593SJeykumar Sankaran 	}
195025fdd593SJeykumar Sankaran 
195125fdd593SJeykumar Sankaran 	DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
195232084967SDmitry Baryshkov 
195325fdd593SJeykumar Sankaran 	return ERR_PTR(-ENODEV);
195425fdd593SJeykumar Sankaran }
195525fdd593SJeykumar Sankaran 
1956