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