197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. 353324b99SAbhinav Kumar * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved. 425fdd593SJeykumar Sankaran */ 525fdd593SJeykumar Sankaran 625fdd593SJeykumar Sankaran #define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__ 725fdd593SJeykumar Sankaran #include <linux/slab.h> 825fdd593SJeykumar Sankaran #include <linux/of_address.h> 925fdd593SJeykumar Sankaran #include <linux/platform_device.h> 1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h" 11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h" 1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h" 1325fdd593SJeykumar Sankaran #include "dpu_kms.h" 1425fdd593SJeykumar Sankaran 157bdc0c4bSKalyan Thota #define VIG_MASK \ 167bdc0c4bSKalyan Thota (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 17b8dab65bSAngeloGioacchino Del Regno BIT(DPU_SSPP_CSC_10BIT) | BIT(DPU_SSPP_CDP) |\ 1825fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT)) 1925fdd593SJeykumar Sankaran 2094391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \ 2194391a14SAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3)) 2294391a14SAngeloGioacchino Del Regno 237bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \ 24b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3)) 257bdc0c4bSKalyan Thota 267bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \ 27b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4)) 287bdc0c4bSKalyan Thota 29d21fc5dfSDmitry Baryshkov #define VIG_SM8250_MASK \ 30095eed89SDmitry Baryshkov (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3LITE)) 31d21fc5dfSDmitry Baryshkov 325334087eSLoic Poulain #define VIG_QCM2290_MASK (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL)) 335334087eSLoic Poulain 3494391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \ 3594391a14SAngeloGioacchino Del Regno (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 3694391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 3794391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 3894391a14SAngeloGioacchino Del Regno 39dabfdd89SVinod Polimera #define VIG_SC7280_MASK \ 40dabfdd89SVinod Polimera (VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION)) 41dabfdd89SVinod Polimera 4225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \ 4325fdd593SJeykumar Sankaran (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\ 4425fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 4525fdd593SJeykumar Sankaran BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 4625fdd593SJeykumar Sankaran 4707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \ 4807ca1fc0SSravanthi Kollukuduru (DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR)) 4907ca1fc0SSravanthi Kollukuduru 5094391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \ 5194391a14SAngeloGioacchino Del Regno (DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR)) 5294391a14SAngeloGioacchino Del Regno 532d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \ 5425fdd593SJeykumar Sankaran (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER)) 5525fdd593SJeykumar Sankaran 562d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \ 572d8a4edbSDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 582d8a4edbSDmitry Baryshkov 597bdc0c4bSKalyan Thota #define MIXER_SC7180_MASK \ 602d8a4edbSDmitry Baryshkov (BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 617bdc0c4bSKalyan Thota 6225fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER) 6325fdd593SJeykumar Sankaran 6425fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \ 6525fdd593SJeykumar Sankaran (PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2)) 6625fdd593SJeykumar Sankaran 67591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \ 6844bf8704SKalyan Thota (BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE) | BIT(DPU_CTL_VM_CFG)) 69591e34a0SKrishna Manikandan 704369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0) 714369c93cSDmitry Baryshkov 7294391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC) 7394391a14SAngeloGioacchino Del Regno 744259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) 75e47616dfSKalyan Thota 76cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0) 77cace3ac4SJonathan Marek 78cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) 79cace3ac4SJonathan Marek 80591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN) 81591e34a0SKrishna Manikandan 82597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 83597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 84597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 85597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 86597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 87597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 88597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 89597762d5SDmitry Baryshkov BIT(MDP_AD4_0_INTR) | \ 90597762d5SDmitry Baryshkov BIT(MDP_AD4_1_INTR)) 91597762d5SDmitry Baryshkov 92597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 93597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 94597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 95597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 96597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR)) 97597762d5SDmitry Baryshkov 98597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 99597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 100597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 101597762d5SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 102597762d5SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 103597762d5SDmitry Baryshkov BIT(MDP_INTF5_7xxx_INTR)) 104597762d5SDmitry Baryshkov 105597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 106597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 107597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 108597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 109597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 110597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 111597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 112597762d5SDmitry Baryshkov BIT(MDP_INTF4_INTR)) 113597762d5SDmitry Baryshkov 1140e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1150e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_INTR2) | \ 1160e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1170e91bcbbSRobert Foss BIT(MDP_INTF0_7xxx_INTR) | \ 1180e91bcbbSRobert Foss BIT(MDP_INTF1_7xxx_INTR) | \ 1190e91bcbbSRobert Foss BIT(MDP_INTF2_7xxx_INTR) | \ 120*7eb75dbdSRobert Foss BIT(MDP_INTF3_7xxx_INTR)) 1210e91bcbbSRobert Foss 122f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 123f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_INTR2) | \ 124f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 125f3af2d6eSRob Clark BIT(MDP_INTF0_INTR) | \ 126f3af2d6eSRob Clark BIT(MDP_INTF1_INTR) | \ 127f3af2d6eSRob Clark BIT(MDP_INTF2_INTR) | \ 128f3af2d6eSRob Clark BIT(MDP_INTF3_INTR) | \ 129f3af2d6eSRob Clark BIT(MDP_INTF4_INTR) | \ 130f3af2d6eSRob Clark BIT(MDP_INTF5_INTR) | \ 131f3af2d6eSRob Clark BIT(MDP_AD4_0_INTR) | \ 132f3af2d6eSRob Clark BIT(MDP_AD4_1_INTR)) 133597762d5SDmitry Baryshkov 134100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 135100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 136100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 137100d7ef6SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 138100d7ef6SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 139100d7ef6SDmitry Baryshkov BIT(MDP_INTF2_7xxx_INTR) | \ 140100d7ef6SDmitry Baryshkov BIT(MDP_INTF3_7xxx_INTR)) 141100d7ef6SDmitry Baryshkov 14253324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ 14353324b99SAbhinav Kumar BIT(DPU_WB_UBWC) | \ 14453324b99SAbhinav Kumar BIT(DPU_WB_YUV_CONFIG) | \ 14553324b99SAbhinav Kumar BIT(DPU_WB_PIPE_ALPHA) | \ 14653324b99SAbhinav Kumar BIT(DPU_WB_XY_ROI_OFFSET) | \ 14753324b99SAbhinav Kumar BIT(DPU_WB_QOS) | \ 14853324b99SAbhinav Kumar BIT(DPU_WB_QOS_8LVL) | \ 14953324b99SAbhinav Kumar BIT(DPU_WB_CDP) | \ 15053324b99SAbhinav Kumar BIT(DPU_WB_INPUT_CTRL)) 15153324b99SAbhinav Kumar 15225fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) 15325fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH 2048 15425fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 15525fdd593SJeykumar Sankaran 15625fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION 4 15725fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION 4 15825fdd593SJeykumar Sankaran 15925fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO 20 16025fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO 4 16125fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE 1 16225fdd593SJeykumar Sankaran 16325fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y) 16425fdd593SJeykumar Sankaran 16509c7e370SLee Jones static const uint32_t plane_formats[] = { 16609c7e370SLee Jones DRM_FORMAT_ARGB8888, 16709c7e370SLee Jones DRM_FORMAT_ABGR8888, 16809c7e370SLee Jones DRM_FORMAT_RGBA8888, 16909c7e370SLee Jones DRM_FORMAT_BGRA8888, 17009c7e370SLee Jones DRM_FORMAT_XRGB8888, 17109c7e370SLee Jones DRM_FORMAT_RGBX8888, 17209c7e370SLee Jones DRM_FORMAT_BGRX8888, 17309c7e370SLee Jones DRM_FORMAT_XBGR8888, 174da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 17509c7e370SLee Jones DRM_FORMAT_RGB888, 17609c7e370SLee Jones DRM_FORMAT_BGR888, 17709c7e370SLee Jones DRM_FORMAT_RGB565, 17809c7e370SLee Jones DRM_FORMAT_BGR565, 17909c7e370SLee Jones DRM_FORMAT_ARGB1555, 18009c7e370SLee Jones DRM_FORMAT_ABGR1555, 18109c7e370SLee Jones DRM_FORMAT_RGBA5551, 18209c7e370SLee Jones DRM_FORMAT_BGRA5551, 18309c7e370SLee Jones DRM_FORMAT_XRGB1555, 18409c7e370SLee Jones DRM_FORMAT_XBGR1555, 18509c7e370SLee Jones DRM_FORMAT_RGBX5551, 18609c7e370SLee Jones DRM_FORMAT_BGRX5551, 18709c7e370SLee Jones DRM_FORMAT_ARGB4444, 18809c7e370SLee Jones DRM_FORMAT_ABGR4444, 18909c7e370SLee Jones DRM_FORMAT_RGBA4444, 19009c7e370SLee Jones DRM_FORMAT_BGRA4444, 19109c7e370SLee Jones DRM_FORMAT_XRGB4444, 19209c7e370SLee Jones DRM_FORMAT_XBGR4444, 19309c7e370SLee Jones DRM_FORMAT_RGBX4444, 19409c7e370SLee Jones DRM_FORMAT_BGRX4444, 19509c7e370SLee Jones }; 19609c7e370SLee Jones 19709c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 19809c7e370SLee Jones DRM_FORMAT_ARGB8888, 19909c7e370SLee Jones DRM_FORMAT_ABGR8888, 20009c7e370SLee Jones DRM_FORMAT_RGBA8888, 20109c7e370SLee Jones DRM_FORMAT_BGRX8888, 20209c7e370SLee Jones DRM_FORMAT_BGRA8888, 203da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 20409c7e370SLee Jones DRM_FORMAT_XRGB8888, 20509c7e370SLee Jones DRM_FORMAT_XBGR8888, 20609c7e370SLee Jones DRM_FORMAT_RGBX8888, 20709c7e370SLee Jones DRM_FORMAT_RGB888, 20809c7e370SLee Jones DRM_FORMAT_BGR888, 20909c7e370SLee Jones DRM_FORMAT_RGB565, 21009c7e370SLee Jones DRM_FORMAT_BGR565, 21109c7e370SLee Jones DRM_FORMAT_ARGB1555, 21209c7e370SLee Jones DRM_FORMAT_ABGR1555, 21309c7e370SLee Jones DRM_FORMAT_RGBA5551, 21409c7e370SLee Jones DRM_FORMAT_BGRA5551, 21509c7e370SLee Jones DRM_FORMAT_XRGB1555, 21609c7e370SLee Jones DRM_FORMAT_XBGR1555, 21709c7e370SLee Jones DRM_FORMAT_RGBX5551, 21809c7e370SLee Jones DRM_FORMAT_BGRX5551, 21909c7e370SLee Jones DRM_FORMAT_ARGB4444, 22009c7e370SLee Jones DRM_FORMAT_ABGR4444, 22109c7e370SLee Jones DRM_FORMAT_RGBA4444, 22209c7e370SLee Jones DRM_FORMAT_BGRA4444, 22309c7e370SLee Jones DRM_FORMAT_XRGB4444, 22409c7e370SLee Jones DRM_FORMAT_XBGR4444, 22509c7e370SLee Jones DRM_FORMAT_RGBX4444, 22609c7e370SLee Jones DRM_FORMAT_BGRX4444, 22709c7e370SLee Jones 228f07c9946SJessica Zhang DRM_FORMAT_P010, 22909c7e370SLee Jones DRM_FORMAT_NV12, 23009c7e370SLee Jones DRM_FORMAT_NV21, 23109c7e370SLee Jones DRM_FORMAT_NV16, 23209c7e370SLee Jones DRM_FORMAT_NV61, 23309c7e370SLee Jones DRM_FORMAT_VYUY, 23409c7e370SLee Jones DRM_FORMAT_UYVY, 23509c7e370SLee Jones DRM_FORMAT_YUYV, 23609c7e370SLee Jones DRM_FORMAT_YVYU, 23709c7e370SLee Jones DRM_FORMAT_YUV420, 23809c7e370SLee Jones DRM_FORMAT_YVU420, 23909c7e370SLee Jones }; 24009c7e370SLee Jones 241dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 242dabfdd89SVinod Polimera DRM_FORMAT_NV12, 243dabfdd89SVinod Polimera /* TODO add formats after validation */ 244dabfdd89SVinod Polimera }; 245dabfdd89SVinod Polimera 24653324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 24753324b99SAbhinav Kumar DRM_FORMAT_RGB565, 24853324b99SAbhinav Kumar DRM_FORMAT_BGR565, 24953324b99SAbhinav Kumar DRM_FORMAT_RGB888, 25053324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 25153324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 25253324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 25353324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 25453324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 25553324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 25653324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 25753324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 25853324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 25953324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 26053324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 26153324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 26253324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 26353324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 26453324b99SAbhinav Kumar DRM_FORMAT_BGR565, 26553324b99SAbhinav Kumar DRM_FORMAT_BGR888, 26653324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 26753324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 26853324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 26953324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 27053324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 27153324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 27253324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 27353324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 27453324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 27553324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 27653324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 27753324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 27853324b99SAbhinav Kumar }; 27953324b99SAbhinav Kumar 28025fdd593SJeykumar Sankaran /************************************************************* 28125fdd593SJeykumar Sankaran * DPU sub blocks config 28225fdd593SJeykumar Sankaran *************************************************************/ 28325fdd593SJeykumar Sankaran /* DPU top level caps */ 28494391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 28594391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 28694391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 28794391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 28894391a14SAngeloGioacchino Del Regno .smart_dma_rev = DPU_SSPP_SMART_DMA_V1, 28994391a14SAngeloGioacchino Del Regno .ubwc_version = DPU_HW_UBWC_VER_10, 29094391a14SAngeloGioacchino Del Regno .has_src_split = true, 29194391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 29294391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 29394391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 29494391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 29594391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 29694391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 29794391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 29894391a14SAngeloGioacchino Del Regno }; 29994391a14SAngeloGioacchino Del Regno 300c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 301c162352eSKonrad Dybcio .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 302c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 303c162352eSKonrad Dybcio .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 304c162352eSKonrad Dybcio .ubwc_version = DPU_HW_UBWC_VER_20, 305c162352eSKonrad Dybcio .has_dim_layer = true, 306c162352eSKonrad Dybcio .has_idle_pc = true, 307c162352eSKonrad Dybcio .max_linewidth = 2160, 308c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 309c162352eSKonrad Dybcio }; 310c162352eSKonrad Dybcio 31125fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 31225fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 31325fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 31425fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 31525fdd593SJeykumar Sankaran .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 31625fdd593SJeykumar Sankaran .ubwc_version = DPU_HW_UBWC_VER_20, 31725fdd593SJeykumar Sankaran .has_src_split = true, 31825fdd593SJeykumar Sankaran .has_dim_layer = true, 31925fdd593SJeykumar Sankaran .has_idle_pc = true, 32042a558b7SKalyan Thota .has_3d_merge = true, 3217e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3227e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3237e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3247e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 32525fdd593SJeykumar Sankaran }; 32625fdd593SJeykumar Sankaran 3277bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3287bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3297bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3307bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3317bdc0c4bSKalyan Thota .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 3327bdc0c4bSKalyan Thota .ubwc_version = DPU_HW_UBWC_VER_20, 3337bdc0c4bSKalyan Thota .has_dim_layer = true, 3347bdc0c4bSKalyan Thota .has_idle_pc = true, 3357e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3367e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3377bdc0c4bSKalyan Thota }; 3387bdc0c4bSKalyan Thota 3393581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = { 3403581b706SAdam Skladowski .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3413581b706SAdam Skladowski .max_mixer_blendstages = 0x4, 3423581b706SAdam Skladowski .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 3433581b706SAdam Skladowski .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 3443581b706SAdam Skladowski .ubwc_version = DPU_HW_UBWC_VER_20, 3453581b706SAdam Skladowski .has_dim_layer = true, 3463581b706SAdam Skladowski .has_idle_pc = true, 3473581b706SAdam Skladowski .max_linewidth = 2160, 3483581b706SAdam Skladowski .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3493581b706SAdam Skladowski }; 3503581b706SAdam Skladowski 351386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 352386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 353386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 354386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 355386fced3SJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 356386fced3SJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_30, 357386fced3SJonathan Marek .has_src_split = true, 358386fced3SJonathan Marek .has_dim_layer = true, 359386fced3SJonathan Marek .has_idle_pc = true, 360386fced3SJonathan Marek .has_3d_merge = true, 361386fced3SJonathan Marek .max_linewidth = 4096, 362386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 363386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 364386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 365386fced3SJonathan Marek }; 366386fced3SJonathan Marek 367f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 368f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 369f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 370f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 371f3af2d6eSRob Clark .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 372f3af2d6eSRob Clark .ubwc_version = DPU_HW_UBWC_VER_30, 373f3af2d6eSRob Clark .has_src_split = true, 374f3af2d6eSRob Clark .has_dim_layer = true, 375f3af2d6eSRob Clark .has_idle_pc = true, 376f3af2d6eSRob Clark .has_3d_merge = true, 377f3af2d6eSRob Clark .max_linewidth = 4096, 378f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 379f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 380f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 381f3af2d6eSRob Clark }; 382f3af2d6eSRob Clark 383af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 384af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 385af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 386d21fc5dfSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 387af776a3eSJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 388af776a3eSJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_40, 389af776a3eSJonathan Marek .has_src_split = true, 390af776a3eSJonathan Marek .has_dim_layer = true, 391af776a3eSJonathan Marek .has_idle_pc = true, 392af776a3eSJonathan Marek .has_3d_merge = true, 393af776a3eSJonathan Marek .max_linewidth = 4096, 394af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 395af776a3eSJonathan Marek }; 396af776a3eSJonathan Marek 3970e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = { 3980e91bcbbSRobert Foss .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3990e91bcbbSRobert Foss .max_mixer_blendstages = 0xb, 4000e91bcbbSRobert Foss .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 4010e91bcbbSRobert Foss .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 4020e91bcbbSRobert Foss .ubwc_version = DPU_HW_UBWC_VER_40, 4030e91bcbbSRobert Foss .has_src_split = true, 4040e91bcbbSRobert Foss .has_dim_layer = true, 4050e91bcbbSRobert Foss .has_idle_pc = true, 4060e91bcbbSRobert Foss .has_3d_merge = true, 4070e91bcbbSRobert Foss .max_linewidth = 4096, 4080e91bcbbSRobert Foss .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4090e91bcbbSRobert Foss }; 4100e91bcbbSRobert Foss 411100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = { 412100d7ef6SDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 413100d7ef6SDmitry Baryshkov .max_mixer_blendstages = 0xb, 414100d7ef6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 415100d7ef6SDmitry Baryshkov .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 416100d7ef6SDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 417100d7ef6SDmitry Baryshkov .has_src_split = true, 418100d7ef6SDmitry Baryshkov .has_dim_layer = true, 419100d7ef6SDmitry Baryshkov .has_idle_pc = true, 420100d7ef6SDmitry Baryshkov .has_3d_merge = true, 421100d7ef6SDmitry Baryshkov .max_linewidth = 5120, 422100d7ef6SDmitry Baryshkov .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 423100d7ef6SDmitry Baryshkov }; 424100d7ef6SDmitry Baryshkov 425591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 426591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 427591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 428591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 429591e34a0SKrishna Manikandan .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 430591e34a0SKrishna Manikandan .ubwc_version = DPU_HW_UBWC_VER_30, 431591e34a0SKrishna Manikandan .has_dim_layer = true, 432591e34a0SKrishna Manikandan .has_idle_pc = true, 433591e34a0SKrishna Manikandan .max_linewidth = 2400, 434591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 435591e34a0SKrishna Manikandan }; 436591e34a0SKrishna Manikandan 43794391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 43894391a14SAngeloGioacchino Del Regno { 43994391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 44094391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 44194391a14SAngeloGioacchino Del Regno .features = 0, 44294391a14SAngeloGioacchino Del Regno .highest_bank_bit = 0x2, 44394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 44494391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 44594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 44694391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 44794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 44894391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 44994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 45094391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 45194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 45294391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 45394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 45494391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 45594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 45694391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 45794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 45894391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 45994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 46094391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 46194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 46294391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 46394391a14SAngeloGioacchino Del Regno }, 46494391a14SAngeloGioacchino Del Regno }; 46594391a14SAngeloGioacchino Del Regno 466abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 46725fdd593SJeykumar Sankaran { 46825fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 46925fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 47003490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 47125fdd593SJeykumar Sankaran .highest_bank_bit = 0x2, 47225fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 47325fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 47425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 47525fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 47625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 47725fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 47825fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 47925fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 48025fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 48125fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 48225fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 48325fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 48425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 48525fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 48625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 48725fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 48825fdd593SJeykumar Sankaran }, 48925fdd593SJeykumar Sankaran }; 49025fdd593SJeykumar Sankaran 4917bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 4927bdc0c4bSKalyan Thota { 4937bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 4947bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 4957bdc0c4bSKalyan Thota .features = 0, 4967bdc0c4bSKalyan Thota .highest_bank_bit = 0x3, 4977bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 4987bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 4997bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5007bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 5017bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 5027b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 5037b149f2bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 5047b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 5057bdc0c4bSKalyan Thota }, 5067bdc0c4bSKalyan Thota }; 5077bdc0c4bSKalyan Thota 508f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 509f3af2d6eSRob Clark { 510f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 511f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 512f3af2d6eSRob Clark .features = 0, 513f3af2d6eSRob Clark .highest_bank_bit = 0x3, 514f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 515f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 516f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 517f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 518f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 519f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 520f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 521f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 522f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 523f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 524f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 525f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 526f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 527f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 528f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 529f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 530f3af2d6eSRob Clark }, 531f3af2d6eSRob Clark }; 532f3af2d6eSRob Clark 5333581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 5343581b706SAdam Skladowski { 5353581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 5363581b706SAdam Skladowski .base = 0x0, .len = 0x494, 5373581b706SAdam Skladowski .features = 0, 5383581b706SAdam Skladowski .highest_bank_bit = 0x1, 5393581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5403581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 5413581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5423581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 5433581b706SAdam Skladowski }, 5443581b706SAdam Skladowski }; 5453581b706SAdam Skladowski 546af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 547af776a3eSJonathan Marek { 548af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 549b910a020SRobert Foss .base = 0x0, .len = 0x494, 550af776a3eSJonathan Marek .features = 0, 551af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 552af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 553af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 554af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 555af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 556af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 557af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 558af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 559af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 560af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 561af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 562af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 563af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 564af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 565af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 566af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 567af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 568af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 569af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 57053324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 57153324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 572af776a3eSJonathan Marek }, 573af776a3eSJonathan Marek }; 574af776a3eSJonathan Marek 5750e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = { 5760e91bcbbSRobert Foss { 5770e91bcbbSRobert Foss .name = "top_0", .id = MDP_TOP, 5780e91bcbbSRobert Foss .base = 0x0, .len = 0x494, 5790e91bcbbSRobert Foss .features = 0, 5800e91bcbbSRobert Foss .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 5810e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5820e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 0}, 5830e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 5840e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 0}, 5850e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 5860e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 0}, 5870e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 5880e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 0}, 5890e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5900e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 8}, 5910e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 5920e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 8}, 5930e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 5940e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 8}, 5950e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 5960e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 8}, 5970e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 5980e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 20}, 5990e91bcbbSRobert Foss }, 6000e91bcbbSRobert Foss }; 6010e91bcbbSRobert Foss 602100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = { 603100d7ef6SDmitry Baryshkov { 604100d7ef6SDmitry Baryshkov .name = "top_0", .id = MDP_TOP, 605100d7ef6SDmitry Baryshkov .base = 0x0, .len = 0x494, 606100d7ef6SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 607100d7ef6SDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 608100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 609100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 0}, 610100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 611100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 0}, 612100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 613100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 0}, 614100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 615100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 0}, 616100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 617100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 8}, 618100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 619100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 8}, 620100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 621100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 8}, 622100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 623100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 8}, 624100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 625100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 20}, 626100d7ef6SDmitry Baryshkov }, 627100d7ef6SDmitry Baryshkov }; 628100d7ef6SDmitry Baryshkov 629591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 630591e34a0SKrishna Manikandan { 631591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 632591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 633591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 634591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 635591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 636591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 637591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 638591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 639591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 640591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 641591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 642591e34a0SKrishna Manikandan }, 643591e34a0SKrishna Manikandan }; 644591e34a0SKrishna Manikandan 6455334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 6465334087eSLoic Poulain { 6475334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 6485334087eSLoic Poulain .base = 0x0, .len = 0x494, 6495334087eSLoic Poulain .features = 0, 6505334087eSLoic Poulain .highest_bank_bit = 0x2, 6515334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6525334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 6535334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6545334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 6555334087eSLoic Poulain }, 6565334087eSLoic Poulain }; 6575334087eSLoic Poulain 65825fdd593SJeykumar Sankaran /************************************************************* 65925fdd593SJeykumar Sankaran * CTL sub blocks config 66025fdd593SJeykumar Sankaran *************************************************************/ 66194391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 66294391a14SAngeloGioacchino Del Regno { 66394391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 66494391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 66594391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 66694391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 66794391a14SAngeloGioacchino Del Regno }, 66894391a14SAngeloGioacchino Del Regno { 66994391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 67094391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 67194391a14SAngeloGioacchino Del Regno .features = 0, 67294391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 67394391a14SAngeloGioacchino Del Regno }, 67494391a14SAngeloGioacchino Del Regno { 67594391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 67694391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 67794391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 67894391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 67994391a14SAngeloGioacchino Del Regno }, 68094391a14SAngeloGioacchino Del Regno { 68194391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 68294391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 68394391a14SAngeloGioacchino Del Regno .features = 0, 68494391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 68594391a14SAngeloGioacchino Del Regno }, 68694391a14SAngeloGioacchino Del Regno { 68794391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 68894391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 68994391a14SAngeloGioacchino Del Regno .features = 0, 69094391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 69194391a14SAngeloGioacchino Del Regno }, 69294391a14SAngeloGioacchino Del Regno }; 69394391a14SAngeloGioacchino Del Regno 694abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 69525fdd593SJeykumar Sankaran { 69625fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 69725fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 698667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 699667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 70025fdd593SJeykumar Sankaran }, 70125fdd593SJeykumar Sankaran { 70225fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 70325fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 704667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 705667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 70625fdd593SJeykumar Sankaran }, 70725fdd593SJeykumar Sankaran { 70825fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 70925fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 710667e9985SDmitry Baryshkov .features = 0, 711667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 71225fdd593SJeykumar Sankaran }, 71325fdd593SJeykumar Sankaran { 71425fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 71525fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 716667e9985SDmitry Baryshkov .features = 0, 717667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 71825fdd593SJeykumar Sankaran }, 71925fdd593SJeykumar Sankaran { 72025fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 72125fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 722667e9985SDmitry Baryshkov .features = 0, 723667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 72425fdd593SJeykumar Sankaran }, 72525fdd593SJeykumar Sankaran }; 72625fdd593SJeykumar Sankaran 7277bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 7287bdc0c4bSKalyan Thota { 7297bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 7307bdc0c4bSKalyan Thota .base = 0x1000, .len = 0xE4, 731667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 732667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 7337bdc0c4bSKalyan Thota }, 7347bdc0c4bSKalyan Thota { 7357bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 7367bdc0c4bSKalyan Thota .base = 0x1200, .len = 0xE4, 737667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 738667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 7397bdc0c4bSKalyan Thota }, 7407bdc0c4bSKalyan Thota { 7417bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 7427bdc0c4bSKalyan Thota .base = 0x1400, .len = 0xE4, 743667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 744667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 7457bdc0c4bSKalyan Thota }, 7467bdc0c4bSKalyan Thota }; 7477bdc0c4bSKalyan Thota 748386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 749386fced3SJonathan Marek { 750386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 751386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 752667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 753667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 754386fced3SJonathan Marek }, 755386fced3SJonathan Marek { 756386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 757386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 758667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 759667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 760386fced3SJonathan Marek }, 761386fced3SJonathan Marek { 762386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 763386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 764667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 765667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 766386fced3SJonathan Marek }, 767386fced3SJonathan Marek { 768386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 769386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 770667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 771667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 772386fced3SJonathan Marek }, 773386fced3SJonathan Marek { 774386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 775386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 776667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 777667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 778386fced3SJonathan Marek }, 779386fced3SJonathan Marek { 780386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 781386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 782667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 783667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 784386fced3SJonathan Marek }, 785386fced3SJonathan Marek }; 786386fced3SJonathan Marek 7870e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = { 7880e91bcbbSRobert Foss { 7890e91bcbbSRobert Foss .name = "ctl_0", .id = CTL_0, 7900e91bcbbSRobert Foss .base = 0x15000, .len = 0x1e8, 7910e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 7920e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 7930e91bcbbSRobert Foss }, 7940e91bcbbSRobert Foss { 7950e91bcbbSRobert Foss .name = "ctl_1", .id = CTL_1, 7960e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 7970e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 7980e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 7990e91bcbbSRobert Foss }, 8000e91bcbbSRobert Foss { 8010e91bcbbSRobert Foss .name = "ctl_2", .id = CTL_2, 8020e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 8030e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 8040e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8050e91bcbbSRobert Foss }, 8060e91bcbbSRobert Foss { 8070e91bcbbSRobert Foss .name = "ctl_3", .id = CTL_3, 8080e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 8090e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 8100e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 8110e91bcbbSRobert Foss }, 8120e91bcbbSRobert Foss { 8130e91bcbbSRobert Foss .name = "ctl_4", .id = CTL_4, 8140e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 8150e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 8160e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 8170e91bcbbSRobert Foss }, 8180e91bcbbSRobert Foss { 8190e91bcbbSRobert Foss .name = "ctl_5", .id = CTL_5, 8200e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 8210e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 8220e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 8230e91bcbbSRobert Foss }, 8240e91bcbbSRobert Foss }; 8250e91bcbbSRobert Foss 826100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = { 827100d7ef6SDmitry Baryshkov { 828100d7ef6SDmitry Baryshkov .name = "ctl_0", .id = CTL_0, 829100d7ef6SDmitry Baryshkov .base = 0x15000, .len = 0x204, 830100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 831100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 832100d7ef6SDmitry Baryshkov }, 833100d7ef6SDmitry Baryshkov { 834100d7ef6SDmitry Baryshkov .name = "ctl_1", .id = CTL_1, 8350e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 8360e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 837100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 838100d7ef6SDmitry Baryshkov }, 839100d7ef6SDmitry Baryshkov { 840100d7ef6SDmitry Baryshkov .name = "ctl_2", .id = CTL_2, 8410e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 8420e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 843100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 844100d7ef6SDmitry Baryshkov }, 845100d7ef6SDmitry Baryshkov { 846100d7ef6SDmitry Baryshkov .name = "ctl_3", .id = CTL_3, 8470e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 8480e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 849100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 850100d7ef6SDmitry Baryshkov }, 851100d7ef6SDmitry Baryshkov { 852100d7ef6SDmitry Baryshkov .name = "ctl_4", .id = CTL_4, 8530e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 8540e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 855100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 856100d7ef6SDmitry Baryshkov }, 857100d7ef6SDmitry Baryshkov { 858100d7ef6SDmitry Baryshkov .name = "ctl_5", .id = CTL_5, 8590e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 8600e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 861100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 862100d7ef6SDmitry Baryshkov }, 863100d7ef6SDmitry Baryshkov }; 864100d7ef6SDmitry Baryshkov 865591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 866591e34a0SKrishna Manikandan { 867591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 868591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 869667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 870667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 871591e34a0SKrishna Manikandan }, 872591e34a0SKrishna Manikandan { 873591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 874591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 875667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 876667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 877591e34a0SKrishna Manikandan }, 878591e34a0SKrishna Manikandan { 879591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 880591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 881667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 882667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 883591e34a0SKrishna Manikandan }, 884591e34a0SKrishna Manikandan { 885591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 886591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 887667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 888667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 889591e34a0SKrishna Manikandan }, 890591e34a0SKrishna Manikandan }; 891591e34a0SKrishna Manikandan 8925334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 8935334087eSLoic Poulain { 8945334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 8955334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 8965334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 8975334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8985334087eSLoic Poulain }, 8995334087eSLoic Poulain }; 9005334087eSLoic Poulain 90125fdd593SJeykumar Sankaran /************************************************************* 90225fdd593SJeykumar Sankaran * SSPP sub blocks config 90325fdd593SJeykumar Sankaran *************************************************************/ 90425fdd593SJeykumar Sankaran 90525fdd593SJeykumar Sankaran /* SSPP common configuration */ 906b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 90725fdd593SJeykumar Sankaran { \ 90825fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 90925fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 91025fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 91125fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 91225fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 91325fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 914b75ab05aSShubhashree Dhar .id = qseed_ver, \ 91525fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 91625fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 91725fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 91825fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 91925fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 920e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 92125fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 922e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 923dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 924dabfdd89SVinod Polimera } 925dabfdd89SVinod Polimera 926dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 927dabfdd89SVinod Polimera { \ 928dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 929dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 930dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 931dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 932dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 933dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 934dabfdd89SVinod Polimera .id = qseed_ver, \ 935dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 936dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 937dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 938dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 939dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 940dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 941dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 942dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 943dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 94425fdd593SJeykumar Sankaran } 94525fdd593SJeykumar Sankaran 94625fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 94725fdd593SJeykumar Sankaran { \ 94825fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 94925fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 95025fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 95125fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 95225fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 95325fdd593SJeykumar Sankaran .format_list = plane_formats, \ 954e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 95525fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 956e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 95725fdd593SJeykumar Sankaran } 95825fdd593SJeykumar Sankaran 95994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 96094391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 96194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 96294391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 96394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 96494391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 96594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 96694391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 96794391a14SAngeloGioacchino Del Regno 968dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 969dabfdd89SVinod Polimera .rot_maxheight = 1088, 970dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 971dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 972dabfdd89SVinod Polimera }; 973dabfdd89SVinod Polimera 974b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 975b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 976b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 977b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 978b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 979b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 980b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 981b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 98225fdd593SJeykumar Sankaran 98325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 98425fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 98525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 98625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 98725fdd593SJeykumar Sankaran 98807ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \ 98907ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 99025fdd593SJeykumar Sankaran { \ 99125fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 99225fdd593SJeykumar Sankaran .base = _base, .len = 0x1c8, \ 99307ca1fc0SSravanthi Kollukuduru .features = _features, \ 99425fdd593SJeykumar Sankaran .sblk = &_sblk, \ 99525fdd593SJeykumar Sankaran .xin_id = _xinid, \ 99607ca1fc0SSravanthi Kollukuduru .type = _type, \ 99725fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 99825fdd593SJeykumar Sankaran } 99925fdd593SJeykumar Sankaran 100094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 100194391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK, 100294391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 100394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK, 100494391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 100594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK, 100694391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 100794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK, 100894391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 100994391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_MSM8998_MASK, 101094391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 101194391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_MSM8998_MASK, 101294391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 101394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_MSM8998_MASK, 101494391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 101594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_MSM8998_MASK, 101694391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 101794391a14SAngeloGioacchino Del Regno }; 101894391a14SAngeloGioacchino Del Regno 1019abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 102007ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK, 102107ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 102207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK, 102307ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 102407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK, 102507ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 102607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK, 102707ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 102807ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 102907ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 103007ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 103107ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 103207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 103307ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 103407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 103507ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 103625fdd593SJeykumar Sankaran }; 103725fdd593SJeykumar Sankaran 1038b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 1039b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 1040b75ab05aSShubhashree Dhar 1041dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 1042dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 1043dabfdd89SVinod Polimera 10447bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 10457bdc0c4bSKalyan Thota SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1046b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 10477bdc0c4bSKalyan Thota SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 10487bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 10497b149f2bSKalyan Thota SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 10507b149f2bSKalyan Thota sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 10517bdc0c4bSKalyan Thota SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 10527b149f2bSKalyan Thota sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 10537bdc0c4bSKalyan Thota }; 10547bdc0c4bSKalyan Thota 10553581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 10563581b706SAdam Skladowski _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE); 10573581b706SAdam Skladowski 10583581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 10593581b706SAdam Skladowski SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 10603581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 10613581b706SAdam Skladowski SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 10623581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 10633581b706SAdam Skladowski }; 10643581b706SAdam Skladowski 1065d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 1066d21fc5dfSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1067d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 1068d21fc5dfSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1069d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 1070d21fc5dfSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1071d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 1072d21fc5dfSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1073d21fc5dfSDmitry Baryshkov 1074d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 1075d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 1076d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1077d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 1078d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1079d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 1080d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1081d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 1082d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1083d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1084d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1085d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1086d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1087d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1088d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1089d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1090d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1091d21fc5dfSDmitry Baryshkov }; 1092d21fc5dfSDmitry Baryshkov 1093100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 1094100d7ef6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1095100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 1096100d7ef6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1097100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 1098100d7ef6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1099100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 1100100d7ef6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1101100d7ef6SDmitry Baryshkov 1102100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = { 1103100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1104100d7ef6SDmitry Baryshkov sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1105100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1106100d7ef6SDmitry Baryshkov sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1107100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1108100d7ef6SDmitry Baryshkov sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1109100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1110100d7ef6SDmitry Baryshkov sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1111100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1112100d7ef6SDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1113100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1114100d7ef6SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1115100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1116100d7ef6SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1117100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1118100d7ef6SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1119100d7ef6SDmitry Baryshkov }; 1120100d7ef6SDmitry Baryshkov 1121591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 1122dabfdd89SVinod Polimera SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK, 1123dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1124591e34a0SKrishna Manikandan SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1125591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1126591e34a0SKrishna Manikandan SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 1127591e34a0SKrishna Manikandan sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1128591e34a0SKrishna Manikandan SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1129591e34a0SKrishna Manikandan sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1130591e34a0SKrishna Manikandan }; 1131591e34a0SKrishna Manikandan 11325334087eSLoic Poulain 11335334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 11345334087eSLoic Poulain { \ 11355334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 11365334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 11375334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 11385334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 11395334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 11405334087eSLoic Poulain .format_list = plane_formats_yuv, \ 11415334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 11425334087eSLoic Poulain .virt_format_list = plane_formats, \ 11435334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 11445334087eSLoic Poulain } 11455334087eSLoic Poulain 11465334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 11475334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 11485334087eSLoic Poulain 11495334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 11505334087eSLoic Poulain SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK, 11515334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 11525334087eSLoic Poulain SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 11535334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 11545334087eSLoic Poulain }; 11555334087eSLoic Poulain 115625fdd593SJeykumar Sankaran /************************************************************* 115725fdd593SJeykumar Sankaran * MIXER sub blocks config 115825fdd593SJeykumar Sankaran *************************************************************/ 11597bdc0c4bSKalyan Thota 1160e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 116125fdd593SJeykumar Sankaran { \ 116225fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 116325fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 11647bdc0c4bSKalyan Thota .features = _fmask, \ 11657bdc0c4bSKalyan Thota .sblk = _sblk, \ 116625fdd593SJeykumar Sankaran .pingpong = _pp, \ 1167e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1168e47616dfSKalyan Thota .dspp = _dspp \ 116925fdd593SJeykumar Sankaran } 117025fdd593SJeykumar Sankaran 117194391a14SAngeloGioacchino Del Regno /* MSM8998 */ 117294391a14SAngeloGioacchino Del Regno 117394391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 117494391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 117594391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 117694391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 117794391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 117894391a14SAngeloGioacchino Del Regno 0x260, 0x290 117994391a14SAngeloGioacchino Del Regno }, 118094391a14SAngeloGioacchino Del Regno }; 118194391a14SAngeloGioacchino Del Regno 118294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 11832d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 118494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 11852d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 118694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 11872d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 118894391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 11892d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 119094391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 11912d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 119294391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 11932d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 119494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 119594391a14SAngeloGioacchino Del Regno }; 119694391a14SAngeloGioacchino Del Regno 119794391a14SAngeloGioacchino Del Regno /* SDM845 */ 119894391a14SAngeloGioacchino Del Regno 119994391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 120094391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 120194391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 120294391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 120394391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 120494391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 120594391a14SAngeloGioacchino Del Regno }, 120694391a14SAngeloGioacchino Del Regno }; 120794391a14SAngeloGioacchino Del Regno 1208abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 12097bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1210e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 12117bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1212e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 12137bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1214e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 12157bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1216e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 12177bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1218e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 12197bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1220e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 12217bdc0c4bSKalyan Thota }; 12227bdc0c4bSKalyan Thota 12237bdc0c4bSKalyan Thota /* SC7180 */ 12247bdc0c4bSKalyan Thota 12257bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 12267bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 12277bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 12287bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 12297bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 12307bdc0c4bSKalyan Thota }, 12317bdc0c4bSKalyan Thota }; 12327bdc0c4bSKalyan Thota 12337bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 12347bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 1235e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 12367bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SC7180_MASK, 1237e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 123825fdd593SJeykumar Sankaran }; 123925fdd593SJeykumar Sankaran 1240386fced3SJonathan Marek /* SM8150 */ 1241386fced3SJonathan Marek 1242386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1243386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 124405ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1245386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 124605ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1247386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1248386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1249386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1250386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1251386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1252386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1253386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1254386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1255386fced3SJonathan Marek }; 1256386fced3SJonathan Marek 1257591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 1258591e34a0SKrishna Manikandan LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 1259fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 1260591e34a0SKrishna Manikandan LM_BLK("lm_2", LM_2, 0x46000, MIXER_SC7180_MASK, 1261591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 1262591e34a0SKrishna Manikandan LM_BLK("lm_3", LM_3, 0x47000, MIXER_SC7180_MASK, 1263591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1264591e34a0SKrishna Manikandan }; 1265591e34a0SKrishna Manikandan 12665334087eSLoic Poulain /* QCM2290 */ 12675334087eSLoic Poulain 12685334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 12695334087eSLoic Poulain .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 12705334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 12715334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 12725334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 12735334087eSLoic Poulain }, 12745334087eSLoic Poulain }; 12755334087eSLoic Poulain 12765334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 12775334087eSLoic Poulain LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 12785334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 12795334087eSLoic Poulain }; 12805334087eSLoic Poulain 128125fdd593SJeykumar Sankaran /************************************************************* 1282e47616dfSKalyan Thota * DSPP sub blocks config 1283e47616dfSKalyan Thota *************************************************************/ 128494391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 128594391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 128694391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 128794391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 128894391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 128994391a14SAngeloGioacchino Del Regno }; 129094391a14SAngeloGioacchino Del Regno 12914259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 12924259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 12934259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 12944259ff7aSKalyan Thota }; 12954259ff7aSKalyan Thota 129605ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 129705ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 129805ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 129905ae91d9SDmitry Baryshkov }; 130005ae91d9SDmitry Baryshkov 1301862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1302e47616dfSKalyan Thota {\ 1303e47616dfSKalyan Thota .name = _name, .id = _id, \ 1304e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1305862314bcSAngeloGioacchino Del Regno .features = _mask, \ 130605ae91d9SDmitry Baryshkov .sblk = _sblk \ 1307e47616dfSKalyan Thota } 1308e47616dfSKalyan Thota 130994391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 131094391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 131194391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 131294391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 131394391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 131494391a14SAngeloGioacchino Del Regno }; 131594391a14SAngeloGioacchino Del Regno 1316e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1317862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1318862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 131905ae91d9SDmitry Baryshkov }; 132005ae91d9SDmitry Baryshkov 132105ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1322862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1323862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1324862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1325862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1326862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1327862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1328862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1329862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1330e47616dfSKalyan Thota }; 1331386fced3SJonathan Marek 13325334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 13335334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 13345334087eSLoic Poulain &sm8150_dspp_sblk), 13355334087eSLoic Poulain }; 13365334087eSLoic Poulain 1337e47616dfSKalyan Thota /************************************************************* 133825fdd593SJeykumar Sankaran * PINGPONG sub blocks config 133925fdd593SJeykumar Sankaran *************************************************************/ 134025fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 134125fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 134225fdd593SJeykumar Sankaran .version = 0x1}, 134325fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 134425fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 134525fdd593SJeykumar Sankaran }; 134625fdd593SJeykumar Sankaran 134725fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 134825fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 134925fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 135025fdd593SJeykumar Sankaran }; 135125fdd593SJeykumar Sankaran 1352591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1353591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1354591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1355591e34a0SKrishna Manikandan }; 1356591e34a0SKrishna Manikandan 1357667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 135825fdd593SJeykumar Sankaran {\ 135925fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 136025fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 136125fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 13624369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1363667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1364667e9985SDmitry Baryshkov .intr_done = _done, \ 1365667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 136625fdd593SJeykumar Sankaran } 1367667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 136825fdd593SJeykumar Sankaran {\ 136925fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 137025fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 137125fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 13724369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1373667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1374667e9985SDmitry Baryshkov .intr_done = _done, \ 1375667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 137625fdd593SJeykumar Sankaran } 137725fdd593SJeykumar Sankaran 1378abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1379667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1380667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1381667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1382667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1383667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1384667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1385667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1386667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1387667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1388667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1389667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1390667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 139125fdd593SJeykumar Sankaran }; 139225fdd593SJeykumar Sankaran 13937bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = { 1394667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1395667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 13967bdc0c4bSKalyan Thota }; 13977bdc0c4bSKalyan Thota 1398386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1399667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1400667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1401667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1402667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1403667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1404667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1405667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1406667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1407667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1408667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1409667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1410667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1411667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1412667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1413667e9985SDmitry Baryshkov -1), 1414667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 14153431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1416667e9985SDmitry Baryshkov -1), 14174369c93cSDmitry Baryshkov }; 14184369c93cSDmitry Baryshkov 14190e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = { 14200e91bcbbSRobert Foss PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 14210e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 14220e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 14230e91bcbbSRobert Foss PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 14240e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 14250e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 14260e91bcbbSRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 14270e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 14280e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 14290e91bcbbSRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 14300e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 14310e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 14320e91bcbbSRobert Foss PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 14330e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 14340e91bcbbSRobert Foss -1), 14350e91bcbbSRobert Foss PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 14360e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 14370e91bcbbSRobert Foss -1), 14380e91bcbbSRobert Foss }; 14390e91bcbbSRobert Foss 14401a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = { 14411a5b5372SRobert Foss PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), 14421a5b5372SRobert Foss PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 14431a5b5372SRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 14441a5b5372SRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 14451a5b5372SRobert Foss }; 14461a5b5372SRobert Foss 14475334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = { 14485334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 14495334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 14505334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 14515334087eSLoic Poulain }; 14525334087eSLoic Poulain 1453100d7ef6SDmitry Baryshkov /* FIXME: interrupts */ 1454100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = { 1455100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 1456100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1457100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1458100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 1459100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1460100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1461100d7ef6SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 1462100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1463100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1464100d7ef6SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 1465100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1466100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1467100d7ef6SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 1468100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1469100d7ef6SDmitry Baryshkov -1), 1470100d7ef6SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 1471100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1472100d7ef6SDmitry Baryshkov -1), 1473100d7ef6SDmitry Baryshkov PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk, 1474100d7ef6SDmitry Baryshkov -1, 1475100d7ef6SDmitry Baryshkov -1), 1476100d7ef6SDmitry Baryshkov PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk, 1477100d7ef6SDmitry Baryshkov -1, 1478100d7ef6SDmitry Baryshkov -1), 1479100d7ef6SDmitry Baryshkov }; 1480100d7ef6SDmitry Baryshkov 14814369c93cSDmitry Baryshkov /************************************************************* 14824369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 14834369c93cSDmitry Baryshkov *************************************************************/ 14844369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 14854369c93cSDmitry Baryshkov {\ 14864369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 14874369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 14884369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 14894369c93cSDmitry Baryshkov .sblk = NULL \ 14904369c93cSDmitry Baryshkov } 14914369c93cSDmitry Baryshkov 14924369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 14934369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 14944369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 14954369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1496386fced3SJonathan Marek }; 1497386fced3SJonathan Marek 14980e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { 14990e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 15000e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 15010e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 15020e91bcbbSRobert Foss }; 15030e91bcbbSRobert Foss 1504100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = { 1505100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1506100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1507100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1508100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00), 1509100d7ef6SDmitry Baryshkov }; 1510100d7ef6SDmitry Baryshkov 15117c5ab05eSVinod Koul /************************************************************* 15127c5ab05eSVinod Koul * DSC sub blocks config 15137c5ab05eSVinod Koul *************************************************************/ 15147c5ab05eSVinod Koul #define DSC_BLK(_name, _id, _base) \ 15157c5ab05eSVinod Koul {\ 15167c5ab05eSVinod Koul .name = _name, .id = _id, \ 15177c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 15187c5ab05eSVinod Koul .features = 0, \ 15197c5ab05eSVinod Koul } 15207c5ab05eSVinod Koul 15217c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = { 15227c5ab05eSVinod Koul DSC_BLK("dsc_0", DSC_0, 0x80000), 15237c5ab05eSVinod Koul DSC_BLK("dsc_1", DSC_1, 0x80400), 15247c5ab05eSVinod Koul DSC_BLK("dsc_2", DSC_2, 0x80800), 15257c5ab05eSVinod Koul DSC_BLK("dsc_3", DSC_3, 0x80c00), 15267c5ab05eSVinod Koul }; 15277c5ab05eSVinod Koul 15280e91bcbbSRobert Foss static struct dpu_dsc_cfg sm8350_dsc[] = { 15290e91bcbbSRobert Foss DSC_BLK("dsc_0", DSC_0, 0x80000), 15300e91bcbbSRobert Foss DSC_BLK("dsc_1", DSC_1, 0x81000), 15310e91bcbbSRobert Foss }; 15320e91bcbbSRobert Foss 153325fdd593SJeykumar Sankaran /************************************************************* 153425fdd593SJeykumar Sankaran * INTF sub blocks config 153525fdd593SJeykumar Sankaran *************************************************************/ 1536667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 153725fdd593SJeykumar Sankaran {\ 153825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 153925fdd593SJeykumar Sankaran .base = _base, .len = 0x280, \ 1540cace3ac4SJonathan Marek .features = _features, \ 154125fdd593SJeykumar Sankaran .type = _type, \ 154225fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1543667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1544667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1545667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 154625fdd593SJeykumar Sankaran } 154725fdd593SJeykumar Sankaran 154894391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 154994391a14SAngeloGioacchino Del Regno INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 155094391a14SAngeloGioacchino Del Regno INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 155194391a14SAngeloGioacchino Del Regno INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 155294391a14SAngeloGioacchino Del Regno INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 155394391a14SAngeloGioacchino Del Regno }; 155494391a14SAngeloGioacchino Del Regno 1555abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 1556667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1557667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1558667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1559667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 156025fdd593SJeykumar Sankaran }; 156125fdd593SJeykumar Sankaran 15627bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 1563bb3de286SBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1564667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 15657bdc0c4bSKalyan Thota }; 15667bdc0c4bSKalyan Thota 1567386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 1568667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1569667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1570667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1571667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1572386fced3SJonathan Marek }; 1573386fced3SJonathan Marek 1574591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 1575ef7837ffSSankeerth Billakanti INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1576667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1577ef7837ffSSankeerth Billakanti INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1578591e34a0SKrishna Manikandan }; 1579591e34a0SKrishna Manikandan 15800e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = { 15810e91bcbbSRobert Foss INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 15820e91bcbbSRobert Foss INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 15830e91bcbbSRobert Foss INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 15840e91bcbbSRobert Foss INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 15850e91bcbbSRobert Foss }; 15860e91bcbbSRobert Foss 1587f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 1588f3af2d6eSRob Clark INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1589f3af2d6eSRob Clark INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1590f3af2d6eSRob Clark INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1591f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 1592f3af2d6eSRob Clark INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1593f3af2d6eSRob Clark INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 1594f3af2d6eSRob Clark INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1595f3af2d6eSRob Clark }; 1596f3af2d6eSRob Clark 15975334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 15985334087eSLoic Poulain INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0), 15995334087eSLoic Poulain INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 16005334087eSLoic Poulain }; 16015334087eSLoic Poulain 1602100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = { 1603100d7ef6SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1604100d7ef6SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1605100d7ef6SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1606100d7ef6SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1607100d7ef6SDmitry Baryshkov }; 1608100d7ef6SDmitry Baryshkov 160925fdd593SJeykumar Sankaran /************************************************************* 161053324b99SAbhinav Kumar * Writeback blocks config 161153324b99SAbhinav Kumar *************************************************************/ 161253324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1613a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 161453324b99SAbhinav Kumar { \ 161553324b99SAbhinav Kumar .name = _name, .id = _id, \ 161653324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 161753324b99SAbhinav Kumar .features = _features, \ 161853324b99SAbhinav Kumar .format_list = wb2_formats, \ 161953324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 162053324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 162153324b99SAbhinav Kumar .xin_id = __xin_id, \ 162253324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1623a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 162453324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 162553324b99SAbhinav Kumar } 162653324b99SAbhinav Kumar 162753324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 162853324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1629a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 163053324b99SAbhinav Kumar }; 163153324b99SAbhinav Kumar 163253324b99SAbhinav Kumar /************************************************************* 163325fdd593SJeykumar Sankaran * VBIF sub blocks config 163425fdd593SJeykumar Sankaran *************************************************************/ 163525fdd593SJeykumar Sankaran /* VBIF QOS remap */ 163694391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 163794391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1638abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1639abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 164025fdd593SJeykumar Sankaran 164194391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 164294391a14SAngeloGioacchino Del Regno { 164394391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 164494391a14SAngeloGioacchino Del Regno .ot_limit = 2, 164594391a14SAngeloGioacchino Del Regno }, 164694391a14SAngeloGioacchino Del Regno { 164794391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 164894391a14SAngeloGioacchino Del Regno .ot_limit = 6, 164994391a14SAngeloGioacchino Del Regno }, 165094391a14SAngeloGioacchino Del Regno { 165194391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 165294391a14SAngeloGioacchino Del Regno .ot_limit = 16, 165394391a14SAngeloGioacchino Del Regno }, 165494391a14SAngeloGioacchino Del Regno }; 165594391a14SAngeloGioacchino Del Regno 165694391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 165794391a14SAngeloGioacchino Del Regno { 1658606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 165994391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 166094391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 166194391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 166294391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 166394391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 1664c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 166594391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 166694391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 166794391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 166894391a14SAngeloGioacchino Del Regno }, 166994391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 167094391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 167194391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 167294391a14SAngeloGioacchino Del Regno }, 167394391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 167494391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 167594391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 167694391a14SAngeloGioacchino Del Regno }, 167794391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 167894391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 167994391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 168094391a14SAngeloGioacchino Del Regno }, 168194391a14SAngeloGioacchino Del Regno .memtype_count = 14, 168294391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 168394391a14SAngeloGioacchino Del Regno }, 168494391a14SAngeloGioacchino Del Regno }; 168594391a14SAngeloGioacchino Del Regno 1686abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 168725fdd593SJeykumar Sankaran { 1688606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 168925fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 169025fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 169125fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 1692c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 169325fdd593SJeykumar Sankaran .qos_rt_tbl = { 169425fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 169525fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 169625fdd593SJeykumar Sankaran }, 169725fdd593SJeykumar Sankaran .qos_nrt_tbl = { 169825fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 169925fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 170025fdd593SJeykumar Sankaran }, 170125fdd593SJeykumar Sankaran .memtype_count = 14, 170225fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 170325fdd593SJeykumar Sankaran }, 170425fdd593SJeykumar Sankaran }; 170525fdd593SJeykumar Sankaran 1706abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 170725fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 170825fdd593SJeykumar Sankaran }; 170925fdd593SJeykumar Sankaran 1710386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 1711386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 1712386fced3SJonathan Marek }; 1713386fced3SJonathan Marek 1714af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 1715af776a3eSJonathan Marek .base = 0x0, 1716af776a3eSJonathan Marek .version = 0x00010002, 1717af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 1718af776a3eSJonathan Marek .xin_id = 7, 1719af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1720af776a3eSJonathan Marek }; 1721af776a3eSJonathan Marek 17220e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 17230e91bcbbSRobert Foss .base = 0x400, 17240e91bcbbSRobert Foss .version = 0x00020000, 17250e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 17260e91bcbbSRobert Foss .xin_id = 7, 17270e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 17280e91bcbbSRobert Foss }; 17290e91bcbbSRobert Foss 1730100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 1731100d7ef6SDmitry Baryshkov .base = 0x0, 1732100d7ef6SDmitry Baryshkov .version = 0x00020000, 1733100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 1734100d7ef6SDmitry Baryshkov .xin_id = 7, 1735100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1736100d7ef6SDmitry Baryshkov }; 1737100d7ef6SDmitry Baryshkov 173825fdd593SJeykumar Sankaran /************************************************************* 173925fdd593SJeykumar Sankaran * PERF data config 174025fdd593SJeykumar Sankaran *************************************************************/ 174125fdd593SJeykumar Sankaran 174225fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 174394391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 174494391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 174594391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 174694391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 174794391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 174894391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 174994391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 175094391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 175194391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 175294391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 175394391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 175494391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 175594391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 175694391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 175794391a14SAngeloGioacchino Del Regno }; 175894391a14SAngeloGioacchino Del Regno 1759abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 176025fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 176125fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 176225fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 176325fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 176425fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 176525fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 176625fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 176725fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 176825fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 176925fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 177025fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 177125fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 177225fdd593SJeykumar Sankaran }; 177325fdd593SJeykumar Sankaran 177494391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 177594391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 177694391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 177794391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 177894391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 177994391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 178094391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 178194391a14SAngeloGioacchino Del Regno }; 178294391a14SAngeloGioacchino Del Regno 17837bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 17847bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 17857bdc0c4bSKalyan Thota }; 17867bdc0c4bSKalyan Thota 1787386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 1788386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 1789386fced3SJonathan Marek }; 1790386fced3SJonathan Marek 1791f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 1792f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 1793f3af2d6eSRob Clark }; 1794f3af2d6eSRob Clark 17955334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 17965334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 17975334087eSLoic Poulain }; 17985334087eSLoic Poulain 1799abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 180025fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 180125fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 180225fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 180325fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 180425fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 180525fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 180625fdd593SJeykumar Sankaran }; 180725fdd593SJeykumar Sankaran 18087bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 18097bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 18107bdc0c4bSKalyan Thota }; 18117bdc0c4bSKalyan Thota 1812f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 1813f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 1814f3af2d6eSRob Clark }; 1815f3af2d6eSRob Clark 181694391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 181794391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 181894391a14SAngeloGioacchino Del Regno }; 181994391a14SAngeloGioacchino Del Regno 1820abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 182125fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 182225fdd593SJeykumar Sankaran }; 182325fdd593SJeykumar Sankaran 18247bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 18257bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 18267bdc0c4bSKalyan Thota }; 18277bdc0c4bSKalyan Thota 182894391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 182994391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 183094391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 183194391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 183294391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 183394391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 183494391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 183594391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 183694391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 183794391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 183894391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 183994391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 184094391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 184194391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 184294391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 184394391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 184494391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 184594391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 184694391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 184794391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 184894391a14SAngeloGioacchino Del Regno }, 184994391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 185094391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 185194391a14SAngeloGioacchino Del Regno }, 185294391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 185394391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 185494391a14SAngeloGioacchino Del Regno }, 185594391a14SAngeloGioacchino Del Regno }, 185694391a14SAngeloGioacchino Del Regno .cdp_cfg = { 185794391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 185894391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 185994391a14SAngeloGioacchino Del Regno }, 186094391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 186194391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 186294391a14SAngeloGioacchino Del Regno }; 186394391a14SAngeloGioacchino Del Regno 1864abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 186525fdd593SJeykumar Sankaran .max_bw_low = 6800000, 186625fdd593SJeykumar Sankaran .max_bw_high = 6800000, 186725fdd593SJeykumar Sankaran .min_core_ib = 2400000, 186825fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 186925fdd593SJeykumar Sankaran .min_dram_ib = 800000, 187025fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 187125fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 187225fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 187325fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 187425fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 187525fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 187625fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 187725fdd593SJeykumar Sankaran .amortizable_threshold = 25, 187825fdd593SJeykumar Sankaran .min_prefill_lines = 24, 187925fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 18805bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 188125fdd593SJeykumar Sankaran .qos_lut_tbl = { 188225fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 188325fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 188425fdd593SJeykumar Sankaran }, 188525fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 188625fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 188725fdd593SJeykumar Sankaran }, 188825fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 188925fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 189025fdd593SJeykumar Sankaran }, 189125fdd593SJeykumar Sankaran }, 189225fdd593SJeykumar Sankaran .cdp_cfg = { 189325fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 189425fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 189525fdd593SJeykumar Sankaran }, 18964f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 18974f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 189825fdd593SJeykumar Sankaran }; 189925fdd593SJeykumar Sankaran 19007bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 190171dc6c08SKrishna Manikandan .max_bw_low = 6800000, 190271dc6c08SKrishna Manikandan .max_bw_high = 6800000, 19037bdc0c4bSKalyan Thota .min_core_ib = 2400000, 19047bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 1905c33b7c03SKalyan Thota .min_dram_ib = 1600000, 1906c33b7c03SKalyan Thota .min_prefill_lines = 24, 19077bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 19085bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 19097bdc0c4bSKalyan Thota .qos_lut_tbl = { 19107bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 19117bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 19127bdc0c4bSKalyan Thota }, 19137bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 19147bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 19157bdc0c4bSKalyan Thota }, 19167bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 19177bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 19187bdc0c4bSKalyan Thota }, 19197bdc0c4bSKalyan Thota }, 19207bdc0c4bSKalyan Thota .cdp_cfg = { 19217bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 19227bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 19237bdc0c4bSKalyan Thota }, 1924c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 1925c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 19267bdc0c4bSKalyan Thota }; 19277bdc0c4bSKalyan Thota 19283581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 19293581b706SAdam Skladowski .max_bw_low = 3100000, 19303581b706SAdam Skladowski .max_bw_high = 4000000, 19313581b706SAdam Skladowski .min_core_ib = 2400000, 19323581b706SAdam Skladowski .min_llcc_ib = 800000, 19333581b706SAdam Skladowski .min_dram_ib = 800000, 19343581b706SAdam Skladowski .min_prefill_lines = 24, 19353581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 19363581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 19373581b706SAdam Skladowski .qos_lut_tbl = { 19383581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 19393581b706SAdam Skladowski .entries = sc7180_qos_linear 19403581b706SAdam Skladowski }, 19413581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 19423581b706SAdam Skladowski .entries = sc7180_qos_macrotile 19433581b706SAdam Skladowski }, 19443581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 19453581b706SAdam Skladowski .entries = sc7180_qos_nrt 19463581b706SAdam Skladowski }, 19473581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 19483581b706SAdam Skladowski }, 19493581b706SAdam Skladowski .cdp_cfg = { 19503581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 19513581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 19523581b706SAdam Skladowski }, 19533581b706SAdam Skladowski .clk_inefficiency_factor = 105, 19543581b706SAdam Skladowski .bw_inefficiency_factor = 120, 19553581b706SAdam Skladowski }; 19563581b706SAdam Skladowski 1957386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 1958386fced3SJonathan Marek .max_bw_low = 12800000, 1959386fced3SJonathan Marek .max_bw_high = 12800000, 1960386fced3SJonathan Marek .min_core_ib = 2400000, 1961386fced3SJonathan Marek .min_llcc_ib = 800000, 1962386fced3SJonathan Marek .min_dram_ib = 800000, 19634f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 1964386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 19655bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 1966386fced3SJonathan Marek .qos_lut_tbl = { 1967386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 1968386fced3SJonathan Marek .entries = sm8150_qos_linear 1969386fced3SJonathan Marek }, 1970386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1971386fced3SJonathan Marek .entries = sc7180_qos_macrotile 1972386fced3SJonathan Marek }, 1973386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1974386fced3SJonathan Marek .entries = sc7180_qos_nrt 1975386fced3SJonathan Marek }, 1976386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1977386fced3SJonathan Marek }, 1978386fced3SJonathan Marek .cdp_cfg = { 1979386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1980386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1981386fced3SJonathan Marek }, 19824f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 19834f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1984386fced3SJonathan Marek }; 1985386fced3SJonathan Marek 1986f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 1987f3af2d6eSRob Clark .max_bw_low = 9600000, 1988f3af2d6eSRob Clark .max_bw_high = 9600000, 1989f3af2d6eSRob Clark .min_core_ib = 2400000, 1990f3af2d6eSRob Clark .min_llcc_ib = 800000, 1991f3af2d6eSRob Clark .min_dram_ib = 800000, 1992f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 1993f3af2d6eSRob Clark .qos_lut_tbl = { 1994f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 1995f3af2d6eSRob Clark .entries = sc8180x_qos_linear 1996f3af2d6eSRob Clark }, 1997f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 1998f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 1999f3af2d6eSRob Clark }, 2000f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2001f3af2d6eSRob Clark .entries = sc7180_qos_nrt 2002f3af2d6eSRob Clark }, 2003f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 2004f3af2d6eSRob Clark }, 2005f3af2d6eSRob Clark .cdp_cfg = { 2006f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 2007f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 2008f3af2d6eSRob Clark }, 2009f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 2010f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 2011f3af2d6eSRob Clark }; 2012f3af2d6eSRob Clark 2013af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 2014af776a3eSJonathan Marek .max_bw_low = 13700000, 2015af776a3eSJonathan Marek .max_bw_high = 16600000, 2016af776a3eSJonathan Marek .min_core_ib = 4800000, 2017af776a3eSJonathan Marek .min_llcc_ib = 0, 2018af776a3eSJonathan Marek .min_dram_ib = 800000, 20194f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 2020af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 20215bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 2022af776a3eSJonathan Marek .qos_lut_tbl = { 2023af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2024af776a3eSJonathan Marek .entries = sc7180_qos_linear 2025af776a3eSJonathan Marek }, 2026af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2027af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 2028af776a3eSJonathan Marek }, 2029af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2030af776a3eSJonathan Marek .entries = sc7180_qos_nrt 2031af776a3eSJonathan Marek }, 2032af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2033af776a3eSJonathan Marek }, 2034af776a3eSJonathan Marek .cdp_cfg = { 2035af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2036af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2037af776a3eSJonathan Marek }, 20384f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 20394f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2040af776a3eSJonathan Marek }; 2041af776a3eSJonathan Marek 2042100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = { 2043100d7ef6SDmitry Baryshkov .max_bw_low = 13600000, 2044100d7ef6SDmitry Baryshkov .max_bw_high = 18200000, 2045100d7ef6SDmitry Baryshkov .min_core_ib = 2500000, 2046100d7ef6SDmitry Baryshkov .min_llcc_ib = 0, 2047100d7ef6SDmitry Baryshkov .min_dram_ib = 800000, 2048100d7ef6SDmitry Baryshkov .min_prefill_lines = 35, 2049100d7ef6SDmitry Baryshkov /* FIXME: lut tables */ 2050100d7ef6SDmitry Baryshkov .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 2051100d7ef6SDmitry Baryshkov .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 2052100d7ef6SDmitry Baryshkov .qos_lut_tbl = { 2053100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2054100d7ef6SDmitry Baryshkov .entries = sc7180_qos_linear 2055100d7ef6SDmitry Baryshkov }, 2056100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2057100d7ef6SDmitry Baryshkov .entries = sc7180_qos_macrotile 2058100d7ef6SDmitry Baryshkov }, 2059100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2060100d7ef6SDmitry Baryshkov .entries = sc7180_qos_nrt 2061100d7ef6SDmitry Baryshkov }, 2062100d7ef6SDmitry Baryshkov /* TODO: macrotile-qseed is different from macrotile */ 2063100d7ef6SDmitry Baryshkov }, 2064100d7ef6SDmitry Baryshkov .cdp_cfg = { 2065100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 1}, 2066100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 0} 2067100d7ef6SDmitry Baryshkov }, 2068100d7ef6SDmitry Baryshkov .clk_inefficiency_factor = 105, 2069100d7ef6SDmitry Baryshkov .bw_inefficiency_factor = 120, 2070100d7ef6SDmitry Baryshkov }; 2071100d7ef6SDmitry Baryshkov 2072591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 2073591e34a0SKrishna Manikandan .max_bw_low = 4700000, 2074591e34a0SKrishna Manikandan .max_bw_high = 8800000, 2075591e34a0SKrishna Manikandan .min_core_ib = 2500000, 2076591e34a0SKrishna Manikandan .min_llcc_ib = 0, 2077591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 2078591e34a0SKrishna Manikandan .min_prefill_lines = 24, 2079591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 20805bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 2081591e34a0SKrishna Manikandan .qos_lut_tbl = { 2082591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2083591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2084591e34a0SKrishna Manikandan }, 2085591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2086591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2087591e34a0SKrishna Manikandan }, 2088591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2089591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 2090591e34a0SKrishna Manikandan }, 2091591e34a0SKrishna Manikandan }, 2092591e34a0SKrishna Manikandan .cdp_cfg = { 2093591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 2094591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 2095591e34a0SKrishna Manikandan }, 2096591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 2097591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 2098591e34a0SKrishna Manikandan }; 2099591e34a0SKrishna Manikandan 21000e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = { 21010e91bcbbSRobert Foss .max_bw_low = 11800000, 21020e91bcbbSRobert Foss .max_bw_high = 15500000, 21030e91bcbbSRobert Foss .min_core_ib = 2500000, 21040e91bcbbSRobert Foss .min_llcc_ib = 0, 21050e91bcbbSRobert Foss .min_dram_ib = 800000, 21060e91bcbbSRobert Foss .min_prefill_lines = 40, 21070e91bcbbSRobert Foss /* FIXME: lut tables */ 21080e91bcbbSRobert Foss .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 21090e91bcbbSRobert Foss .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 21100e91bcbbSRobert Foss .qos_lut_tbl = { 21110e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_linear), 21120e91bcbbSRobert Foss .entries = sc7180_qos_linear 21130e91bcbbSRobert Foss }, 21140e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 21150e91bcbbSRobert Foss .entries = sc7180_qos_macrotile 21160e91bcbbSRobert Foss }, 21170e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 21180e91bcbbSRobert Foss .entries = sc7180_qos_nrt 21190e91bcbbSRobert Foss }, 21200e91bcbbSRobert Foss /* TODO: macrotile-qseed is different from macrotile */ 21210e91bcbbSRobert Foss }, 21220e91bcbbSRobert Foss .cdp_cfg = { 21230e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 1}, 21240e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 0} 21250e91bcbbSRobert Foss }, 21260e91bcbbSRobert Foss .clk_inefficiency_factor = 105, 21270e91bcbbSRobert Foss .bw_inefficiency_factor = 120, 21280e91bcbbSRobert Foss }; 21290e91bcbbSRobert Foss 21305334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 21315334087eSLoic Poulain .max_bw_low = 2700000, 21325334087eSLoic Poulain .max_bw_high = 2700000, 21335334087eSLoic Poulain .min_core_ib = 1300000, 21345334087eSLoic Poulain .min_llcc_ib = 0, 21355334087eSLoic Poulain .min_dram_ib = 1600000, 21365334087eSLoic Poulain .min_prefill_lines = 24, 21375334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 21385334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 21395334087eSLoic Poulain .qos_lut_tbl = { 21405334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 21415334087eSLoic Poulain .entries = qcm2290_qos_linear 21425334087eSLoic Poulain }, 21435334087eSLoic Poulain }, 21445334087eSLoic Poulain .cdp_cfg = { 21455334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 21465334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 21475334087eSLoic Poulain }, 21485334087eSLoic Poulain .clk_inefficiency_factor = 105, 21495334087eSLoic Poulain .bw_inefficiency_factor = 120, 21505334087eSLoic Poulain }; 215125fdd593SJeykumar Sankaran /************************************************************* 2152de7d480fSDmitry Baryshkov * Hardware catalog 215325fdd593SJeykumar Sankaran *************************************************************/ 215425fdd593SJeykumar Sankaran 2155de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 215694391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 215794391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 215894391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 215994391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 216094391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 216194391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 216294391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 216394391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 216494391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 21656452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 21666452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 216794391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 216894391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 216994391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 217094391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 217194391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 217294391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 217394391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 2174477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 217594391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 217694391a14SAngeloGioacchino Del Regno }; 217794391a14SAngeloGioacchino Del Regno 2178de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 217925fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 218025fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 218125fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 218225fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 218325fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 218425fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 218525fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 218625fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 218725fdd593SJeykumar Sankaran .mixer = sdm845_lm, 218825fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 218925fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 21907c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 21917c5ab05eSVinod Koul .dsc = sdm845_dsc, 219225fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 219325fdd593SJeykumar Sankaran .intf = sdm845_intf, 219425fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 219525fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 219625fdd593SJeykumar Sankaran .reg_dma_count = 1, 2197481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2198477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 2199597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 220025fdd593SJeykumar Sankaran }; 220125fdd593SJeykumar Sankaran 2202de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 22037bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 22047bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 22057bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 22067bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 22077bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 22087bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 22097bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 22107bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 22117bdc0c4bSKalyan Thota .mixer = sc7180_lm, 2212e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2213e47616dfSKalyan Thota .dspp = sc7180_dspp, 22147bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 22157bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 22167bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 22177bdc0c4bSKalyan Thota .intf = sc7180_intf, 221851e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 221951e4d60eSAbhinav Kumar .wb = sm8250_wb, 22207bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 22217bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 22227bdc0c4bSKalyan Thota .reg_dma_count = 1, 2223481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2224477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 2225597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 22267bdc0c4bSKalyan Thota }; 22277bdc0c4bSKalyan Thota 22283581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 22293581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 22303581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 22313581b706SAdam Skladowski .mdp = sm6115_mdp, 22323581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 22333581b706SAdam Skladowski .ctl = qcm2290_ctl, 22343581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 22353581b706SAdam Skladowski .sspp = sm6115_sspp, 22363581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 22373581b706SAdam Skladowski .mixer = qcm2290_lm, 22383581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 22393581b706SAdam Skladowski .dspp = qcm2290_dspp, 22403581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 22413581b706SAdam Skladowski .pingpong = qcm2290_pp, 22423581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 22433581b706SAdam Skladowski .intf = qcm2290_intf, 22443581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 22453581b706SAdam Skladowski .vbif = sdm845_vbif, 22463581b706SAdam Skladowski .perf = &sm6115_perf_data, 22473581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 22483581b706SAdam Skladowski }; 22493581b706SAdam Skladowski 2250de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 2251386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 2252386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 2253386fced3SJonathan Marek .mdp = sdm845_mdp, 2254386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2255386fced3SJonathan Marek .ctl = sm8150_ctl, 2256386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 2257386fced3SJonathan Marek .sspp = sdm845_sspp, 2258386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2259386fced3SJonathan Marek .mixer = sm8150_lm, 226005ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 226105ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 2262386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2263386fced3SJonathan Marek .pingpong = sm8150_pp, 22644369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 22654369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2266386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2267386fced3SJonathan Marek .intf = sm8150_intf, 2268386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2269386fced3SJonathan Marek .vbif = sdm845_vbif, 2270386fced3SJonathan Marek .reg_dma_count = 1, 2271481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2272477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 2273597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 2274386fced3SJonathan Marek }; 2275386fced3SJonathan Marek 2276de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 2277f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 2278f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 2279f3af2d6eSRob Clark .mdp = sc8180x_mdp, 2280f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 2281f3af2d6eSRob Clark .ctl = sm8150_ctl, 2282f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 2283f3af2d6eSRob Clark .sspp = sdm845_sspp, 2284f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 2285f3af2d6eSRob Clark .mixer = sm8150_lm, 2286f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 2287f3af2d6eSRob Clark .pingpong = sm8150_pp, 2288f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 2289f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 2290f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 2291f3af2d6eSRob Clark .intf = sc8180x_intf, 2292f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 2293f3af2d6eSRob Clark .vbif = sdm845_vbif, 2294f3af2d6eSRob Clark .reg_dma_count = 1, 2295481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2296477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 2297f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 2298f3af2d6eSRob Clark }; 2299f3af2d6eSRob Clark 2300de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 2301af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 2302af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 2303af776a3eSJonathan Marek .mdp = sm8250_mdp, 2304af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2305af776a3eSJonathan Marek .ctl = sm8150_ctl, 2306d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 2307d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 2308af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2309af776a3eSJonathan Marek .mixer = sm8150_lm, 231005ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 231105ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 2312af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2313af776a3eSJonathan Marek .pingpong = sm8150_pp, 23144369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 23154369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2316af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2317af776a3eSJonathan Marek .intf = sm8150_intf, 2318af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2319af776a3eSJonathan Marek .vbif = sdm845_vbif, 232053324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 232153324b99SAbhinav Kumar .wb = sm8250_wb, 2322af776a3eSJonathan Marek .reg_dma_count = 1, 2323481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2324477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2325597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2326af776a3eSJonathan Marek }; 2327af776a3eSJonathan Marek 23280e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = { 23290e91bcbbSRobert Foss .caps = &sm8350_dpu_caps, 23300e91bcbbSRobert Foss .mdp_count = ARRAY_SIZE(sm8350_mdp), 23310e91bcbbSRobert Foss .mdp = sm8350_mdp, 23320e91bcbbSRobert Foss .ctl_count = ARRAY_SIZE(sm8350_ctl), 23330e91bcbbSRobert Foss .ctl = sm8350_ctl, 23340e91bcbbSRobert Foss .sspp_count = ARRAY_SIZE(sm8250_sspp), 23350e91bcbbSRobert Foss .sspp = sm8250_sspp, 23360e91bcbbSRobert Foss .mixer_count = ARRAY_SIZE(sm8150_lm), 23370e91bcbbSRobert Foss .mixer = sm8150_lm, 23380e91bcbbSRobert Foss .dspp_count = ARRAY_SIZE(sm8150_dspp), 23390e91bcbbSRobert Foss .dspp = sm8150_dspp, 23400e91bcbbSRobert Foss .pingpong_count = ARRAY_SIZE(sm8350_pp), 23410e91bcbbSRobert Foss .pingpong = sm8350_pp, 23420e91bcbbSRobert Foss .dsc_count = ARRAY_SIZE(sm8350_dsc), 23430e91bcbbSRobert Foss .dsc = sm8350_dsc, 23440e91bcbbSRobert Foss .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 23450e91bcbbSRobert Foss .merge_3d = sm8350_merge_3d, 23460e91bcbbSRobert Foss .intf_count = ARRAY_SIZE(sm8350_intf), 23470e91bcbbSRobert Foss .intf = sm8350_intf, 23480e91bcbbSRobert Foss .vbif_count = ARRAY_SIZE(sdm845_vbif), 23490e91bcbbSRobert Foss .vbif = sdm845_vbif, 23500e91bcbbSRobert Foss .reg_dma_count = 1, 23510e91bcbbSRobert Foss .dma_cfg = &sm8250_regdma, 23520e91bcbbSRobert Foss .perf = &sm8350_perf_data, 23530e91bcbbSRobert Foss .mdss_irqs = IRQ_SM8350_MASK, 23540e91bcbbSRobert Foss }; 23550e91bcbbSRobert Foss 2356100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = { 2357100d7ef6SDmitry Baryshkov .caps = &sm8450_dpu_caps, 2358100d7ef6SDmitry Baryshkov .mdp_count = ARRAY_SIZE(sm8450_mdp), 2359100d7ef6SDmitry Baryshkov .mdp = sm8450_mdp, 2360100d7ef6SDmitry Baryshkov .ctl_count = ARRAY_SIZE(sm8450_ctl), 2361100d7ef6SDmitry Baryshkov .ctl = sm8450_ctl, 2362100d7ef6SDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8450_sspp), 2363100d7ef6SDmitry Baryshkov .sspp = sm8450_sspp, 2364100d7ef6SDmitry Baryshkov .mixer_count = ARRAY_SIZE(sm8150_lm), 2365100d7ef6SDmitry Baryshkov .mixer = sm8150_lm, 2366100d7ef6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 2367100d7ef6SDmitry Baryshkov .dspp = sm8150_dspp, 2368100d7ef6SDmitry Baryshkov .pingpong_count = ARRAY_SIZE(sm8450_pp), 2369100d7ef6SDmitry Baryshkov .pingpong = sm8450_pp, 2370100d7ef6SDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8450_merge_3d), 2371100d7ef6SDmitry Baryshkov .merge_3d = sm8450_merge_3d, 2372100d7ef6SDmitry Baryshkov .intf_count = ARRAY_SIZE(sm8450_intf), 2373100d7ef6SDmitry Baryshkov .intf = sm8450_intf, 2374100d7ef6SDmitry Baryshkov .vbif_count = ARRAY_SIZE(sdm845_vbif), 2375100d7ef6SDmitry Baryshkov .vbif = sdm845_vbif, 2376100d7ef6SDmitry Baryshkov .reg_dma_count = 1, 2377100d7ef6SDmitry Baryshkov .dma_cfg = &sm8450_regdma, 2378100d7ef6SDmitry Baryshkov .perf = &sm8450_perf_data, 2379100d7ef6SDmitry Baryshkov .mdss_irqs = IRQ_SM8450_MASK, 2380100d7ef6SDmitry Baryshkov }; 2381100d7ef6SDmitry Baryshkov 2382de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 2383591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 2384591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 2385591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 2386591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 2387591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 2388591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 2389591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 2390fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2391fca5ad26SKalyan Thota .dspp = sc7180_dspp, 2392591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 2393591e34a0SKrishna Manikandan .mixer = sc7280_lm, 2394591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 2395591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 2396591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 2397591e34a0SKrishna Manikandan .intf = sc7280_intf, 2398591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 2399591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 2400477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 2401597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 2402591e34a0SKrishna Manikandan }; 2403591e34a0SKrishna Manikandan 2404de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 24055334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 24065334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 24075334087eSLoic Poulain .mdp = qcm2290_mdp, 24085334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 24095334087eSLoic Poulain .ctl = qcm2290_ctl, 24105334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 24115334087eSLoic Poulain .sspp = qcm2290_sspp, 24125334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 24135334087eSLoic Poulain .mixer = qcm2290_lm, 24145334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 24155334087eSLoic Poulain .dspp = qcm2290_dspp, 24165334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 24175334087eSLoic Poulain .pingpong = qcm2290_pp, 24185334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 24195334087eSLoic Poulain .intf = qcm2290_intf, 24205334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 24215334087eSLoic Poulain .vbif = sdm845_vbif, 24225334087eSLoic Poulain .reg_dma_count = 1, 2423481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2424477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 24255334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 24265334087eSLoic Poulain }; 24275334087eSLoic Poulain 2428abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2429de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2430de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2431de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2432de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2433de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2434de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2435de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2436de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2437de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 24383581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2439de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 24400e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 2441de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 2442100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 244325fdd593SJeykumar Sankaran }; 244425fdd593SJeykumar Sankaran 2445de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 244625fdd593SJeykumar Sankaran { 244725fdd593SJeykumar Sankaran int i; 244825fdd593SJeykumar Sankaran 244925fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2450de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2451de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 245225fdd593SJeykumar Sankaran } 245325fdd593SJeykumar Sankaran 245425fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 245532084967SDmitry Baryshkov 245625fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 245725fdd593SJeykumar Sankaran } 245825fdd593SJeykumar Sankaran 2459