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 15a2a448b4SDmitry Baryshkov #define VIG_BASE_MASK \ 167bdc0c4bSKalyan Thota (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 17a2a448b4SDmitry Baryshkov BIT(DPU_SSPP_CDP) |\ 1825fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT)) 1925fdd593SJeykumar Sankaran 20a2a448b4SDmitry Baryshkov #define VIG_MASK \ 21a2a448b4SDmitry Baryshkov (VIG_BASE_MASK | \ 22a2a448b4SDmitry Baryshkov BIT(DPU_SSPP_CSC_10BIT)) 23a2a448b4SDmitry Baryshkov 2494391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \ 2594391a14SAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3)) 2694391a14SAngeloGioacchino Del Regno 277bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \ 28b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3)) 297bdc0c4bSKalyan Thota 307bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \ 31b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4)) 327bdc0c4bSKalyan Thota 33d21fc5dfSDmitry Baryshkov #define VIG_SM8250_MASK \ 34095eed89SDmitry Baryshkov (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3LITE)) 35d21fc5dfSDmitry Baryshkov 36a2a448b4SDmitry Baryshkov #define VIG_QCM2290_MASK (VIG_BASE_MASK | BIT(DPU_SSPP_QOS_8LVL)) 375334087eSLoic Poulain 3894391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \ 3994391a14SAngeloGioacchino Del Regno (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 4094391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 4194391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 4294391a14SAngeloGioacchino Del Regno 43dabfdd89SVinod Polimera #define VIG_SC7280_MASK \ 44dabfdd89SVinod Polimera (VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION)) 45dabfdd89SVinod Polimera 4625fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \ 4725fdd593SJeykumar Sankaran (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\ 4825fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 4925fdd593SJeykumar Sankaran BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 5025fdd593SJeykumar Sankaran 5107ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \ 5207ca1fc0SSravanthi Kollukuduru (DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR)) 5307ca1fc0SSravanthi Kollukuduru 5494391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \ 5594391a14SAngeloGioacchino Del Regno (DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR)) 5694391a14SAngeloGioacchino Del Regno 572d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \ 5825fdd593SJeykumar Sankaran (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER)) 5925fdd593SJeykumar Sankaran 602d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \ 612d8a4edbSDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 622d8a4edbSDmitry Baryshkov 6300feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \ 642d8a4edbSDmitry Baryshkov (BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 657bdc0c4bSKalyan Thota 6625fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER) 6725fdd593SJeykumar Sankaran 6825fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \ 6925fdd593SJeykumar Sankaran (PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2)) 7025fdd593SJeykumar Sankaran 71591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \ 7244bf8704SKalyan Thota (BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE) | BIT(DPU_CTL_VM_CFG)) 73591e34a0SKrishna Manikandan 74e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \ 75e92a4ae1SDmitry Baryshkov (CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4)) 76e92a4ae1SDmitry Baryshkov 774369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0) 784369c93cSDmitry Baryshkov 7994391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC) 8094391a14SAngeloGioacchino Del Regno 814259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) 82e47616dfSKalyan Thota 83cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0) 84cace3ac4SJonathan Marek 85cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) 86cace3ac4SJonathan Marek 87591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN) 88591e34a0SKrishna Manikandan 89597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 90597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 91597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 92597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 93597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 94597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 95597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 96597762d5SDmitry Baryshkov BIT(MDP_AD4_0_INTR) | \ 97597762d5SDmitry Baryshkov BIT(MDP_AD4_1_INTR)) 98597762d5SDmitry Baryshkov 99597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 100597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 101597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 102597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 103597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR)) 104597762d5SDmitry Baryshkov 105597762d5SDmitry Baryshkov #define IRQ_SC7280_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_7xxx_INTR) | \ 109597762d5SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 110597762d5SDmitry Baryshkov BIT(MDP_INTF5_7xxx_INTR)) 111597762d5SDmitry Baryshkov 112597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 113597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 114597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 115597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 116597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 117597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 118597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 119597762d5SDmitry Baryshkov BIT(MDP_INTF4_INTR)) 120597762d5SDmitry Baryshkov 1210e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1220e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_INTR2) | \ 1230e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1240e91bcbbSRobert Foss BIT(MDP_INTF0_7xxx_INTR) | \ 1250e91bcbbSRobert Foss BIT(MDP_INTF1_7xxx_INTR) | \ 1260e91bcbbSRobert Foss BIT(MDP_INTF2_7xxx_INTR) | \ 1277eb75dbdSRobert Foss BIT(MDP_INTF3_7xxx_INTR)) 1280e91bcbbSRobert Foss 129f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 130f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_INTR2) | \ 131f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 132f3af2d6eSRob Clark BIT(MDP_INTF0_INTR) | \ 133f3af2d6eSRob Clark BIT(MDP_INTF1_INTR) | \ 134f3af2d6eSRob Clark BIT(MDP_INTF2_INTR) | \ 135f3af2d6eSRob Clark BIT(MDP_INTF3_INTR) | \ 136f3af2d6eSRob Clark BIT(MDP_INTF4_INTR) | \ 137f3af2d6eSRob Clark BIT(MDP_INTF5_INTR) | \ 138f3af2d6eSRob Clark BIT(MDP_AD4_0_INTR) | \ 139f3af2d6eSRob Clark BIT(MDP_AD4_1_INTR)) 140597762d5SDmitry Baryshkov 1414a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1424a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_INTR2) | \ 1434a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1444a352c2fSBjorn Andersson BIT(MDP_INTF0_7xxx_INTR) | \ 1454a352c2fSBjorn Andersson BIT(MDP_INTF1_7xxx_INTR) | \ 1464a352c2fSBjorn Andersson BIT(MDP_INTF2_7xxx_INTR) | \ 1474a352c2fSBjorn Andersson BIT(MDP_INTF3_7xxx_INTR) | \ 1484a352c2fSBjorn Andersson BIT(MDP_INTF4_7xxx_INTR) | \ 1494a352c2fSBjorn Andersson BIT(MDP_INTF5_7xxx_INTR) | \ 1504a352c2fSBjorn Andersson BIT(MDP_INTF6_7xxx_INTR) | \ 1514a352c2fSBjorn Andersson BIT(MDP_INTF7_7xxx_INTR) | \ 1524a352c2fSBjorn Andersson BIT(MDP_INTF8_7xxx_INTR)) 1534a352c2fSBjorn Andersson 154100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 155100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 156100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 157100d7ef6SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 158100d7ef6SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 159100d7ef6SDmitry Baryshkov BIT(MDP_INTF2_7xxx_INTR) | \ 160100d7ef6SDmitry Baryshkov BIT(MDP_INTF3_7xxx_INTR)) 161100d7ef6SDmitry Baryshkov 16253324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ 16353324b99SAbhinav Kumar BIT(DPU_WB_UBWC) | \ 16453324b99SAbhinav Kumar BIT(DPU_WB_YUV_CONFIG) | \ 16553324b99SAbhinav Kumar BIT(DPU_WB_PIPE_ALPHA) | \ 16653324b99SAbhinav Kumar BIT(DPU_WB_XY_ROI_OFFSET) | \ 16753324b99SAbhinav Kumar BIT(DPU_WB_QOS) | \ 16853324b99SAbhinav Kumar BIT(DPU_WB_QOS_8LVL) | \ 16953324b99SAbhinav Kumar BIT(DPU_WB_CDP) | \ 17053324b99SAbhinav Kumar BIT(DPU_WB_INPUT_CTRL)) 17153324b99SAbhinav Kumar 17225fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) 17325fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH 2048 17425fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 17525fdd593SJeykumar Sankaran 17625fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION 4 17725fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION 4 17825fdd593SJeykumar Sankaran 17925fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO 20 18025fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO 4 18125fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE 1 18225fdd593SJeykumar Sankaran 18325fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y) 18425fdd593SJeykumar Sankaran 18509c7e370SLee Jones static const uint32_t plane_formats[] = { 18609c7e370SLee Jones DRM_FORMAT_ARGB8888, 18709c7e370SLee Jones DRM_FORMAT_ABGR8888, 18809c7e370SLee Jones DRM_FORMAT_RGBA8888, 18909c7e370SLee Jones DRM_FORMAT_BGRA8888, 19009c7e370SLee Jones DRM_FORMAT_XRGB8888, 19109c7e370SLee Jones DRM_FORMAT_RGBX8888, 19209c7e370SLee Jones DRM_FORMAT_BGRX8888, 19309c7e370SLee Jones DRM_FORMAT_XBGR8888, 194da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 19509c7e370SLee Jones DRM_FORMAT_RGB888, 19609c7e370SLee Jones DRM_FORMAT_BGR888, 19709c7e370SLee Jones DRM_FORMAT_RGB565, 19809c7e370SLee Jones DRM_FORMAT_BGR565, 19909c7e370SLee Jones DRM_FORMAT_ARGB1555, 20009c7e370SLee Jones DRM_FORMAT_ABGR1555, 20109c7e370SLee Jones DRM_FORMAT_RGBA5551, 20209c7e370SLee Jones DRM_FORMAT_BGRA5551, 20309c7e370SLee Jones DRM_FORMAT_XRGB1555, 20409c7e370SLee Jones DRM_FORMAT_XBGR1555, 20509c7e370SLee Jones DRM_FORMAT_RGBX5551, 20609c7e370SLee Jones DRM_FORMAT_BGRX5551, 20709c7e370SLee Jones DRM_FORMAT_ARGB4444, 20809c7e370SLee Jones DRM_FORMAT_ABGR4444, 20909c7e370SLee Jones DRM_FORMAT_RGBA4444, 21009c7e370SLee Jones DRM_FORMAT_BGRA4444, 21109c7e370SLee Jones DRM_FORMAT_XRGB4444, 21209c7e370SLee Jones DRM_FORMAT_XBGR4444, 21309c7e370SLee Jones DRM_FORMAT_RGBX4444, 21409c7e370SLee Jones DRM_FORMAT_BGRX4444, 21509c7e370SLee Jones }; 21609c7e370SLee Jones 21709c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 21809c7e370SLee Jones DRM_FORMAT_ARGB8888, 21909c7e370SLee Jones DRM_FORMAT_ABGR8888, 22009c7e370SLee Jones DRM_FORMAT_RGBA8888, 22109c7e370SLee Jones DRM_FORMAT_BGRX8888, 22209c7e370SLee Jones DRM_FORMAT_BGRA8888, 223da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 22409c7e370SLee Jones DRM_FORMAT_XRGB8888, 22509c7e370SLee Jones DRM_FORMAT_XBGR8888, 22609c7e370SLee Jones DRM_FORMAT_RGBX8888, 22709c7e370SLee Jones DRM_FORMAT_RGB888, 22809c7e370SLee Jones DRM_FORMAT_BGR888, 22909c7e370SLee Jones DRM_FORMAT_RGB565, 23009c7e370SLee Jones DRM_FORMAT_BGR565, 23109c7e370SLee Jones DRM_FORMAT_ARGB1555, 23209c7e370SLee Jones DRM_FORMAT_ABGR1555, 23309c7e370SLee Jones DRM_FORMAT_RGBA5551, 23409c7e370SLee Jones DRM_FORMAT_BGRA5551, 23509c7e370SLee Jones DRM_FORMAT_XRGB1555, 23609c7e370SLee Jones DRM_FORMAT_XBGR1555, 23709c7e370SLee Jones DRM_FORMAT_RGBX5551, 23809c7e370SLee Jones DRM_FORMAT_BGRX5551, 23909c7e370SLee Jones DRM_FORMAT_ARGB4444, 24009c7e370SLee Jones DRM_FORMAT_ABGR4444, 24109c7e370SLee Jones DRM_FORMAT_RGBA4444, 24209c7e370SLee Jones DRM_FORMAT_BGRA4444, 24309c7e370SLee Jones DRM_FORMAT_XRGB4444, 24409c7e370SLee Jones DRM_FORMAT_XBGR4444, 24509c7e370SLee Jones DRM_FORMAT_RGBX4444, 24609c7e370SLee Jones DRM_FORMAT_BGRX4444, 24709c7e370SLee Jones 248f07c9946SJessica Zhang DRM_FORMAT_P010, 24909c7e370SLee Jones DRM_FORMAT_NV12, 25009c7e370SLee Jones DRM_FORMAT_NV21, 25109c7e370SLee Jones DRM_FORMAT_NV16, 25209c7e370SLee Jones DRM_FORMAT_NV61, 25309c7e370SLee Jones DRM_FORMAT_VYUY, 25409c7e370SLee Jones DRM_FORMAT_UYVY, 25509c7e370SLee Jones DRM_FORMAT_YUYV, 25609c7e370SLee Jones DRM_FORMAT_YVYU, 25709c7e370SLee Jones DRM_FORMAT_YUV420, 25809c7e370SLee Jones DRM_FORMAT_YVU420, 25909c7e370SLee Jones }; 26009c7e370SLee Jones 261dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 262dabfdd89SVinod Polimera DRM_FORMAT_NV12, 263dabfdd89SVinod Polimera /* TODO add formats after validation */ 264dabfdd89SVinod Polimera }; 265dabfdd89SVinod Polimera 26653324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 26753324b99SAbhinav Kumar DRM_FORMAT_RGB565, 26853324b99SAbhinav Kumar DRM_FORMAT_BGR565, 26953324b99SAbhinav Kumar DRM_FORMAT_RGB888, 27053324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 27153324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 27253324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 27353324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 27453324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 27553324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 27653324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 27753324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 27853324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 27953324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 28053324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 28153324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 28253324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 28353324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 28453324b99SAbhinav Kumar DRM_FORMAT_BGR565, 28553324b99SAbhinav Kumar DRM_FORMAT_BGR888, 28653324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 28753324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 28853324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 28953324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 29053324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 29153324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 29253324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 29353324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 29453324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 29553324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 29653324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 29753324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 29853324b99SAbhinav Kumar }; 29953324b99SAbhinav Kumar 30025fdd593SJeykumar Sankaran /************************************************************* 30125fdd593SJeykumar Sankaran * DPU sub blocks config 30225fdd593SJeykumar Sankaran *************************************************************/ 30325fdd593SJeykumar Sankaran /* DPU top level caps */ 30494391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 30594391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 30694391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 30794391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 30894391a14SAngeloGioacchino Del Regno .smart_dma_rev = DPU_SSPP_SMART_DMA_V1, 30994391a14SAngeloGioacchino Del Regno .ubwc_version = DPU_HW_UBWC_VER_10, 31094391a14SAngeloGioacchino Del Regno .has_src_split = true, 31194391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 31294391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 31394391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 31494391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 31594391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 31694391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 31794391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 31894391a14SAngeloGioacchino Del Regno }; 31994391a14SAngeloGioacchino Del Regno 320c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 321*da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 322c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 323c162352eSKonrad Dybcio .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 324c162352eSKonrad Dybcio .has_dim_layer = true, 325c162352eSKonrad Dybcio .has_idle_pc = true, 326c162352eSKonrad Dybcio .max_linewidth = 2160, 327c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 328c162352eSKonrad Dybcio }; 329c162352eSKonrad Dybcio 33025fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 33125fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 33225fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 33325fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 33425fdd593SJeykumar Sankaran .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 33525fdd593SJeykumar Sankaran .ubwc_version = DPU_HW_UBWC_VER_20, 33625fdd593SJeykumar Sankaran .has_src_split = true, 33725fdd593SJeykumar Sankaran .has_dim_layer = true, 33825fdd593SJeykumar Sankaran .has_idle_pc = true, 33942a558b7SKalyan Thota .has_3d_merge = true, 3407e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3417e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3427e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3437e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 34425fdd593SJeykumar Sankaran }; 34525fdd593SJeykumar Sankaran 3467bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3477bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3487bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3497bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3507bdc0c4bSKalyan Thota .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 3517bdc0c4bSKalyan Thota .ubwc_version = DPU_HW_UBWC_VER_20, 3527bdc0c4bSKalyan Thota .has_dim_layer = true, 3537bdc0c4bSKalyan Thota .has_idle_pc = true, 3547e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3557e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3567bdc0c4bSKalyan Thota }; 3577bdc0c4bSKalyan Thota 3583581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = { 359*da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 3603581b706SAdam Skladowski .max_mixer_blendstages = 0x4, 3613581b706SAdam Skladowski .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 3623581b706SAdam Skladowski .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 3630b5a8e81SDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_10, 3643581b706SAdam Skladowski .has_dim_layer = true, 3653581b706SAdam Skladowski .has_idle_pc = true, 3663581b706SAdam Skladowski .max_linewidth = 2160, 3673581b706SAdam Skladowski .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3683581b706SAdam Skladowski }; 3693581b706SAdam Skladowski 370386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 371386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 372386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 373386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 374386fced3SJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 375386fced3SJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_30, 376386fced3SJonathan Marek .has_src_split = true, 377386fced3SJonathan Marek .has_dim_layer = true, 378386fced3SJonathan Marek .has_idle_pc = true, 379386fced3SJonathan Marek .has_3d_merge = true, 380386fced3SJonathan Marek .max_linewidth = 4096, 381386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 382386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 383386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 384386fced3SJonathan Marek }; 385386fced3SJonathan Marek 386f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 387f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 388f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 389f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 390f3af2d6eSRob Clark .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 391f3af2d6eSRob Clark .ubwc_version = DPU_HW_UBWC_VER_30, 392f3af2d6eSRob Clark .has_src_split = true, 393f3af2d6eSRob Clark .has_dim_layer = true, 394f3af2d6eSRob Clark .has_idle_pc = true, 395f3af2d6eSRob Clark .has_3d_merge = true, 396f3af2d6eSRob Clark .max_linewidth = 4096, 397f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 398f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 399f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 400f3af2d6eSRob Clark }; 401f3af2d6eSRob Clark 4024a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = { 4034a352c2fSBjorn Andersson .max_mixer_width = 2560, 4044a352c2fSBjorn Andersson .max_mixer_blendstages = 11, 4054a352c2fSBjorn Andersson .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 4064a352c2fSBjorn Andersson .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 4074a352c2fSBjorn Andersson .ubwc_version = DPU_HW_UBWC_VER_40, 4084a352c2fSBjorn Andersson .has_src_split = true, 4094a352c2fSBjorn Andersson .has_dim_layer = true, 4104a352c2fSBjorn Andersson .has_idle_pc = true, 4114a352c2fSBjorn Andersson .has_3d_merge = true, 4124a352c2fSBjorn Andersson .max_linewidth = 5120, 4134a352c2fSBjorn Andersson .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4144a352c2fSBjorn Andersson }; 4154a352c2fSBjorn Andersson 416af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 417af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 418af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 419d21fc5dfSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 420af776a3eSJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 421af776a3eSJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_40, 422af776a3eSJonathan Marek .has_src_split = true, 423af776a3eSJonathan Marek .has_dim_layer = true, 424af776a3eSJonathan Marek .has_idle_pc = true, 425af776a3eSJonathan Marek .has_3d_merge = true, 426af776a3eSJonathan Marek .max_linewidth = 4096, 427af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 428af776a3eSJonathan Marek }; 429af776a3eSJonathan Marek 4300e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = { 4310e91bcbbSRobert Foss .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 4320e91bcbbSRobert Foss .max_mixer_blendstages = 0xb, 4330e91bcbbSRobert Foss .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 4340e91bcbbSRobert Foss .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 4350e91bcbbSRobert Foss .ubwc_version = DPU_HW_UBWC_VER_40, 4360e91bcbbSRobert Foss .has_src_split = true, 4370e91bcbbSRobert Foss .has_dim_layer = true, 4380e91bcbbSRobert Foss .has_idle_pc = true, 4390e91bcbbSRobert Foss .has_3d_merge = true, 4400e91bcbbSRobert Foss .max_linewidth = 4096, 4410e91bcbbSRobert Foss .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4420e91bcbbSRobert Foss }; 4430e91bcbbSRobert Foss 444100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = { 445100d7ef6SDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 446100d7ef6SDmitry Baryshkov .max_mixer_blendstages = 0xb, 447100d7ef6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 448100d7ef6SDmitry Baryshkov .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 449100d7ef6SDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 450100d7ef6SDmitry Baryshkov .has_src_split = true, 451100d7ef6SDmitry Baryshkov .has_dim_layer = true, 452100d7ef6SDmitry Baryshkov .has_idle_pc = true, 453100d7ef6SDmitry Baryshkov .has_3d_merge = true, 454100d7ef6SDmitry Baryshkov .max_linewidth = 5120, 455100d7ef6SDmitry Baryshkov .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 456100d7ef6SDmitry Baryshkov }; 457100d7ef6SDmitry Baryshkov 458efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = { 459efcd0107SNeil Armstrong .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 460efcd0107SNeil Armstrong .max_mixer_blendstages = 0xb, 461efcd0107SNeil Armstrong .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 462efcd0107SNeil Armstrong .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 463efcd0107SNeil Armstrong .ubwc_version = DPU_HW_UBWC_VER_40, 464efcd0107SNeil Armstrong .has_src_split = true, 465efcd0107SNeil Armstrong .has_dim_layer = true, 466efcd0107SNeil Armstrong .has_idle_pc = true, 467efcd0107SNeil Armstrong .has_3d_merge = true, 468efcd0107SNeil Armstrong .max_linewidth = 5120, 469efcd0107SNeil Armstrong .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 470efcd0107SNeil Armstrong }; 471efcd0107SNeil Armstrong 472591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 473591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 474591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 475591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 476591e34a0SKrishna Manikandan .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 477591e34a0SKrishna Manikandan .ubwc_version = DPU_HW_UBWC_VER_30, 478591e34a0SKrishna Manikandan .has_dim_layer = true, 479591e34a0SKrishna Manikandan .has_idle_pc = true, 480591e34a0SKrishna Manikandan .max_linewidth = 2400, 481591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 482591e34a0SKrishna Manikandan }; 483591e34a0SKrishna Manikandan 48494391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 48594391a14SAngeloGioacchino Del Regno { 48694391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 48794391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 48894391a14SAngeloGioacchino Del Regno .features = 0, 48994391a14SAngeloGioacchino Del Regno .highest_bank_bit = 0x2, 49094391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 49194391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 49294391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 49394391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 49494391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 49594391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 49694391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 49794391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 49894391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 49994391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 50094391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 50194391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 50294391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 50394391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 50494391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 50594391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 50694391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 50794391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 50894391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 50994391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 51094391a14SAngeloGioacchino Del Regno }, 51194391a14SAngeloGioacchino Del Regno }; 51294391a14SAngeloGioacchino Del Regno 513abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 51425fdd593SJeykumar Sankaran { 51525fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 51625fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 51703490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 51825fdd593SJeykumar Sankaran .highest_bank_bit = 0x2, 51925fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 52025fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 52125fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 52225fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 52325fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 52425fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 52525fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 52625fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 52725fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 52825fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 52925fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 53025fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 53125fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 53225fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 53325fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 53425fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 53525fdd593SJeykumar Sankaran }, 53625fdd593SJeykumar Sankaran }; 53725fdd593SJeykumar Sankaran 5387bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 5397bdc0c4bSKalyan Thota { 5407bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 5417bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 5427bdc0c4bSKalyan Thota .features = 0, 5437bdc0c4bSKalyan Thota .highest_bank_bit = 0x3, 5447bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5457bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 5467bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5477bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 5487bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 5497b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 5507b149f2bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 5517b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 552255f0561SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_WB2] = { 553255f0561SDmitry Baryshkov .reg_off = 0x3B8, .bit_off = 24}, 5547bdc0c4bSKalyan Thota }, 5557bdc0c4bSKalyan Thota }; 5567bdc0c4bSKalyan Thota 557f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 558f3af2d6eSRob Clark { 559f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 560f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 56110a88954SDmitry Baryshkov .features = BIT(DPU_MDP_AUDIO_SELECT), 562f3af2d6eSRob Clark .highest_bank_bit = 0x3, 563f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 564f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 565f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 566f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 567f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 568f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 569f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 570f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 571f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 572f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 573f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 574f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 575f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 576f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 577f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 578f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 579f3af2d6eSRob Clark }, 580f3af2d6eSRob Clark }; 581f3af2d6eSRob Clark 5823581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 5833581b706SAdam Skladowski { 5843581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 5853581b706SAdam Skladowski .base = 0x0, .len = 0x494, 5863581b706SAdam Skladowski .features = 0, 5873581b706SAdam Skladowski .highest_bank_bit = 0x1, 58831c31805SDmitry Baryshkov .ubwc_swizzle = 0x7, 5893581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5903581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 5913581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5923581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 5933581b706SAdam Skladowski }, 5943581b706SAdam Skladowski }; 5953581b706SAdam Skladowski 596af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 597af776a3eSJonathan Marek { 598af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 599b910a020SRobert Foss .base = 0x0, .len = 0x494, 600af776a3eSJonathan Marek .features = 0, 601af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 60231c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 603af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 604af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 605af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 606af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 607af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 608af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 609af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 610af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 611af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 612af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 613af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 614af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 615af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 616af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 617af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 618af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 619af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 620af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 62153324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 62253324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 623af776a3eSJonathan Marek }, 624af776a3eSJonathan Marek }; 625af776a3eSJonathan Marek 6260e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = { 6270e91bcbbSRobert Foss { 6280e91bcbbSRobert Foss .name = "top_0", .id = MDP_TOP, 6290e91bcbbSRobert Foss .base = 0x0, .len = 0x494, 6300e91bcbbSRobert Foss .features = 0, 6310e91bcbbSRobert Foss .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 6320e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6330e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 0}, 6340e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 6350e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 0}, 6360e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 6370e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 0}, 6380e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 6390e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 0}, 6400e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6410e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 8}, 6420e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 6430e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 8}, 6440e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 6450e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 8}, 6460e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 6470e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 8}, 6480e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 6490e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 20}, 6500e91bcbbSRobert Foss }, 6510e91bcbbSRobert Foss }; 6520e91bcbbSRobert Foss 653100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = { 654100d7ef6SDmitry Baryshkov { 655100d7ef6SDmitry Baryshkov .name = "top_0", .id = MDP_TOP, 656100d7ef6SDmitry Baryshkov .base = 0x0, .len = 0x494, 657100d7ef6SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 658100d7ef6SDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 65931c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 660100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 661100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 0}, 662100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 663100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 0}, 664100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 665100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 0}, 666100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 667100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 0}, 668100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 669100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 8}, 670100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 671100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 8}, 672100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 673100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 8}, 674100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 675100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 8}, 676100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 677100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 20}, 678100d7ef6SDmitry Baryshkov }, 679100d7ef6SDmitry Baryshkov }; 680100d7ef6SDmitry Baryshkov 681591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 682591e34a0SKrishna Manikandan { 683591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 684591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 685591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 68631c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 687591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 688591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 689591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 690591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 691591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 692591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 693591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 694591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 695591e34a0SKrishna Manikandan }, 696591e34a0SKrishna Manikandan }; 697591e34a0SKrishna Manikandan 6984a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = { 6994a352c2fSBjorn Andersson { 7004a352c2fSBjorn Andersson .name = "top_0", .id = MDP_TOP, 7014a352c2fSBjorn Andersson .base = 0x0, .len = 0x494, 7020df979f4SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 7034a352c2fSBjorn Andersson .highest_bank_bit = 2, 7044a352c2fSBjorn Andersson .ubwc_swizzle = 6, 7054a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0}, 7064a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0}, 7074a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0}, 7084a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0}, 7094a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8}, 7104a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8}, 7114a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x2bc, .bit_off = 8}, 7124a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x2c4, .bit_off = 8}, 7134a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20}, 7144a352c2fSBjorn Andersson }, 7154a352c2fSBjorn Andersson }; 7164a352c2fSBjorn Andersson 717efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = { 718efcd0107SNeil Armstrong { 719efcd0107SNeil Armstrong .name = "top_0", .id = MDP_TOP, 720efcd0107SNeil Armstrong .base = 0, .len = 0x494, 721efcd0107SNeil Armstrong .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 722efcd0107SNeil Armstrong .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 72331c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 724efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 725efcd0107SNeil Armstrong .reg_off = 0x4330, .bit_off = 0}, 726efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 727efcd0107SNeil Armstrong .reg_off = 0x6330, .bit_off = 0}, 728efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 729efcd0107SNeil Armstrong .reg_off = 0x8330, .bit_off = 0}, 730efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 731efcd0107SNeil Armstrong .reg_off = 0xa330, .bit_off = 0}, 732efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 733efcd0107SNeil Armstrong .reg_off = 0x24330, .bit_off = 0}, 734efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 735efcd0107SNeil Armstrong .reg_off = 0x26330, .bit_off = 0}, 736efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 737efcd0107SNeil Armstrong .reg_off = 0x28330, .bit_off = 0}, 738efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 739efcd0107SNeil Armstrong .reg_off = 0x2a330, .bit_off = 0}, 740efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 741efcd0107SNeil Armstrong .reg_off = 0x2c330, .bit_off = 0}, 742efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 743efcd0107SNeil Armstrong .reg_off = 0x2e330, .bit_off = 0}, 744efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 745efcd0107SNeil Armstrong .reg_off = 0x2bc, .bit_off = 20}, 746efcd0107SNeil Armstrong }, 747efcd0107SNeil Armstrong }; 748efcd0107SNeil Armstrong 7495334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 7505334087eSLoic Poulain { 7515334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 7525334087eSLoic Poulain .base = 0x0, .len = 0x494, 7535334087eSLoic Poulain .features = 0, 7545334087eSLoic Poulain .highest_bank_bit = 0x2, 7555334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 7565334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 7575334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 7585334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 7595334087eSLoic Poulain }, 7605334087eSLoic Poulain }; 7615334087eSLoic Poulain 76225fdd593SJeykumar Sankaran /************************************************************* 76325fdd593SJeykumar Sankaran * CTL sub blocks config 76425fdd593SJeykumar Sankaran *************************************************************/ 76594391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 76694391a14SAngeloGioacchino Del Regno { 76794391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 76894391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 76994391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 77094391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 77194391a14SAngeloGioacchino Del Regno }, 77294391a14SAngeloGioacchino Del Regno { 77394391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 77494391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 77594391a14SAngeloGioacchino Del Regno .features = 0, 77694391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 77794391a14SAngeloGioacchino Del Regno }, 77894391a14SAngeloGioacchino Del Regno { 77994391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 78094391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 78194391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 78294391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 78394391a14SAngeloGioacchino Del Regno }, 78494391a14SAngeloGioacchino Del Regno { 78594391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 78694391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 78794391a14SAngeloGioacchino Del Regno .features = 0, 78894391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 78994391a14SAngeloGioacchino Del Regno }, 79094391a14SAngeloGioacchino Del Regno { 79194391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 79294391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 79394391a14SAngeloGioacchino Del Regno .features = 0, 79494391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 79594391a14SAngeloGioacchino Del Regno }, 79694391a14SAngeloGioacchino Del Regno }; 79794391a14SAngeloGioacchino Del Regno 798abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 79925fdd593SJeykumar Sankaran { 80025fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 80125fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 802667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 803667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 80425fdd593SJeykumar Sankaran }, 80525fdd593SJeykumar Sankaran { 80625fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 80725fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 808667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 809667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 81025fdd593SJeykumar Sankaran }, 81125fdd593SJeykumar Sankaran { 81225fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 81325fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 814667e9985SDmitry Baryshkov .features = 0, 815667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 81625fdd593SJeykumar Sankaran }, 81725fdd593SJeykumar Sankaran { 81825fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 81925fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 820667e9985SDmitry Baryshkov .features = 0, 821667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 82225fdd593SJeykumar Sankaran }, 82325fdd593SJeykumar Sankaran { 82425fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 82525fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 826667e9985SDmitry Baryshkov .features = 0, 827667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 82825fdd593SJeykumar Sankaran }, 82925fdd593SJeykumar Sankaran }; 83025fdd593SJeykumar Sankaran 8317bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 8327bdc0c4bSKalyan Thota { 8337bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 834ce6bd00aSDmitry Baryshkov .base = 0x1000, .len = 0x1dc, 835667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 836667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8377bdc0c4bSKalyan Thota }, 8387bdc0c4bSKalyan Thota { 8397bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 840ce6bd00aSDmitry Baryshkov .base = 0x1200, .len = 0x1dc, 841667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 842667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8437bdc0c4bSKalyan Thota }, 8447bdc0c4bSKalyan Thota { 8457bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 846ce6bd00aSDmitry Baryshkov .base = 0x1400, .len = 0x1dc, 847667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 848667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8497bdc0c4bSKalyan Thota }, 8507bdc0c4bSKalyan Thota }; 8517bdc0c4bSKalyan Thota 8524a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = { 8534a352c2fSBjorn Andersson { 8544a352c2fSBjorn Andersson .name = "ctl_0", .id = CTL_0, 8554a352c2fSBjorn Andersson .base = 0x15000, .len = 0x204, 8564a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8574a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8584a352c2fSBjorn Andersson }, 8594a352c2fSBjorn Andersson { 8604a352c2fSBjorn Andersson .name = "ctl_1", .id = CTL_1, 8614a352c2fSBjorn Andersson .base = 0x16000, .len = 0x204, 8624a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8634a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8644a352c2fSBjorn Andersson }, 8654a352c2fSBjorn Andersson { 8664a352c2fSBjorn Andersson .name = "ctl_2", .id = CTL_2, 8674a352c2fSBjorn Andersson .base = 0x17000, .len = 0x204, 8684a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8694a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8704a352c2fSBjorn Andersson }, 8714a352c2fSBjorn Andersson { 8724a352c2fSBjorn Andersson .name = "ctl_3", .id = CTL_3, 8734a352c2fSBjorn Andersson .base = 0x18000, .len = 0x204, 8744a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8754a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 8764a352c2fSBjorn Andersson }, 8774a352c2fSBjorn Andersson { 8784a352c2fSBjorn Andersson .name = "ctl_4", .id = CTL_4, 8794a352c2fSBjorn Andersson .base = 0x19000, .len = 0x204, 8804a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8814a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 8824a352c2fSBjorn Andersson }, 8834a352c2fSBjorn Andersson { 8844a352c2fSBjorn Andersson .name = "ctl_5", .id = CTL_5, 8854a352c2fSBjorn Andersson .base = 0x1a000, .len = 0x204, 8864a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8874a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 8884a352c2fSBjorn Andersson }, 8894a352c2fSBjorn Andersson }; 8904a352c2fSBjorn Andersson 891386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 892386fced3SJonathan Marek { 893386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 894386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 895667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 896667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 897386fced3SJonathan Marek }, 898386fced3SJonathan Marek { 899386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 900386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 901667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 902667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 903386fced3SJonathan Marek }, 904386fced3SJonathan Marek { 905386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 906386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 907667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 908667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 909386fced3SJonathan Marek }, 910386fced3SJonathan Marek { 911386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 912386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 913667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 914667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 915386fced3SJonathan Marek }, 916386fced3SJonathan Marek { 917386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 918386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 919667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 920667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 921386fced3SJonathan Marek }, 922386fced3SJonathan Marek { 923386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 924386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 925667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 926667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 927386fced3SJonathan Marek }, 928386fced3SJonathan Marek }; 929386fced3SJonathan Marek 9300e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = { 9310e91bcbbSRobert Foss { 9320e91bcbbSRobert Foss .name = "ctl_0", .id = CTL_0, 9330e91bcbbSRobert Foss .base = 0x15000, .len = 0x1e8, 9340e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9350e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 9360e91bcbbSRobert Foss }, 9370e91bcbbSRobert Foss { 9380e91bcbbSRobert Foss .name = "ctl_1", .id = CTL_1, 9390e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 9400e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9410e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 9420e91bcbbSRobert Foss }, 9430e91bcbbSRobert Foss { 9440e91bcbbSRobert Foss .name = "ctl_2", .id = CTL_2, 9450e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 9460e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9470e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 9480e91bcbbSRobert Foss }, 9490e91bcbbSRobert Foss { 9500e91bcbbSRobert Foss .name = "ctl_3", .id = CTL_3, 9510e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 9520e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9530e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 9540e91bcbbSRobert Foss }, 9550e91bcbbSRobert Foss { 9560e91bcbbSRobert Foss .name = "ctl_4", .id = CTL_4, 9570e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 9580e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9590e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 9600e91bcbbSRobert Foss }, 9610e91bcbbSRobert Foss { 9620e91bcbbSRobert Foss .name = "ctl_5", .id = CTL_5, 9630e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 9640e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9650e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 9660e91bcbbSRobert Foss }, 9670e91bcbbSRobert Foss }; 9680e91bcbbSRobert Foss 969100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = { 970100d7ef6SDmitry Baryshkov { 971100d7ef6SDmitry Baryshkov .name = "ctl_0", .id = CTL_0, 972100d7ef6SDmitry Baryshkov .base = 0x15000, .len = 0x204, 973100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 974100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 975100d7ef6SDmitry Baryshkov }, 976100d7ef6SDmitry Baryshkov { 977100d7ef6SDmitry Baryshkov .name = "ctl_1", .id = CTL_1, 9786c021d77SDmitry Baryshkov .base = 0x16000, .len = 0x204, 9790e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 980100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 981100d7ef6SDmitry Baryshkov }, 982100d7ef6SDmitry Baryshkov { 983100d7ef6SDmitry Baryshkov .name = "ctl_2", .id = CTL_2, 9846c021d77SDmitry Baryshkov .base = 0x17000, .len = 0x204, 9850e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 986100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 987100d7ef6SDmitry Baryshkov }, 988100d7ef6SDmitry Baryshkov { 989100d7ef6SDmitry Baryshkov .name = "ctl_3", .id = CTL_3, 9906c021d77SDmitry Baryshkov .base = 0x18000, .len = 0x204, 9910e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 992100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 993100d7ef6SDmitry Baryshkov }, 994100d7ef6SDmitry Baryshkov { 995100d7ef6SDmitry Baryshkov .name = "ctl_4", .id = CTL_4, 9966c021d77SDmitry Baryshkov .base = 0x19000, .len = 0x204, 9970e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 998100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 999100d7ef6SDmitry Baryshkov }, 1000100d7ef6SDmitry Baryshkov { 1001100d7ef6SDmitry Baryshkov .name = "ctl_5", .id = CTL_5, 10026c021d77SDmitry Baryshkov .base = 0x1a000, .len = 0x204, 10030e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1004100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1005100d7ef6SDmitry Baryshkov }, 1006100d7ef6SDmitry Baryshkov }; 1007100d7ef6SDmitry Baryshkov 1008efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = { 1009efcd0107SNeil Armstrong { 1010efcd0107SNeil Armstrong .name = "ctl_0", .id = CTL_0, 1011efcd0107SNeil Armstrong .base = 0x15000, .len = 0x290, 1012e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1013efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1014efcd0107SNeil Armstrong }, 1015efcd0107SNeil Armstrong { 1016efcd0107SNeil Armstrong .name = "ctl_1", .id = CTL_1, 1017efcd0107SNeil Armstrong .base = 0x16000, .len = 0x290, 1018e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1019efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1020efcd0107SNeil Armstrong }, 1021efcd0107SNeil Armstrong { 1022efcd0107SNeil Armstrong .name = "ctl_2", .id = CTL_2, 1023efcd0107SNeil Armstrong .base = 0x17000, .len = 0x290, 1024e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1025efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1026efcd0107SNeil Armstrong }, 1027efcd0107SNeil Armstrong { 1028efcd0107SNeil Armstrong .name = "ctl_3", .id = CTL_3, 1029efcd0107SNeil Armstrong .base = 0x18000, .len = 0x290, 1030e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1031efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1032efcd0107SNeil Armstrong }, 1033efcd0107SNeil Armstrong { 1034efcd0107SNeil Armstrong .name = "ctl_4", .id = CTL_4, 1035efcd0107SNeil Armstrong .base = 0x19000, .len = 0x290, 1036e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1037efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 1038efcd0107SNeil Armstrong }, 1039efcd0107SNeil Armstrong { 1040efcd0107SNeil Armstrong .name = "ctl_5", .id = CTL_5, 1041efcd0107SNeil Armstrong .base = 0x1a000, .len = 0x290, 1042e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1043efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1044efcd0107SNeil Armstrong }, 1045efcd0107SNeil Armstrong }; 1046efcd0107SNeil Armstrong 1047591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 1048591e34a0SKrishna Manikandan { 1049591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 1050591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 1051667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1052667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1053591e34a0SKrishna Manikandan }, 1054591e34a0SKrishna Manikandan { 1055591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 1056591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 1057667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1058667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1059591e34a0SKrishna Manikandan }, 1060591e34a0SKrishna Manikandan { 1061591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 1062591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 1063667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1064667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1065591e34a0SKrishna Manikandan }, 1066591e34a0SKrishna Manikandan { 1067591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 1068591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 1069667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1070667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1071591e34a0SKrishna Manikandan }, 1072591e34a0SKrishna Manikandan }; 1073591e34a0SKrishna Manikandan 10745334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 10755334087eSLoic Poulain { 10765334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 10775334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 10785334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 10795334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 10805334087eSLoic Poulain }, 10815334087eSLoic Poulain }; 10825334087eSLoic Poulain 108325fdd593SJeykumar Sankaran /************************************************************* 108425fdd593SJeykumar Sankaran * SSPP sub blocks config 108525fdd593SJeykumar Sankaran *************************************************************/ 108625fdd593SJeykumar Sankaran 108725fdd593SJeykumar Sankaran /* SSPP common configuration */ 1088b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 108925fdd593SJeykumar Sankaran { \ 109025fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 109125fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 109225fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 109325fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 109425fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 109525fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1096b75ab05aSShubhashree Dhar .id = qseed_ver, \ 109725fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 109825fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 109925fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 110025fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 110125fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 1102e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 110325fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1104e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1105dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 1106dabfdd89SVinod Polimera } 1107dabfdd89SVinod Polimera 1108dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 1109dabfdd89SVinod Polimera { \ 1110dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 1111dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 1112dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 1113dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 1114dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 1115dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1116dabfdd89SVinod Polimera .id = qseed_ver, \ 1117dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 1118dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 1119dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 1120dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 1121dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 1122dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 1123dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 1124dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1125dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 112625fdd593SJeykumar Sankaran } 112725fdd593SJeykumar Sankaran 112825fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 112925fdd593SJeykumar Sankaran { \ 113025fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 113125fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 113225fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 113325fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 113425fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 113525fdd593SJeykumar Sankaran .format_list = plane_formats, \ 1136e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 113725fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1138e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 113925fdd593SJeykumar Sankaran } 114025fdd593SJeykumar Sankaran 114194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 114294391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 114394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 114494391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 114594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 114694391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 114794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 114894391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 114994391a14SAngeloGioacchino Del Regno 1150dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 1151dabfdd89SVinod Polimera .rot_maxheight = 1088, 1152dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 1153dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 1154dabfdd89SVinod Polimera }; 1155dabfdd89SVinod Polimera 1156b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 1157b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 1158b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 1159b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 1160b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 1161b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 1162b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 1163b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 116425fdd593SJeykumar Sankaran 116525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 116625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 116725fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 116825fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 116925fdd593SJeykumar Sankaran 117007ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \ 117107ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 117225fdd593SJeykumar Sankaran { \ 117325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 117425fdd593SJeykumar Sankaran .base = _base, .len = 0x1c8, \ 117507ca1fc0SSravanthi Kollukuduru .features = _features, \ 117625fdd593SJeykumar Sankaran .sblk = &_sblk, \ 117725fdd593SJeykumar Sankaran .xin_id = _xinid, \ 117807ca1fc0SSravanthi Kollukuduru .type = _type, \ 117925fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 118025fdd593SJeykumar Sankaran } 118125fdd593SJeykumar Sankaran 118294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 118394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK, 118494391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 118594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK, 118694391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 118794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK, 118894391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 118994391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK, 119094391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 119194391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_MSM8998_MASK, 119294391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 119394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_MSM8998_MASK, 119494391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 119594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_MSM8998_MASK, 119694391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 119794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_MSM8998_MASK, 119894391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 119994391a14SAngeloGioacchino Del Regno }; 120094391a14SAngeloGioacchino Del Regno 1201abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 120207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK, 120307ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 120407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK, 120507ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 120607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK, 120707ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 120807ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK, 120907ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 121007ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 121107ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 121207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 121307ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 121407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 121507ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 121607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 121707ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 121825fdd593SJeykumar Sankaran }; 121925fdd593SJeykumar Sankaran 1220b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 1221b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 1222b75ab05aSShubhashree Dhar 1223dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 1224dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 1225dabfdd89SVinod Polimera 12267bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 12277bdc0c4bSKalyan Thota SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1228b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12297bdc0c4bSKalyan Thota SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 12307bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12317b149f2bSKalyan Thota SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 12327b149f2bSKalyan Thota sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 12337bdc0c4bSKalyan Thota SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 12347b149f2bSKalyan Thota sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 12357bdc0c4bSKalyan Thota }; 12367bdc0c4bSKalyan Thota 12373581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 12383581b706SAdam Skladowski _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE); 12393581b706SAdam Skladowski 12403581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 12413581b706SAdam Skladowski SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 12423581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12433581b706SAdam Skladowski SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 12443581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12453581b706SAdam Skladowski }; 12463581b706SAdam Skladowski 1247d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 1248d21fc5dfSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1249d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 1250d21fc5dfSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1251d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 1252d21fc5dfSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1253d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 1254d21fc5dfSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1255d21fc5dfSDmitry Baryshkov 1256d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 1257d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 1258d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1259d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 1260d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1261d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 1262d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1263d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 1264d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1265d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1266d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1267d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1268d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1269d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1270d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1271d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1272d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1273d21fc5dfSDmitry Baryshkov }; 1274d21fc5dfSDmitry Baryshkov 1275100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 1276100d7ef6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1277100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 1278100d7ef6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1279100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 1280100d7ef6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1281100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 1282100d7ef6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1283100d7ef6SDmitry Baryshkov 1284100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = { 1285100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1286100d7ef6SDmitry Baryshkov sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1287100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1288100d7ef6SDmitry Baryshkov sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1289100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1290100d7ef6SDmitry Baryshkov sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1291100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1292100d7ef6SDmitry Baryshkov sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1293100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1294100d7ef6SDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1295100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1296100d7ef6SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1297100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1298100d7ef6SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1299100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1300100d7ef6SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1301100d7ef6SDmitry Baryshkov }; 1302100d7ef6SDmitry Baryshkov 1303efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 = 1304efcd0107SNeil Armstrong _VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED3LITE); 1305efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 = 1306efcd0107SNeil Armstrong _VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED3LITE); 1307efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 = 1308efcd0107SNeil Armstrong _VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED3LITE); 1309efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 = 1310efcd0107SNeil Armstrong _VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED3LITE); 1311efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5); 1312e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6); 1313efcd0107SNeil Armstrong 1314efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = { 1315efcd0107SNeil Armstrong SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1316efcd0107SNeil Armstrong sm8550_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1317efcd0107SNeil Armstrong SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1318efcd0107SNeil Armstrong sm8550_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1319efcd0107SNeil Armstrong SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1320efcd0107SNeil Armstrong sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1321efcd0107SNeil Armstrong SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1322efcd0107SNeil Armstrong sm8550_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1323efcd0107SNeil Armstrong SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1324efcd0107SNeil Armstrong sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1325efcd0107SNeil Armstrong SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1326efcd0107SNeil Armstrong sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1327efcd0107SNeil Armstrong SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_SDM845_MASK, 1328efcd0107SNeil Armstrong sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 1329efcd0107SNeil Armstrong SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_SDM845_MASK, 1330efcd0107SNeil Armstrong sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 1331efcd0107SNeil Armstrong SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000, DMA_CURSOR_SDM845_MASK, 1332efcd0107SNeil Armstrong sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1333efcd0107SNeil Armstrong SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000, DMA_CURSOR_SDM845_MASK, 1334e3011955SDmitry Baryshkov sm8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1335efcd0107SNeil Armstrong }; 1336efcd0107SNeil Armstrong 1337591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 1338dabfdd89SVinod Polimera SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK, 1339dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1340591e34a0SKrishna Manikandan SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1341591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1342591e34a0SKrishna Manikandan SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 1343591e34a0SKrishna Manikandan sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1344591e34a0SKrishna Manikandan SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1345591e34a0SKrishna Manikandan sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1346591e34a0SKrishna Manikandan }; 1347591e34a0SKrishna Manikandan 13484a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 = 13494a352c2fSBjorn Andersson _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 13504a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 = 13514a352c2fSBjorn Andersson _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 13524a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 = 13534a352c2fSBjorn Andersson _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 13544a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 = 13554a352c2fSBjorn Andersson _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 13564a352c2fSBjorn Andersson 13574a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = { 13584a352c2fSBjorn Andersson SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 13594a352c2fSBjorn Andersson sc8280xp_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13604a352c2fSBjorn Andersson SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 13614a352c2fSBjorn Andersson sc8280xp_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13624a352c2fSBjorn Andersson SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 13634a352c2fSBjorn Andersson sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13644a352c2fSBjorn Andersson SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 13654a352c2fSBjorn Andersson sc8280xp_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13664a352c2fSBjorn Andersson SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 13674a352c2fSBjorn Andersson sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13684a352c2fSBjorn Andersson SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 13694a352c2fSBjorn Andersson sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13704a352c2fSBjorn Andersson SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 13714a352c2fSBjorn Andersson sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 13724a352c2fSBjorn Andersson SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 13734a352c2fSBjorn Andersson sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 13744a352c2fSBjorn Andersson }; 13755334087eSLoic Poulain 13765334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 13775334087eSLoic Poulain { \ 13785334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 13795334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 13805334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 13815334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 13825334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 13835334087eSLoic Poulain .format_list = plane_formats_yuv, \ 13845334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 13855334087eSLoic Poulain .virt_format_list = plane_formats, \ 13865334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 13875334087eSLoic Poulain } 13885334087eSLoic Poulain 13895334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 13905334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 13915334087eSLoic Poulain 13925334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 13935334087eSLoic Poulain SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK, 13945334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13955334087eSLoic Poulain SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 13965334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13975334087eSLoic Poulain }; 13985334087eSLoic Poulain 139925fdd593SJeykumar Sankaran /************************************************************* 140025fdd593SJeykumar Sankaran * MIXER sub blocks config 140125fdd593SJeykumar Sankaran *************************************************************/ 14027bdc0c4bSKalyan Thota 1403e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 140425fdd593SJeykumar Sankaran { \ 140525fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 140625fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 14077bdc0c4bSKalyan Thota .features = _fmask, \ 14087bdc0c4bSKalyan Thota .sblk = _sblk, \ 140925fdd593SJeykumar Sankaran .pingpong = _pp, \ 1410e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1411e47616dfSKalyan Thota .dspp = _dspp \ 141225fdd593SJeykumar Sankaran } 141325fdd593SJeykumar Sankaran 141494391a14SAngeloGioacchino Del Regno /* MSM8998 */ 141594391a14SAngeloGioacchino Del Regno 141694391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 141794391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 141894391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 141994391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 142094391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 142194391a14SAngeloGioacchino Del Regno 0x260, 0x290 142294391a14SAngeloGioacchino Del Regno }, 142394391a14SAngeloGioacchino Del Regno }; 142494391a14SAngeloGioacchino Del Regno 142594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 14262d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 142794391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 14282d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 142994391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 14302d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 143194391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 14322d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 143394391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14342d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 143594391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14362d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 143794391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 143894391a14SAngeloGioacchino Del Regno }; 143994391a14SAngeloGioacchino Del Regno 144094391a14SAngeloGioacchino Del Regno /* SDM845 */ 144194391a14SAngeloGioacchino Del Regno 144294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 144394391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 144494391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 144594391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 144694391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 144794391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 144894391a14SAngeloGioacchino Del Regno }, 144994391a14SAngeloGioacchino Del Regno }; 145094391a14SAngeloGioacchino Del Regno 1451abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 14527bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1453e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 14547bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1455e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 14567bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1457e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 14587bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1459e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14607bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1461e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14627bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1463e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 14647bdc0c4bSKalyan Thota }; 14657bdc0c4bSKalyan Thota 14667bdc0c4bSKalyan Thota /* SC7180 */ 14677bdc0c4bSKalyan Thota 14687bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 14697bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 14707bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 14717bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 14727bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 14737bdc0c4bSKalyan Thota }, 14747bdc0c4bSKalyan Thota }; 14757bdc0c4bSKalyan Thota 14767bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 147700feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1478e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 147900feff8fSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1480e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 148125fdd593SJeykumar Sankaran }; 148225fdd593SJeykumar Sankaran 14834a352c2fSBjorn Andersson /* SC8280XP */ 14844a352c2fSBjorn Andersson 14854a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = { 14864a352c2fSBjorn Andersson LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 14874a352c2fSBjorn Andersson LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 14884a352c2fSBjorn Andersson LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2), 14894a352c2fSBjorn Andersson LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3), 14904a352c2fSBjorn Andersson LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 14914a352c2fSBjorn Andersson LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 14924a352c2fSBjorn Andersson }; 14934a352c2fSBjorn Andersson 1494386fced3SJonathan Marek /* SM8150 */ 1495386fced3SJonathan Marek 1496386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1497386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 149805ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1499386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 150005ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1501386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1502386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1503386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1504386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1505386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1506386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1507386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1508386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1509386fced3SJonathan Marek }; 1510386fced3SJonathan Marek 1511591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 151200feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1513fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 151400feff8fSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1515591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 151600feff8fSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1517591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1518591e34a0SKrishna Manikandan }; 1519591e34a0SKrishna Manikandan 15205334087eSLoic Poulain /* QCM2290 */ 15215334087eSLoic Poulain 15225334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 1523*da06be8bSDmitry Baryshkov .maxwidth = DEFAULT_DPU_LINE_WIDTH, 15245334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 15255334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 15265334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 15275334087eSLoic Poulain }, 15285334087eSLoic Poulain }; 15295334087eSLoic Poulain 15305334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 153100feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK, 15325334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 15335334087eSLoic Poulain }; 15345334087eSLoic Poulain 153525fdd593SJeykumar Sankaran /************************************************************* 1536e47616dfSKalyan Thota * DSPP sub blocks config 1537e47616dfSKalyan Thota *************************************************************/ 153894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 153994391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 154094391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 154194391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 154294391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 154394391a14SAngeloGioacchino Del Regno }; 154494391a14SAngeloGioacchino Del Regno 15454259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 15464259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 15474259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 15484259ff7aSKalyan Thota }; 15494259ff7aSKalyan Thota 155005ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 155105ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 155205ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 155305ae91d9SDmitry Baryshkov }; 155405ae91d9SDmitry Baryshkov 1555862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1556e47616dfSKalyan Thota {\ 1557e47616dfSKalyan Thota .name = _name, .id = _id, \ 1558e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1559862314bcSAngeloGioacchino Del Regno .features = _mask, \ 156005ae91d9SDmitry Baryshkov .sblk = _sblk \ 1561e47616dfSKalyan Thota } 1562e47616dfSKalyan Thota 156394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 156494391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 156594391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 156694391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 156794391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 156894391a14SAngeloGioacchino Del Regno }; 156994391a14SAngeloGioacchino Del Regno 1570e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1571862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1572862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 157305ae91d9SDmitry Baryshkov }; 157405ae91d9SDmitry Baryshkov 157505ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1576862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1577862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1578862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1579862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1580862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1581862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1582862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1583862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1584e47616dfSKalyan Thota }; 1585386fced3SJonathan Marek 15865334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 15875334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 15885334087eSLoic Poulain &sm8150_dspp_sblk), 15895334087eSLoic Poulain }; 15905334087eSLoic Poulain 1591e47616dfSKalyan Thota /************************************************************* 159225fdd593SJeykumar Sankaran * PINGPONG sub blocks config 159325fdd593SJeykumar Sankaran *************************************************************/ 159425fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 159525fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 159625fdd593SJeykumar Sankaran .version = 0x1}, 159725fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 159825fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 159925fdd593SJeykumar Sankaran }; 160025fdd593SJeykumar Sankaran 160125fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 160225fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 160325fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 160425fdd593SJeykumar Sankaran }; 160525fdd593SJeykumar Sankaran 1606591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1607591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1608591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1609591e34a0SKrishna Manikandan }; 1610591e34a0SKrishna Manikandan 1611efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 1612efcd0107SNeil Armstrong {\ 1613efcd0107SNeil Armstrong .name = _name, .id = _id, \ 1614efcd0107SNeil Armstrong .base = _base, .len = 0, \ 1615efcd0107SNeil Armstrong .features = BIT(DPU_PINGPONG_DITHER), \ 1616efcd0107SNeil Armstrong .merge_3d = _merge_3d, \ 1617efcd0107SNeil Armstrong .sblk = &_sblk, \ 1618efcd0107SNeil Armstrong .intr_done = _done, \ 1619efcd0107SNeil Armstrong .intr_rdptr = _rdptr, \ 1620efcd0107SNeil Armstrong } 1621667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 162225fdd593SJeykumar Sankaran {\ 162325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 162425fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 162525fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 16264369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1627667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1628667e9985SDmitry Baryshkov .intr_done = _done, \ 1629667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 163025fdd593SJeykumar Sankaran } 1631667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 163225fdd593SJeykumar Sankaran {\ 163325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 163425fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 163525fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 16364369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1637667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1638667e9985SDmitry Baryshkov .intr_done = _done, \ 1639667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 164025fdd593SJeykumar Sankaran } 164125fdd593SJeykumar Sankaran 1642abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1643667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1644667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1645667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1646667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1647667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1648667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1649667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1650667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1651667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1652667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1653667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1654667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 165525fdd593SJeykumar Sankaran }; 165625fdd593SJeykumar Sankaran 16577bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = { 1658667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1659667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 16607bdc0c4bSKalyan Thota }; 16617bdc0c4bSKalyan Thota 16624a352c2fSBjorn Andersson static struct dpu_pingpong_cfg sc8280xp_pp[] = { 16634a352c2fSBjorn Andersson PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 16644a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1), 16654a352c2fSBjorn Andersson PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 16664a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1), 16674a352c2fSBjorn Andersson PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te, 16684a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1), 16694a352c2fSBjorn Andersson PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te, 16704a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1), 16714a352c2fSBjorn Andersson PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te, 16724a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1), 16734a352c2fSBjorn Andersson PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te, 16744a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1), 16754a352c2fSBjorn Andersson }; 16764a352c2fSBjorn Andersson 1677386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1678667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1679667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1680667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1681667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1682667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1683667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1684667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1685667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1686667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1687667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1688667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1689667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1690667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1691667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1692667e9985SDmitry Baryshkov -1), 1693667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 16943431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1695667e9985SDmitry Baryshkov -1), 16964369c93cSDmitry Baryshkov }; 16974369c93cSDmitry Baryshkov 16980e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = { 16990e91bcbbSRobert Foss PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 17000e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17010e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17020e91bcbbSRobert Foss PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 17030e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 17040e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 17050e91bcbbSRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 17060e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 17070e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 17080e91bcbbSRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 17090e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 17100e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 17110e91bcbbSRobert Foss PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 17120e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 17130e91bcbbSRobert Foss -1), 17140e91bcbbSRobert Foss PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 17150e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 17160e91bcbbSRobert Foss -1), 17170e91bcbbSRobert Foss }; 17180e91bcbbSRobert Foss 17191a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = { 17201a5b5372SRobert Foss PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), 17211a5b5372SRobert Foss PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 17221a5b5372SRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 17231a5b5372SRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 17241a5b5372SRobert Foss }; 17251a5b5372SRobert Foss 17265334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = { 17275334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 17285334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17295334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17305334087eSLoic Poulain }; 17315334087eSLoic Poulain 1732100d7ef6SDmitry Baryshkov /* FIXME: interrupts */ 1733100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = { 1734100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 1735100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1736100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1737100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 1738100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1739100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1740100d7ef6SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 1741100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1742100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1743100d7ef6SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 1744100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1745100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1746100d7ef6SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 1747100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1748100d7ef6SDmitry Baryshkov -1), 1749100d7ef6SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 1750100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1751100d7ef6SDmitry Baryshkov -1), 1752100d7ef6SDmitry Baryshkov PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk, 1753100d7ef6SDmitry Baryshkov -1, 1754100d7ef6SDmitry Baryshkov -1), 1755100d7ef6SDmitry Baryshkov PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk, 1756100d7ef6SDmitry Baryshkov -1, 1757100d7ef6SDmitry Baryshkov -1), 1758100d7ef6SDmitry Baryshkov }; 1759100d7ef6SDmitry Baryshkov 1760efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = { 1761efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk, 1762efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1763efcd0107SNeil Armstrong -1), 1764efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk, 1765efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1766efcd0107SNeil Armstrong -1), 1767efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk, 1768efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1769efcd0107SNeil Armstrong -1), 1770efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk, 1771efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1772efcd0107SNeil Armstrong -1), 1773efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk, 1774efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1775efcd0107SNeil Armstrong -1), 1776efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk, 1777efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1778efcd0107SNeil Armstrong -1), 1779efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk, 1780efcd0107SNeil Armstrong -1, 1781efcd0107SNeil Armstrong -1), 1782efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk, 1783efcd0107SNeil Armstrong -1, 1784efcd0107SNeil Armstrong -1), 1785efcd0107SNeil Armstrong }; 1786efcd0107SNeil Armstrong 17874369c93cSDmitry Baryshkov /************************************************************* 17884369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 17894369c93cSDmitry Baryshkov *************************************************************/ 17904369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 17914369c93cSDmitry Baryshkov {\ 17924369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 17934369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 17944369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 17954369c93cSDmitry Baryshkov .sblk = NULL \ 17964369c93cSDmitry Baryshkov } 17974369c93cSDmitry Baryshkov 17984369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 17994369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 18004369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 18014369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1802386fced3SJonathan Marek }; 1803386fced3SJonathan Marek 18040e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { 18050e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 18060e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 18070e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 18080e91bcbbSRobert Foss }; 18090e91bcbbSRobert Foss 1810100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = { 1811100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1812100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1813100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1814100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00), 1815100d7ef6SDmitry Baryshkov }; 1816100d7ef6SDmitry Baryshkov 1817efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = { 1818efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1819efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1820efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1821efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700), 1822efcd0107SNeil Armstrong }; 1823efcd0107SNeil Armstrong 18247c5ab05eSVinod Koul /************************************************************* 18257c5ab05eSVinod Koul * DSC sub blocks config 18267c5ab05eSVinod Koul *************************************************************/ 18279da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \ 18287c5ab05eSVinod Koul {\ 18297c5ab05eSVinod Koul .name = _name, .id = _id, \ 18307c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 18319da5daa0SMarijn Suijten .features = _features, \ 18327c5ab05eSVinod Koul } 18337c5ab05eSVinod Koul 18347c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = { 18359da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, 0), 18369da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, 0), 18379da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, 0), 18389da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, 0), 18399da5daa0SMarijn Suijten }; 18409da5daa0SMarijn Suijten 18419da5daa0SMarijn Suijten static struct dpu_dsc_cfg sm8150_dsc[] = { 18429da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)), 18439da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), 18449da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)), 18459da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)), 18467c5ab05eSVinod Koul }; 18477c5ab05eSVinod Koul 184825fdd593SJeykumar Sankaran /************************************************************* 184925fdd593SJeykumar Sankaran * INTF sub blocks config 185025fdd593SJeykumar Sankaran *************************************************************/ 1851667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 185225fdd593SJeykumar Sankaran {\ 185325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 185425fdd593SJeykumar Sankaran .base = _base, .len = 0x280, \ 1855cace3ac4SJonathan Marek .features = _features, \ 185625fdd593SJeykumar Sankaran .type = _type, \ 185725fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1858667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1859667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1860667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 186125fdd593SJeykumar Sankaran } 186225fdd593SJeykumar Sankaran 186394391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 186494391a14SAngeloGioacchino Del Regno INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 186594391a14SAngeloGioacchino Del Regno INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 186694391a14SAngeloGioacchino Del Regno INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 186794391a14SAngeloGioacchino Del Regno INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 186894391a14SAngeloGioacchino Del Regno }; 186994391a14SAngeloGioacchino Del Regno 1870abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 1871667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1872667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1873667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1874667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 187525fdd593SJeykumar Sankaran }; 187625fdd593SJeykumar Sankaran 18777bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 1878bb3de286SBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1879667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18807bdc0c4bSKalyan Thota }; 18817bdc0c4bSKalyan Thota 1882386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 1883667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1884667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1885667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1886667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1887386fced3SJonathan Marek }; 1888386fced3SJonathan Marek 1889591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 1890ef7837ffSSankeerth Billakanti INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1891667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1892ef7837ffSSankeerth Billakanti INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1893591e34a0SKrishna Manikandan }; 1894591e34a0SKrishna Manikandan 18950e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = { 18960e91bcbbSRobert Foss INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 18970e91bcbbSRobert Foss INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18980e91bcbbSRobert Foss INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 18990e91bcbbSRobert Foss INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19000e91bcbbSRobert Foss }; 19010e91bcbbSRobert Foss 1902f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 1903f3af2d6eSRob Clark INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1904f3af2d6eSRob Clark INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1905f3af2d6eSRob Clark INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1906f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 1907f3af2d6eSRob Clark INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1908f3af2d6eSRob Clark INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 1909f3af2d6eSRob Clark INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1910f3af2d6eSRob Clark }; 1911f3af2d6eSRob Clark 19124a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */ 19134a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = { 19144a352c2fSBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19154a352c2fSBjorn Andersson INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19164a352c2fSBjorn Andersson INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19174a352c2fSBjorn Andersson INTF_BLK("intf_3", INTF_3, 0x37000, INTF_NONE, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19184a352c2fSBjorn Andersson INTF_BLK("intf_4", INTF_4, 0x38000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 19194a352c2fSBjorn Andersson INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 19204a352c2fSBjorn Andersson INTF_BLK("intf_6", INTF_6, 0x3a000, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17), 19214a352c2fSBjorn Andersson INTF_BLK("intf_7", INTF_7, 0x3b000, INTF_NONE, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19), 19224a352c2fSBjorn Andersson INTF_BLK("intf_8", INTF_8, 0x3c000, INTF_NONE, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13), 19234a352c2fSBjorn Andersson }; 19244a352c2fSBjorn Andersson 19255334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 19265334087eSLoic Poulain INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0), 19275334087eSLoic Poulain INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19285334087eSLoic Poulain }; 19295334087eSLoic Poulain 1930100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = { 1931100d7ef6SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1932100d7ef6SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1933100d7ef6SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1934100d7ef6SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1935100d7ef6SDmitry Baryshkov }; 1936100d7ef6SDmitry Baryshkov 1937efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = { 1938efcd0107SNeil Armstrong INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1939efcd0107SNeil Armstrong /* TODO TE sub-blocks for intf1 & intf2 */ 1940efcd0107SNeil Armstrong INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1941efcd0107SNeil Armstrong INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1942efcd0107SNeil Armstrong INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1943efcd0107SNeil Armstrong }; 1944efcd0107SNeil Armstrong 194525fdd593SJeykumar Sankaran /************************************************************* 194653324b99SAbhinav Kumar * Writeback blocks config 194753324b99SAbhinav Kumar *************************************************************/ 194853324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1949a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 195053324b99SAbhinav Kumar { \ 195153324b99SAbhinav Kumar .name = _name, .id = _id, \ 195253324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 195353324b99SAbhinav Kumar .features = _features, \ 195453324b99SAbhinav Kumar .format_list = wb2_formats, \ 195553324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 195653324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 195753324b99SAbhinav Kumar .xin_id = __xin_id, \ 195853324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1959a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 196053324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 196153324b99SAbhinav Kumar } 196253324b99SAbhinav Kumar 196353324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 196453324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1965a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 196653324b99SAbhinav Kumar }; 196753324b99SAbhinav Kumar 196853324b99SAbhinav Kumar /************************************************************* 196925fdd593SJeykumar Sankaran * VBIF sub blocks config 197025fdd593SJeykumar Sankaran *************************************************************/ 197125fdd593SJeykumar Sankaran /* VBIF QOS remap */ 197294391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 197394391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1974abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1975abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 197625fdd593SJeykumar Sankaran 197794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 197894391a14SAngeloGioacchino Del Regno { 197994391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 198094391a14SAngeloGioacchino Del Regno .ot_limit = 2, 198194391a14SAngeloGioacchino Del Regno }, 198294391a14SAngeloGioacchino Del Regno { 198394391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 198494391a14SAngeloGioacchino Del Regno .ot_limit = 6, 198594391a14SAngeloGioacchino Del Regno }, 198694391a14SAngeloGioacchino Del Regno { 198794391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 198894391a14SAngeloGioacchino Del Regno .ot_limit = 16, 198994391a14SAngeloGioacchino Del Regno }, 199094391a14SAngeloGioacchino Del Regno }; 199194391a14SAngeloGioacchino Del Regno 199294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 199394391a14SAngeloGioacchino Del Regno { 1994606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 199594391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 199694391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 199794391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 199894391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 199994391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 2000c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 200194391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 200294391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 200394391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 200494391a14SAngeloGioacchino Del Regno }, 200594391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 200694391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 200794391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 200894391a14SAngeloGioacchino Del Regno }, 200994391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 201094391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 201194391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 201294391a14SAngeloGioacchino Del Regno }, 201394391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 201494391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 201594391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 201694391a14SAngeloGioacchino Del Regno }, 201794391a14SAngeloGioacchino Del Regno .memtype_count = 14, 201894391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 201994391a14SAngeloGioacchino Del Regno }, 202094391a14SAngeloGioacchino Del Regno }; 202194391a14SAngeloGioacchino Del Regno 2022abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 202325fdd593SJeykumar Sankaran { 2024606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 202525fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 202625fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 202725fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 2028c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 202925fdd593SJeykumar Sankaran .qos_rt_tbl = { 203025fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 203125fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 203225fdd593SJeykumar Sankaran }, 203325fdd593SJeykumar Sankaran .qos_nrt_tbl = { 203425fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 203525fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 203625fdd593SJeykumar Sankaran }, 203725fdd593SJeykumar Sankaran .memtype_count = 14, 203825fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 203925fdd593SJeykumar Sankaran }, 204025fdd593SJeykumar Sankaran }; 204125fdd593SJeykumar Sankaran 20424a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = { 20434a352c2fSBjorn Andersson .base = 0x0, 20444a352c2fSBjorn Andersson .version = 0x00020000, 20454a352c2fSBjorn Andersson .trigger_sel_off = 0x119c, 20464a352c2fSBjorn Andersson .xin_id = 7, 20474a352c2fSBjorn Andersson .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20484a352c2fSBjorn Andersson }; 20494a352c2fSBjorn Andersson 2050abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 205125fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 205225fdd593SJeykumar Sankaran }; 205325fdd593SJeykumar Sankaran 2054386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 2055386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 2056386fced3SJonathan Marek }; 2057386fced3SJonathan Marek 2058af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 2059af776a3eSJonathan Marek .base = 0x0, 2060af776a3eSJonathan Marek .version = 0x00010002, 2061af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 2062af776a3eSJonathan Marek .xin_id = 7, 2063af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2064af776a3eSJonathan Marek }; 2065af776a3eSJonathan Marek 20660e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 20670e91bcbbSRobert Foss .base = 0x400, 20680e91bcbbSRobert Foss .version = 0x00020000, 20690e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 20700e91bcbbSRobert Foss .xin_id = 7, 20710e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20720e91bcbbSRobert Foss }; 20730e91bcbbSRobert Foss 2074100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 2075100d7ef6SDmitry Baryshkov .base = 0x0, 2076100d7ef6SDmitry Baryshkov .version = 0x00020000, 2077100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 2078100d7ef6SDmitry Baryshkov .xin_id = 7, 2079100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2080100d7ef6SDmitry Baryshkov }; 2081100d7ef6SDmitry Baryshkov 208225fdd593SJeykumar Sankaran /************************************************************* 208325fdd593SJeykumar Sankaran * PERF data config 208425fdd593SJeykumar Sankaran *************************************************************/ 208525fdd593SJeykumar Sankaran 208625fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 208794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 208894391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 208994391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 209094391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 209194391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 209294391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 209394391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 209494391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 209594391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 209694391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 209794391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 209894391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 209994391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 210094391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 210194391a14SAngeloGioacchino Del Regno }; 210294391a14SAngeloGioacchino Del Regno 2103abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 210425fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 210525fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 210625fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 210725fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 210825fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 210925fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 211025fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 211125fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 211225fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 211325fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 211425fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 211525fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 211625fdd593SJeykumar Sankaran }; 211725fdd593SJeykumar Sankaran 211894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 211994391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 212094391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 212194391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 212294391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 212394391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 212494391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 212594391a14SAngeloGioacchino Del Regno }; 212694391a14SAngeloGioacchino Del Regno 21277bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 21287bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 21297bdc0c4bSKalyan Thota }; 21307bdc0c4bSKalyan Thota 2131386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 2132386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 2133386fced3SJonathan Marek }; 2134386fced3SJonathan Marek 2135f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 2136f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 2137f3af2d6eSRob Clark }; 2138f3af2d6eSRob Clark 21395334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 21405334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 21415334087eSLoic Poulain }; 21425334087eSLoic Poulain 2143abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 214425fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 214525fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 214625fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 214725fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 214825fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 214925fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 215025fdd593SJeykumar Sankaran }; 215125fdd593SJeykumar Sankaran 21527bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 21537bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 21547bdc0c4bSKalyan Thota }; 21557bdc0c4bSKalyan Thota 2156f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 2157f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 2158f3af2d6eSRob Clark }; 2159f3af2d6eSRob Clark 216094391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 216194391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 216294391a14SAngeloGioacchino Del Regno }; 216394391a14SAngeloGioacchino Del Regno 2164abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 216525fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 216625fdd593SJeykumar Sankaran }; 216725fdd593SJeykumar Sankaran 21687bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 21697bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 21707bdc0c4bSKalyan Thota }; 21717bdc0c4bSKalyan Thota 217294391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 217394391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 217494391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 217594391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 217694391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 217794391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 217894391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 217994391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 218094391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 218194391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 218294391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 218394391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 218494391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 218594391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 218694391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 218794391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 218894391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 218994391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 219094391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 219194391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 219294391a14SAngeloGioacchino Del Regno }, 219394391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 219494391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 219594391a14SAngeloGioacchino Del Regno }, 219694391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 219794391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 219894391a14SAngeloGioacchino Del Regno }, 219994391a14SAngeloGioacchino Del Regno }, 220094391a14SAngeloGioacchino Del Regno .cdp_cfg = { 220194391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 220294391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 220394391a14SAngeloGioacchino Del Regno }, 220494391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 220594391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 220694391a14SAngeloGioacchino Del Regno }; 220794391a14SAngeloGioacchino Del Regno 2208abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 220925fdd593SJeykumar Sankaran .max_bw_low = 6800000, 221025fdd593SJeykumar Sankaran .max_bw_high = 6800000, 221125fdd593SJeykumar Sankaran .min_core_ib = 2400000, 221225fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 221325fdd593SJeykumar Sankaran .min_dram_ib = 800000, 221425fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 221525fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 221625fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 221725fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 221825fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 221925fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 222025fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 222125fdd593SJeykumar Sankaran .amortizable_threshold = 25, 222225fdd593SJeykumar Sankaran .min_prefill_lines = 24, 222325fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 22245bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 222525fdd593SJeykumar Sankaran .qos_lut_tbl = { 222625fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 222725fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 222825fdd593SJeykumar Sankaran }, 222925fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 223025fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 223125fdd593SJeykumar Sankaran }, 223225fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 223325fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 223425fdd593SJeykumar Sankaran }, 223525fdd593SJeykumar Sankaran }, 223625fdd593SJeykumar Sankaran .cdp_cfg = { 223725fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 223825fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 223925fdd593SJeykumar Sankaran }, 22404f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 22414f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 224225fdd593SJeykumar Sankaran }; 224325fdd593SJeykumar Sankaran 22447bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 224571dc6c08SKrishna Manikandan .max_bw_low = 6800000, 224671dc6c08SKrishna Manikandan .max_bw_high = 6800000, 22477bdc0c4bSKalyan Thota .min_core_ib = 2400000, 22487bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 2249c33b7c03SKalyan Thota .min_dram_ib = 1600000, 2250c33b7c03SKalyan Thota .min_prefill_lines = 24, 22517bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22525bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22537bdc0c4bSKalyan Thota .qos_lut_tbl = { 22547bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22557bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 22567bdc0c4bSKalyan Thota }, 22577bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22587bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 22597bdc0c4bSKalyan Thota }, 22607bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22617bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 22627bdc0c4bSKalyan Thota }, 22637bdc0c4bSKalyan Thota }, 22647bdc0c4bSKalyan Thota .cdp_cfg = { 22657bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 22667bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 22677bdc0c4bSKalyan Thota }, 2268c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 2269c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 22707bdc0c4bSKalyan Thota }; 22717bdc0c4bSKalyan Thota 22723581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 22733581b706SAdam Skladowski .max_bw_low = 3100000, 22743581b706SAdam Skladowski .max_bw_high = 4000000, 22753581b706SAdam Skladowski .min_core_ib = 2400000, 22763581b706SAdam Skladowski .min_llcc_ib = 800000, 22773581b706SAdam Skladowski .min_dram_ib = 800000, 22783581b706SAdam Skladowski .min_prefill_lines = 24, 22793581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22803581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22813581b706SAdam Skladowski .qos_lut_tbl = { 22823581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22833581b706SAdam Skladowski .entries = sc7180_qos_linear 22843581b706SAdam Skladowski }, 22853581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22863581b706SAdam Skladowski .entries = sc7180_qos_macrotile 22873581b706SAdam Skladowski }, 22883581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22893581b706SAdam Skladowski .entries = sc7180_qos_nrt 22903581b706SAdam Skladowski }, 22913581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 22923581b706SAdam Skladowski }, 22933581b706SAdam Skladowski .cdp_cfg = { 22943581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 22953581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 22963581b706SAdam Skladowski }, 22973581b706SAdam Skladowski .clk_inefficiency_factor = 105, 22983581b706SAdam Skladowski .bw_inefficiency_factor = 120, 22993581b706SAdam Skladowski }; 23003581b706SAdam Skladowski 2301386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 2302386fced3SJonathan Marek .max_bw_low = 12800000, 2303386fced3SJonathan Marek .max_bw_high = 12800000, 2304386fced3SJonathan Marek .min_core_ib = 2400000, 2305386fced3SJonathan Marek .min_llcc_ib = 800000, 2306386fced3SJonathan Marek .min_dram_ib = 800000, 23074f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 2308386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23095bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 2310386fced3SJonathan Marek .qos_lut_tbl = { 2311386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 2312386fced3SJonathan Marek .entries = sm8150_qos_linear 2313386fced3SJonathan Marek }, 2314386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2315386fced3SJonathan Marek .entries = sc7180_qos_macrotile 2316386fced3SJonathan Marek }, 2317386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2318386fced3SJonathan Marek .entries = sc7180_qos_nrt 2319386fced3SJonathan Marek }, 2320386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2321386fced3SJonathan Marek }, 2322386fced3SJonathan Marek .cdp_cfg = { 2323386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2324386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2325386fced3SJonathan Marek }, 23264f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 23274f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2328386fced3SJonathan Marek }; 2329386fced3SJonathan Marek 2330f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 2331f3af2d6eSRob Clark .max_bw_low = 9600000, 2332f3af2d6eSRob Clark .max_bw_high = 9600000, 2333f3af2d6eSRob Clark .min_core_ib = 2400000, 2334f3af2d6eSRob Clark .min_llcc_ib = 800000, 2335f3af2d6eSRob Clark .min_dram_ib = 800000, 2336f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 2337f3af2d6eSRob Clark .qos_lut_tbl = { 23384a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_linear), 23394a352c2fSBjorn Andersson .entries = sc7180_qos_linear 23404a352c2fSBjorn Andersson }, 23414a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 23424a352c2fSBjorn Andersson .entries = sc7180_qos_macrotile 23434a352c2fSBjorn Andersson }, 23444a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 23454a352c2fSBjorn Andersson .entries = sc7180_qos_nrt 23464a352c2fSBjorn Andersson }, 23474a352c2fSBjorn Andersson /* TODO: macrotile-qseed is different from macrotile */ 23484a352c2fSBjorn Andersson }, 23494a352c2fSBjorn Andersson .cdp_cfg = { 23504a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 1}, 23514a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 0} 23524a352c2fSBjorn Andersson }, 23534a352c2fSBjorn Andersson .clk_inefficiency_factor = 105, 23544a352c2fSBjorn Andersson .bw_inefficiency_factor = 120, 23554a352c2fSBjorn Andersson }; 23564a352c2fSBjorn Andersson 23574a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = { 23584a352c2fSBjorn Andersson .max_bw_low = 13600000, 23594a352c2fSBjorn Andersson .max_bw_high = 18200000, 23604a352c2fSBjorn Andersson .min_core_ib = 2500000, 23614a352c2fSBjorn Andersson .min_llcc_ib = 0, 23624a352c2fSBjorn Andersson .min_dram_ib = 800000, 23634a352c2fSBjorn Andersson .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23644a352c2fSBjorn Andersson .qos_lut_tbl = { 2365f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 2366f3af2d6eSRob Clark .entries = sc8180x_qos_linear 2367f3af2d6eSRob Clark }, 2368f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 2369f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 2370f3af2d6eSRob Clark }, 2371f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2372f3af2d6eSRob Clark .entries = sc7180_qos_nrt 2373f3af2d6eSRob Clark }, 2374f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 2375f3af2d6eSRob Clark }, 2376f3af2d6eSRob Clark .cdp_cfg = { 2377f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 2378f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 2379f3af2d6eSRob Clark }, 2380f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 2381f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 2382f3af2d6eSRob Clark }; 2383f3af2d6eSRob Clark 2384af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 2385af776a3eSJonathan Marek .max_bw_low = 13700000, 2386af776a3eSJonathan Marek .max_bw_high = 16600000, 2387af776a3eSJonathan Marek .min_core_ib = 4800000, 2388af776a3eSJonathan Marek .min_llcc_ib = 0, 2389af776a3eSJonathan Marek .min_dram_ib = 800000, 23904f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 2391af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23925bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 2393af776a3eSJonathan Marek .qos_lut_tbl = { 2394af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2395af776a3eSJonathan Marek .entries = sc7180_qos_linear 2396af776a3eSJonathan Marek }, 2397af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2398af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 2399af776a3eSJonathan Marek }, 2400af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2401af776a3eSJonathan Marek .entries = sc7180_qos_nrt 2402af776a3eSJonathan Marek }, 2403af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2404af776a3eSJonathan Marek }, 2405af776a3eSJonathan Marek .cdp_cfg = { 2406af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2407af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2408af776a3eSJonathan Marek }, 24094f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 24104f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2411af776a3eSJonathan Marek }; 2412af776a3eSJonathan Marek 2413100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = { 2414100d7ef6SDmitry Baryshkov .max_bw_low = 13600000, 2415100d7ef6SDmitry Baryshkov .max_bw_high = 18200000, 2416100d7ef6SDmitry Baryshkov .min_core_ib = 2500000, 2417100d7ef6SDmitry Baryshkov .min_llcc_ib = 0, 2418100d7ef6SDmitry Baryshkov .min_dram_ib = 800000, 2419100d7ef6SDmitry Baryshkov .min_prefill_lines = 35, 2420100d7ef6SDmitry Baryshkov /* FIXME: lut tables */ 2421100d7ef6SDmitry Baryshkov .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 2422100d7ef6SDmitry Baryshkov .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 2423100d7ef6SDmitry Baryshkov .qos_lut_tbl = { 2424100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2425100d7ef6SDmitry Baryshkov .entries = sc7180_qos_linear 2426100d7ef6SDmitry Baryshkov }, 2427100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2428100d7ef6SDmitry Baryshkov .entries = sc7180_qos_macrotile 2429100d7ef6SDmitry Baryshkov }, 2430100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2431100d7ef6SDmitry Baryshkov .entries = sc7180_qos_nrt 2432100d7ef6SDmitry Baryshkov }, 2433100d7ef6SDmitry Baryshkov /* TODO: macrotile-qseed is different from macrotile */ 2434100d7ef6SDmitry Baryshkov }, 2435100d7ef6SDmitry Baryshkov .cdp_cfg = { 2436100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 1}, 2437100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 0} 2438100d7ef6SDmitry Baryshkov }, 2439100d7ef6SDmitry Baryshkov .clk_inefficiency_factor = 105, 2440100d7ef6SDmitry Baryshkov .bw_inefficiency_factor = 120, 2441100d7ef6SDmitry Baryshkov }; 2442100d7ef6SDmitry Baryshkov 2443591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 2444591e34a0SKrishna Manikandan .max_bw_low = 4700000, 2445591e34a0SKrishna Manikandan .max_bw_high = 8800000, 2446591e34a0SKrishna Manikandan .min_core_ib = 2500000, 2447591e34a0SKrishna Manikandan .min_llcc_ib = 0, 2448591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 2449591e34a0SKrishna Manikandan .min_prefill_lines = 24, 2450591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 24515bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 2452591e34a0SKrishna Manikandan .qos_lut_tbl = { 2453591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2454591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2455591e34a0SKrishna Manikandan }, 2456591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2457591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2458591e34a0SKrishna Manikandan }, 2459591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2460591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 2461591e34a0SKrishna Manikandan }, 2462591e34a0SKrishna Manikandan }, 2463591e34a0SKrishna Manikandan .cdp_cfg = { 2464591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 2465591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 2466591e34a0SKrishna Manikandan }, 2467591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 2468591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 2469591e34a0SKrishna Manikandan }; 2470591e34a0SKrishna Manikandan 24710e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = { 24720e91bcbbSRobert Foss .max_bw_low = 11800000, 24730e91bcbbSRobert Foss .max_bw_high = 15500000, 24740e91bcbbSRobert Foss .min_core_ib = 2500000, 24750e91bcbbSRobert Foss .min_llcc_ib = 0, 24760e91bcbbSRobert Foss .min_dram_ib = 800000, 24770e91bcbbSRobert Foss .min_prefill_lines = 40, 24780e91bcbbSRobert Foss /* FIXME: lut tables */ 24790e91bcbbSRobert Foss .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 24800e91bcbbSRobert Foss .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 24810e91bcbbSRobert Foss .qos_lut_tbl = { 24820e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_linear), 24830e91bcbbSRobert Foss .entries = sc7180_qos_linear 24840e91bcbbSRobert Foss }, 24850e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 24860e91bcbbSRobert Foss .entries = sc7180_qos_macrotile 24870e91bcbbSRobert Foss }, 24880e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 24890e91bcbbSRobert Foss .entries = sc7180_qos_nrt 24900e91bcbbSRobert Foss }, 24910e91bcbbSRobert Foss /* TODO: macrotile-qseed is different from macrotile */ 24920e91bcbbSRobert Foss }, 24930e91bcbbSRobert Foss .cdp_cfg = { 24940e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 1}, 24950e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 0} 24960e91bcbbSRobert Foss }, 24970e91bcbbSRobert Foss .clk_inefficiency_factor = 105, 24980e91bcbbSRobert Foss .bw_inefficiency_factor = 120, 24990e91bcbbSRobert Foss }; 25000e91bcbbSRobert Foss 25015334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 25025334087eSLoic Poulain .max_bw_low = 2700000, 25035334087eSLoic Poulain .max_bw_high = 2700000, 25045334087eSLoic Poulain .min_core_ib = 1300000, 25055334087eSLoic Poulain .min_llcc_ib = 0, 25065334087eSLoic Poulain .min_dram_ib = 1600000, 25075334087eSLoic Poulain .min_prefill_lines = 24, 25085334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 25095334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 25105334087eSLoic Poulain .qos_lut_tbl = { 25115334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 25125334087eSLoic Poulain .entries = qcm2290_qos_linear 25135334087eSLoic Poulain }, 25145334087eSLoic Poulain }, 25155334087eSLoic Poulain .cdp_cfg = { 25165334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 25175334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 25185334087eSLoic Poulain }, 25195334087eSLoic Poulain .clk_inefficiency_factor = 105, 25205334087eSLoic Poulain .bw_inefficiency_factor = 120, 25215334087eSLoic Poulain }; 252225fdd593SJeykumar Sankaran /************************************************************* 2523de7d480fSDmitry Baryshkov * Hardware catalog 252425fdd593SJeykumar Sankaran *************************************************************/ 252525fdd593SJeykumar Sankaran 2526de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 252794391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 252894391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 252994391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 253094391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 253194391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 253294391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 253394391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 253494391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 253594391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 25366452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 25376452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 253894391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 253994391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 254094391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 254194391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 254294391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 254394391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 254494391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 2545477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 254694391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 254794391a14SAngeloGioacchino Del Regno }; 254894391a14SAngeloGioacchino Del Regno 2549de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 255025fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 255125fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 255225fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 255325fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 255425fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 255525fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 255625fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 255725fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 255825fdd593SJeykumar Sankaran .mixer = sdm845_lm, 255925fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 256025fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 25617c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 25627c5ab05eSVinod Koul .dsc = sdm845_dsc, 256325fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 256425fdd593SJeykumar Sankaran .intf = sdm845_intf, 256525fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 256625fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 256725fdd593SJeykumar Sankaran .reg_dma_count = 1, 2568481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2569477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 2570597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 257125fdd593SJeykumar Sankaran }; 257225fdd593SJeykumar Sankaran 2573de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 25747bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 25757bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 25767bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 25777bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 25787bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 25797bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 25807bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 25817bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 25827bdc0c4bSKalyan Thota .mixer = sc7180_lm, 2583e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2584e47616dfSKalyan Thota .dspp = sc7180_dspp, 25857bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 25867bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 25877bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 25887bdc0c4bSKalyan Thota .intf = sc7180_intf, 258951e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 259051e4d60eSAbhinav Kumar .wb = sm8250_wb, 25917bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 25927bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 25937bdc0c4bSKalyan Thota .reg_dma_count = 1, 2594481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2595477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 2596597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 25977bdc0c4bSKalyan Thota }; 25987bdc0c4bSKalyan Thota 25993581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 26003581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 26013581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 26023581b706SAdam Skladowski .mdp = sm6115_mdp, 26033581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 26043581b706SAdam Skladowski .ctl = qcm2290_ctl, 26053581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 26063581b706SAdam Skladowski .sspp = sm6115_sspp, 26073581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 26083581b706SAdam Skladowski .mixer = qcm2290_lm, 26093581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 26103581b706SAdam Skladowski .dspp = qcm2290_dspp, 26113581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 26123581b706SAdam Skladowski .pingpong = qcm2290_pp, 26133581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 26143581b706SAdam Skladowski .intf = qcm2290_intf, 26153581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 26163581b706SAdam Skladowski .vbif = sdm845_vbif, 26173581b706SAdam Skladowski .perf = &sm6115_perf_data, 26183581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 26193581b706SAdam Skladowski }; 26203581b706SAdam Skladowski 2621de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 2622386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 2623386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 2624386fced3SJonathan Marek .mdp = sdm845_mdp, 2625386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2626386fced3SJonathan Marek .ctl = sm8150_ctl, 2627386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 2628386fced3SJonathan Marek .sspp = sdm845_sspp, 2629386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2630386fced3SJonathan Marek .mixer = sm8150_lm, 263105ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 263205ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 26339da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 26349da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2635386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2636386fced3SJonathan Marek .pingpong = sm8150_pp, 26374369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 26384369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2639386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2640386fced3SJonathan Marek .intf = sm8150_intf, 2641386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2642386fced3SJonathan Marek .vbif = sdm845_vbif, 2643386fced3SJonathan Marek .reg_dma_count = 1, 2644481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2645477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 2646597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 2647386fced3SJonathan Marek }; 2648386fced3SJonathan Marek 2649de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 2650f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 2651f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 2652f3af2d6eSRob Clark .mdp = sc8180x_mdp, 2653f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 2654f3af2d6eSRob Clark .ctl = sm8150_ctl, 2655f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 2656f3af2d6eSRob Clark .sspp = sdm845_sspp, 2657f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 2658f3af2d6eSRob Clark .mixer = sm8150_lm, 2659f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 2660f3af2d6eSRob Clark .pingpong = sm8150_pp, 2661f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 2662f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 2663f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 2664f3af2d6eSRob Clark .intf = sc8180x_intf, 2665f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 2666f3af2d6eSRob Clark .vbif = sdm845_vbif, 2667f3af2d6eSRob Clark .reg_dma_count = 1, 2668481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2669477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 2670f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 2671f3af2d6eSRob Clark }; 2672f3af2d6eSRob Clark 26734a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = { 26744a352c2fSBjorn Andersson .caps = &sc8280xp_dpu_caps, 26754a352c2fSBjorn Andersson .mdp_count = ARRAY_SIZE(sc8280xp_mdp), 26764a352c2fSBjorn Andersson .mdp = sc8280xp_mdp, 26774a352c2fSBjorn Andersson .ctl_count = ARRAY_SIZE(sc8280xp_ctl), 26784a352c2fSBjorn Andersson .ctl = sc8280xp_ctl, 26794a352c2fSBjorn Andersson .sspp_count = ARRAY_SIZE(sc8280xp_sspp), 26804a352c2fSBjorn Andersson .sspp = sc8280xp_sspp, 26814a352c2fSBjorn Andersson .mixer_count = ARRAY_SIZE(sc8280xp_lm), 26824a352c2fSBjorn Andersson .mixer = sc8280xp_lm, 26834a352c2fSBjorn Andersson .dspp_count = ARRAY_SIZE(sm8150_dspp), 26844a352c2fSBjorn Andersson .dspp = sm8150_dspp, 26854a352c2fSBjorn Andersson .pingpong_count = ARRAY_SIZE(sc8280xp_pp), 26864a352c2fSBjorn Andersson .pingpong = sc8280xp_pp, 26874a352c2fSBjorn Andersson .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 26884a352c2fSBjorn Andersson .merge_3d = sm8350_merge_3d, 26894a352c2fSBjorn Andersson .intf_count = ARRAY_SIZE(sc8280xp_intf), 26904a352c2fSBjorn Andersson .intf = sc8280xp_intf, 26914a352c2fSBjorn Andersson .vbif_count = ARRAY_SIZE(sdm845_vbif), 26924a352c2fSBjorn Andersson .vbif = sdm845_vbif, 269383bb1f13SDmitry Baryshkov .reg_dma_count = 1, 269483bb1f13SDmitry Baryshkov .dma_cfg = &sc8280xp_regdma, 26954a352c2fSBjorn Andersson .perf = &sc8280xp_perf_data, 26964a352c2fSBjorn Andersson .mdss_irqs = IRQ_SC8280XP_MASK, 26974a352c2fSBjorn Andersson }; 26984a352c2fSBjorn Andersson 2699de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 2700af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 2701af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 2702af776a3eSJonathan Marek .mdp = sm8250_mdp, 2703af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2704af776a3eSJonathan Marek .ctl = sm8150_ctl, 2705d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 2706d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 2707af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2708af776a3eSJonathan Marek .mixer = sm8150_lm, 270905ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 271005ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 27119da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 27129da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2713af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2714af776a3eSJonathan Marek .pingpong = sm8150_pp, 27154369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 27164369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2717af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2718af776a3eSJonathan Marek .intf = sm8150_intf, 2719af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2720af776a3eSJonathan Marek .vbif = sdm845_vbif, 272153324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 272253324b99SAbhinav Kumar .wb = sm8250_wb, 2723af776a3eSJonathan Marek .reg_dma_count = 1, 2724481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2725477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2726597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2727af776a3eSJonathan Marek }; 2728af776a3eSJonathan Marek 27290e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = { 27300e91bcbbSRobert Foss .caps = &sm8350_dpu_caps, 27310e91bcbbSRobert Foss .mdp_count = ARRAY_SIZE(sm8350_mdp), 27320e91bcbbSRobert Foss .mdp = sm8350_mdp, 27330e91bcbbSRobert Foss .ctl_count = ARRAY_SIZE(sm8350_ctl), 27340e91bcbbSRobert Foss .ctl = sm8350_ctl, 27350e91bcbbSRobert Foss .sspp_count = ARRAY_SIZE(sm8250_sspp), 27360e91bcbbSRobert Foss .sspp = sm8250_sspp, 27370e91bcbbSRobert Foss .mixer_count = ARRAY_SIZE(sm8150_lm), 27380e91bcbbSRobert Foss .mixer = sm8150_lm, 27390e91bcbbSRobert Foss .dspp_count = ARRAY_SIZE(sm8150_dspp), 27400e91bcbbSRobert Foss .dspp = sm8150_dspp, 27410e91bcbbSRobert Foss .pingpong_count = ARRAY_SIZE(sm8350_pp), 27420e91bcbbSRobert Foss .pingpong = sm8350_pp, 27430e91bcbbSRobert Foss .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 27440e91bcbbSRobert Foss .merge_3d = sm8350_merge_3d, 27450e91bcbbSRobert Foss .intf_count = ARRAY_SIZE(sm8350_intf), 27460e91bcbbSRobert Foss .intf = sm8350_intf, 27470e91bcbbSRobert Foss .vbif_count = ARRAY_SIZE(sdm845_vbif), 27480e91bcbbSRobert Foss .vbif = sdm845_vbif, 27490e91bcbbSRobert Foss .reg_dma_count = 1, 2750764b9481SDmitry Baryshkov .dma_cfg = &sm8350_regdma, 27510e91bcbbSRobert Foss .perf = &sm8350_perf_data, 27520e91bcbbSRobert Foss .mdss_irqs = IRQ_SM8350_MASK, 27530e91bcbbSRobert Foss }; 27540e91bcbbSRobert Foss 2755100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = { 2756100d7ef6SDmitry Baryshkov .caps = &sm8450_dpu_caps, 2757100d7ef6SDmitry Baryshkov .mdp_count = ARRAY_SIZE(sm8450_mdp), 2758100d7ef6SDmitry Baryshkov .mdp = sm8450_mdp, 2759100d7ef6SDmitry Baryshkov .ctl_count = ARRAY_SIZE(sm8450_ctl), 2760100d7ef6SDmitry Baryshkov .ctl = sm8450_ctl, 2761100d7ef6SDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8450_sspp), 2762100d7ef6SDmitry Baryshkov .sspp = sm8450_sspp, 2763100d7ef6SDmitry Baryshkov .mixer_count = ARRAY_SIZE(sm8150_lm), 2764100d7ef6SDmitry Baryshkov .mixer = sm8150_lm, 2765100d7ef6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 2766100d7ef6SDmitry Baryshkov .dspp = sm8150_dspp, 2767100d7ef6SDmitry Baryshkov .pingpong_count = ARRAY_SIZE(sm8450_pp), 2768100d7ef6SDmitry Baryshkov .pingpong = sm8450_pp, 2769100d7ef6SDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8450_merge_3d), 2770100d7ef6SDmitry Baryshkov .merge_3d = sm8450_merge_3d, 2771100d7ef6SDmitry Baryshkov .intf_count = ARRAY_SIZE(sm8450_intf), 2772100d7ef6SDmitry Baryshkov .intf = sm8450_intf, 2773100d7ef6SDmitry Baryshkov .vbif_count = ARRAY_SIZE(sdm845_vbif), 2774100d7ef6SDmitry Baryshkov .vbif = sdm845_vbif, 2775100d7ef6SDmitry Baryshkov .reg_dma_count = 1, 2776100d7ef6SDmitry Baryshkov .dma_cfg = &sm8450_regdma, 2777100d7ef6SDmitry Baryshkov .perf = &sm8450_perf_data, 2778100d7ef6SDmitry Baryshkov .mdss_irqs = IRQ_SM8450_MASK, 2779100d7ef6SDmitry Baryshkov }; 2780100d7ef6SDmitry Baryshkov 2781efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = { 2782efcd0107SNeil Armstrong .caps = &sm8550_dpu_caps, 2783efcd0107SNeil Armstrong .mdp_count = ARRAY_SIZE(sm8550_mdp), 2784efcd0107SNeil Armstrong .mdp = sm8550_mdp, 2785efcd0107SNeil Armstrong .ctl_count = ARRAY_SIZE(sm8550_ctl), 2786efcd0107SNeil Armstrong .ctl = sm8550_ctl, 2787efcd0107SNeil Armstrong .sspp_count = ARRAY_SIZE(sm8550_sspp), 2788efcd0107SNeil Armstrong .sspp = sm8550_sspp, 2789efcd0107SNeil Armstrong .mixer_count = ARRAY_SIZE(sm8150_lm), 2790efcd0107SNeil Armstrong .mixer = sm8150_lm, 2791efcd0107SNeil Armstrong .dspp_count = ARRAY_SIZE(sm8150_dspp), 2792efcd0107SNeil Armstrong .dspp = sm8150_dspp, 2793efcd0107SNeil Armstrong .pingpong_count = ARRAY_SIZE(sm8550_pp), 2794efcd0107SNeil Armstrong .pingpong = sm8550_pp, 2795efcd0107SNeil Armstrong .merge_3d_count = ARRAY_SIZE(sm8550_merge_3d), 2796efcd0107SNeil Armstrong .merge_3d = sm8550_merge_3d, 2797efcd0107SNeil Armstrong .intf_count = ARRAY_SIZE(sm8550_intf), 2798efcd0107SNeil Armstrong .intf = sm8550_intf, 2799efcd0107SNeil Armstrong .vbif_count = ARRAY_SIZE(sdm845_vbif), 2800efcd0107SNeil Armstrong .vbif = sdm845_vbif, 2801efcd0107SNeil Armstrong .reg_dma_count = 1, 2802efcd0107SNeil Armstrong .dma_cfg = &sm8450_regdma, 2803efcd0107SNeil Armstrong .perf = &sm8450_perf_data, 2804efcd0107SNeil Armstrong .mdss_irqs = IRQ_SM8450_MASK, 2805efcd0107SNeil Armstrong }; 2806efcd0107SNeil Armstrong 2807de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 2808591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 2809591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 2810591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 2811591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 2812591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 2813591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 2814591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 2815fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2816fca5ad26SKalyan Thota .dspp = sc7180_dspp, 2817591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 2818591e34a0SKrishna Manikandan .mixer = sc7280_lm, 2819591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 2820591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 2821591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 2822591e34a0SKrishna Manikandan .intf = sc7280_intf, 2823591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 2824591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 2825477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 2826597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 2827591e34a0SKrishna Manikandan }; 2828591e34a0SKrishna Manikandan 2829de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 28305334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 28315334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 28325334087eSLoic Poulain .mdp = qcm2290_mdp, 28335334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 28345334087eSLoic Poulain .ctl = qcm2290_ctl, 28355334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 28365334087eSLoic Poulain .sspp = qcm2290_sspp, 28375334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 28385334087eSLoic Poulain .mixer = qcm2290_lm, 28395334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 28405334087eSLoic Poulain .dspp = qcm2290_dspp, 28415334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 28425334087eSLoic Poulain .pingpong = qcm2290_pp, 28435334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 28445334087eSLoic Poulain .intf = qcm2290_intf, 28455334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 28465334087eSLoic Poulain .vbif = sdm845_vbif, 2847477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 28485334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 28495334087eSLoic Poulain }; 28505334087eSLoic Poulain 2851abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2852de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2853de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2854de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2855de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2856de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2857de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2858de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2859de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2860de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 28613581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2862de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 28630e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 2864de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 28654a352c2fSBjorn Andersson { .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg}, 2866100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 2867efcd0107SNeil Armstrong { .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg}, 286825fdd593SJeykumar Sankaran }; 286925fdd593SJeykumar Sankaran 2870de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 287125fdd593SJeykumar Sankaran { 287225fdd593SJeykumar Sankaran int i; 287325fdd593SJeykumar Sankaran 287425fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2875de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2876de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 287725fdd593SJeykumar Sankaran } 287825fdd593SJeykumar Sankaran 287925fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 288032084967SDmitry Baryshkov 288125fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 288225fdd593SJeykumar Sankaran } 288325fdd593SJeykumar Sankaran 2884