197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. 353324b99SAbhinav Kumar * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved. 425fdd593SJeykumar Sankaran */ 525fdd593SJeykumar Sankaran 625fdd593SJeykumar Sankaran #define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__ 725fdd593SJeykumar Sankaran #include <linux/slab.h> 825fdd593SJeykumar Sankaran #include <linux/of_address.h> 925fdd593SJeykumar Sankaran #include <linux/platform_device.h> 1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h" 11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h" 1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h" 1325fdd593SJeykumar Sankaran #include "dpu_kms.h" 1425fdd593SJeykumar Sankaran 157bdc0c4bSKalyan Thota #define VIG_MASK \ 167bdc0c4bSKalyan Thota (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 17b8dab65bSAngeloGioacchino Del Regno BIT(DPU_SSPP_CSC_10BIT) | BIT(DPU_SSPP_CDP) |\ 1825fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT)) 1925fdd593SJeykumar Sankaran 2094391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \ 2194391a14SAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3)) 2294391a14SAngeloGioacchino Del Regno 237bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \ 24b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3)) 257bdc0c4bSKalyan Thota 267bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \ 27b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4)) 287bdc0c4bSKalyan Thota 29d21fc5dfSDmitry Baryshkov #define VIG_SM8250_MASK \ 30095eed89SDmitry Baryshkov (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3LITE)) 31d21fc5dfSDmitry Baryshkov 325334087eSLoic Poulain #define VIG_QCM2290_MASK (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL)) 335334087eSLoic Poulain 3494391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \ 3594391a14SAngeloGioacchino Del Regno (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 3694391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 3794391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 3894391a14SAngeloGioacchino Del Regno 39dabfdd89SVinod Polimera #define VIG_SC7280_MASK \ 40dabfdd89SVinod Polimera (VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION)) 41dabfdd89SVinod Polimera 4225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \ 4325fdd593SJeykumar Sankaran (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\ 4425fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 4525fdd593SJeykumar Sankaran BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 4625fdd593SJeykumar Sankaran 4707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \ 4807ca1fc0SSravanthi Kollukuduru (DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR)) 4907ca1fc0SSravanthi Kollukuduru 5094391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \ 5194391a14SAngeloGioacchino Del Regno (DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR)) 5294391a14SAngeloGioacchino Del Regno 532d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \ 5425fdd593SJeykumar Sankaran (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER)) 5525fdd593SJeykumar Sankaran 562d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \ 572d8a4edbSDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 582d8a4edbSDmitry Baryshkov 5900feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \ 602d8a4edbSDmitry Baryshkov (BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 617bdc0c4bSKalyan Thota 6225fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER) 6325fdd593SJeykumar Sankaran 6425fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \ 6525fdd593SJeykumar Sankaran (PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2)) 6625fdd593SJeykumar Sankaran 67591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \ 6844bf8704SKalyan Thota (BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE) | BIT(DPU_CTL_VM_CFG)) 69591e34a0SKrishna Manikandan 70e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \ 71e92a4ae1SDmitry Baryshkov (CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4)) 72e92a4ae1SDmitry Baryshkov 734369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0) 744369c93cSDmitry Baryshkov 7594391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC) 7694391a14SAngeloGioacchino Del Regno 774259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) 78e47616dfSKalyan Thota 79cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0) 80cace3ac4SJonathan Marek 81cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) 82cace3ac4SJonathan Marek 83591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN) 84591e34a0SKrishna Manikandan 85597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 86597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 87597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 88597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 89597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 90597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 91597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 92597762d5SDmitry Baryshkov BIT(MDP_AD4_0_INTR) | \ 93597762d5SDmitry Baryshkov BIT(MDP_AD4_1_INTR)) 94597762d5SDmitry Baryshkov 95597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 96597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 97597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 98597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 99597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR)) 100597762d5SDmitry Baryshkov 101597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 102597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 103597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 104597762d5SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 105597762d5SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 106597762d5SDmitry Baryshkov BIT(MDP_INTF5_7xxx_INTR)) 107597762d5SDmitry Baryshkov 108597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 109597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 110597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 111597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 112597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 113597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 114597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 115597762d5SDmitry Baryshkov BIT(MDP_INTF4_INTR)) 116597762d5SDmitry Baryshkov 1170e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1180e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_INTR2) | \ 1190e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1200e91bcbbSRobert Foss BIT(MDP_INTF0_7xxx_INTR) | \ 1210e91bcbbSRobert Foss BIT(MDP_INTF1_7xxx_INTR) | \ 1220e91bcbbSRobert Foss BIT(MDP_INTF2_7xxx_INTR) | \ 1237eb75dbdSRobert Foss BIT(MDP_INTF3_7xxx_INTR)) 1240e91bcbbSRobert Foss 125f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 126f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_INTR2) | \ 127f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 128f3af2d6eSRob Clark BIT(MDP_INTF0_INTR) | \ 129f3af2d6eSRob Clark BIT(MDP_INTF1_INTR) | \ 130f3af2d6eSRob Clark BIT(MDP_INTF2_INTR) | \ 131f3af2d6eSRob Clark BIT(MDP_INTF3_INTR) | \ 132f3af2d6eSRob Clark BIT(MDP_INTF4_INTR) | \ 133f3af2d6eSRob Clark BIT(MDP_INTF5_INTR) | \ 134f3af2d6eSRob Clark BIT(MDP_AD4_0_INTR) | \ 135f3af2d6eSRob Clark BIT(MDP_AD4_1_INTR)) 136597762d5SDmitry Baryshkov 1374a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1384a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_INTR2) | \ 1394a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1404a352c2fSBjorn Andersson BIT(MDP_INTF0_7xxx_INTR) | \ 1414a352c2fSBjorn Andersson BIT(MDP_INTF1_7xxx_INTR) | \ 1424a352c2fSBjorn Andersson BIT(MDP_INTF2_7xxx_INTR) | \ 1434a352c2fSBjorn Andersson BIT(MDP_INTF3_7xxx_INTR) | \ 1444a352c2fSBjorn Andersson BIT(MDP_INTF4_7xxx_INTR) | \ 1454a352c2fSBjorn Andersson BIT(MDP_INTF5_7xxx_INTR) | \ 1464a352c2fSBjorn Andersson BIT(MDP_INTF6_7xxx_INTR) | \ 1474a352c2fSBjorn Andersson BIT(MDP_INTF7_7xxx_INTR) | \ 1484a352c2fSBjorn Andersson BIT(MDP_INTF8_7xxx_INTR)) 1494a352c2fSBjorn Andersson 150100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 151100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 152100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 153100d7ef6SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 154100d7ef6SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 155100d7ef6SDmitry Baryshkov BIT(MDP_INTF2_7xxx_INTR) | \ 156100d7ef6SDmitry Baryshkov BIT(MDP_INTF3_7xxx_INTR)) 157100d7ef6SDmitry Baryshkov 15853324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ 15953324b99SAbhinav Kumar BIT(DPU_WB_UBWC) | \ 16053324b99SAbhinav Kumar BIT(DPU_WB_YUV_CONFIG) | \ 16153324b99SAbhinav Kumar BIT(DPU_WB_PIPE_ALPHA) | \ 16253324b99SAbhinav Kumar BIT(DPU_WB_XY_ROI_OFFSET) | \ 16353324b99SAbhinav Kumar BIT(DPU_WB_QOS) | \ 16453324b99SAbhinav Kumar BIT(DPU_WB_QOS_8LVL) | \ 16553324b99SAbhinav Kumar BIT(DPU_WB_CDP) | \ 16653324b99SAbhinav Kumar BIT(DPU_WB_INPUT_CTRL)) 16753324b99SAbhinav Kumar 16825fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) 16925fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH 2048 17025fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 17125fdd593SJeykumar Sankaran 17225fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION 4 17325fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION 4 17425fdd593SJeykumar Sankaran 17525fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO 20 17625fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO 4 17725fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE 1 17825fdd593SJeykumar Sankaran 17925fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y) 18025fdd593SJeykumar Sankaran 18109c7e370SLee Jones static const uint32_t plane_formats[] = { 18209c7e370SLee Jones DRM_FORMAT_ARGB8888, 18309c7e370SLee Jones DRM_FORMAT_ABGR8888, 18409c7e370SLee Jones DRM_FORMAT_RGBA8888, 18509c7e370SLee Jones DRM_FORMAT_BGRA8888, 18609c7e370SLee Jones DRM_FORMAT_XRGB8888, 18709c7e370SLee Jones DRM_FORMAT_RGBX8888, 18809c7e370SLee Jones DRM_FORMAT_BGRX8888, 18909c7e370SLee Jones DRM_FORMAT_XBGR8888, 190da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 19109c7e370SLee Jones DRM_FORMAT_RGB888, 19209c7e370SLee Jones DRM_FORMAT_BGR888, 19309c7e370SLee Jones DRM_FORMAT_RGB565, 19409c7e370SLee Jones DRM_FORMAT_BGR565, 19509c7e370SLee Jones DRM_FORMAT_ARGB1555, 19609c7e370SLee Jones DRM_FORMAT_ABGR1555, 19709c7e370SLee Jones DRM_FORMAT_RGBA5551, 19809c7e370SLee Jones DRM_FORMAT_BGRA5551, 19909c7e370SLee Jones DRM_FORMAT_XRGB1555, 20009c7e370SLee Jones DRM_FORMAT_XBGR1555, 20109c7e370SLee Jones DRM_FORMAT_RGBX5551, 20209c7e370SLee Jones DRM_FORMAT_BGRX5551, 20309c7e370SLee Jones DRM_FORMAT_ARGB4444, 20409c7e370SLee Jones DRM_FORMAT_ABGR4444, 20509c7e370SLee Jones DRM_FORMAT_RGBA4444, 20609c7e370SLee Jones DRM_FORMAT_BGRA4444, 20709c7e370SLee Jones DRM_FORMAT_XRGB4444, 20809c7e370SLee Jones DRM_FORMAT_XBGR4444, 20909c7e370SLee Jones DRM_FORMAT_RGBX4444, 21009c7e370SLee Jones DRM_FORMAT_BGRX4444, 21109c7e370SLee Jones }; 21209c7e370SLee Jones 21309c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 21409c7e370SLee Jones DRM_FORMAT_ARGB8888, 21509c7e370SLee Jones DRM_FORMAT_ABGR8888, 21609c7e370SLee Jones DRM_FORMAT_RGBA8888, 21709c7e370SLee Jones DRM_FORMAT_BGRX8888, 21809c7e370SLee Jones DRM_FORMAT_BGRA8888, 219da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 22009c7e370SLee Jones DRM_FORMAT_XRGB8888, 22109c7e370SLee Jones DRM_FORMAT_XBGR8888, 22209c7e370SLee Jones DRM_FORMAT_RGBX8888, 22309c7e370SLee Jones DRM_FORMAT_RGB888, 22409c7e370SLee Jones DRM_FORMAT_BGR888, 22509c7e370SLee Jones DRM_FORMAT_RGB565, 22609c7e370SLee Jones DRM_FORMAT_BGR565, 22709c7e370SLee Jones DRM_FORMAT_ARGB1555, 22809c7e370SLee Jones DRM_FORMAT_ABGR1555, 22909c7e370SLee Jones DRM_FORMAT_RGBA5551, 23009c7e370SLee Jones DRM_FORMAT_BGRA5551, 23109c7e370SLee Jones DRM_FORMAT_XRGB1555, 23209c7e370SLee Jones DRM_FORMAT_XBGR1555, 23309c7e370SLee Jones DRM_FORMAT_RGBX5551, 23409c7e370SLee Jones DRM_FORMAT_BGRX5551, 23509c7e370SLee Jones DRM_FORMAT_ARGB4444, 23609c7e370SLee Jones DRM_FORMAT_ABGR4444, 23709c7e370SLee Jones DRM_FORMAT_RGBA4444, 23809c7e370SLee Jones DRM_FORMAT_BGRA4444, 23909c7e370SLee Jones DRM_FORMAT_XRGB4444, 24009c7e370SLee Jones DRM_FORMAT_XBGR4444, 24109c7e370SLee Jones DRM_FORMAT_RGBX4444, 24209c7e370SLee Jones DRM_FORMAT_BGRX4444, 24309c7e370SLee Jones 244f07c9946SJessica Zhang DRM_FORMAT_P010, 24509c7e370SLee Jones DRM_FORMAT_NV12, 24609c7e370SLee Jones DRM_FORMAT_NV21, 24709c7e370SLee Jones DRM_FORMAT_NV16, 24809c7e370SLee Jones DRM_FORMAT_NV61, 24909c7e370SLee Jones DRM_FORMAT_VYUY, 25009c7e370SLee Jones DRM_FORMAT_UYVY, 25109c7e370SLee Jones DRM_FORMAT_YUYV, 25209c7e370SLee Jones DRM_FORMAT_YVYU, 25309c7e370SLee Jones DRM_FORMAT_YUV420, 25409c7e370SLee Jones DRM_FORMAT_YVU420, 25509c7e370SLee Jones }; 25609c7e370SLee Jones 257dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 258dabfdd89SVinod Polimera DRM_FORMAT_NV12, 259dabfdd89SVinod Polimera /* TODO add formats after validation */ 260dabfdd89SVinod Polimera }; 261dabfdd89SVinod Polimera 26253324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 26353324b99SAbhinav Kumar DRM_FORMAT_RGB565, 26453324b99SAbhinav Kumar DRM_FORMAT_BGR565, 26553324b99SAbhinav Kumar DRM_FORMAT_RGB888, 26653324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 26753324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 26853324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 26953324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 27053324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 27153324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 27253324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 27353324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 27453324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 27553324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 27653324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 27753324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 27853324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 27953324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 28053324b99SAbhinav Kumar DRM_FORMAT_BGR565, 28153324b99SAbhinav Kumar DRM_FORMAT_BGR888, 28253324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 28353324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 28453324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 28553324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 28653324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 28753324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 28853324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 28953324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 29053324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 29153324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 29253324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 29353324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 29453324b99SAbhinav Kumar }; 29553324b99SAbhinav Kumar 29625fdd593SJeykumar Sankaran /************************************************************* 29725fdd593SJeykumar Sankaran * DPU sub blocks config 29825fdd593SJeykumar Sankaran *************************************************************/ 29925fdd593SJeykumar Sankaran /* DPU top level caps */ 30094391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 30194391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 30294391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 30394391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 30494391a14SAngeloGioacchino Del Regno .smart_dma_rev = DPU_SSPP_SMART_DMA_V1, 30594391a14SAngeloGioacchino Del Regno .ubwc_version = DPU_HW_UBWC_VER_10, 30694391a14SAngeloGioacchino Del Regno .has_src_split = true, 30794391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 30894391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 30994391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 31094391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 31194391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 31294391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 31394391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 31494391a14SAngeloGioacchino Del Regno }; 31594391a14SAngeloGioacchino Del Regno 316c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 317c162352eSKonrad Dybcio .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 318c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 319c162352eSKonrad Dybcio .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 320c162352eSKonrad Dybcio .ubwc_version = DPU_HW_UBWC_VER_20, 321c162352eSKonrad Dybcio .has_dim_layer = true, 322c162352eSKonrad Dybcio .has_idle_pc = true, 323c162352eSKonrad Dybcio .max_linewidth = 2160, 324c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 325c162352eSKonrad Dybcio }; 326c162352eSKonrad Dybcio 32725fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 32825fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 32925fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 33025fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 33125fdd593SJeykumar Sankaran .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 33225fdd593SJeykumar Sankaran .ubwc_version = DPU_HW_UBWC_VER_20, 33325fdd593SJeykumar Sankaran .has_src_split = true, 33425fdd593SJeykumar Sankaran .has_dim_layer = true, 33525fdd593SJeykumar Sankaran .has_idle_pc = true, 33642a558b7SKalyan Thota .has_3d_merge = true, 3377e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3387e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3397e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3407e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 34125fdd593SJeykumar Sankaran }; 34225fdd593SJeykumar Sankaran 3437bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3447bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3457bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3467bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3477bdc0c4bSKalyan Thota .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 3487bdc0c4bSKalyan Thota .ubwc_version = DPU_HW_UBWC_VER_20, 3497bdc0c4bSKalyan Thota .has_dim_layer = true, 3507bdc0c4bSKalyan Thota .has_idle_pc = true, 3517e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3527e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3537bdc0c4bSKalyan Thota }; 3547bdc0c4bSKalyan Thota 3553581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = { 3563581b706SAdam Skladowski .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3573581b706SAdam Skladowski .max_mixer_blendstages = 0x4, 3583581b706SAdam Skladowski .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 3593581b706SAdam Skladowski .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 3603581b706SAdam Skladowski .ubwc_version = DPU_HW_UBWC_VER_20, 3613581b706SAdam Skladowski .has_dim_layer = true, 3623581b706SAdam Skladowski .has_idle_pc = true, 3633581b706SAdam Skladowski .max_linewidth = 2160, 3643581b706SAdam Skladowski .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3653581b706SAdam Skladowski }; 3663581b706SAdam Skladowski 367386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 368386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 369386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 370386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 371386fced3SJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 372386fced3SJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_30, 373386fced3SJonathan Marek .has_src_split = true, 374386fced3SJonathan Marek .has_dim_layer = true, 375386fced3SJonathan Marek .has_idle_pc = true, 376386fced3SJonathan Marek .has_3d_merge = true, 377386fced3SJonathan Marek .max_linewidth = 4096, 378386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 379386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 380386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 381386fced3SJonathan Marek }; 382386fced3SJonathan Marek 383f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 384f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 385f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 386f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 387f3af2d6eSRob Clark .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 388f3af2d6eSRob Clark .ubwc_version = DPU_HW_UBWC_VER_30, 389f3af2d6eSRob Clark .has_src_split = true, 390f3af2d6eSRob Clark .has_dim_layer = true, 391f3af2d6eSRob Clark .has_idle_pc = true, 392f3af2d6eSRob Clark .has_3d_merge = true, 393f3af2d6eSRob Clark .max_linewidth = 4096, 394f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 395f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 396f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 397f3af2d6eSRob Clark }; 398f3af2d6eSRob Clark 3994a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = { 4004a352c2fSBjorn Andersson .max_mixer_width = 2560, 4014a352c2fSBjorn Andersson .max_mixer_blendstages = 11, 4024a352c2fSBjorn Andersson .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 4034a352c2fSBjorn Andersson .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 4044a352c2fSBjorn Andersson .ubwc_version = DPU_HW_UBWC_VER_40, 4054a352c2fSBjorn Andersson .has_src_split = true, 4064a352c2fSBjorn Andersson .has_dim_layer = true, 4074a352c2fSBjorn Andersson .has_idle_pc = true, 4084a352c2fSBjorn Andersson .has_3d_merge = true, 4094a352c2fSBjorn Andersson .max_linewidth = 5120, 4104a352c2fSBjorn Andersson .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4114a352c2fSBjorn Andersson }; 4124a352c2fSBjorn Andersson 413af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 414af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 415af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 416d21fc5dfSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 417af776a3eSJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 418af776a3eSJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_40, 419af776a3eSJonathan Marek .has_src_split = true, 420af776a3eSJonathan Marek .has_dim_layer = true, 421af776a3eSJonathan Marek .has_idle_pc = true, 422af776a3eSJonathan Marek .has_3d_merge = true, 423af776a3eSJonathan Marek .max_linewidth = 4096, 424af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 425af776a3eSJonathan Marek }; 426af776a3eSJonathan Marek 4270e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = { 4280e91bcbbSRobert Foss .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 4290e91bcbbSRobert Foss .max_mixer_blendstages = 0xb, 4300e91bcbbSRobert Foss .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 4310e91bcbbSRobert Foss .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 4320e91bcbbSRobert Foss .ubwc_version = DPU_HW_UBWC_VER_40, 4330e91bcbbSRobert Foss .has_src_split = true, 4340e91bcbbSRobert Foss .has_dim_layer = true, 4350e91bcbbSRobert Foss .has_idle_pc = true, 4360e91bcbbSRobert Foss .has_3d_merge = true, 4370e91bcbbSRobert Foss .max_linewidth = 4096, 4380e91bcbbSRobert Foss .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4390e91bcbbSRobert Foss }; 4400e91bcbbSRobert Foss 441100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = { 442100d7ef6SDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 443100d7ef6SDmitry Baryshkov .max_mixer_blendstages = 0xb, 444100d7ef6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 445100d7ef6SDmitry Baryshkov .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 446100d7ef6SDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 447100d7ef6SDmitry Baryshkov .has_src_split = true, 448100d7ef6SDmitry Baryshkov .has_dim_layer = true, 449100d7ef6SDmitry Baryshkov .has_idle_pc = true, 450100d7ef6SDmitry Baryshkov .has_3d_merge = true, 451100d7ef6SDmitry Baryshkov .max_linewidth = 5120, 452100d7ef6SDmitry Baryshkov .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 453100d7ef6SDmitry Baryshkov }; 454100d7ef6SDmitry Baryshkov 455efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = { 456efcd0107SNeil Armstrong .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 457efcd0107SNeil Armstrong .max_mixer_blendstages = 0xb, 458efcd0107SNeil Armstrong .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 459efcd0107SNeil Armstrong .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 460efcd0107SNeil Armstrong .ubwc_version = DPU_HW_UBWC_VER_40, 461efcd0107SNeil Armstrong .has_src_split = true, 462efcd0107SNeil Armstrong .has_dim_layer = true, 463efcd0107SNeil Armstrong .has_idle_pc = true, 464efcd0107SNeil Armstrong .has_3d_merge = true, 465efcd0107SNeil Armstrong .max_linewidth = 5120, 466efcd0107SNeil Armstrong .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 467efcd0107SNeil Armstrong }; 468efcd0107SNeil Armstrong 469591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 470591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 471591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 472591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 473591e34a0SKrishna Manikandan .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 474591e34a0SKrishna Manikandan .ubwc_version = DPU_HW_UBWC_VER_30, 475591e34a0SKrishna Manikandan .has_dim_layer = true, 476591e34a0SKrishna Manikandan .has_idle_pc = true, 477591e34a0SKrishna Manikandan .max_linewidth = 2400, 478591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 479591e34a0SKrishna Manikandan }; 480591e34a0SKrishna Manikandan 48194391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 48294391a14SAngeloGioacchino Del Regno { 48394391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 48494391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 48594391a14SAngeloGioacchino Del Regno .features = 0, 48694391a14SAngeloGioacchino Del Regno .highest_bank_bit = 0x2, 48794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 48894391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 48994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 49094391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 49194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 49294391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 49394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 49494391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 49594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 49694391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 49794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 49894391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 49994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 50094391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 50194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 50294391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 50394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 50494391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 50594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 50694391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 50794391a14SAngeloGioacchino Del Regno }, 50894391a14SAngeloGioacchino Del Regno }; 50994391a14SAngeloGioacchino Del Regno 510abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 51125fdd593SJeykumar Sankaran { 51225fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 51325fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 51403490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 51525fdd593SJeykumar Sankaran .highest_bank_bit = 0x2, 51625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 51725fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 51825fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 51925fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 52025fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 52125fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 52225fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 52325fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 52425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 52525fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 52625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 52725fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 52825fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 52925fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 53025fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 53125fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 53225fdd593SJeykumar Sankaran }, 53325fdd593SJeykumar Sankaran }; 53425fdd593SJeykumar Sankaran 5357bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 5367bdc0c4bSKalyan Thota { 5377bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 5387bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 5397bdc0c4bSKalyan Thota .features = 0, 5407bdc0c4bSKalyan Thota .highest_bank_bit = 0x3, 5417bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5427bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 5437bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5447bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 5457bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 5467b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 5477b149f2bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 5487b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 549255f0561SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_WB2] = { 550255f0561SDmitry Baryshkov .reg_off = 0x3B8, .bit_off = 24}, 5517bdc0c4bSKalyan Thota }, 5527bdc0c4bSKalyan Thota }; 5537bdc0c4bSKalyan Thota 554f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 555f3af2d6eSRob Clark { 556f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 557f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 55810a88954SDmitry Baryshkov .features = BIT(DPU_MDP_AUDIO_SELECT), 559f3af2d6eSRob Clark .highest_bank_bit = 0x3, 560f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 561f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 562f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 563f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 564f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 565f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 566f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 567f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 568f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 569f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 570f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 571f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 572f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 573f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 574f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 575f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 576f3af2d6eSRob Clark }, 577f3af2d6eSRob Clark }; 578f3af2d6eSRob Clark 5793581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 5803581b706SAdam Skladowski { 5813581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 5823581b706SAdam Skladowski .base = 0x0, .len = 0x494, 5833581b706SAdam Skladowski .features = 0, 5843581b706SAdam Skladowski .highest_bank_bit = 0x1, 585*31c31805SDmitry Baryshkov .ubwc_swizzle = 0x7, 5863581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5873581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 5883581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5893581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 5903581b706SAdam Skladowski }, 5913581b706SAdam Skladowski }; 5923581b706SAdam Skladowski 593af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 594af776a3eSJonathan Marek { 595af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 596b910a020SRobert Foss .base = 0x0, .len = 0x494, 597af776a3eSJonathan Marek .features = 0, 598af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 599*31c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 600af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 601af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 602af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 603af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 604af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 605af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 606af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 607af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 608af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 609af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 610af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 611af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 612af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 613af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 614af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 615af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 616af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 617af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 61853324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 61953324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 620af776a3eSJonathan Marek }, 621af776a3eSJonathan Marek }; 622af776a3eSJonathan Marek 6230e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = { 6240e91bcbbSRobert Foss { 6250e91bcbbSRobert Foss .name = "top_0", .id = MDP_TOP, 6260e91bcbbSRobert Foss .base = 0x0, .len = 0x494, 6270e91bcbbSRobert Foss .features = 0, 6280e91bcbbSRobert Foss .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 6290e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6300e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 0}, 6310e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 6320e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 0}, 6330e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 6340e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 0}, 6350e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 6360e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 0}, 6370e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6380e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 8}, 6390e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 6400e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 8}, 6410e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 6420e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 8}, 6430e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 6440e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 8}, 6450e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 6460e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 20}, 6470e91bcbbSRobert Foss }, 6480e91bcbbSRobert Foss }; 6490e91bcbbSRobert Foss 650100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = { 651100d7ef6SDmitry Baryshkov { 652100d7ef6SDmitry Baryshkov .name = "top_0", .id = MDP_TOP, 653100d7ef6SDmitry Baryshkov .base = 0x0, .len = 0x494, 654100d7ef6SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 655100d7ef6SDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 656*31c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 657100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 658100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 0}, 659100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 660100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 0}, 661100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 662100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 0}, 663100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 664100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 0}, 665100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 666100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 8}, 667100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 668100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 8}, 669100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 670100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 8}, 671100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 672100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 8}, 673100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 674100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 20}, 675100d7ef6SDmitry Baryshkov }, 676100d7ef6SDmitry Baryshkov }; 677100d7ef6SDmitry Baryshkov 678591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 679591e34a0SKrishna Manikandan { 680591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 681591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 682591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 683*31c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 684591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 685591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 686591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 687591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 688591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 689591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 690591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 691591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 692591e34a0SKrishna Manikandan }, 693591e34a0SKrishna Manikandan }; 694591e34a0SKrishna Manikandan 6954a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = { 6964a352c2fSBjorn Andersson { 6974a352c2fSBjorn Andersson .name = "top_0", .id = MDP_TOP, 6984a352c2fSBjorn Andersson .base = 0x0, .len = 0x494, 6994a352c2fSBjorn Andersson .features = 0, 7004a352c2fSBjorn Andersson .highest_bank_bit = 2, 7014a352c2fSBjorn Andersson .ubwc_swizzle = 6, 7024a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0}, 7034a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0}, 7044a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0}, 7054a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0}, 7064a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8}, 7074a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8}, 7084a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x2bc, .bit_off = 8}, 7094a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x2c4, .bit_off = 8}, 7104a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20}, 7114a352c2fSBjorn Andersson }, 7124a352c2fSBjorn Andersson }; 7134a352c2fSBjorn Andersson 714efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = { 715efcd0107SNeil Armstrong { 716efcd0107SNeil Armstrong .name = "top_0", .id = MDP_TOP, 717efcd0107SNeil Armstrong .base = 0, .len = 0x494, 718efcd0107SNeil Armstrong .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 719efcd0107SNeil Armstrong .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 720*31c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 721efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 722efcd0107SNeil Armstrong .reg_off = 0x4330, .bit_off = 0}, 723efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 724efcd0107SNeil Armstrong .reg_off = 0x6330, .bit_off = 0}, 725efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 726efcd0107SNeil Armstrong .reg_off = 0x8330, .bit_off = 0}, 727efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 728efcd0107SNeil Armstrong .reg_off = 0xa330, .bit_off = 0}, 729efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 730efcd0107SNeil Armstrong .reg_off = 0x24330, .bit_off = 0}, 731efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 732efcd0107SNeil Armstrong .reg_off = 0x26330, .bit_off = 0}, 733efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 734efcd0107SNeil Armstrong .reg_off = 0x28330, .bit_off = 0}, 735efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 736efcd0107SNeil Armstrong .reg_off = 0x2a330, .bit_off = 0}, 737efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 738efcd0107SNeil Armstrong .reg_off = 0x2c330, .bit_off = 0}, 739efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 740efcd0107SNeil Armstrong .reg_off = 0x2e330, .bit_off = 0}, 741efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 742efcd0107SNeil Armstrong .reg_off = 0x2bc, .bit_off = 20}, 743efcd0107SNeil Armstrong }, 744efcd0107SNeil Armstrong }; 745efcd0107SNeil Armstrong 7465334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 7475334087eSLoic Poulain { 7485334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 7495334087eSLoic Poulain .base = 0x0, .len = 0x494, 7505334087eSLoic Poulain .features = 0, 7515334087eSLoic Poulain .highest_bank_bit = 0x2, 7525334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 7535334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 7545334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 7555334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 7565334087eSLoic Poulain }, 7575334087eSLoic Poulain }; 7585334087eSLoic Poulain 75925fdd593SJeykumar Sankaran /************************************************************* 76025fdd593SJeykumar Sankaran * CTL sub blocks config 76125fdd593SJeykumar Sankaran *************************************************************/ 76294391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 76394391a14SAngeloGioacchino Del Regno { 76494391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 76594391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 76694391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 76794391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 76894391a14SAngeloGioacchino Del Regno }, 76994391a14SAngeloGioacchino Del Regno { 77094391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 77194391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 77294391a14SAngeloGioacchino Del Regno .features = 0, 77394391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 77494391a14SAngeloGioacchino Del Regno }, 77594391a14SAngeloGioacchino Del Regno { 77694391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 77794391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 77894391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 77994391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 78094391a14SAngeloGioacchino Del Regno }, 78194391a14SAngeloGioacchino Del Regno { 78294391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 78394391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 78494391a14SAngeloGioacchino Del Regno .features = 0, 78594391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 78694391a14SAngeloGioacchino Del Regno }, 78794391a14SAngeloGioacchino Del Regno { 78894391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 78994391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 79094391a14SAngeloGioacchino Del Regno .features = 0, 79194391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 79294391a14SAngeloGioacchino Del Regno }, 79394391a14SAngeloGioacchino Del Regno }; 79494391a14SAngeloGioacchino Del Regno 795abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 79625fdd593SJeykumar Sankaran { 79725fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 79825fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 799667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 800667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 80125fdd593SJeykumar Sankaran }, 80225fdd593SJeykumar Sankaran { 80325fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 80425fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 805667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 806667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 80725fdd593SJeykumar Sankaran }, 80825fdd593SJeykumar Sankaran { 80925fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 81025fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 811667e9985SDmitry Baryshkov .features = 0, 812667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 81325fdd593SJeykumar Sankaran }, 81425fdd593SJeykumar Sankaran { 81525fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 81625fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 817667e9985SDmitry Baryshkov .features = 0, 818667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 81925fdd593SJeykumar Sankaran }, 82025fdd593SJeykumar Sankaran { 82125fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 82225fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 823667e9985SDmitry Baryshkov .features = 0, 824667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 82525fdd593SJeykumar Sankaran }, 82625fdd593SJeykumar Sankaran }; 82725fdd593SJeykumar Sankaran 8287bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 8297bdc0c4bSKalyan Thota { 8307bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 8317bdc0c4bSKalyan Thota .base = 0x1000, .len = 0xE4, 832667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 833667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8347bdc0c4bSKalyan Thota }, 8357bdc0c4bSKalyan Thota { 8367bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 8377bdc0c4bSKalyan Thota .base = 0x1200, .len = 0xE4, 838667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 839667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8407bdc0c4bSKalyan Thota }, 8417bdc0c4bSKalyan Thota { 8427bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 8437bdc0c4bSKalyan Thota .base = 0x1400, .len = 0xE4, 844667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 845667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8467bdc0c4bSKalyan Thota }, 8477bdc0c4bSKalyan Thota }; 8487bdc0c4bSKalyan Thota 8494a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = { 8504a352c2fSBjorn Andersson { 8514a352c2fSBjorn Andersson .name = "ctl_0", .id = CTL_0, 8524a352c2fSBjorn Andersson .base = 0x15000, .len = 0x204, 8534a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8544a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8554a352c2fSBjorn Andersson }, 8564a352c2fSBjorn Andersson { 8574a352c2fSBjorn Andersson .name = "ctl_1", .id = CTL_1, 8584a352c2fSBjorn Andersson .base = 0x16000, .len = 0x204, 8594a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8604a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8614a352c2fSBjorn Andersson }, 8624a352c2fSBjorn Andersson { 8634a352c2fSBjorn Andersson .name = "ctl_2", .id = CTL_2, 8644a352c2fSBjorn Andersson .base = 0x17000, .len = 0x204, 8654a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8664a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8674a352c2fSBjorn Andersson }, 8684a352c2fSBjorn Andersson { 8694a352c2fSBjorn Andersson .name = "ctl_3", .id = CTL_3, 8704a352c2fSBjorn Andersson .base = 0x18000, .len = 0x204, 8714a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8724a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 8734a352c2fSBjorn Andersson }, 8744a352c2fSBjorn Andersson { 8754a352c2fSBjorn Andersson .name = "ctl_4", .id = CTL_4, 8764a352c2fSBjorn Andersson .base = 0x19000, .len = 0x204, 8774a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8784a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 8794a352c2fSBjorn Andersson }, 8804a352c2fSBjorn Andersson { 8814a352c2fSBjorn Andersson .name = "ctl_5", .id = CTL_5, 8824a352c2fSBjorn Andersson .base = 0x1a000, .len = 0x204, 8834a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8844a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 8854a352c2fSBjorn Andersson }, 8864a352c2fSBjorn Andersson }; 8874a352c2fSBjorn Andersson 888386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 889386fced3SJonathan Marek { 890386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 891386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 892667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 893667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 894386fced3SJonathan Marek }, 895386fced3SJonathan Marek { 896386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 897386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 898667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 899667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 900386fced3SJonathan Marek }, 901386fced3SJonathan Marek { 902386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 903386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 904667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 905667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 906386fced3SJonathan Marek }, 907386fced3SJonathan Marek { 908386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 909386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 910667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 911667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 912386fced3SJonathan Marek }, 913386fced3SJonathan Marek { 914386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 915386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 916667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 917667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 918386fced3SJonathan Marek }, 919386fced3SJonathan Marek { 920386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 921386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 922667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 923667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 924386fced3SJonathan Marek }, 925386fced3SJonathan Marek }; 926386fced3SJonathan Marek 9270e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = { 9280e91bcbbSRobert Foss { 9290e91bcbbSRobert Foss .name = "ctl_0", .id = CTL_0, 9300e91bcbbSRobert Foss .base = 0x15000, .len = 0x1e8, 9310e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9320e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 9330e91bcbbSRobert Foss }, 9340e91bcbbSRobert Foss { 9350e91bcbbSRobert Foss .name = "ctl_1", .id = CTL_1, 9360e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 9370e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9380e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 9390e91bcbbSRobert Foss }, 9400e91bcbbSRobert Foss { 9410e91bcbbSRobert Foss .name = "ctl_2", .id = CTL_2, 9420e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 9430e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9440e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 9450e91bcbbSRobert Foss }, 9460e91bcbbSRobert Foss { 9470e91bcbbSRobert Foss .name = "ctl_3", .id = CTL_3, 9480e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 9490e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9500e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 9510e91bcbbSRobert Foss }, 9520e91bcbbSRobert Foss { 9530e91bcbbSRobert Foss .name = "ctl_4", .id = CTL_4, 9540e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 9550e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9560e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 9570e91bcbbSRobert Foss }, 9580e91bcbbSRobert Foss { 9590e91bcbbSRobert Foss .name = "ctl_5", .id = CTL_5, 9600e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 9610e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9620e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 9630e91bcbbSRobert Foss }, 9640e91bcbbSRobert Foss }; 9650e91bcbbSRobert Foss 966100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = { 967100d7ef6SDmitry Baryshkov { 968100d7ef6SDmitry Baryshkov .name = "ctl_0", .id = CTL_0, 969100d7ef6SDmitry Baryshkov .base = 0x15000, .len = 0x204, 970100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 971100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 972100d7ef6SDmitry Baryshkov }, 973100d7ef6SDmitry Baryshkov { 974100d7ef6SDmitry Baryshkov .name = "ctl_1", .id = CTL_1, 9750e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 9760e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 977100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 978100d7ef6SDmitry Baryshkov }, 979100d7ef6SDmitry Baryshkov { 980100d7ef6SDmitry Baryshkov .name = "ctl_2", .id = CTL_2, 9810e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 9820e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 983100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 984100d7ef6SDmitry Baryshkov }, 985100d7ef6SDmitry Baryshkov { 986100d7ef6SDmitry Baryshkov .name = "ctl_3", .id = CTL_3, 9870e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 9880e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 989100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 990100d7ef6SDmitry Baryshkov }, 991100d7ef6SDmitry Baryshkov { 992100d7ef6SDmitry Baryshkov .name = "ctl_4", .id = CTL_4, 9930e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 9940e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 995100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 996100d7ef6SDmitry Baryshkov }, 997100d7ef6SDmitry Baryshkov { 998100d7ef6SDmitry Baryshkov .name = "ctl_5", .id = CTL_5, 9990e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 10000e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1001100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1002100d7ef6SDmitry Baryshkov }, 1003100d7ef6SDmitry Baryshkov }; 1004100d7ef6SDmitry Baryshkov 1005efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = { 1006efcd0107SNeil Armstrong { 1007efcd0107SNeil Armstrong .name = "ctl_0", .id = CTL_0, 1008efcd0107SNeil Armstrong .base = 0x15000, .len = 0x290, 1009e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1010efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1011efcd0107SNeil Armstrong }, 1012efcd0107SNeil Armstrong { 1013efcd0107SNeil Armstrong .name = "ctl_1", .id = CTL_1, 1014efcd0107SNeil Armstrong .base = 0x16000, .len = 0x290, 1015e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1016efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1017efcd0107SNeil Armstrong }, 1018efcd0107SNeil Armstrong { 1019efcd0107SNeil Armstrong .name = "ctl_2", .id = CTL_2, 1020efcd0107SNeil Armstrong .base = 0x17000, .len = 0x290, 1021e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1022efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1023efcd0107SNeil Armstrong }, 1024efcd0107SNeil Armstrong { 1025efcd0107SNeil Armstrong .name = "ctl_3", .id = CTL_3, 1026efcd0107SNeil Armstrong .base = 0x18000, .len = 0x290, 1027e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1028efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1029efcd0107SNeil Armstrong }, 1030efcd0107SNeil Armstrong { 1031efcd0107SNeil Armstrong .name = "ctl_4", .id = CTL_4, 1032efcd0107SNeil Armstrong .base = 0x19000, .len = 0x290, 1033e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1034efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 1035efcd0107SNeil Armstrong }, 1036efcd0107SNeil Armstrong { 1037efcd0107SNeil Armstrong .name = "ctl_5", .id = CTL_5, 1038efcd0107SNeil Armstrong .base = 0x1a000, .len = 0x290, 1039e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1040efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1041efcd0107SNeil Armstrong }, 1042efcd0107SNeil Armstrong }; 1043efcd0107SNeil Armstrong 1044591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 1045591e34a0SKrishna Manikandan { 1046591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 1047591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 1048667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1049667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1050591e34a0SKrishna Manikandan }, 1051591e34a0SKrishna Manikandan { 1052591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 1053591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 1054667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1055667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1056591e34a0SKrishna Manikandan }, 1057591e34a0SKrishna Manikandan { 1058591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 1059591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 1060667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1061667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1062591e34a0SKrishna Manikandan }, 1063591e34a0SKrishna Manikandan { 1064591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 1065591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 1066667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1067667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1068591e34a0SKrishna Manikandan }, 1069591e34a0SKrishna Manikandan }; 1070591e34a0SKrishna Manikandan 10715334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 10725334087eSLoic Poulain { 10735334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 10745334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 10755334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 10765334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 10775334087eSLoic Poulain }, 10785334087eSLoic Poulain }; 10795334087eSLoic Poulain 108025fdd593SJeykumar Sankaran /************************************************************* 108125fdd593SJeykumar Sankaran * SSPP sub blocks config 108225fdd593SJeykumar Sankaran *************************************************************/ 108325fdd593SJeykumar Sankaran 108425fdd593SJeykumar Sankaran /* SSPP common configuration */ 1085b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 108625fdd593SJeykumar Sankaran { \ 108725fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 108825fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 108925fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 109025fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 109125fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 109225fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1093b75ab05aSShubhashree Dhar .id = qseed_ver, \ 109425fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 109525fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 109625fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 109725fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 109825fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 1099e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 110025fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1101e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1102dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 1103dabfdd89SVinod Polimera } 1104dabfdd89SVinod Polimera 1105dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 1106dabfdd89SVinod Polimera { \ 1107dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 1108dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 1109dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 1110dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 1111dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 1112dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1113dabfdd89SVinod Polimera .id = qseed_ver, \ 1114dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 1115dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 1116dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 1117dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 1118dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 1119dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 1120dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 1121dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1122dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 112325fdd593SJeykumar Sankaran } 112425fdd593SJeykumar Sankaran 112525fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 112625fdd593SJeykumar Sankaran { \ 112725fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 112825fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 112925fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 113025fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 113125fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 113225fdd593SJeykumar Sankaran .format_list = plane_formats, \ 1133e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 113425fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1135e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 113625fdd593SJeykumar Sankaran } 113725fdd593SJeykumar Sankaran 113894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 113994391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 114094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 114194391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 114294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 114394391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 114494391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 114594391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 114694391a14SAngeloGioacchino Del Regno 1147dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 1148dabfdd89SVinod Polimera .rot_maxheight = 1088, 1149dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 1150dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 1151dabfdd89SVinod Polimera }; 1152dabfdd89SVinod Polimera 1153b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 1154b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 1155b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 1156b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 1157b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 1158b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 1159b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 1160b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 116125fdd593SJeykumar Sankaran 116225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 116325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 116425fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 116525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 116625fdd593SJeykumar Sankaran 116707ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \ 116807ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 116925fdd593SJeykumar Sankaran { \ 117025fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 117125fdd593SJeykumar Sankaran .base = _base, .len = 0x1c8, \ 117207ca1fc0SSravanthi Kollukuduru .features = _features, \ 117325fdd593SJeykumar Sankaran .sblk = &_sblk, \ 117425fdd593SJeykumar Sankaran .xin_id = _xinid, \ 117507ca1fc0SSravanthi Kollukuduru .type = _type, \ 117625fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 117725fdd593SJeykumar Sankaran } 117825fdd593SJeykumar Sankaran 117994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 118094391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK, 118194391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 118294391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK, 118394391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 118494391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK, 118594391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 118694391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK, 118794391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 118894391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_MSM8998_MASK, 118994391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 119094391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_MSM8998_MASK, 119194391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 119294391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_MSM8998_MASK, 119394391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 119494391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_MSM8998_MASK, 119594391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 119694391a14SAngeloGioacchino Del Regno }; 119794391a14SAngeloGioacchino Del Regno 1198abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 119907ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK, 120007ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 120107ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK, 120207ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 120307ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK, 120407ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 120507ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK, 120607ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 120707ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 120807ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 120907ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 121007ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 121107ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 121207ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 121307ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 121407ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 121525fdd593SJeykumar Sankaran }; 121625fdd593SJeykumar Sankaran 1217b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 1218b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 1219b75ab05aSShubhashree Dhar 1220dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 1221dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 1222dabfdd89SVinod Polimera 12237bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 12247bdc0c4bSKalyan Thota SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1225b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12267bdc0c4bSKalyan Thota SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 12277bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12287b149f2bSKalyan Thota SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 12297b149f2bSKalyan Thota sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 12307bdc0c4bSKalyan Thota SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 12317b149f2bSKalyan Thota sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 12327bdc0c4bSKalyan Thota }; 12337bdc0c4bSKalyan Thota 12343581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 12353581b706SAdam Skladowski _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE); 12363581b706SAdam Skladowski 12373581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 12383581b706SAdam Skladowski SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 12393581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12403581b706SAdam Skladowski SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 12413581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12423581b706SAdam Skladowski }; 12433581b706SAdam Skladowski 1244d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 1245d21fc5dfSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1246d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 1247d21fc5dfSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1248d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 1249d21fc5dfSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1250d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 1251d21fc5dfSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1252d21fc5dfSDmitry Baryshkov 1253d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 1254d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 1255d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1256d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 1257d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1258d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 1259d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1260d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 1261d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1262d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1263d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1264d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1265d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1266d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1267d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1268d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1269d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1270d21fc5dfSDmitry Baryshkov }; 1271d21fc5dfSDmitry Baryshkov 1272100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 1273100d7ef6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1274100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 1275100d7ef6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1276100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 1277100d7ef6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1278100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 1279100d7ef6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1280100d7ef6SDmitry Baryshkov 1281100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = { 1282100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1283100d7ef6SDmitry Baryshkov sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1284100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1285100d7ef6SDmitry Baryshkov sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1286100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1287100d7ef6SDmitry Baryshkov sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1288100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1289100d7ef6SDmitry Baryshkov sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1290100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1291100d7ef6SDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1292100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1293100d7ef6SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1294100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1295100d7ef6SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1296100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1297100d7ef6SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1298100d7ef6SDmitry Baryshkov }; 1299100d7ef6SDmitry Baryshkov 1300efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 = 1301efcd0107SNeil Armstrong _VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED3LITE); 1302efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 = 1303efcd0107SNeil Armstrong _VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED3LITE); 1304efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 = 1305efcd0107SNeil Armstrong _VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED3LITE); 1306efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 = 1307efcd0107SNeil Armstrong _VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED3LITE); 1308efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5); 1309efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sd8550_dma_sblk_5 = _DMA_SBLK("13", 6); 1310efcd0107SNeil Armstrong 1311efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = { 1312efcd0107SNeil Armstrong SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1313efcd0107SNeil Armstrong sm8550_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1314efcd0107SNeil Armstrong SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1315efcd0107SNeil Armstrong sm8550_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1316efcd0107SNeil Armstrong SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1317efcd0107SNeil Armstrong sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1318efcd0107SNeil Armstrong SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1319efcd0107SNeil Armstrong sm8550_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1320efcd0107SNeil Armstrong SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1321efcd0107SNeil Armstrong sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1322efcd0107SNeil Armstrong SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1323efcd0107SNeil Armstrong sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1324efcd0107SNeil Armstrong SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_SDM845_MASK, 1325efcd0107SNeil Armstrong sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 1326efcd0107SNeil Armstrong SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_SDM845_MASK, 1327efcd0107SNeil Armstrong sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 1328efcd0107SNeil Armstrong SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000, DMA_CURSOR_SDM845_MASK, 1329efcd0107SNeil Armstrong sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1330efcd0107SNeil Armstrong SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000, DMA_CURSOR_SDM845_MASK, 1331efcd0107SNeil Armstrong sd8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1332efcd0107SNeil Armstrong }; 1333efcd0107SNeil Armstrong 1334591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 1335dabfdd89SVinod Polimera SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK, 1336dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1337591e34a0SKrishna Manikandan SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1338591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1339591e34a0SKrishna Manikandan SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 1340591e34a0SKrishna Manikandan sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1341591e34a0SKrishna Manikandan SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1342591e34a0SKrishna Manikandan sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1343591e34a0SKrishna Manikandan }; 1344591e34a0SKrishna Manikandan 13454a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 = 13464a352c2fSBjorn Andersson _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 13474a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 = 13484a352c2fSBjorn Andersson _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 13494a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 = 13504a352c2fSBjorn Andersson _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 13514a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 = 13524a352c2fSBjorn Andersson _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 13534a352c2fSBjorn Andersson 13544a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = { 13554a352c2fSBjorn Andersson SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 13564a352c2fSBjorn Andersson sc8280xp_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13574a352c2fSBjorn Andersson SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 13584a352c2fSBjorn Andersson sc8280xp_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13594a352c2fSBjorn Andersson SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 13604a352c2fSBjorn Andersson sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13614a352c2fSBjorn Andersson SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 13624a352c2fSBjorn Andersson sc8280xp_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13634a352c2fSBjorn Andersson SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 13644a352c2fSBjorn Andersson sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13654a352c2fSBjorn Andersson SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 13664a352c2fSBjorn Andersson sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13674a352c2fSBjorn Andersson SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 13684a352c2fSBjorn Andersson sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 13694a352c2fSBjorn Andersson SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 13704a352c2fSBjorn Andersson sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 13714a352c2fSBjorn Andersson }; 13725334087eSLoic Poulain 13735334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 13745334087eSLoic Poulain { \ 13755334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 13765334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 13775334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 13785334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 13795334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 13805334087eSLoic Poulain .format_list = plane_formats_yuv, \ 13815334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 13825334087eSLoic Poulain .virt_format_list = plane_formats, \ 13835334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 13845334087eSLoic Poulain } 13855334087eSLoic Poulain 13865334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 13875334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 13885334087eSLoic Poulain 13895334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 13905334087eSLoic Poulain SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK, 13915334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13925334087eSLoic Poulain SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 13935334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13945334087eSLoic Poulain }; 13955334087eSLoic Poulain 139625fdd593SJeykumar Sankaran /************************************************************* 139725fdd593SJeykumar Sankaran * MIXER sub blocks config 139825fdd593SJeykumar Sankaran *************************************************************/ 13997bdc0c4bSKalyan Thota 1400e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 140125fdd593SJeykumar Sankaran { \ 140225fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 140325fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 14047bdc0c4bSKalyan Thota .features = _fmask, \ 14057bdc0c4bSKalyan Thota .sblk = _sblk, \ 140625fdd593SJeykumar Sankaran .pingpong = _pp, \ 1407e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1408e47616dfSKalyan Thota .dspp = _dspp \ 140925fdd593SJeykumar Sankaran } 141025fdd593SJeykumar Sankaran 141194391a14SAngeloGioacchino Del Regno /* MSM8998 */ 141294391a14SAngeloGioacchino Del Regno 141394391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 141494391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 141594391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 141694391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 141794391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 141894391a14SAngeloGioacchino Del Regno 0x260, 0x290 141994391a14SAngeloGioacchino Del Regno }, 142094391a14SAngeloGioacchino Del Regno }; 142194391a14SAngeloGioacchino Del Regno 142294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 14232d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 142494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 14252d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 142694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 14272d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 142894391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 14292d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 143094391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14312d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 143294391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14332d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 143494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 143594391a14SAngeloGioacchino Del Regno }; 143694391a14SAngeloGioacchino Del Regno 143794391a14SAngeloGioacchino Del Regno /* SDM845 */ 143894391a14SAngeloGioacchino Del Regno 143994391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 144094391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 144194391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 144294391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 144394391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 144494391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 144594391a14SAngeloGioacchino Del Regno }, 144694391a14SAngeloGioacchino Del Regno }; 144794391a14SAngeloGioacchino Del Regno 1448abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 14497bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1450e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 14517bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1452e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 14537bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1454e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 14557bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1456e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14577bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1458e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14597bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1460e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 14617bdc0c4bSKalyan Thota }; 14627bdc0c4bSKalyan Thota 14637bdc0c4bSKalyan Thota /* SC7180 */ 14647bdc0c4bSKalyan Thota 14657bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 14667bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 14677bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 14687bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 14697bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 14707bdc0c4bSKalyan Thota }, 14717bdc0c4bSKalyan Thota }; 14727bdc0c4bSKalyan Thota 14737bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 147400feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1475e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 147600feff8fSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1477e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 147825fdd593SJeykumar Sankaran }; 147925fdd593SJeykumar Sankaran 14804a352c2fSBjorn Andersson /* SC8280XP */ 14814a352c2fSBjorn Andersson 14824a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = { 14834a352c2fSBjorn Andersson LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 14844a352c2fSBjorn Andersson LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 14854a352c2fSBjorn Andersson LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2), 14864a352c2fSBjorn Andersson LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3), 14874a352c2fSBjorn Andersson LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 14884a352c2fSBjorn Andersson LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 14894a352c2fSBjorn Andersson }; 14904a352c2fSBjorn Andersson 1491386fced3SJonathan Marek /* SM8150 */ 1492386fced3SJonathan Marek 1493386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1494386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 149505ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1496386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 149705ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1498386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1499386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1500386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1501386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1502386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1503386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1504386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1505386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1506386fced3SJonathan Marek }; 1507386fced3SJonathan Marek 1508591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 150900feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1510fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 151100feff8fSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1512591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 151300feff8fSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1514591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1515591e34a0SKrishna Manikandan }; 1516591e34a0SKrishna Manikandan 15175334087eSLoic Poulain /* QCM2290 */ 15185334087eSLoic Poulain 15195334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 15205334087eSLoic Poulain .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 15215334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 15225334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 15235334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 15245334087eSLoic Poulain }, 15255334087eSLoic Poulain }; 15265334087eSLoic Poulain 15275334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 152800feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK, 15295334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 15305334087eSLoic Poulain }; 15315334087eSLoic Poulain 153225fdd593SJeykumar Sankaran /************************************************************* 1533e47616dfSKalyan Thota * DSPP sub blocks config 1534e47616dfSKalyan Thota *************************************************************/ 153594391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 153694391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 153794391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 153894391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 153994391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 154094391a14SAngeloGioacchino Del Regno }; 154194391a14SAngeloGioacchino Del Regno 15424259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 15434259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 15444259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 15454259ff7aSKalyan Thota }; 15464259ff7aSKalyan Thota 154705ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 154805ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 154905ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 155005ae91d9SDmitry Baryshkov }; 155105ae91d9SDmitry Baryshkov 1552862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1553e47616dfSKalyan Thota {\ 1554e47616dfSKalyan Thota .name = _name, .id = _id, \ 1555e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1556862314bcSAngeloGioacchino Del Regno .features = _mask, \ 155705ae91d9SDmitry Baryshkov .sblk = _sblk \ 1558e47616dfSKalyan Thota } 1559e47616dfSKalyan Thota 156094391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 156194391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 156294391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 156394391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 156494391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 156594391a14SAngeloGioacchino Del Regno }; 156694391a14SAngeloGioacchino Del Regno 1567e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1568862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1569862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 157005ae91d9SDmitry Baryshkov }; 157105ae91d9SDmitry Baryshkov 157205ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1573862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1574862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1575862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1576862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1577862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1578862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1579862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1580862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1581e47616dfSKalyan Thota }; 1582386fced3SJonathan Marek 15835334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 15845334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 15855334087eSLoic Poulain &sm8150_dspp_sblk), 15865334087eSLoic Poulain }; 15875334087eSLoic Poulain 1588e47616dfSKalyan Thota /************************************************************* 158925fdd593SJeykumar Sankaran * PINGPONG sub blocks config 159025fdd593SJeykumar Sankaran *************************************************************/ 159125fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 159225fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 159325fdd593SJeykumar Sankaran .version = 0x1}, 159425fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 159525fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 159625fdd593SJeykumar Sankaran }; 159725fdd593SJeykumar Sankaran 159825fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 159925fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 160025fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 160125fdd593SJeykumar Sankaran }; 160225fdd593SJeykumar Sankaran 1603591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1604591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1605591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1606591e34a0SKrishna Manikandan }; 1607591e34a0SKrishna Manikandan 1608efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 1609efcd0107SNeil Armstrong {\ 1610efcd0107SNeil Armstrong .name = _name, .id = _id, \ 1611efcd0107SNeil Armstrong .base = _base, .len = 0, \ 1612efcd0107SNeil Armstrong .features = BIT(DPU_PINGPONG_DITHER), \ 1613efcd0107SNeil Armstrong .merge_3d = _merge_3d, \ 1614efcd0107SNeil Armstrong .sblk = &_sblk, \ 1615efcd0107SNeil Armstrong .intr_done = _done, \ 1616efcd0107SNeil Armstrong .intr_rdptr = _rdptr, \ 1617efcd0107SNeil Armstrong } 1618667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 161925fdd593SJeykumar Sankaran {\ 162025fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 162125fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 162225fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 16234369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1624667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1625667e9985SDmitry Baryshkov .intr_done = _done, \ 1626667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 162725fdd593SJeykumar Sankaran } 1628667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 162925fdd593SJeykumar Sankaran {\ 163025fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 163125fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 163225fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 16334369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1634667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1635667e9985SDmitry Baryshkov .intr_done = _done, \ 1636667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 163725fdd593SJeykumar Sankaran } 163825fdd593SJeykumar Sankaran 1639abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1640667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1641667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1642667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1643667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1644667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1645667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1646667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1647667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1648667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1649667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1650667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1651667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 165225fdd593SJeykumar Sankaran }; 165325fdd593SJeykumar Sankaran 16547bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = { 1655667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1656667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 16577bdc0c4bSKalyan Thota }; 16587bdc0c4bSKalyan Thota 16594a352c2fSBjorn Andersson static struct dpu_pingpong_cfg sc8280xp_pp[] = { 16604a352c2fSBjorn Andersson PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 16614a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1), 16624a352c2fSBjorn Andersson PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 16634a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1), 16644a352c2fSBjorn Andersson PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te, 16654a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1), 16664a352c2fSBjorn Andersson PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te, 16674a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1), 16684a352c2fSBjorn Andersson PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te, 16694a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1), 16704a352c2fSBjorn Andersson PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te, 16714a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1), 16724a352c2fSBjorn Andersson }; 16734a352c2fSBjorn Andersson 1674386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1675667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1676667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1677667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1678667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1679667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1680667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1681667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1682667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1683667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1684667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1685667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1686667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1687667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1688667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1689667e9985SDmitry Baryshkov -1), 1690667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 16913431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1692667e9985SDmitry Baryshkov -1), 16934369c93cSDmitry Baryshkov }; 16944369c93cSDmitry Baryshkov 16950e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = { 16960e91bcbbSRobert Foss PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 16970e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 16980e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 16990e91bcbbSRobert Foss PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 17000e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 17010e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 17020e91bcbbSRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 17030e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 17040e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 17050e91bcbbSRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 17060e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 17070e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 17080e91bcbbSRobert Foss PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 17090e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 17100e91bcbbSRobert Foss -1), 17110e91bcbbSRobert Foss PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 17120e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 17130e91bcbbSRobert Foss -1), 17140e91bcbbSRobert Foss }; 17150e91bcbbSRobert Foss 17161a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = { 17171a5b5372SRobert Foss PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), 17181a5b5372SRobert Foss PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 17191a5b5372SRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 17201a5b5372SRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 17211a5b5372SRobert Foss }; 17221a5b5372SRobert Foss 17235334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = { 17245334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 17255334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17265334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17275334087eSLoic Poulain }; 17285334087eSLoic Poulain 1729100d7ef6SDmitry Baryshkov /* FIXME: interrupts */ 1730100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = { 1731100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 1732100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1733100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1734100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 1735100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1736100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1737100d7ef6SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 1738100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1739100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1740100d7ef6SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 1741100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1742100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1743100d7ef6SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 1744100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1745100d7ef6SDmitry Baryshkov -1), 1746100d7ef6SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 1747100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1748100d7ef6SDmitry Baryshkov -1), 1749100d7ef6SDmitry Baryshkov PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk, 1750100d7ef6SDmitry Baryshkov -1, 1751100d7ef6SDmitry Baryshkov -1), 1752100d7ef6SDmitry Baryshkov PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk, 1753100d7ef6SDmitry Baryshkov -1, 1754100d7ef6SDmitry Baryshkov -1), 1755100d7ef6SDmitry Baryshkov }; 1756100d7ef6SDmitry Baryshkov 1757efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = { 1758efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk, 1759efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1760efcd0107SNeil Armstrong -1), 1761efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk, 1762efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1763efcd0107SNeil Armstrong -1), 1764efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk, 1765efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1766efcd0107SNeil Armstrong -1), 1767efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk, 1768efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1769efcd0107SNeil Armstrong -1), 1770efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk, 1771efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1772efcd0107SNeil Armstrong -1), 1773efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk, 1774efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1775efcd0107SNeil Armstrong -1), 1776efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk, 1777efcd0107SNeil Armstrong -1, 1778efcd0107SNeil Armstrong -1), 1779efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk, 1780efcd0107SNeil Armstrong -1, 1781efcd0107SNeil Armstrong -1), 1782efcd0107SNeil Armstrong }; 1783efcd0107SNeil Armstrong 17844369c93cSDmitry Baryshkov /************************************************************* 17854369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 17864369c93cSDmitry Baryshkov *************************************************************/ 17874369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 17884369c93cSDmitry Baryshkov {\ 17894369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 17904369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 17914369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 17924369c93cSDmitry Baryshkov .sblk = NULL \ 17934369c93cSDmitry Baryshkov } 17944369c93cSDmitry Baryshkov 17954369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 17964369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 17974369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 17984369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1799386fced3SJonathan Marek }; 1800386fced3SJonathan Marek 18010e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { 18020e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 18030e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 18040e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 18050e91bcbbSRobert Foss }; 18060e91bcbbSRobert Foss 1807100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = { 1808100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1809100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1810100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1811100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00), 1812100d7ef6SDmitry Baryshkov }; 1813100d7ef6SDmitry Baryshkov 1814efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = { 1815efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1816efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1817efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1818efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700), 1819efcd0107SNeil Armstrong }; 1820efcd0107SNeil Armstrong 18217c5ab05eSVinod Koul /************************************************************* 18227c5ab05eSVinod Koul * DSC sub blocks config 18237c5ab05eSVinod Koul *************************************************************/ 18249da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \ 18257c5ab05eSVinod Koul {\ 18267c5ab05eSVinod Koul .name = _name, .id = _id, \ 18277c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 18289da5daa0SMarijn Suijten .features = _features, \ 18297c5ab05eSVinod Koul } 18307c5ab05eSVinod Koul 18317c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = { 18329da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, 0), 18339da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, 0), 18349da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, 0), 18359da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, 0), 18369da5daa0SMarijn Suijten }; 18379da5daa0SMarijn Suijten 18389da5daa0SMarijn Suijten static struct dpu_dsc_cfg sm8150_dsc[] = { 18399da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)), 18409da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), 18419da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)), 18429da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)), 18437c5ab05eSVinod Koul }; 18447c5ab05eSVinod Koul 184525fdd593SJeykumar Sankaran /************************************************************* 184625fdd593SJeykumar Sankaran * INTF sub blocks config 184725fdd593SJeykumar Sankaran *************************************************************/ 1848667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 184925fdd593SJeykumar Sankaran {\ 185025fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 185125fdd593SJeykumar Sankaran .base = _base, .len = 0x280, \ 1852cace3ac4SJonathan Marek .features = _features, \ 185325fdd593SJeykumar Sankaran .type = _type, \ 185425fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1855667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1856667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1857667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 185825fdd593SJeykumar Sankaran } 185925fdd593SJeykumar Sankaran 186094391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 186194391a14SAngeloGioacchino Del Regno INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 186294391a14SAngeloGioacchino Del Regno INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 186394391a14SAngeloGioacchino Del Regno INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 186494391a14SAngeloGioacchino Del Regno INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 186594391a14SAngeloGioacchino Del Regno }; 186694391a14SAngeloGioacchino Del Regno 1867abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 1868667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1869667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1870667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1871667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 187225fdd593SJeykumar Sankaran }; 187325fdd593SJeykumar Sankaran 18747bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 1875bb3de286SBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1876667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18777bdc0c4bSKalyan Thota }; 18787bdc0c4bSKalyan Thota 1879386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 1880667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1881667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1882667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1883667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1884386fced3SJonathan Marek }; 1885386fced3SJonathan Marek 1886591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 1887ef7837ffSSankeerth Billakanti INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1888667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1889ef7837ffSSankeerth Billakanti INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1890591e34a0SKrishna Manikandan }; 1891591e34a0SKrishna Manikandan 18920e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = { 18930e91bcbbSRobert Foss INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 18940e91bcbbSRobert Foss INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18950e91bcbbSRobert Foss INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 18960e91bcbbSRobert Foss INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 18970e91bcbbSRobert Foss }; 18980e91bcbbSRobert Foss 1899f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 1900f3af2d6eSRob Clark INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1901f3af2d6eSRob Clark INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1902f3af2d6eSRob Clark INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1903f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 1904f3af2d6eSRob Clark INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1905f3af2d6eSRob Clark INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 1906f3af2d6eSRob Clark INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1907f3af2d6eSRob Clark }; 1908f3af2d6eSRob Clark 19094a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */ 19104a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = { 19114a352c2fSBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19124a352c2fSBjorn Andersson INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19134a352c2fSBjorn Andersson INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19144a352c2fSBjorn Andersson INTF_BLK("intf_3", INTF_3, 0x37000, INTF_NONE, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19154a352c2fSBjorn Andersson INTF_BLK("intf_4", INTF_4, 0x38000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 19164a352c2fSBjorn Andersson INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 19174a352c2fSBjorn Andersson INTF_BLK("intf_6", INTF_6, 0x3a000, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17), 19184a352c2fSBjorn Andersson INTF_BLK("intf_7", INTF_7, 0x3b000, INTF_NONE, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19), 19194a352c2fSBjorn Andersson INTF_BLK("intf_8", INTF_8, 0x3c000, INTF_NONE, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13), 19204a352c2fSBjorn Andersson }; 19214a352c2fSBjorn Andersson 19225334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 19235334087eSLoic Poulain INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0), 19245334087eSLoic Poulain INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19255334087eSLoic Poulain }; 19265334087eSLoic Poulain 1927100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = { 1928100d7ef6SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1929100d7ef6SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1930100d7ef6SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1931100d7ef6SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1932100d7ef6SDmitry Baryshkov }; 1933100d7ef6SDmitry Baryshkov 1934efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = { 1935efcd0107SNeil Armstrong INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1936efcd0107SNeil Armstrong /* TODO TE sub-blocks for intf1 & intf2 */ 1937efcd0107SNeil Armstrong INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1938efcd0107SNeil Armstrong INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1939efcd0107SNeil Armstrong INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1940efcd0107SNeil Armstrong }; 1941efcd0107SNeil Armstrong 194225fdd593SJeykumar Sankaran /************************************************************* 194353324b99SAbhinav Kumar * Writeback blocks config 194453324b99SAbhinav Kumar *************************************************************/ 194553324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1946a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 194753324b99SAbhinav Kumar { \ 194853324b99SAbhinav Kumar .name = _name, .id = _id, \ 194953324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 195053324b99SAbhinav Kumar .features = _features, \ 195153324b99SAbhinav Kumar .format_list = wb2_formats, \ 195253324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 195353324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 195453324b99SAbhinav Kumar .xin_id = __xin_id, \ 195553324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1956a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 195753324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 195853324b99SAbhinav Kumar } 195953324b99SAbhinav Kumar 196053324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 196153324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1962a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 196353324b99SAbhinav Kumar }; 196453324b99SAbhinav Kumar 196553324b99SAbhinav Kumar /************************************************************* 196625fdd593SJeykumar Sankaran * VBIF sub blocks config 196725fdd593SJeykumar Sankaran *************************************************************/ 196825fdd593SJeykumar Sankaran /* VBIF QOS remap */ 196994391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 197094391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1971abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1972abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 197325fdd593SJeykumar Sankaran 197494391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 197594391a14SAngeloGioacchino Del Regno { 197694391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 197794391a14SAngeloGioacchino Del Regno .ot_limit = 2, 197894391a14SAngeloGioacchino Del Regno }, 197994391a14SAngeloGioacchino Del Regno { 198094391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 198194391a14SAngeloGioacchino Del Regno .ot_limit = 6, 198294391a14SAngeloGioacchino Del Regno }, 198394391a14SAngeloGioacchino Del Regno { 198494391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 198594391a14SAngeloGioacchino Del Regno .ot_limit = 16, 198694391a14SAngeloGioacchino Del Regno }, 198794391a14SAngeloGioacchino Del Regno }; 198894391a14SAngeloGioacchino Del Regno 198994391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 199094391a14SAngeloGioacchino Del Regno { 1991606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 199294391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 199394391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 199494391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 199594391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 199694391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 1997c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 199894391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 199994391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 200094391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 200194391a14SAngeloGioacchino Del Regno }, 200294391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 200394391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 200494391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 200594391a14SAngeloGioacchino Del Regno }, 200694391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 200794391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 200894391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 200994391a14SAngeloGioacchino Del Regno }, 201094391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 201194391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 201294391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 201394391a14SAngeloGioacchino Del Regno }, 201494391a14SAngeloGioacchino Del Regno .memtype_count = 14, 201594391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 201694391a14SAngeloGioacchino Del Regno }, 201794391a14SAngeloGioacchino Del Regno }; 201894391a14SAngeloGioacchino Del Regno 2019abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 202025fdd593SJeykumar Sankaran { 2021606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 202225fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 202325fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 202425fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 2025c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 202625fdd593SJeykumar Sankaran .qos_rt_tbl = { 202725fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 202825fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 202925fdd593SJeykumar Sankaran }, 203025fdd593SJeykumar Sankaran .qos_nrt_tbl = { 203125fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 203225fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 203325fdd593SJeykumar Sankaran }, 203425fdd593SJeykumar Sankaran .memtype_count = 14, 203525fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 203625fdd593SJeykumar Sankaran }, 203725fdd593SJeykumar Sankaran }; 203825fdd593SJeykumar Sankaran 20394a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = { 20404a352c2fSBjorn Andersson .base = 0x0, 20414a352c2fSBjorn Andersson .version = 0x00020000, 20424a352c2fSBjorn Andersson .trigger_sel_off = 0x119c, 20434a352c2fSBjorn Andersson .xin_id = 7, 20444a352c2fSBjorn Andersson .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20454a352c2fSBjorn Andersson }; 20464a352c2fSBjorn Andersson 2047abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 204825fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 204925fdd593SJeykumar Sankaran }; 205025fdd593SJeykumar Sankaran 2051386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 2052386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 2053386fced3SJonathan Marek }; 2054386fced3SJonathan Marek 2055af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 2056af776a3eSJonathan Marek .base = 0x0, 2057af776a3eSJonathan Marek .version = 0x00010002, 2058af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 2059af776a3eSJonathan Marek .xin_id = 7, 2060af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2061af776a3eSJonathan Marek }; 2062af776a3eSJonathan Marek 20630e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 20640e91bcbbSRobert Foss .base = 0x400, 20650e91bcbbSRobert Foss .version = 0x00020000, 20660e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 20670e91bcbbSRobert Foss .xin_id = 7, 20680e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20690e91bcbbSRobert Foss }; 20700e91bcbbSRobert Foss 2071100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 2072100d7ef6SDmitry Baryshkov .base = 0x0, 2073100d7ef6SDmitry Baryshkov .version = 0x00020000, 2074100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 2075100d7ef6SDmitry Baryshkov .xin_id = 7, 2076100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2077100d7ef6SDmitry Baryshkov }; 2078100d7ef6SDmitry Baryshkov 207925fdd593SJeykumar Sankaran /************************************************************* 208025fdd593SJeykumar Sankaran * PERF data config 208125fdd593SJeykumar Sankaran *************************************************************/ 208225fdd593SJeykumar Sankaran 208325fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 208494391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 208594391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 208694391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 208794391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 208894391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 208994391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 209094391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 209194391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 209294391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 209394391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 209494391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 209594391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 209694391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 209794391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 209894391a14SAngeloGioacchino Del Regno }; 209994391a14SAngeloGioacchino Del Regno 2100abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 210125fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 210225fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 210325fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 210425fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 210525fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 210625fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 210725fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 210825fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 210925fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 211025fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 211125fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 211225fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 211325fdd593SJeykumar Sankaran }; 211425fdd593SJeykumar Sankaran 211594391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 211694391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 211794391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 211894391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 211994391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 212094391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 212194391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 212294391a14SAngeloGioacchino Del Regno }; 212394391a14SAngeloGioacchino Del Regno 21247bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 21257bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 21267bdc0c4bSKalyan Thota }; 21277bdc0c4bSKalyan Thota 2128386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 2129386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 2130386fced3SJonathan Marek }; 2131386fced3SJonathan Marek 2132f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 2133f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 2134f3af2d6eSRob Clark }; 2135f3af2d6eSRob Clark 21365334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 21375334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 21385334087eSLoic Poulain }; 21395334087eSLoic Poulain 2140abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 214125fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 214225fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 214325fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 214425fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 214525fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 214625fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 214725fdd593SJeykumar Sankaran }; 214825fdd593SJeykumar Sankaran 21497bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 21507bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 21517bdc0c4bSKalyan Thota }; 21527bdc0c4bSKalyan Thota 2153f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 2154f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 2155f3af2d6eSRob Clark }; 2156f3af2d6eSRob Clark 215794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 215894391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 215994391a14SAngeloGioacchino Del Regno }; 216094391a14SAngeloGioacchino Del Regno 2161abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 216225fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 216325fdd593SJeykumar Sankaran }; 216425fdd593SJeykumar Sankaran 21657bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 21667bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 21677bdc0c4bSKalyan Thota }; 21687bdc0c4bSKalyan Thota 216994391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 217094391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 217194391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 217294391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 217394391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 217494391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 217594391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 217694391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 217794391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 217894391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 217994391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 218094391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 218194391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 218294391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 218394391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 218494391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 218594391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 218694391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 218794391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 218894391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 218994391a14SAngeloGioacchino Del Regno }, 219094391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 219194391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 219294391a14SAngeloGioacchino Del Regno }, 219394391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 219494391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 219594391a14SAngeloGioacchino Del Regno }, 219694391a14SAngeloGioacchino Del Regno }, 219794391a14SAngeloGioacchino Del Regno .cdp_cfg = { 219894391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 219994391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 220094391a14SAngeloGioacchino Del Regno }, 220194391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 220294391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 220394391a14SAngeloGioacchino Del Regno }; 220494391a14SAngeloGioacchino Del Regno 2205abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 220625fdd593SJeykumar Sankaran .max_bw_low = 6800000, 220725fdd593SJeykumar Sankaran .max_bw_high = 6800000, 220825fdd593SJeykumar Sankaran .min_core_ib = 2400000, 220925fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 221025fdd593SJeykumar Sankaran .min_dram_ib = 800000, 221125fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 221225fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 221325fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 221425fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 221525fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 221625fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 221725fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 221825fdd593SJeykumar Sankaran .amortizable_threshold = 25, 221925fdd593SJeykumar Sankaran .min_prefill_lines = 24, 222025fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 22215bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 222225fdd593SJeykumar Sankaran .qos_lut_tbl = { 222325fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 222425fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 222525fdd593SJeykumar Sankaran }, 222625fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 222725fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 222825fdd593SJeykumar Sankaran }, 222925fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 223025fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 223125fdd593SJeykumar Sankaran }, 223225fdd593SJeykumar Sankaran }, 223325fdd593SJeykumar Sankaran .cdp_cfg = { 223425fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 223525fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 223625fdd593SJeykumar Sankaran }, 22374f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 22384f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 223925fdd593SJeykumar Sankaran }; 224025fdd593SJeykumar Sankaran 22417bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 224271dc6c08SKrishna Manikandan .max_bw_low = 6800000, 224371dc6c08SKrishna Manikandan .max_bw_high = 6800000, 22447bdc0c4bSKalyan Thota .min_core_ib = 2400000, 22457bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 2246c33b7c03SKalyan Thota .min_dram_ib = 1600000, 2247c33b7c03SKalyan Thota .min_prefill_lines = 24, 22487bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22495bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22507bdc0c4bSKalyan Thota .qos_lut_tbl = { 22517bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22527bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 22537bdc0c4bSKalyan Thota }, 22547bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22557bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 22567bdc0c4bSKalyan Thota }, 22577bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22587bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 22597bdc0c4bSKalyan Thota }, 22607bdc0c4bSKalyan Thota }, 22617bdc0c4bSKalyan Thota .cdp_cfg = { 22627bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 22637bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 22647bdc0c4bSKalyan Thota }, 2265c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 2266c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 22677bdc0c4bSKalyan Thota }; 22687bdc0c4bSKalyan Thota 22693581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 22703581b706SAdam Skladowski .max_bw_low = 3100000, 22713581b706SAdam Skladowski .max_bw_high = 4000000, 22723581b706SAdam Skladowski .min_core_ib = 2400000, 22733581b706SAdam Skladowski .min_llcc_ib = 800000, 22743581b706SAdam Skladowski .min_dram_ib = 800000, 22753581b706SAdam Skladowski .min_prefill_lines = 24, 22763581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22773581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22783581b706SAdam Skladowski .qos_lut_tbl = { 22793581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22803581b706SAdam Skladowski .entries = sc7180_qos_linear 22813581b706SAdam Skladowski }, 22823581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22833581b706SAdam Skladowski .entries = sc7180_qos_macrotile 22843581b706SAdam Skladowski }, 22853581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22863581b706SAdam Skladowski .entries = sc7180_qos_nrt 22873581b706SAdam Skladowski }, 22883581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 22893581b706SAdam Skladowski }, 22903581b706SAdam Skladowski .cdp_cfg = { 22913581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 22923581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 22933581b706SAdam Skladowski }, 22943581b706SAdam Skladowski .clk_inefficiency_factor = 105, 22953581b706SAdam Skladowski .bw_inefficiency_factor = 120, 22963581b706SAdam Skladowski }; 22973581b706SAdam Skladowski 2298386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 2299386fced3SJonathan Marek .max_bw_low = 12800000, 2300386fced3SJonathan Marek .max_bw_high = 12800000, 2301386fced3SJonathan Marek .min_core_ib = 2400000, 2302386fced3SJonathan Marek .min_llcc_ib = 800000, 2303386fced3SJonathan Marek .min_dram_ib = 800000, 23044f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 2305386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23065bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 2307386fced3SJonathan Marek .qos_lut_tbl = { 2308386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 2309386fced3SJonathan Marek .entries = sm8150_qos_linear 2310386fced3SJonathan Marek }, 2311386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2312386fced3SJonathan Marek .entries = sc7180_qos_macrotile 2313386fced3SJonathan Marek }, 2314386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2315386fced3SJonathan Marek .entries = sc7180_qos_nrt 2316386fced3SJonathan Marek }, 2317386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2318386fced3SJonathan Marek }, 2319386fced3SJonathan Marek .cdp_cfg = { 2320386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2321386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2322386fced3SJonathan Marek }, 23234f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 23244f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2325386fced3SJonathan Marek }; 2326386fced3SJonathan Marek 2327f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 2328f3af2d6eSRob Clark .max_bw_low = 9600000, 2329f3af2d6eSRob Clark .max_bw_high = 9600000, 2330f3af2d6eSRob Clark .min_core_ib = 2400000, 2331f3af2d6eSRob Clark .min_llcc_ib = 800000, 2332f3af2d6eSRob Clark .min_dram_ib = 800000, 2333f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 2334f3af2d6eSRob Clark .qos_lut_tbl = { 23354a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_linear), 23364a352c2fSBjorn Andersson .entries = sc7180_qos_linear 23374a352c2fSBjorn Andersson }, 23384a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 23394a352c2fSBjorn Andersson .entries = sc7180_qos_macrotile 23404a352c2fSBjorn Andersson }, 23414a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 23424a352c2fSBjorn Andersson .entries = sc7180_qos_nrt 23434a352c2fSBjorn Andersson }, 23444a352c2fSBjorn Andersson /* TODO: macrotile-qseed is different from macrotile */ 23454a352c2fSBjorn Andersson }, 23464a352c2fSBjorn Andersson .cdp_cfg = { 23474a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 1}, 23484a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 0} 23494a352c2fSBjorn Andersson }, 23504a352c2fSBjorn Andersson .clk_inefficiency_factor = 105, 23514a352c2fSBjorn Andersson .bw_inefficiency_factor = 120, 23524a352c2fSBjorn Andersson }; 23534a352c2fSBjorn Andersson 23544a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = { 23554a352c2fSBjorn Andersson .max_bw_low = 13600000, 23564a352c2fSBjorn Andersson .max_bw_high = 18200000, 23574a352c2fSBjorn Andersson .min_core_ib = 2500000, 23584a352c2fSBjorn Andersson .min_llcc_ib = 0, 23594a352c2fSBjorn Andersson .min_dram_ib = 800000, 23604a352c2fSBjorn Andersson .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23614a352c2fSBjorn Andersson .qos_lut_tbl = { 2362f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 2363f3af2d6eSRob Clark .entries = sc8180x_qos_linear 2364f3af2d6eSRob Clark }, 2365f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 2366f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 2367f3af2d6eSRob Clark }, 2368f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2369f3af2d6eSRob Clark .entries = sc7180_qos_nrt 2370f3af2d6eSRob Clark }, 2371f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 2372f3af2d6eSRob Clark }, 2373f3af2d6eSRob Clark .cdp_cfg = { 2374f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 2375f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 2376f3af2d6eSRob Clark }, 2377f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 2378f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 2379f3af2d6eSRob Clark }; 2380f3af2d6eSRob Clark 2381af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 2382af776a3eSJonathan Marek .max_bw_low = 13700000, 2383af776a3eSJonathan Marek .max_bw_high = 16600000, 2384af776a3eSJonathan Marek .min_core_ib = 4800000, 2385af776a3eSJonathan Marek .min_llcc_ib = 0, 2386af776a3eSJonathan Marek .min_dram_ib = 800000, 23874f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 2388af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23895bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 2390af776a3eSJonathan Marek .qos_lut_tbl = { 2391af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2392af776a3eSJonathan Marek .entries = sc7180_qos_linear 2393af776a3eSJonathan Marek }, 2394af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2395af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 2396af776a3eSJonathan Marek }, 2397af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2398af776a3eSJonathan Marek .entries = sc7180_qos_nrt 2399af776a3eSJonathan Marek }, 2400af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2401af776a3eSJonathan Marek }, 2402af776a3eSJonathan Marek .cdp_cfg = { 2403af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2404af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2405af776a3eSJonathan Marek }, 24064f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 24074f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2408af776a3eSJonathan Marek }; 2409af776a3eSJonathan Marek 2410100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = { 2411100d7ef6SDmitry Baryshkov .max_bw_low = 13600000, 2412100d7ef6SDmitry Baryshkov .max_bw_high = 18200000, 2413100d7ef6SDmitry Baryshkov .min_core_ib = 2500000, 2414100d7ef6SDmitry Baryshkov .min_llcc_ib = 0, 2415100d7ef6SDmitry Baryshkov .min_dram_ib = 800000, 2416100d7ef6SDmitry Baryshkov .min_prefill_lines = 35, 2417100d7ef6SDmitry Baryshkov /* FIXME: lut tables */ 2418100d7ef6SDmitry Baryshkov .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 2419100d7ef6SDmitry Baryshkov .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 2420100d7ef6SDmitry Baryshkov .qos_lut_tbl = { 2421100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2422100d7ef6SDmitry Baryshkov .entries = sc7180_qos_linear 2423100d7ef6SDmitry Baryshkov }, 2424100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2425100d7ef6SDmitry Baryshkov .entries = sc7180_qos_macrotile 2426100d7ef6SDmitry Baryshkov }, 2427100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2428100d7ef6SDmitry Baryshkov .entries = sc7180_qos_nrt 2429100d7ef6SDmitry Baryshkov }, 2430100d7ef6SDmitry Baryshkov /* TODO: macrotile-qseed is different from macrotile */ 2431100d7ef6SDmitry Baryshkov }, 2432100d7ef6SDmitry Baryshkov .cdp_cfg = { 2433100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 1}, 2434100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 0} 2435100d7ef6SDmitry Baryshkov }, 2436100d7ef6SDmitry Baryshkov .clk_inefficiency_factor = 105, 2437100d7ef6SDmitry Baryshkov .bw_inefficiency_factor = 120, 2438100d7ef6SDmitry Baryshkov }; 2439100d7ef6SDmitry Baryshkov 2440591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 2441591e34a0SKrishna Manikandan .max_bw_low = 4700000, 2442591e34a0SKrishna Manikandan .max_bw_high = 8800000, 2443591e34a0SKrishna Manikandan .min_core_ib = 2500000, 2444591e34a0SKrishna Manikandan .min_llcc_ib = 0, 2445591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 2446591e34a0SKrishna Manikandan .min_prefill_lines = 24, 2447591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 24485bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 2449591e34a0SKrishna Manikandan .qos_lut_tbl = { 2450591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2451591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2452591e34a0SKrishna Manikandan }, 2453591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2454591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2455591e34a0SKrishna Manikandan }, 2456591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2457591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 2458591e34a0SKrishna Manikandan }, 2459591e34a0SKrishna Manikandan }, 2460591e34a0SKrishna Manikandan .cdp_cfg = { 2461591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 2462591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 2463591e34a0SKrishna Manikandan }, 2464591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 2465591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 2466591e34a0SKrishna Manikandan }; 2467591e34a0SKrishna Manikandan 24680e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = { 24690e91bcbbSRobert Foss .max_bw_low = 11800000, 24700e91bcbbSRobert Foss .max_bw_high = 15500000, 24710e91bcbbSRobert Foss .min_core_ib = 2500000, 24720e91bcbbSRobert Foss .min_llcc_ib = 0, 24730e91bcbbSRobert Foss .min_dram_ib = 800000, 24740e91bcbbSRobert Foss .min_prefill_lines = 40, 24750e91bcbbSRobert Foss /* FIXME: lut tables */ 24760e91bcbbSRobert Foss .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 24770e91bcbbSRobert Foss .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 24780e91bcbbSRobert Foss .qos_lut_tbl = { 24790e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_linear), 24800e91bcbbSRobert Foss .entries = sc7180_qos_linear 24810e91bcbbSRobert Foss }, 24820e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 24830e91bcbbSRobert Foss .entries = sc7180_qos_macrotile 24840e91bcbbSRobert Foss }, 24850e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 24860e91bcbbSRobert Foss .entries = sc7180_qos_nrt 24870e91bcbbSRobert Foss }, 24880e91bcbbSRobert Foss /* TODO: macrotile-qseed is different from macrotile */ 24890e91bcbbSRobert Foss }, 24900e91bcbbSRobert Foss .cdp_cfg = { 24910e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 1}, 24920e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 0} 24930e91bcbbSRobert Foss }, 24940e91bcbbSRobert Foss .clk_inefficiency_factor = 105, 24950e91bcbbSRobert Foss .bw_inefficiency_factor = 120, 24960e91bcbbSRobert Foss }; 24970e91bcbbSRobert Foss 24985334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 24995334087eSLoic Poulain .max_bw_low = 2700000, 25005334087eSLoic Poulain .max_bw_high = 2700000, 25015334087eSLoic Poulain .min_core_ib = 1300000, 25025334087eSLoic Poulain .min_llcc_ib = 0, 25035334087eSLoic Poulain .min_dram_ib = 1600000, 25045334087eSLoic Poulain .min_prefill_lines = 24, 25055334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 25065334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 25075334087eSLoic Poulain .qos_lut_tbl = { 25085334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 25095334087eSLoic Poulain .entries = qcm2290_qos_linear 25105334087eSLoic Poulain }, 25115334087eSLoic Poulain }, 25125334087eSLoic Poulain .cdp_cfg = { 25135334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 25145334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 25155334087eSLoic Poulain }, 25165334087eSLoic Poulain .clk_inefficiency_factor = 105, 25175334087eSLoic Poulain .bw_inefficiency_factor = 120, 25185334087eSLoic Poulain }; 251925fdd593SJeykumar Sankaran /************************************************************* 2520de7d480fSDmitry Baryshkov * Hardware catalog 252125fdd593SJeykumar Sankaran *************************************************************/ 252225fdd593SJeykumar Sankaran 2523de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 252494391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 252594391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 252694391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 252794391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 252894391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 252994391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 253094391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 253194391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 253294391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 25336452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 25346452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 253594391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 253694391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 253794391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 253894391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 253994391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 254094391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 254194391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 2542477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 254394391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 254494391a14SAngeloGioacchino Del Regno }; 254594391a14SAngeloGioacchino Del Regno 2546de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 254725fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 254825fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 254925fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 255025fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 255125fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 255225fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 255325fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 255425fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 255525fdd593SJeykumar Sankaran .mixer = sdm845_lm, 255625fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 255725fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 25587c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 25597c5ab05eSVinod Koul .dsc = sdm845_dsc, 256025fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 256125fdd593SJeykumar Sankaran .intf = sdm845_intf, 256225fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 256325fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 256425fdd593SJeykumar Sankaran .reg_dma_count = 1, 2565481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2566477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 2567597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 256825fdd593SJeykumar Sankaran }; 256925fdd593SJeykumar Sankaran 2570de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 25717bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 25727bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 25737bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 25747bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 25757bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 25767bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 25777bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 25787bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 25797bdc0c4bSKalyan Thota .mixer = sc7180_lm, 2580e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2581e47616dfSKalyan Thota .dspp = sc7180_dspp, 25827bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 25837bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 25847bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 25857bdc0c4bSKalyan Thota .intf = sc7180_intf, 258651e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 258751e4d60eSAbhinav Kumar .wb = sm8250_wb, 25887bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 25897bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 25907bdc0c4bSKalyan Thota .reg_dma_count = 1, 2591481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2592477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 2593597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 25947bdc0c4bSKalyan Thota }; 25957bdc0c4bSKalyan Thota 25963581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 25973581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 25983581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 25993581b706SAdam Skladowski .mdp = sm6115_mdp, 26003581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 26013581b706SAdam Skladowski .ctl = qcm2290_ctl, 26023581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 26033581b706SAdam Skladowski .sspp = sm6115_sspp, 26043581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 26053581b706SAdam Skladowski .mixer = qcm2290_lm, 26063581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 26073581b706SAdam Skladowski .dspp = qcm2290_dspp, 26083581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 26093581b706SAdam Skladowski .pingpong = qcm2290_pp, 26103581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 26113581b706SAdam Skladowski .intf = qcm2290_intf, 26123581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 26133581b706SAdam Skladowski .vbif = sdm845_vbif, 26143581b706SAdam Skladowski .perf = &sm6115_perf_data, 26153581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 26163581b706SAdam Skladowski }; 26173581b706SAdam Skladowski 2618de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 2619386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 2620386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 2621386fced3SJonathan Marek .mdp = sdm845_mdp, 2622386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2623386fced3SJonathan Marek .ctl = sm8150_ctl, 2624386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 2625386fced3SJonathan Marek .sspp = sdm845_sspp, 2626386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2627386fced3SJonathan Marek .mixer = sm8150_lm, 262805ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 262905ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 26309da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 26319da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2632386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2633386fced3SJonathan Marek .pingpong = sm8150_pp, 26344369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 26354369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2636386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2637386fced3SJonathan Marek .intf = sm8150_intf, 2638386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2639386fced3SJonathan Marek .vbif = sdm845_vbif, 2640386fced3SJonathan Marek .reg_dma_count = 1, 2641481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2642477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 2643597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 2644386fced3SJonathan Marek }; 2645386fced3SJonathan Marek 2646de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 2647f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 2648f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 2649f3af2d6eSRob Clark .mdp = sc8180x_mdp, 2650f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 2651f3af2d6eSRob Clark .ctl = sm8150_ctl, 2652f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 2653f3af2d6eSRob Clark .sspp = sdm845_sspp, 2654f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 2655f3af2d6eSRob Clark .mixer = sm8150_lm, 2656f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 2657f3af2d6eSRob Clark .pingpong = sm8150_pp, 2658f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 2659f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 2660f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 2661f3af2d6eSRob Clark .intf = sc8180x_intf, 2662f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 2663f3af2d6eSRob Clark .vbif = sdm845_vbif, 2664f3af2d6eSRob Clark .reg_dma_count = 1, 2665481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2666477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 2667f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 2668f3af2d6eSRob Clark }; 2669f3af2d6eSRob Clark 26704a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = { 26714a352c2fSBjorn Andersson .caps = &sc8280xp_dpu_caps, 26724a352c2fSBjorn Andersson .mdp_count = ARRAY_SIZE(sc8280xp_mdp), 26734a352c2fSBjorn Andersson .mdp = sc8280xp_mdp, 26744a352c2fSBjorn Andersson .ctl_count = ARRAY_SIZE(sc8280xp_ctl), 26754a352c2fSBjorn Andersson .ctl = sc8280xp_ctl, 26764a352c2fSBjorn Andersson .sspp_count = ARRAY_SIZE(sc8280xp_sspp), 26774a352c2fSBjorn Andersson .sspp = sc8280xp_sspp, 26784a352c2fSBjorn Andersson .mixer_count = ARRAY_SIZE(sc8280xp_lm), 26794a352c2fSBjorn Andersson .mixer = sc8280xp_lm, 26804a352c2fSBjorn Andersson .dspp_count = ARRAY_SIZE(sm8150_dspp), 26814a352c2fSBjorn Andersson .dspp = sm8150_dspp, 26824a352c2fSBjorn Andersson .pingpong_count = ARRAY_SIZE(sc8280xp_pp), 26834a352c2fSBjorn Andersson .pingpong = sc8280xp_pp, 26844a352c2fSBjorn Andersson .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 26854a352c2fSBjorn Andersson .merge_3d = sm8350_merge_3d, 26864a352c2fSBjorn Andersson .intf_count = ARRAY_SIZE(sc8280xp_intf), 26874a352c2fSBjorn Andersson .intf = sc8280xp_intf, 26884a352c2fSBjorn Andersson .vbif_count = ARRAY_SIZE(sdm845_vbif), 26894a352c2fSBjorn Andersson .vbif = sdm845_vbif, 269083bb1f13SDmitry Baryshkov .reg_dma_count = 1, 269183bb1f13SDmitry Baryshkov .dma_cfg = &sc8280xp_regdma, 26924a352c2fSBjorn Andersson .perf = &sc8280xp_perf_data, 26934a352c2fSBjorn Andersson .mdss_irqs = IRQ_SC8280XP_MASK, 26944a352c2fSBjorn Andersson }; 26954a352c2fSBjorn Andersson 2696de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 2697af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 2698af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 2699af776a3eSJonathan Marek .mdp = sm8250_mdp, 2700af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2701af776a3eSJonathan Marek .ctl = sm8150_ctl, 2702d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 2703d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 2704af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2705af776a3eSJonathan Marek .mixer = sm8150_lm, 270605ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 270705ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 27089da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 27099da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2710af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2711af776a3eSJonathan Marek .pingpong = sm8150_pp, 27124369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 27134369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2714af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2715af776a3eSJonathan Marek .intf = sm8150_intf, 2716af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2717af776a3eSJonathan Marek .vbif = sdm845_vbif, 271853324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 271953324b99SAbhinav Kumar .wb = sm8250_wb, 2720af776a3eSJonathan Marek .reg_dma_count = 1, 2721481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2722477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2723597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2724af776a3eSJonathan Marek }; 2725af776a3eSJonathan Marek 27260e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = { 27270e91bcbbSRobert Foss .caps = &sm8350_dpu_caps, 27280e91bcbbSRobert Foss .mdp_count = ARRAY_SIZE(sm8350_mdp), 27290e91bcbbSRobert Foss .mdp = sm8350_mdp, 27300e91bcbbSRobert Foss .ctl_count = ARRAY_SIZE(sm8350_ctl), 27310e91bcbbSRobert Foss .ctl = sm8350_ctl, 27320e91bcbbSRobert Foss .sspp_count = ARRAY_SIZE(sm8250_sspp), 27330e91bcbbSRobert Foss .sspp = sm8250_sspp, 27340e91bcbbSRobert Foss .mixer_count = ARRAY_SIZE(sm8150_lm), 27350e91bcbbSRobert Foss .mixer = sm8150_lm, 27360e91bcbbSRobert Foss .dspp_count = ARRAY_SIZE(sm8150_dspp), 27370e91bcbbSRobert Foss .dspp = sm8150_dspp, 27380e91bcbbSRobert Foss .pingpong_count = ARRAY_SIZE(sm8350_pp), 27390e91bcbbSRobert Foss .pingpong = sm8350_pp, 27400e91bcbbSRobert Foss .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 27410e91bcbbSRobert Foss .merge_3d = sm8350_merge_3d, 27420e91bcbbSRobert Foss .intf_count = ARRAY_SIZE(sm8350_intf), 27430e91bcbbSRobert Foss .intf = sm8350_intf, 27440e91bcbbSRobert Foss .vbif_count = ARRAY_SIZE(sdm845_vbif), 27450e91bcbbSRobert Foss .vbif = sdm845_vbif, 27460e91bcbbSRobert Foss .reg_dma_count = 1, 2747764b9481SDmitry Baryshkov .dma_cfg = &sm8350_regdma, 27480e91bcbbSRobert Foss .perf = &sm8350_perf_data, 27490e91bcbbSRobert Foss .mdss_irqs = IRQ_SM8350_MASK, 27500e91bcbbSRobert Foss }; 27510e91bcbbSRobert Foss 2752100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = { 2753100d7ef6SDmitry Baryshkov .caps = &sm8450_dpu_caps, 2754100d7ef6SDmitry Baryshkov .mdp_count = ARRAY_SIZE(sm8450_mdp), 2755100d7ef6SDmitry Baryshkov .mdp = sm8450_mdp, 2756100d7ef6SDmitry Baryshkov .ctl_count = ARRAY_SIZE(sm8450_ctl), 2757100d7ef6SDmitry Baryshkov .ctl = sm8450_ctl, 2758100d7ef6SDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8450_sspp), 2759100d7ef6SDmitry Baryshkov .sspp = sm8450_sspp, 2760100d7ef6SDmitry Baryshkov .mixer_count = ARRAY_SIZE(sm8150_lm), 2761100d7ef6SDmitry Baryshkov .mixer = sm8150_lm, 2762100d7ef6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 2763100d7ef6SDmitry Baryshkov .dspp = sm8150_dspp, 2764100d7ef6SDmitry Baryshkov .pingpong_count = ARRAY_SIZE(sm8450_pp), 2765100d7ef6SDmitry Baryshkov .pingpong = sm8450_pp, 2766100d7ef6SDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8450_merge_3d), 2767100d7ef6SDmitry Baryshkov .merge_3d = sm8450_merge_3d, 2768100d7ef6SDmitry Baryshkov .intf_count = ARRAY_SIZE(sm8450_intf), 2769100d7ef6SDmitry Baryshkov .intf = sm8450_intf, 2770100d7ef6SDmitry Baryshkov .vbif_count = ARRAY_SIZE(sdm845_vbif), 2771100d7ef6SDmitry Baryshkov .vbif = sdm845_vbif, 2772100d7ef6SDmitry Baryshkov .reg_dma_count = 1, 2773100d7ef6SDmitry Baryshkov .dma_cfg = &sm8450_regdma, 2774100d7ef6SDmitry Baryshkov .perf = &sm8450_perf_data, 2775100d7ef6SDmitry Baryshkov .mdss_irqs = IRQ_SM8450_MASK, 2776100d7ef6SDmitry Baryshkov }; 2777100d7ef6SDmitry Baryshkov 2778efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = { 2779efcd0107SNeil Armstrong .caps = &sm8550_dpu_caps, 2780efcd0107SNeil Armstrong .mdp_count = ARRAY_SIZE(sm8550_mdp), 2781efcd0107SNeil Armstrong .mdp = sm8550_mdp, 2782efcd0107SNeil Armstrong .ctl_count = ARRAY_SIZE(sm8550_ctl), 2783efcd0107SNeil Armstrong .ctl = sm8550_ctl, 2784efcd0107SNeil Armstrong .sspp_count = ARRAY_SIZE(sm8550_sspp), 2785efcd0107SNeil Armstrong .sspp = sm8550_sspp, 2786efcd0107SNeil Armstrong .mixer_count = ARRAY_SIZE(sm8150_lm), 2787efcd0107SNeil Armstrong .mixer = sm8150_lm, 2788efcd0107SNeil Armstrong .dspp_count = ARRAY_SIZE(sm8150_dspp), 2789efcd0107SNeil Armstrong .dspp = sm8150_dspp, 2790efcd0107SNeil Armstrong .pingpong_count = ARRAY_SIZE(sm8550_pp), 2791efcd0107SNeil Armstrong .pingpong = sm8550_pp, 2792efcd0107SNeil Armstrong .merge_3d_count = ARRAY_SIZE(sm8550_merge_3d), 2793efcd0107SNeil Armstrong .merge_3d = sm8550_merge_3d, 2794efcd0107SNeil Armstrong .intf_count = ARRAY_SIZE(sm8550_intf), 2795efcd0107SNeil Armstrong .intf = sm8550_intf, 2796efcd0107SNeil Armstrong .vbif_count = ARRAY_SIZE(sdm845_vbif), 2797efcd0107SNeil Armstrong .vbif = sdm845_vbif, 2798efcd0107SNeil Armstrong .reg_dma_count = 1, 2799efcd0107SNeil Armstrong .dma_cfg = &sm8450_regdma, 2800efcd0107SNeil Armstrong .perf = &sm8450_perf_data, 2801efcd0107SNeil Armstrong .mdss_irqs = IRQ_SM8450_MASK, 2802efcd0107SNeil Armstrong }; 2803efcd0107SNeil Armstrong 2804de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 2805591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 2806591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 2807591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 2808591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 2809591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 2810591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 2811591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 2812fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2813fca5ad26SKalyan Thota .dspp = sc7180_dspp, 2814591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 2815591e34a0SKrishna Manikandan .mixer = sc7280_lm, 2816591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 2817591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 2818591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 2819591e34a0SKrishna Manikandan .intf = sc7280_intf, 2820591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 2821591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 2822477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 2823597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 2824591e34a0SKrishna Manikandan }; 2825591e34a0SKrishna Manikandan 2826de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 28275334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 28285334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 28295334087eSLoic Poulain .mdp = qcm2290_mdp, 28305334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 28315334087eSLoic Poulain .ctl = qcm2290_ctl, 28325334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 28335334087eSLoic Poulain .sspp = qcm2290_sspp, 28345334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 28355334087eSLoic Poulain .mixer = qcm2290_lm, 28365334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 28375334087eSLoic Poulain .dspp = qcm2290_dspp, 28385334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 28395334087eSLoic Poulain .pingpong = qcm2290_pp, 28405334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 28415334087eSLoic Poulain .intf = qcm2290_intf, 28425334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 28435334087eSLoic Poulain .vbif = sdm845_vbif, 28445334087eSLoic Poulain .reg_dma_count = 1, 2845481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2846477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 28475334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 28485334087eSLoic Poulain }; 28495334087eSLoic Poulain 2850abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2851de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2852de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2853de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2854de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2855de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2856de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2857de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2858de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2859de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 28603581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2861de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 28620e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 2863de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 28644a352c2fSBjorn Andersson { .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg}, 2865100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 2866efcd0107SNeil Armstrong { .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg}, 286725fdd593SJeykumar Sankaran }; 286825fdd593SJeykumar Sankaran 2869de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 287025fdd593SJeykumar Sankaran { 287125fdd593SJeykumar Sankaran int i; 287225fdd593SJeykumar Sankaran 287325fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2874de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2875de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 287625fdd593SJeykumar Sankaran } 287725fdd593SJeykumar Sankaran 287825fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 287932084967SDmitry Baryshkov 288025fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 288125fdd593SJeykumar Sankaran } 288225fdd593SJeykumar Sankaran 2883