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}, 5497bdc0c4bSKalyan Thota }, 5507bdc0c4bSKalyan Thota }; 5517bdc0c4bSKalyan Thota 552f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 553f3af2d6eSRob Clark { 554f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 555f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 55610a88954SDmitry Baryshkov .features = BIT(DPU_MDP_AUDIO_SELECT), 557f3af2d6eSRob Clark .highest_bank_bit = 0x3, 558f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 559f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 560f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 561f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 562f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 563f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 564f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 565f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 566f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 567f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 568f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 569f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 570f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 571f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 572f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 573f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 574f3af2d6eSRob Clark }, 575f3af2d6eSRob Clark }; 576f3af2d6eSRob Clark 5773581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 5783581b706SAdam Skladowski { 5793581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 5803581b706SAdam Skladowski .base = 0x0, .len = 0x494, 5813581b706SAdam Skladowski .features = 0, 5823581b706SAdam Skladowski .highest_bank_bit = 0x1, 5833581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5843581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 5853581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5863581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 5873581b706SAdam Skladowski }, 5883581b706SAdam Skladowski }; 5893581b706SAdam Skladowski 590af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 591af776a3eSJonathan Marek { 592af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 593b910a020SRobert Foss .base = 0x0, .len = 0x494, 594af776a3eSJonathan Marek .features = 0, 595af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 596af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 597af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 598af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 599af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 600af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 601af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 602af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 603af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 604af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 605af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 606af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 607af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 608af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 609af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 610af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 611af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 612af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 613af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 61453324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 61553324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 616af776a3eSJonathan Marek }, 617af776a3eSJonathan Marek }; 618af776a3eSJonathan Marek 6190e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = { 6200e91bcbbSRobert Foss { 6210e91bcbbSRobert Foss .name = "top_0", .id = MDP_TOP, 6220e91bcbbSRobert Foss .base = 0x0, .len = 0x494, 6230e91bcbbSRobert Foss .features = 0, 6240e91bcbbSRobert Foss .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 6250e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6260e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 0}, 6270e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 6280e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 0}, 6290e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 6300e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 0}, 6310e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 6320e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 0}, 6330e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6340e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 8}, 6350e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 6360e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 8}, 6370e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 6380e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 8}, 6390e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 6400e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 8}, 6410e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 6420e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 20}, 6430e91bcbbSRobert Foss }, 6440e91bcbbSRobert Foss }; 6450e91bcbbSRobert Foss 646100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = { 647100d7ef6SDmitry Baryshkov { 648100d7ef6SDmitry Baryshkov .name = "top_0", .id = MDP_TOP, 649100d7ef6SDmitry Baryshkov .base = 0x0, .len = 0x494, 650100d7ef6SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 651100d7ef6SDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 652100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 653100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 0}, 654100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 655100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 0}, 656100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 657100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 0}, 658100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 659100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 0}, 660100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 661100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 8}, 662100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 663100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 8}, 664100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 665100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 8}, 666100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 667100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 8}, 668100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 669100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 20}, 670100d7ef6SDmitry Baryshkov }, 671100d7ef6SDmitry Baryshkov }; 672100d7ef6SDmitry Baryshkov 673591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 674591e34a0SKrishna Manikandan { 675591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 676591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 677591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 678591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 679591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 680591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 681591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 682591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 683591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 684591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 685591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 686591e34a0SKrishna Manikandan }, 687591e34a0SKrishna Manikandan }; 688591e34a0SKrishna Manikandan 6894a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = { 6904a352c2fSBjorn Andersson { 6914a352c2fSBjorn Andersson .name = "top_0", .id = MDP_TOP, 6924a352c2fSBjorn Andersson .base = 0x0, .len = 0x494, 6934a352c2fSBjorn Andersson .features = 0, 6944a352c2fSBjorn Andersson .highest_bank_bit = 2, 6954a352c2fSBjorn Andersson .ubwc_swizzle = 6, 6964a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0}, 6974a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0}, 6984a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0}, 6994a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0}, 7004a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8}, 7014a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8}, 7024a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x2bc, .bit_off = 8}, 7034a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x2c4, .bit_off = 8}, 7044a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20}, 7054a352c2fSBjorn Andersson }, 7064a352c2fSBjorn Andersson }; 7074a352c2fSBjorn Andersson 708efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = { 709efcd0107SNeil Armstrong { 710efcd0107SNeil Armstrong .name = "top_0", .id = MDP_TOP, 711efcd0107SNeil Armstrong .base = 0, .len = 0x494, 712efcd0107SNeil Armstrong .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 713efcd0107SNeil Armstrong .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 714efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 715efcd0107SNeil Armstrong .reg_off = 0x4330, .bit_off = 0}, 716efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 717efcd0107SNeil Armstrong .reg_off = 0x6330, .bit_off = 0}, 718efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 719efcd0107SNeil Armstrong .reg_off = 0x8330, .bit_off = 0}, 720efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 721efcd0107SNeil Armstrong .reg_off = 0xa330, .bit_off = 0}, 722efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 723efcd0107SNeil Armstrong .reg_off = 0x24330, .bit_off = 0}, 724efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 725efcd0107SNeil Armstrong .reg_off = 0x26330, .bit_off = 0}, 726efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 727efcd0107SNeil Armstrong .reg_off = 0x28330, .bit_off = 0}, 728efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 729efcd0107SNeil Armstrong .reg_off = 0x2a330, .bit_off = 0}, 730efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 731efcd0107SNeil Armstrong .reg_off = 0x2c330, .bit_off = 0}, 732efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 733efcd0107SNeil Armstrong .reg_off = 0x2e330, .bit_off = 0}, 734efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 735efcd0107SNeil Armstrong .reg_off = 0x2bc, .bit_off = 20}, 736efcd0107SNeil Armstrong }, 737efcd0107SNeil Armstrong }; 738efcd0107SNeil Armstrong 7395334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 7405334087eSLoic Poulain { 7415334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 7425334087eSLoic Poulain .base = 0x0, .len = 0x494, 7435334087eSLoic Poulain .features = 0, 7445334087eSLoic Poulain .highest_bank_bit = 0x2, 7455334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 7465334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 7475334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 7485334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 7495334087eSLoic Poulain }, 7505334087eSLoic Poulain }; 7515334087eSLoic Poulain 75225fdd593SJeykumar Sankaran /************************************************************* 75325fdd593SJeykumar Sankaran * CTL sub blocks config 75425fdd593SJeykumar Sankaran *************************************************************/ 75594391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 75694391a14SAngeloGioacchino Del Regno { 75794391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 75894391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 75994391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 76094391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 76194391a14SAngeloGioacchino Del Regno }, 76294391a14SAngeloGioacchino Del Regno { 76394391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 76494391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 76594391a14SAngeloGioacchino Del Regno .features = 0, 76694391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 76794391a14SAngeloGioacchino Del Regno }, 76894391a14SAngeloGioacchino Del Regno { 76994391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 77094391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 77194391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 77294391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 77394391a14SAngeloGioacchino Del Regno }, 77494391a14SAngeloGioacchino Del Regno { 77594391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 77694391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 77794391a14SAngeloGioacchino Del Regno .features = 0, 77894391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 77994391a14SAngeloGioacchino Del Regno }, 78094391a14SAngeloGioacchino Del Regno { 78194391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 78294391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 78394391a14SAngeloGioacchino Del Regno .features = 0, 78494391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 78594391a14SAngeloGioacchino Del Regno }, 78694391a14SAngeloGioacchino Del Regno }; 78794391a14SAngeloGioacchino Del Regno 788abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 78925fdd593SJeykumar Sankaran { 79025fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 79125fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 792667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 793667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 79425fdd593SJeykumar Sankaran }, 79525fdd593SJeykumar Sankaran { 79625fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 79725fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 798667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 799667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 80025fdd593SJeykumar Sankaran }, 80125fdd593SJeykumar Sankaran { 80225fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 80325fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 804667e9985SDmitry Baryshkov .features = 0, 805667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 80625fdd593SJeykumar Sankaran }, 80725fdd593SJeykumar Sankaran { 80825fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 80925fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 810667e9985SDmitry Baryshkov .features = 0, 811667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 81225fdd593SJeykumar Sankaran }, 81325fdd593SJeykumar Sankaran { 81425fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 81525fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 816667e9985SDmitry Baryshkov .features = 0, 817667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 81825fdd593SJeykumar Sankaran }, 81925fdd593SJeykumar Sankaran }; 82025fdd593SJeykumar Sankaran 8217bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 8227bdc0c4bSKalyan Thota { 8237bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 8247bdc0c4bSKalyan Thota .base = 0x1000, .len = 0xE4, 825667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 826667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8277bdc0c4bSKalyan Thota }, 8287bdc0c4bSKalyan Thota { 8297bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 8307bdc0c4bSKalyan Thota .base = 0x1200, .len = 0xE4, 831667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 832667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8337bdc0c4bSKalyan Thota }, 8347bdc0c4bSKalyan Thota { 8357bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 8367bdc0c4bSKalyan Thota .base = 0x1400, .len = 0xE4, 837667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 838667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8397bdc0c4bSKalyan Thota }, 8407bdc0c4bSKalyan Thota }; 8417bdc0c4bSKalyan Thota 8424a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = { 8434a352c2fSBjorn Andersson { 8444a352c2fSBjorn Andersson .name = "ctl_0", .id = CTL_0, 8454a352c2fSBjorn Andersson .base = 0x15000, .len = 0x204, 8464a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8474a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8484a352c2fSBjorn Andersson }, 8494a352c2fSBjorn Andersson { 8504a352c2fSBjorn Andersson .name = "ctl_1", .id = CTL_1, 8514a352c2fSBjorn Andersson .base = 0x16000, .len = 0x204, 8524a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8534a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8544a352c2fSBjorn Andersson }, 8554a352c2fSBjorn Andersson { 8564a352c2fSBjorn Andersson .name = "ctl_2", .id = CTL_2, 8574a352c2fSBjorn Andersson .base = 0x17000, .len = 0x204, 8584a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8594a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8604a352c2fSBjorn Andersson }, 8614a352c2fSBjorn Andersson { 8624a352c2fSBjorn Andersson .name = "ctl_3", .id = CTL_3, 8634a352c2fSBjorn Andersson .base = 0x18000, .len = 0x204, 8644a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8654a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 8664a352c2fSBjorn Andersson }, 8674a352c2fSBjorn Andersson { 8684a352c2fSBjorn Andersson .name = "ctl_4", .id = CTL_4, 8694a352c2fSBjorn Andersson .base = 0x19000, .len = 0x204, 8704a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8714a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 8724a352c2fSBjorn Andersson }, 8734a352c2fSBjorn Andersson { 8744a352c2fSBjorn Andersson .name = "ctl_5", .id = CTL_5, 8754a352c2fSBjorn Andersson .base = 0x1a000, .len = 0x204, 8764a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8774a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 8784a352c2fSBjorn Andersson }, 8794a352c2fSBjorn Andersson }; 8804a352c2fSBjorn Andersson 881386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 882386fced3SJonathan Marek { 883386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 884386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 885667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 886667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 887386fced3SJonathan Marek }, 888386fced3SJonathan Marek { 889386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 890386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 891667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 892667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 893386fced3SJonathan Marek }, 894386fced3SJonathan Marek { 895386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 896386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 897667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 898667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 899386fced3SJonathan Marek }, 900386fced3SJonathan Marek { 901386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 902386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 903667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 904667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 905386fced3SJonathan Marek }, 906386fced3SJonathan Marek { 907386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 908386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 909667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 910667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 911386fced3SJonathan Marek }, 912386fced3SJonathan Marek { 913386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 914386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 915667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 916667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 917386fced3SJonathan Marek }, 918386fced3SJonathan Marek }; 919386fced3SJonathan Marek 9200e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = { 9210e91bcbbSRobert Foss { 9220e91bcbbSRobert Foss .name = "ctl_0", .id = CTL_0, 9230e91bcbbSRobert Foss .base = 0x15000, .len = 0x1e8, 9240e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9250e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 9260e91bcbbSRobert Foss }, 9270e91bcbbSRobert Foss { 9280e91bcbbSRobert Foss .name = "ctl_1", .id = CTL_1, 9290e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 9300e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9310e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 9320e91bcbbSRobert Foss }, 9330e91bcbbSRobert Foss { 9340e91bcbbSRobert Foss .name = "ctl_2", .id = CTL_2, 9350e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 9360e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9370e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 9380e91bcbbSRobert Foss }, 9390e91bcbbSRobert Foss { 9400e91bcbbSRobert Foss .name = "ctl_3", .id = CTL_3, 9410e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 9420e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9430e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 9440e91bcbbSRobert Foss }, 9450e91bcbbSRobert Foss { 9460e91bcbbSRobert Foss .name = "ctl_4", .id = CTL_4, 9470e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 9480e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9490e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 9500e91bcbbSRobert Foss }, 9510e91bcbbSRobert Foss { 9520e91bcbbSRobert Foss .name = "ctl_5", .id = CTL_5, 9530e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 9540e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9550e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 9560e91bcbbSRobert Foss }, 9570e91bcbbSRobert Foss }; 9580e91bcbbSRobert Foss 959100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = { 960100d7ef6SDmitry Baryshkov { 961100d7ef6SDmitry Baryshkov .name = "ctl_0", .id = CTL_0, 962100d7ef6SDmitry Baryshkov .base = 0x15000, .len = 0x204, 963100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 964100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 965100d7ef6SDmitry Baryshkov }, 966100d7ef6SDmitry Baryshkov { 967100d7ef6SDmitry Baryshkov .name = "ctl_1", .id = CTL_1, 9680e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 9690e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 970100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 971100d7ef6SDmitry Baryshkov }, 972100d7ef6SDmitry Baryshkov { 973100d7ef6SDmitry Baryshkov .name = "ctl_2", .id = CTL_2, 9740e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 9750e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 976100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 977100d7ef6SDmitry Baryshkov }, 978100d7ef6SDmitry Baryshkov { 979100d7ef6SDmitry Baryshkov .name = "ctl_3", .id = CTL_3, 9800e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 9810e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 982100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 983100d7ef6SDmitry Baryshkov }, 984100d7ef6SDmitry Baryshkov { 985100d7ef6SDmitry Baryshkov .name = "ctl_4", .id = CTL_4, 9860e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 9870e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 988100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 989100d7ef6SDmitry Baryshkov }, 990100d7ef6SDmitry Baryshkov { 991100d7ef6SDmitry Baryshkov .name = "ctl_5", .id = CTL_5, 9920e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 9930e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 994100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 995100d7ef6SDmitry Baryshkov }, 996100d7ef6SDmitry Baryshkov }; 997100d7ef6SDmitry Baryshkov 998efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = { 999efcd0107SNeil Armstrong { 1000efcd0107SNeil Armstrong .name = "ctl_0", .id = CTL_0, 1001efcd0107SNeil Armstrong .base = 0x15000, .len = 0x290, 1002e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1003efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1004efcd0107SNeil Armstrong }, 1005efcd0107SNeil Armstrong { 1006efcd0107SNeil Armstrong .name = "ctl_1", .id = CTL_1, 1007efcd0107SNeil Armstrong .base = 0x16000, .len = 0x290, 1008e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1009efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1010efcd0107SNeil Armstrong }, 1011efcd0107SNeil Armstrong { 1012efcd0107SNeil Armstrong .name = "ctl_2", .id = CTL_2, 1013efcd0107SNeil Armstrong .base = 0x17000, .len = 0x290, 1014e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1015efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1016efcd0107SNeil Armstrong }, 1017efcd0107SNeil Armstrong { 1018efcd0107SNeil Armstrong .name = "ctl_3", .id = CTL_3, 1019efcd0107SNeil Armstrong .base = 0x18000, .len = 0x290, 1020e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1021efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1022efcd0107SNeil Armstrong }, 1023efcd0107SNeil Armstrong { 1024efcd0107SNeil Armstrong .name = "ctl_4", .id = CTL_4, 1025efcd0107SNeil Armstrong .base = 0x19000, .len = 0x290, 1026e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1027efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 1028efcd0107SNeil Armstrong }, 1029efcd0107SNeil Armstrong { 1030efcd0107SNeil Armstrong .name = "ctl_5", .id = CTL_5, 1031efcd0107SNeil Armstrong .base = 0x1a000, .len = 0x290, 1032e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1033efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1034efcd0107SNeil Armstrong }, 1035efcd0107SNeil Armstrong }; 1036efcd0107SNeil Armstrong 1037591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 1038591e34a0SKrishna Manikandan { 1039591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 1040591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 1041667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1042667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1043591e34a0SKrishna Manikandan }, 1044591e34a0SKrishna Manikandan { 1045591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 1046591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 1047667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1048667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1049591e34a0SKrishna Manikandan }, 1050591e34a0SKrishna Manikandan { 1051591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 1052591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 1053667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1054667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1055591e34a0SKrishna Manikandan }, 1056591e34a0SKrishna Manikandan { 1057591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 1058591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 1059667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1060667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1061591e34a0SKrishna Manikandan }, 1062591e34a0SKrishna Manikandan }; 1063591e34a0SKrishna Manikandan 10645334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 10655334087eSLoic Poulain { 10665334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 10675334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 10685334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 10695334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 10705334087eSLoic Poulain }, 10715334087eSLoic Poulain }; 10725334087eSLoic Poulain 107325fdd593SJeykumar Sankaran /************************************************************* 107425fdd593SJeykumar Sankaran * SSPP sub blocks config 107525fdd593SJeykumar Sankaran *************************************************************/ 107625fdd593SJeykumar Sankaran 107725fdd593SJeykumar Sankaran /* SSPP common configuration */ 1078b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 107925fdd593SJeykumar Sankaran { \ 108025fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 108125fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 108225fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 108325fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 108425fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 108525fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1086b75ab05aSShubhashree Dhar .id = qseed_ver, \ 108725fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 108825fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 108925fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 109025fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 109125fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 1092e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 109325fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1094e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1095dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 1096dabfdd89SVinod Polimera } 1097dabfdd89SVinod Polimera 1098dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 1099dabfdd89SVinod Polimera { \ 1100dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 1101dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 1102dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 1103dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 1104dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 1105dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1106dabfdd89SVinod Polimera .id = qseed_ver, \ 1107dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 1108dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 1109dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 1110dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 1111dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 1112dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 1113dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 1114dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1115dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 111625fdd593SJeykumar Sankaran } 111725fdd593SJeykumar Sankaran 111825fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 111925fdd593SJeykumar Sankaran { \ 112025fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 112125fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 112225fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 112325fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 112425fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 112525fdd593SJeykumar Sankaran .format_list = plane_formats, \ 1126e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 112725fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1128e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 112925fdd593SJeykumar Sankaran } 113025fdd593SJeykumar Sankaran 113194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 113294391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 113394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 113494391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 113594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 113694391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 113794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 113894391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 113994391a14SAngeloGioacchino Del Regno 1140dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 1141dabfdd89SVinod Polimera .rot_maxheight = 1088, 1142dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 1143dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 1144dabfdd89SVinod Polimera }; 1145dabfdd89SVinod Polimera 1146b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 1147b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 1148b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 1149b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 1150b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 1151b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 1152b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 1153b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 115425fdd593SJeykumar Sankaran 115525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 115625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 115725fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 115825fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 115925fdd593SJeykumar Sankaran 116007ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \ 116107ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 116225fdd593SJeykumar Sankaran { \ 116325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 116425fdd593SJeykumar Sankaran .base = _base, .len = 0x1c8, \ 116507ca1fc0SSravanthi Kollukuduru .features = _features, \ 116625fdd593SJeykumar Sankaran .sblk = &_sblk, \ 116725fdd593SJeykumar Sankaran .xin_id = _xinid, \ 116807ca1fc0SSravanthi Kollukuduru .type = _type, \ 116925fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 117025fdd593SJeykumar Sankaran } 117125fdd593SJeykumar Sankaran 117294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 117394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK, 117494391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 117594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK, 117694391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 117794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK, 117894391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 117994391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK, 118094391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 118194391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_MSM8998_MASK, 118294391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 118394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_MSM8998_MASK, 118494391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 118594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_MSM8998_MASK, 118694391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 118794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_MSM8998_MASK, 118894391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 118994391a14SAngeloGioacchino Del Regno }; 119094391a14SAngeloGioacchino Del Regno 1191abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 119207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK, 119307ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 119407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK, 119507ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 119607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK, 119707ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 119807ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK, 119907ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 120007ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 120107ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 120207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 120307ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 120407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 120507ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 120607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 120707ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 120825fdd593SJeykumar Sankaran }; 120925fdd593SJeykumar Sankaran 1210b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 1211b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 1212b75ab05aSShubhashree Dhar 1213dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 1214dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 1215dabfdd89SVinod Polimera 12167bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 12177bdc0c4bSKalyan Thota SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1218b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12197bdc0c4bSKalyan Thota SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 12207bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12217b149f2bSKalyan Thota SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 12227b149f2bSKalyan Thota sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 12237bdc0c4bSKalyan Thota SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 12247b149f2bSKalyan Thota sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 12257bdc0c4bSKalyan Thota }; 12267bdc0c4bSKalyan Thota 12273581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 12283581b706SAdam Skladowski _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE); 12293581b706SAdam Skladowski 12303581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 12313581b706SAdam Skladowski SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 12323581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12333581b706SAdam Skladowski SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 12343581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12353581b706SAdam Skladowski }; 12363581b706SAdam Skladowski 1237d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 1238d21fc5dfSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1239d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 1240d21fc5dfSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1241d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 1242d21fc5dfSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1243d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 1244d21fc5dfSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1245d21fc5dfSDmitry Baryshkov 1246d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 1247d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 1248d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1249d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 1250d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1251d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 1252d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1253d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 1254d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1255d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1256d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1257d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1258d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1259d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1260d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1261d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1262d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1263d21fc5dfSDmitry Baryshkov }; 1264d21fc5dfSDmitry Baryshkov 1265100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 1266100d7ef6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1267100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 1268100d7ef6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1269100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 1270100d7ef6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1271100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 1272100d7ef6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1273100d7ef6SDmitry Baryshkov 1274100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = { 1275100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1276100d7ef6SDmitry Baryshkov sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1277100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1278100d7ef6SDmitry Baryshkov sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1279100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1280100d7ef6SDmitry Baryshkov sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1281100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1282100d7ef6SDmitry Baryshkov sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1283100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1284100d7ef6SDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1285100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1286100d7ef6SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1287100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1288100d7ef6SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1289100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1290100d7ef6SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1291100d7ef6SDmitry Baryshkov }; 1292100d7ef6SDmitry Baryshkov 1293efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 = 1294efcd0107SNeil Armstrong _VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED3LITE); 1295efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 = 1296efcd0107SNeil Armstrong _VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED3LITE); 1297efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 = 1298efcd0107SNeil Armstrong _VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED3LITE); 1299efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 = 1300efcd0107SNeil Armstrong _VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED3LITE); 1301efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5); 1302efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sd8550_dma_sblk_5 = _DMA_SBLK("13", 6); 1303efcd0107SNeil Armstrong 1304efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = { 1305efcd0107SNeil Armstrong SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1306efcd0107SNeil Armstrong sm8550_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1307efcd0107SNeil Armstrong SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1308efcd0107SNeil Armstrong sm8550_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1309efcd0107SNeil Armstrong SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1310efcd0107SNeil Armstrong sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1311efcd0107SNeil Armstrong SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1312efcd0107SNeil Armstrong sm8550_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1313efcd0107SNeil Armstrong SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1314efcd0107SNeil Armstrong sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1315efcd0107SNeil Armstrong SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1316efcd0107SNeil Armstrong sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1317efcd0107SNeil Armstrong SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_SDM845_MASK, 1318efcd0107SNeil Armstrong sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 1319efcd0107SNeil Armstrong SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_SDM845_MASK, 1320efcd0107SNeil Armstrong sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 1321efcd0107SNeil Armstrong SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000, DMA_CURSOR_SDM845_MASK, 1322efcd0107SNeil Armstrong sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1323efcd0107SNeil Armstrong SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000, DMA_CURSOR_SDM845_MASK, 1324efcd0107SNeil Armstrong sd8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1325efcd0107SNeil Armstrong }; 1326efcd0107SNeil Armstrong 1327591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 1328dabfdd89SVinod Polimera SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK, 1329dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1330591e34a0SKrishna Manikandan SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1331591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1332591e34a0SKrishna Manikandan SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 1333591e34a0SKrishna Manikandan sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1334591e34a0SKrishna Manikandan SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1335591e34a0SKrishna Manikandan sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1336591e34a0SKrishna Manikandan }; 1337591e34a0SKrishna Manikandan 13384a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 = 13394a352c2fSBjorn Andersson _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 13404a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 = 13414a352c2fSBjorn Andersson _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 13424a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 = 13434a352c2fSBjorn Andersson _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 13444a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 = 13454a352c2fSBjorn Andersson _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 13464a352c2fSBjorn Andersson 13474a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = { 13484a352c2fSBjorn Andersson SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 13494a352c2fSBjorn Andersson sc8280xp_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13504a352c2fSBjorn Andersson SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 13514a352c2fSBjorn Andersson sc8280xp_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13524a352c2fSBjorn Andersson SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 13534a352c2fSBjorn Andersson sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13544a352c2fSBjorn Andersson SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 13554a352c2fSBjorn Andersson sc8280xp_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13564a352c2fSBjorn Andersson SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 13574a352c2fSBjorn Andersson sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13584a352c2fSBjorn Andersson SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 13594a352c2fSBjorn Andersson sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13604a352c2fSBjorn Andersson SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 13614a352c2fSBjorn Andersson sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 13624a352c2fSBjorn Andersson SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 13634a352c2fSBjorn Andersson sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 13644a352c2fSBjorn Andersson }; 13655334087eSLoic Poulain 13665334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 13675334087eSLoic Poulain { \ 13685334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 13695334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 13705334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 13715334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 13725334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 13735334087eSLoic Poulain .format_list = plane_formats_yuv, \ 13745334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 13755334087eSLoic Poulain .virt_format_list = plane_formats, \ 13765334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 13775334087eSLoic Poulain } 13785334087eSLoic Poulain 13795334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 13805334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 13815334087eSLoic Poulain 13825334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 13835334087eSLoic Poulain SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK, 13845334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13855334087eSLoic Poulain SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 13865334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13875334087eSLoic Poulain }; 13885334087eSLoic Poulain 138925fdd593SJeykumar Sankaran /************************************************************* 139025fdd593SJeykumar Sankaran * MIXER sub blocks config 139125fdd593SJeykumar Sankaran *************************************************************/ 13927bdc0c4bSKalyan Thota 1393e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 139425fdd593SJeykumar Sankaran { \ 139525fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 139625fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 13977bdc0c4bSKalyan Thota .features = _fmask, \ 13987bdc0c4bSKalyan Thota .sblk = _sblk, \ 139925fdd593SJeykumar Sankaran .pingpong = _pp, \ 1400e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1401e47616dfSKalyan Thota .dspp = _dspp \ 140225fdd593SJeykumar Sankaran } 140325fdd593SJeykumar Sankaran 140494391a14SAngeloGioacchino Del Regno /* MSM8998 */ 140594391a14SAngeloGioacchino Del Regno 140694391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 140794391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 140894391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 140994391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 141094391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 141194391a14SAngeloGioacchino Del Regno 0x260, 0x290 141294391a14SAngeloGioacchino Del Regno }, 141394391a14SAngeloGioacchino Del Regno }; 141494391a14SAngeloGioacchino Del Regno 141594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 14162d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 141794391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 14182d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 141994391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 14202d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 142194391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 14222d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 142394391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14242d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 142594391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14262d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 142794391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 142894391a14SAngeloGioacchino Del Regno }; 142994391a14SAngeloGioacchino Del Regno 143094391a14SAngeloGioacchino Del Regno /* SDM845 */ 143194391a14SAngeloGioacchino Del Regno 143294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 143394391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 143494391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 143594391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 143694391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 143794391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 143894391a14SAngeloGioacchino Del Regno }, 143994391a14SAngeloGioacchino Del Regno }; 144094391a14SAngeloGioacchino Del Regno 1441abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 14427bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1443e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 14447bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1445e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 14467bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1447e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 14487bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1449e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14507bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1451e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14527bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1453e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 14547bdc0c4bSKalyan Thota }; 14557bdc0c4bSKalyan Thota 14567bdc0c4bSKalyan Thota /* SC7180 */ 14577bdc0c4bSKalyan Thota 14587bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 14597bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 14607bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 14617bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 14627bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 14637bdc0c4bSKalyan Thota }, 14647bdc0c4bSKalyan Thota }; 14657bdc0c4bSKalyan Thota 14667bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 146700feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1468e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 146900feff8fSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1470e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 147125fdd593SJeykumar Sankaran }; 147225fdd593SJeykumar Sankaran 14734a352c2fSBjorn Andersson /* SC8280XP */ 14744a352c2fSBjorn Andersson 14754a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = { 14764a352c2fSBjorn Andersson LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 14774a352c2fSBjorn Andersson LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 14784a352c2fSBjorn Andersson LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2), 14794a352c2fSBjorn Andersson LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3), 14804a352c2fSBjorn Andersson LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 14814a352c2fSBjorn Andersson LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 14824a352c2fSBjorn Andersson }; 14834a352c2fSBjorn Andersson 1484386fced3SJonathan Marek /* SM8150 */ 1485386fced3SJonathan Marek 1486386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1487386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 148805ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1489386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 149005ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1491386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1492386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1493386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1494386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1495386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1496386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1497386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1498386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1499386fced3SJonathan Marek }; 1500386fced3SJonathan Marek 1501591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 150200feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1503fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 150400feff8fSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1505591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 150600feff8fSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1507591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1508591e34a0SKrishna Manikandan }; 1509591e34a0SKrishna Manikandan 15105334087eSLoic Poulain /* QCM2290 */ 15115334087eSLoic Poulain 15125334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 15135334087eSLoic Poulain .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 15145334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 15155334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 15165334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 15175334087eSLoic Poulain }, 15185334087eSLoic Poulain }; 15195334087eSLoic Poulain 15205334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 152100feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK, 15225334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 15235334087eSLoic Poulain }; 15245334087eSLoic Poulain 152525fdd593SJeykumar Sankaran /************************************************************* 1526e47616dfSKalyan Thota * DSPP sub blocks config 1527e47616dfSKalyan Thota *************************************************************/ 152894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 152994391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 153094391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 153194391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 153294391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 153394391a14SAngeloGioacchino Del Regno }; 153494391a14SAngeloGioacchino Del Regno 15354259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 15364259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 15374259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 15384259ff7aSKalyan Thota }; 15394259ff7aSKalyan Thota 154005ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 154105ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 154205ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 154305ae91d9SDmitry Baryshkov }; 154405ae91d9SDmitry Baryshkov 1545862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1546e47616dfSKalyan Thota {\ 1547e47616dfSKalyan Thota .name = _name, .id = _id, \ 1548e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1549862314bcSAngeloGioacchino Del Regno .features = _mask, \ 155005ae91d9SDmitry Baryshkov .sblk = _sblk \ 1551e47616dfSKalyan Thota } 1552e47616dfSKalyan Thota 155394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 155494391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 155594391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 155694391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 155794391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 155894391a14SAngeloGioacchino Del Regno }; 155994391a14SAngeloGioacchino Del Regno 1560e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1561862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1562862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 156305ae91d9SDmitry Baryshkov }; 156405ae91d9SDmitry Baryshkov 156505ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1566862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1567862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1568862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1569862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1570862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1571862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1572862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1573862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1574e47616dfSKalyan Thota }; 1575386fced3SJonathan Marek 15765334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 15775334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 15785334087eSLoic Poulain &sm8150_dspp_sblk), 15795334087eSLoic Poulain }; 15805334087eSLoic Poulain 1581e47616dfSKalyan Thota /************************************************************* 158225fdd593SJeykumar Sankaran * PINGPONG sub blocks config 158325fdd593SJeykumar Sankaran *************************************************************/ 158425fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 158525fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 158625fdd593SJeykumar Sankaran .version = 0x1}, 158725fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 158825fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 158925fdd593SJeykumar Sankaran }; 159025fdd593SJeykumar Sankaran 159125fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 159225fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 159325fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 159425fdd593SJeykumar Sankaran }; 159525fdd593SJeykumar Sankaran 1596591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1597591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1598591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1599591e34a0SKrishna Manikandan }; 1600591e34a0SKrishna Manikandan 1601efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 1602efcd0107SNeil Armstrong {\ 1603efcd0107SNeil Armstrong .name = _name, .id = _id, \ 1604efcd0107SNeil Armstrong .base = _base, .len = 0, \ 1605efcd0107SNeil Armstrong .features = BIT(DPU_PINGPONG_DITHER), \ 1606efcd0107SNeil Armstrong .merge_3d = _merge_3d, \ 1607efcd0107SNeil Armstrong .sblk = &_sblk, \ 1608efcd0107SNeil Armstrong .intr_done = _done, \ 1609efcd0107SNeil Armstrong .intr_rdptr = _rdptr, \ 1610efcd0107SNeil Armstrong } 1611667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 161225fdd593SJeykumar Sankaran {\ 161325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 161425fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 161525fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 16164369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1617667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1618667e9985SDmitry Baryshkov .intr_done = _done, \ 1619667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 162025fdd593SJeykumar Sankaran } 1621667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 162225fdd593SJeykumar Sankaran {\ 162325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 162425fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 162525fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 16264369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1627667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1628667e9985SDmitry Baryshkov .intr_done = _done, \ 1629667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 163025fdd593SJeykumar Sankaran } 163125fdd593SJeykumar Sankaran 1632abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1633667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1634667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1635667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1636667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1637667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1638667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1639667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1640667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1641667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1642667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1643667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1644667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 164525fdd593SJeykumar Sankaran }; 164625fdd593SJeykumar Sankaran 16477bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = { 1648667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1649667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 16507bdc0c4bSKalyan Thota }; 16517bdc0c4bSKalyan Thota 16524a352c2fSBjorn Andersson static struct dpu_pingpong_cfg sc8280xp_pp[] = { 16534a352c2fSBjorn Andersson PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 16544a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1), 16554a352c2fSBjorn Andersson PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 16564a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1), 16574a352c2fSBjorn Andersson PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te, 16584a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1), 16594a352c2fSBjorn Andersson PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te, 16604a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1), 16614a352c2fSBjorn Andersson PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te, 16624a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1), 16634a352c2fSBjorn Andersson PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te, 16644a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1), 16654a352c2fSBjorn Andersson }; 16664a352c2fSBjorn Andersson 1667386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1668667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1669667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1670667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1671667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1672667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1673667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1674667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1675667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1676667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1677667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1678667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1679667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1680667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1681667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1682667e9985SDmitry Baryshkov -1), 1683667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 16843431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1685667e9985SDmitry Baryshkov -1), 16864369c93cSDmitry Baryshkov }; 16874369c93cSDmitry Baryshkov 16880e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = { 16890e91bcbbSRobert Foss PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 16900e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 16910e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 16920e91bcbbSRobert Foss PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 16930e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 16940e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 16950e91bcbbSRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 16960e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 16970e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 16980e91bcbbSRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 16990e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 17000e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 17010e91bcbbSRobert Foss PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 17020e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 17030e91bcbbSRobert Foss -1), 17040e91bcbbSRobert Foss PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 17050e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 17060e91bcbbSRobert Foss -1), 17070e91bcbbSRobert Foss }; 17080e91bcbbSRobert Foss 17091a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = { 17101a5b5372SRobert Foss PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), 17111a5b5372SRobert Foss PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 17121a5b5372SRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 17131a5b5372SRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 17141a5b5372SRobert Foss }; 17151a5b5372SRobert Foss 17165334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = { 17175334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 17185334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17195334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17205334087eSLoic Poulain }; 17215334087eSLoic Poulain 1722100d7ef6SDmitry Baryshkov /* FIXME: interrupts */ 1723100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = { 1724100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 1725100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1726100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1727100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 1728100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1729100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1730100d7ef6SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 1731100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1732100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1733100d7ef6SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 1734100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1735100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1736100d7ef6SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 1737100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1738100d7ef6SDmitry Baryshkov -1), 1739100d7ef6SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 1740100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1741100d7ef6SDmitry Baryshkov -1), 1742100d7ef6SDmitry Baryshkov PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk, 1743100d7ef6SDmitry Baryshkov -1, 1744100d7ef6SDmitry Baryshkov -1), 1745100d7ef6SDmitry Baryshkov PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk, 1746100d7ef6SDmitry Baryshkov -1, 1747100d7ef6SDmitry Baryshkov -1), 1748100d7ef6SDmitry Baryshkov }; 1749100d7ef6SDmitry Baryshkov 1750efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = { 1751efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk, 1752efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1753efcd0107SNeil Armstrong -1), 1754efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk, 1755efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1756efcd0107SNeil Armstrong -1), 1757efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk, 1758efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1759efcd0107SNeil Armstrong -1), 1760efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk, 1761efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1762efcd0107SNeil Armstrong -1), 1763efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk, 1764efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1765efcd0107SNeil Armstrong -1), 1766efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk, 1767efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1768efcd0107SNeil Armstrong -1), 1769efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk, 1770efcd0107SNeil Armstrong -1, 1771efcd0107SNeil Armstrong -1), 1772efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk, 1773efcd0107SNeil Armstrong -1, 1774efcd0107SNeil Armstrong -1), 1775efcd0107SNeil Armstrong }; 1776efcd0107SNeil Armstrong 17774369c93cSDmitry Baryshkov /************************************************************* 17784369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 17794369c93cSDmitry Baryshkov *************************************************************/ 17804369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 17814369c93cSDmitry Baryshkov {\ 17824369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 17834369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 17844369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 17854369c93cSDmitry Baryshkov .sblk = NULL \ 17864369c93cSDmitry Baryshkov } 17874369c93cSDmitry Baryshkov 17884369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 17894369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 17904369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 17914369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1792386fced3SJonathan Marek }; 1793386fced3SJonathan Marek 17940e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { 17950e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 17960e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 17970e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 17980e91bcbbSRobert Foss }; 17990e91bcbbSRobert Foss 1800100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = { 1801100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1802100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1803100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1804100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00), 1805100d7ef6SDmitry Baryshkov }; 1806100d7ef6SDmitry Baryshkov 1807efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = { 1808efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1809efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1810efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1811efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700), 1812efcd0107SNeil Armstrong }; 1813efcd0107SNeil Armstrong 18147c5ab05eSVinod Koul /************************************************************* 18157c5ab05eSVinod Koul * DSC sub blocks config 18167c5ab05eSVinod Koul *************************************************************/ 18179da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \ 18187c5ab05eSVinod Koul {\ 18197c5ab05eSVinod Koul .name = _name, .id = _id, \ 18207c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 18219da5daa0SMarijn Suijten .features = _features, \ 18227c5ab05eSVinod Koul } 18237c5ab05eSVinod Koul 18247c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = { 18259da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, 0), 18269da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, 0), 18279da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, 0), 18289da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, 0), 18299da5daa0SMarijn Suijten }; 18309da5daa0SMarijn Suijten 18319da5daa0SMarijn Suijten static struct dpu_dsc_cfg sm8150_dsc[] = { 18329da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)), 18339da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), 18349da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)), 18359da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)), 18367c5ab05eSVinod Koul }; 18377c5ab05eSVinod Koul 183825fdd593SJeykumar Sankaran /************************************************************* 183925fdd593SJeykumar Sankaran * INTF sub blocks config 184025fdd593SJeykumar Sankaran *************************************************************/ 1841667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 184225fdd593SJeykumar Sankaran {\ 184325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 184425fdd593SJeykumar Sankaran .base = _base, .len = 0x280, \ 1845cace3ac4SJonathan Marek .features = _features, \ 184625fdd593SJeykumar Sankaran .type = _type, \ 184725fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1848667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1849667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1850667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 185125fdd593SJeykumar Sankaran } 185225fdd593SJeykumar Sankaran 185394391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 185494391a14SAngeloGioacchino Del Regno INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 185594391a14SAngeloGioacchino Del Regno INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 185694391a14SAngeloGioacchino Del Regno INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 185794391a14SAngeloGioacchino Del Regno INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 185894391a14SAngeloGioacchino Del Regno }; 185994391a14SAngeloGioacchino Del Regno 1860abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 1861667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1862667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1863667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1864667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 186525fdd593SJeykumar Sankaran }; 186625fdd593SJeykumar Sankaran 18677bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 1868bb3de286SBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1869667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18707bdc0c4bSKalyan Thota }; 18717bdc0c4bSKalyan Thota 1872386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 1873667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1874667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1875667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1876667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1877386fced3SJonathan Marek }; 1878386fced3SJonathan Marek 1879591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 1880ef7837ffSSankeerth Billakanti INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1881667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1882ef7837ffSSankeerth Billakanti INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1883591e34a0SKrishna Manikandan }; 1884591e34a0SKrishna Manikandan 18850e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = { 18860e91bcbbSRobert Foss INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 18870e91bcbbSRobert Foss INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18880e91bcbbSRobert Foss INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 18890e91bcbbSRobert Foss INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 18900e91bcbbSRobert Foss }; 18910e91bcbbSRobert Foss 1892f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 1893f3af2d6eSRob Clark INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1894f3af2d6eSRob Clark INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1895f3af2d6eSRob Clark INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1896f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 1897f3af2d6eSRob Clark INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1898f3af2d6eSRob Clark INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 1899f3af2d6eSRob Clark INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1900f3af2d6eSRob Clark }; 1901f3af2d6eSRob Clark 19024a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */ 19034a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = { 19044a352c2fSBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19054a352c2fSBjorn Andersson INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19064a352c2fSBjorn Andersson INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19074a352c2fSBjorn Andersson INTF_BLK("intf_3", INTF_3, 0x37000, INTF_NONE, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19084a352c2fSBjorn Andersson INTF_BLK("intf_4", INTF_4, 0x38000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 19094a352c2fSBjorn Andersson INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 19104a352c2fSBjorn Andersson INTF_BLK("intf_6", INTF_6, 0x3a000, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17), 19114a352c2fSBjorn Andersson INTF_BLK("intf_7", INTF_7, 0x3b000, INTF_NONE, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19), 19124a352c2fSBjorn Andersson INTF_BLK("intf_8", INTF_8, 0x3c000, INTF_NONE, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13), 19134a352c2fSBjorn Andersson }; 19144a352c2fSBjorn Andersson 19155334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 19165334087eSLoic Poulain INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0), 19175334087eSLoic Poulain INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19185334087eSLoic Poulain }; 19195334087eSLoic Poulain 1920100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = { 1921100d7ef6SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1922100d7ef6SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1923100d7ef6SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1924100d7ef6SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1925100d7ef6SDmitry Baryshkov }; 1926100d7ef6SDmitry Baryshkov 1927efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = { 1928efcd0107SNeil Armstrong INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1929efcd0107SNeil Armstrong /* TODO TE sub-blocks for intf1 & intf2 */ 1930efcd0107SNeil Armstrong INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1931efcd0107SNeil Armstrong INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1932efcd0107SNeil Armstrong INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1933efcd0107SNeil Armstrong }; 1934efcd0107SNeil Armstrong 193525fdd593SJeykumar Sankaran /************************************************************* 193653324b99SAbhinav Kumar * Writeback blocks config 193753324b99SAbhinav Kumar *************************************************************/ 193853324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1939a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 194053324b99SAbhinav Kumar { \ 194153324b99SAbhinav Kumar .name = _name, .id = _id, \ 194253324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 194353324b99SAbhinav Kumar .features = _features, \ 194453324b99SAbhinav Kumar .format_list = wb2_formats, \ 194553324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 194653324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 194753324b99SAbhinav Kumar .xin_id = __xin_id, \ 194853324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1949a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 195053324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 195153324b99SAbhinav Kumar } 195253324b99SAbhinav Kumar 195353324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 195453324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1955a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 195653324b99SAbhinav Kumar }; 195753324b99SAbhinav Kumar 195853324b99SAbhinav Kumar /************************************************************* 195925fdd593SJeykumar Sankaran * VBIF sub blocks config 196025fdd593SJeykumar Sankaran *************************************************************/ 196125fdd593SJeykumar Sankaran /* VBIF QOS remap */ 196294391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 196394391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1964abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1965abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 196625fdd593SJeykumar Sankaran 196794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 196894391a14SAngeloGioacchino Del Regno { 196994391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 197094391a14SAngeloGioacchino Del Regno .ot_limit = 2, 197194391a14SAngeloGioacchino Del Regno }, 197294391a14SAngeloGioacchino Del Regno { 197394391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 197494391a14SAngeloGioacchino Del Regno .ot_limit = 6, 197594391a14SAngeloGioacchino Del Regno }, 197694391a14SAngeloGioacchino Del Regno { 197794391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 197894391a14SAngeloGioacchino Del Regno .ot_limit = 16, 197994391a14SAngeloGioacchino Del Regno }, 198094391a14SAngeloGioacchino Del Regno }; 198194391a14SAngeloGioacchino Del Regno 198294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 198394391a14SAngeloGioacchino Del Regno { 1984606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 198594391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 198694391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 198794391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 198894391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 198994391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 1990c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 199194391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 199294391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 199394391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 199494391a14SAngeloGioacchino Del Regno }, 199594391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 199694391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 199794391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 199894391a14SAngeloGioacchino Del Regno }, 199994391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 200094391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 200194391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 200294391a14SAngeloGioacchino Del Regno }, 200394391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 200494391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 200594391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 200694391a14SAngeloGioacchino Del Regno }, 200794391a14SAngeloGioacchino Del Regno .memtype_count = 14, 200894391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 200994391a14SAngeloGioacchino Del Regno }, 201094391a14SAngeloGioacchino Del Regno }; 201194391a14SAngeloGioacchino Del Regno 2012abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 201325fdd593SJeykumar Sankaran { 2014606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 201525fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 201625fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 201725fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 2018c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 201925fdd593SJeykumar Sankaran .qos_rt_tbl = { 202025fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 202125fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 202225fdd593SJeykumar Sankaran }, 202325fdd593SJeykumar Sankaran .qos_nrt_tbl = { 202425fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 202525fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 202625fdd593SJeykumar Sankaran }, 202725fdd593SJeykumar Sankaran .memtype_count = 14, 202825fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 202925fdd593SJeykumar Sankaran }, 203025fdd593SJeykumar Sankaran }; 203125fdd593SJeykumar Sankaran 20324a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = { 20334a352c2fSBjorn Andersson .base = 0x0, 20344a352c2fSBjorn Andersson .version = 0x00020000, 20354a352c2fSBjorn Andersson .trigger_sel_off = 0x119c, 20364a352c2fSBjorn Andersson .xin_id = 7, 20374a352c2fSBjorn Andersson .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20384a352c2fSBjorn Andersson }; 20394a352c2fSBjorn Andersson 2040abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 204125fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 204225fdd593SJeykumar Sankaran }; 204325fdd593SJeykumar Sankaran 2044386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 2045386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 2046386fced3SJonathan Marek }; 2047386fced3SJonathan Marek 2048af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 2049af776a3eSJonathan Marek .base = 0x0, 2050af776a3eSJonathan Marek .version = 0x00010002, 2051af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 2052af776a3eSJonathan Marek .xin_id = 7, 2053af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2054af776a3eSJonathan Marek }; 2055af776a3eSJonathan Marek 20560e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 20570e91bcbbSRobert Foss .base = 0x400, 20580e91bcbbSRobert Foss .version = 0x00020000, 20590e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 20600e91bcbbSRobert Foss .xin_id = 7, 20610e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20620e91bcbbSRobert Foss }; 20630e91bcbbSRobert Foss 2064100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 2065100d7ef6SDmitry Baryshkov .base = 0x0, 2066100d7ef6SDmitry Baryshkov .version = 0x00020000, 2067100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 2068100d7ef6SDmitry Baryshkov .xin_id = 7, 2069100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2070100d7ef6SDmitry Baryshkov }; 2071100d7ef6SDmitry Baryshkov 207225fdd593SJeykumar Sankaran /************************************************************* 207325fdd593SJeykumar Sankaran * PERF data config 207425fdd593SJeykumar Sankaran *************************************************************/ 207525fdd593SJeykumar Sankaran 207625fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 207794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 207894391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 207994391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 208094391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 208194391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 208294391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 208394391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 208494391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 208594391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 208694391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 208794391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 208894391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 208994391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 209094391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 209194391a14SAngeloGioacchino Del Regno }; 209294391a14SAngeloGioacchino Del Regno 2093abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 209425fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 209525fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 209625fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 209725fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 209825fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 209925fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 210025fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 210125fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 210225fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 210325fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 210425fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 210525fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 210625fdd593SJeykumar Sankaran }; 210725fdd593SJeykumar Sankaran 210894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 210994391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 211094391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 211194391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 211294391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 211394391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 211494391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 211594391a14SAngeloGioacchino Del Regno }; 211694391a14SAngeloGioacchino Del Regno 21177bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 21187bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 21197bdc0c4bSKalyan Thota }; 21207bdc0c4bSKalyan Thota 2121386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 2122386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 2123386fced3SJonathan Marek }; 2124386fced3SJonathan Marek 2125f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 2126f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 2127f3af2d6eSRob Clark }; 2128f3af2d6eSRob Clark 21295334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 21305334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 21315334087eSLoic Poulain }; 21325334087eSLoic Poulain 2133abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 213425fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 213525fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 213625fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 213725fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 213825fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 213925fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 214025fdd593SJeykumar Sankaran }; 214125fdd593SJeykumar Sankaran 21427bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 21437bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 21447bdc0c4bSKalyan Thota }; 21457bdc0c4bSKalyan Thota 2146f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 2147f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 2148f3af2d6eSRob Clark }; 2149f3af2d6eSRob Clark 215094391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 215194391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 215294391a14SAngeloGioacchino Del Regno }; 215394391a14SAngeloGioacchino Del Regno 2154abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 215525fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 215625fdd593SJeykumar Sankaran }; 215725fdd593SJeykumar Sankaran 21587bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 21597bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 21607bdc0c4bSKalyan Thota }; 21617bdc0c4bSKalyan Thota 216294391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 216394391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 216494391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 216594391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 216694391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 216794391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 216894391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 216994391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 217094391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 217194391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 217294391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 217394391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 217494391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 217594391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 217694391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 217794391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 217894391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 217994391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 218094391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 218194391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 218294391a14SAngeloGioacchino Del Regno }, 218394391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 218494391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 218594391a14SAngeloGioacchino Del Regno }, 218694391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 218794391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 218894391a14SAngeloGioacchino Del Regno }, 218994391a14SAngeloGioacchino Del Regno }, 219094391a14SAngeloGioacchino Del Regno .cdp_cfg = { 219194391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 219294391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 219394391a14SAngeloGioacchino Del Regno }, 219494391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 219594391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 219694391a14SAngeloGioacchino Del Regno }; 219794391a14SAngeloGioacchino Del Regno 2198abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 219925fdd593SJeykumar Sankaran .max_bw_low = 6800000, 220025fdd593SJeykumar Sankaran .max_bw_high = 6800000, 220125fdd593SJeykumar Sankaran .min_core_ib = 2400000, 220225fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 220325fdd593SJeykumar Sankaran .min_dram_ib = 800000, 220425fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 220525fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 220625fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 220725fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 220825fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 220925fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 221025fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 221125fdd593SJeykumar Sankaran .amortizable_threshold = 25, 221225fdd593SJeykumar Sankaran .min_prefill_lines = 24, 221325fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 22145bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 221525fdd593SJeykumar Sankaran .qos_lut_tbl = { 221625fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 221725fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 221825fdd593SJeykumar Sankaran }, 221925fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 222025fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 222125fdd593SJeykumar Sankaran }, 222225fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 222325fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 222425fdd593SJeykumar Sankaran }, 222525fdd593SJeykumar Sankaran }, 222625fdd593SJeykumar Sankaran .cdp_cfg = { 222725fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 222825fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 222925fdd593SJeykumar Sankaran }, 22304f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 22314f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 223225fdd593SJeykumar Sankaran }; 223325fdd593SJeykumar Sankaran 22347bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 223571dc6c08SKrishna Manikandan .max_bw_low = 6800000, 223671dc6c08SKrishna Manikandan .max_bw_high = 6800000, 22377bdc0c4bSKalyan Thota .min_core_ib = 2400000, 22387bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 2239c33b7c03SKalyan Thota .min_dram_ib = 1600000, 2240c33b7c03SKalyan Thota .min_prefill_lines = 24, 22417bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22425bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22437bdc0c4bSKalyan Thota .qos_lut_tbl = { 22447bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22457bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 22467bdc0c4bSKalyan Thota }, 22477bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22487bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 22497bdc0c4bSKalyan Thota }, 22507bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22517bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 22527bdc0c4bSKalyan Thota }, 22537bdc0c4bSKalyan Thota }, 22547bdc0c4bSKalyan Thota .cdp_cfg = { 22557bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 22567bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 22577bdc0c4bSKalyan Thota }, 2258c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 2259c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 22607bdc0c4bSKalyan Thota }; 22617bdc0c4bSKalyan Thota 22623581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 22633581b706SAdam Skladowski .max_bw_low = 3100000, 22643581b706SAdam Skladowski .max_bw_high = 4000000, 22653581b706SAdam Skladowski .min_core_ib = 2400000, 22663581b706SAdam Skladowski .min_llcc_ib = 800000, 22673581b706SAdam Skladowski .min_dram_ib = 800000, 22683581b706SAdam Skladowski .min_prefill_lines = 24, 22693581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22703581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22713581b706SAdam Skladowski .qos_lut_tbl = { 22723581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22733581b706SAdam Skladowski .entries = sc7180_qos_linear 22743581b706SAdam Skladowski }, 22753581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22763581b706SAdam Skladowski .entries = sc7180_qos_macrotile 22773581b706SAdam Skladowski }, 22783581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22793581b706SAdam Skladowski .entries = sc7180_qos_nrt 22803581b706SAdam Skladowski }, 22813581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 22823581b706SAdam Skladowski }, 22833581b706SAdam Skladowski .cdp_cfg = { 22843581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 22853581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 22863581b706SAdam Skladowski }, 22873581b706SAdam Skladowski .clk_inefficiency_factor = 105, 22883581b706SAdam Skladowski .bw_inefficiency_factor = 120, 22893581b706SAdam Skladowski }; 22903581b706SAdam Skladowski 2291386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 2292386fced3SJonathan Marek .max_bw_low = 12800000, 2293386fced3SJonathan Marek .max_bw_high = 12800000, 2294386fced3SJonathan Marek .min_core_ib = 2400000, 2295386fced3SJonathan Marek .min_llcc_ib = 800000, 2296386fced3SJonathan Marek .min_dram_ib = 800000, 22974f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 2298386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 22995bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 2300386fced3SJonathan Marek .qos_lut_tbl = { 2301386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 2302386fced3SJonathan Marek .entries = sm8150_qos_linear 2303386fced3SJonathan Marek }, 2304386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2305386fced3SJonathan Marek .entries = sc7180_qos_macrotile 2306386fced3SJonathan Marek }, 2307386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2308386fced3SJonathan Marek .entries = sc7180_qos_nrt 2309386fced3SJonathan Marek }, 2310386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2311386fced3SJonathan Marek }, 2312386fced3SJonathan Marek .cdp_cfg = { 2313386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2314386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2315386fced3SJonathan Marek }, 23164f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 23174f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2318386fced3SJonathan Marek }; 2319386fced3SJonathan Marek 2320f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 2321f3af2d6eSRob Clark .max_bw_low = 9600000, 2322f3af2d6eSRob Clark .max_bw_high = 9600000, 2323f3af2d6eSRob Clark .min_core_ib = 2400000, 2324f3af2d6eSRob Clark .min_llcc_ib = 800000, 2325f3af2d6eSRob Clark .min_dram_ib = 800000, 2326f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 2327f3af2d6eSRob Clark .qos_lut_tbl = { 23284a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_linear), 23294a352c2fSBjorn Andersson .entries = sc7180_qos_linear 23304a352c2fSBjorn Andersson }, 23314a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 23324a352c2fSBjorn Andersson .entries = sc7180_qos_macrotile 23334a352c2fSBjorn Andersson }, 23344a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 23354a352c2fSBjorn Andersson .entries = sc7180_qos_nrt 23364a352c2fSBjorn Andersson }, 23374a352c2fSBjorn Andersson /* TODO: macrotile-qseed is different from macrotile */ 23384a352c2fSBjorn Andersson }, 23394a352c2fSBjorn Andersson .cdp_cfg = { 23404a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 1}, 23414a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 0} 23424a352c2fSBjorn Andersson }, 23434a352c2fSBjorn Andersson .clk_inefficiency_factor = 105, 23444a352c2fSBjorn Andersson .bw_inefficiency_factor = 120, 23454a352c2fSBjorn Andersson }; 23464a352c2fSBjorn Andersson 23474a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = { 23484a352c2fSBjorn Andersson .max_bw_low = 13600000, 23494a352c2fSBjorn Andersson .max_bw_high = 18200000, 23504a352c2fSBjorn Andersson .min_core_ib = 2500000, 23514a352c2fSBjorn Andersson .min_llcc_ib = 0, 23524a352c2fSBjorn Andersson .min_dram_ib = 800000, 23534a352c2fSBjorn Andersson .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23544a352c2fSBjorn Andersson .qos_lut_tbl = { 2355f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 2356f3af2d6eSRob Clark .entries = sc8180x_qos_linear 2357f3af2d6eSRob Clark }, 2358f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 2359f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 2360f3af2d6eSRob Clark }, 2361f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2362f3af2d6eSRob Clark .entries = sc7180_qos_nrt 2363f3af2d6eSRob Clark }, 2364f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 2365f3af2d6eSRob Clark }, 2366f3af2d6eSRob Clark .cdp_cfg = { 2367f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 2368f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 2369f3af2d6eSRob Clark }, 2370f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 2371f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 2372f3af2d6eSRob Clark }; 2373f3af2d6eSRob Clark 2374af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 2375af776a3eSJonathan Marek .max_bw_low = 13700000, 2376af776a3eSJonathan Marek .max_bw_high = 16600000, 2377af776a3eSJonathan Marek .min_core_ib = 4800000, 2378af776a3eSJonathan Marek .min_llcc_ib = 0, 2379af776a3eSJonathan Marek .min_dram_ib = 800000, 23804f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 2381af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23825bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 2383af776a3eSJonathan Marek .qos_lut_tbl = { 2384af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2385af776a3eSJonathan Marek .entries = sc7180_qos_linear 2386af776a3eSJonathan Marek }, 2387af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2388af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 2389af776a3eSJonathan Marek }, 2390af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2391af776a3eSJonathan Marek .entries = sc7180_qos_nrt 2392af776a3eSJonathan Marek }, 2393af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2394af776a3eSJonathan Marek }, 2395af776a3eSJonathan Marek .cdp_cfg = { 2396af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2397af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2398af776a3eSJonathan Marek }, 23994f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 24004f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2401af776a3eSJonathan Marek }; 2402af776a3eSJonathan Marek 2403100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = { 2404100d7ef6SDmitry Baryshkov .max_bw_low = 13600000, 2405100d7ef6SDmitry Baryshkov .max_bw_high = 18200000, 2406100d7ef6SDmitry Baryshkov .min_core_ib = 2500000, 2407100d7ef6SDmitry Baryshkov .min_llcc_ib = 0, 2408100d7ef6SDmitry Baryshkov .min_dram_ib = 800000, 2409100d7ef6SDmitry Baryshkov .min_prefill_lines = 35, 2410100d7ef6SDmitry Baryshkov /* FIXME: lut tables */ 2411100d7ef6SDmitry Baryshkov .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 2412100d7ef6SDmitry Baryshkov .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 2413100d7ef6SDmitry Baryshkov .qos_lut_tbl = { 2414100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2415100d7ef6SDmitry Baryshkov .entries = sc7180_qos_linear 2416100d7ef6SDmitry Baryshkov }, 2417100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2418100d7ef6SDmitry Baryshkov .entries = sc7180_qos_macrotile 2419100d7ef6SDmitry Baryshkov }, 2420100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2421100d7ef6SDmitry Baryshkov .entries = sc7180_qos_nrt 2422100d7ef6SDmitry Baryshkov }, 2423100d7ef6SDmitry Baryshkov /* TODO: macrotile-qseed is different from macrotile */ 2424100d7ef6SDmitry Baryshkov }, 2425100d7ef6SDmitry Baryshkov .cdp_cfg = { 2426100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 1}, 2427100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 0} 2428100d7ef6SDmitry Baryshkov }, 2429100d7ef6SDmitry Baryshkov .clk_inefficiency_factor = 105, 2430100d7ef6SDmitry Baryshkov .bw_inefficiency_factor = 120, 2431100d7ef6SDmitry Baryshkov }; 2432100d7ef6SDmitry Baryshkov 2433591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 2434591e34a0SKrishna Manikandan .max_bw_low = 4700000, 2435591e34a0SKrishna Manikandan .max_bw_high = 8800000, 2436591e34a0SKrishna Manikandan .min_core_ib = 2500000, 2437591e34a0SKrishna Manikandan .min_llcc_ib = 0, 2438591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 2439591e34a0SKrishna Manikandan .min_prefill_lines = 24, 2440591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 24415bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 2442591e34a0SKrishna Manikandan .qos_lut_tbl = { 2443591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2444591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2445591e34a0SKrishna Manikandan }, 2446591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2447591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2448591e34a0SKrishna Manikandan }, 2449591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2450591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 2451591e34a0SKrishna Manikandan }, 2452591e34a0SKrishna Manikandan }, 2453591e34a0SKrishna Manikandan .cdp_cfg = { 2454591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 2455591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 2456591e34a0SKrishna Manikandan }, 2457591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 2458591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 2459591e34a0SKrishna Manikandan }; 2460591e34a0SKrishna Manikandan 24610e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = { 24620e91bcbbSRobert Foss .max_bw_low = 11800000, 24630e91bcbbSRobert Foss .max_bw_high = 15500000, 24640e91bcbbSRobert Foss .min_core_ib = 2500000, 24650e91bcbbSRobert Foss .min_llcc_ib = 0, 24660e91bcbbSRobert Foss .min_dram_ib = 800000, 24670e91bcbbSRobert Foss .min_prefill_lines = 40, 24680e91bcbbSRobert Foss /* FIXME: lut tables */ 24690e91bcbbSRobert Foss .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 24700e91bcbbSRobert Foss .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 24710e91bcbbSRobert Foss .qos_lut_tbl = { 24720e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_linear), 24730e91bcbbSRobert Foss .entries = sc7180_qos_linear 24740e91bcbbSRobert Foss }, 24750e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 24760e91bcbbSRobert Foss .entries = sc7180_qos_macrotile 24770e91bcbbSRobert Foss }, 24780e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 24790e91bcbbSRobert Foss .entries = sc7180_qos_nrt 24800e91bcbbSRobert Foss }, 24810e91bcbbSRobert Foss /* TODO: macrotile-qseed is different from macrotile */ 24820e91bcbbSRobert Foss }, 24830e91bcbbSRobert Foss .cdp_cfg = { 24840e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 1}, 24850e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 0} 24860e91bcbbSRobert Foss }, 24870e91bcbbSRobert Foss .clk_inefficiency_factor = 105, 24880e91bcbbSRobert Foss .bw_inefficiency_factor = 120, 24890e91bcbbSRobert Foss }; 24900e91bcbbSRobert Foss 24915334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 24925334087eSLoic Poulain .max_bw_low = 2700000, 24935334087eSLoic Poulain .max_bw_high = 2700000, 24945334087eSLoic Poulain .min_core_ib = 1300000, 24955334087eSLoic Poulain .min_llcc_ib = 0, 24965334087eSLoic Poulain .min_dram_ib = 1600000, 24975334087eSLoic Poulain .min_prefill_lines = 24, 24985334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 24995334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 25005334087eSLoic Poulain .qos_lut_tbl = { 25015334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 25025334087eSLoic Poulain .entries = qcm2290_qos_linear 25035334087eSLoic Poulain }, 25045334087eSLoic Poulain }, 25055334087eSLoic Poulain .cdp_cfg = { 25065334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 25075334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 25085334087eSLoic Poulain }, 25095334087eSLoic Poulain .clk_inefficiency_factor = 105, 25105334087eSLoic Poulain .bw_inefficiency_factor = 120, 25115334087eSLoic Poulain }; 251225fdd593SJeykumar Sankaran /************************************************************* 2513de7d480fSDmitry Baryshkov * Hardware catalog 251425fdd593SJeykumar Sankaran *************************************************************/ 251525fdd593SJeykumar Sankaran 2516de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 251794391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 251894391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 251994391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 252094391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 252194391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 252294391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 252394391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 252494391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 252594391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 25266452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 25276452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 252894391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 252994391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 253094391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 253194391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 253294391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 253394391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 253494391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 2535477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 253694391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 253794391a14SAngeloGioacchino Del Regno }; 253894391a14SAngeloGioacchino Del Regno 2539de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 254025fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 254125fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 254225fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 254325fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 254425fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 254525fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 254625fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 254725fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 254825fdd593SJeykumar Sankaran .mixer = sdm845_lm, 254925fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 255025fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 25517c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 25527c5ab05eSVinod Koul .dsc = sdm845_dsc, 255325fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 255425fdd593SJeykumar Sankaran .intf = sdm845_intf, 255525fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 255625fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 255725fdd593SJeykumar Sankaran .reg_dma_count = 1, 2558481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2559477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 2560597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 256125fdd593SJeykumar Sankaran }; 256225fdd593SJeykumar Sankaran 2563de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 25647bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 25657bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 25667bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 25677bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 25687bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 25697bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 25707bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 25717bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 25727bdc0c4bSKalyan Thota .mixer = sc7180_lm, 2573e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2574e47616dfSKalyan Thota .dspp = sc7180_dspp, 25757bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 25767bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 25777bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 25787bdc0c4bSKalyan Thota .intf = sc7180_intf, 257951e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 258051e4d60eSAbhinav Kumar .wb = sm8250_wb, 25817bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 25827bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 25837bdc0c4bSKalyan Thota .reg_dma_count = 1, 2584481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2585477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 2586597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 25877bdc0c4bSKalyan Thota }; 25887bdc0c4bSKalyan Thota 25893581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 25903581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 25913581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 25923581b706SAdam Skladowski .mdp = sm6115_mdp, 25933581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 25943581b706SAdam Skladowski .ctl = qcm2290_ctl, 25953581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 25963581b706SAdam Skladowski .sspp = sm6115_sspp, 25973581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 25983581b706SAdam Skladowski .mixer = qcm2290_lm, 25993581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 26003581b706SAdam Skladowski .dspp = qcm2290_dspp, 26013581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 26023581b706SAdam Skladowski .pingpong = qcm2290_pp, 26033581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 26043581b706SAdam Skladowski .intf = qcm2290_intf, 26053581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 26063581b706SAdam Skladowski .vbif = sdm845_vbif, 26073581b706SAdam Skladowski .perf = &sm6115_perf_data, 26083581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 26093581b706SAdam Skladowski }; 26103581b706SAdam Skladowski 2611de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 2612386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 2613386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 2614386fced3SJonathan Marek .mdp = sdm845_mdp, 2615386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2616386fced3SJonathan Marek .ctl = sm8150_ctl, 2617386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 2618386fced3SJonathan Marek .sspp = sdm845_sspp, 2619386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2620386fced3SJonathan Marek .mixer = sm8150_lm, 262105ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 262205ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 26239da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 26249da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2625386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2626386fced3SJonathan Marek .pingpong = sm8150_pp, 26274369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 26284369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2629386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2630386fced3SJonathan Marek .intf = sm8150_intf, 2631386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2632386fced3SJonathan Marek .vbif = sdm845_vbif, 2633386fced3SJonathan Marek .reg_dma_count = 1, 2634481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2635477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 2636597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 2637386fced3SJonathan Marek }; 2638386fced3SJonathan Marek 2639de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 2640f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 2641f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 2642f3af2d6eSRob Clark .mdp = sc8180x_mdp, 2643f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 2644f3af2d6eSRob Clark .ctl = sm8150_ctl, 2645f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 2646f3af2d6eSRob Clark .sspp = sdm845_sspp, 2647f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 2648f3af2d6eSRob Clark .mixer = sm8150_lm, 2649f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 2650f3af2d6eSRob Clark .pingpong = sm8150_pp, 2651f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 2652f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 2653f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 2654f3af2d6eSRob Clark .intf = sc8180x_intf, 2655f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 2656f3af2d6eSRob Clark .vbif = sdm845_vbif, 2657f3af2d6eSRob Clark .reg_dma_count = 1, 2658481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2659477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 2660f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 2661f3af2d6eSRob Clark }; 2662f3af2d6eSRob Clark 26634a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = { 26644a352c2fSBjorn Andersson .caps = &sc8280xp_dpu_caps, 26654a352c2fSBjorn Andersson .mdp_count = ARRAY_SIZE(sc8280xp_mdp), 26664a352c2fSBjorn Andersson .mdp = sc8280xp_mdp, 26674a352c2fSBjorn Andersson .ctl_count = ARRAY_SIZE(sc8280xp_ctl), 26684a352c2fSBjorn Andersson .ctl = sc8280xp_ctl, 26694a352c2fSBjorn Andersson .sspp_count = ARRAY_SIZE(sc8280xp_sspp), 26704a352c2fSBjorn Andersson .sspp = sc8280xp_sspp, 26714a352c2fSBjorn Andersson .mixer_count = ARRAY_SIZE(sc8280xp_lm), 26724a352c2fSBjorn Andersson .mixer = sc8280xp_lm, 26734a352c2fSBjorn Andersson .dspp_count = ARRAY_SIZE(sm8150_dspp), 26744a352c2fSBjorn Andersson .dspp = sm8150_dspp, 26754a352c2fSBjorn Andersson .pingpong_count = ARRAY_SIZE(sc8280xp_pp), 26764a352c2fSBjorn Andersson .pingpong = sc8280xp_pp, 26774a352c2fSBjorn Andersson .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 26784a352c2fSBjorn Andersson .merge_3d = sm8350_merge_3d, 26794a352c2fSBjorn Andersson .intf_count = ARRAY_SIZE(sc8280xp_intf), 26804a352c2fSBjorn Andersson .intf = sc8280xp_intf, 26814a352c2fSBjorn Andersson .vbif_count = ARRAY_SIZE(sdm845_vbif), 26824a352c2fSBjorn Andersson .vbif = sdm845_vbif, 2683*83bb1f13SDmitry Baryshkov .reg_dma_count = 1, 2684*83bb1f13SDmitry Baryshkov .dma_cfg = &sc8280xp_regdma, 26854a352c2fSBjorn Andersson .perf = &sc8280xp_perf_data, 26864a352c2fSBjorn Andersson .mdss_irqs = IRQ_SC8280XP_MASK, 26874a352c2fSBjorn Andersson }; 26884a352c2fSBjorn Andersson 2689de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 2690af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 2691af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 2692af776a3eSJonathan Marek .mdp = sm8250_mdp, 2693af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2694af776a3eSJonathan Marek .ctl = sm8150_ctl, 2695d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 2696d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 2697af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2698af776a3eSJonathan Marek .mixer = sm8150_lm, 269905ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 270005ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 27019da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 27029da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2703af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2704af776a3eSJonathan Marek .pingpong = sm8150_pp, 27054369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 27064369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2707af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2708af776a3eSJonathan Marek .intf = sm8150_intf, 2709af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2710af776a3eSJonathan Marek .vbif = sdm845_vbif, 271153324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 271253324b99SAbhinav Kumar .wb = sm8250_wb, 2713af776a3eSJonathan Marek .reg_dma_count = 1, 2714481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2715477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2716597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2717af776a3eSJonathan Marek }; 2718af776a3eSJonathan Marek 27190e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = { 27200e91bcbbSRobert Foss .caps = &sm8350_dpu_caps, 27210e91bcbbSRobert Foss .mdp_count = ARRAY_SIZE(sm8350_mdp), 27220e91bcbbSRobert Foss .mdp = sm8350_mdp, 27230e91bcbbSRobert Foss .ctl_count = ARRAY_SIZE(sm8350_ctl), 27240e91bcbbSRobert Foss .ctl = sm8350_ctl, 27250e91bcbbSRobert Foss .sspp_count = ARRAY_SIZE(sm8250_sspp), 27260e91bcbbSRobert Foss .sspp = sm8250_sspp, 27270e91bcbbSRobert Foss .mixer_count = ARRAY_SIZE(sm8150_lm), 27280e91bcbbSRobert Foss .mixer = sm8150_lm, 27290e91bcbbSRobert Foss .dspp_count = ARRAY_SIZE(sm8150_dspp), 27300e91bcbbSRobert Foss .dspp = sm8150_dspp, 27310e91bcbbSRobert Foss .pingpong_count = ARRAY_SIZE(sm8350_pp), 27320e91bcbbSRobert Foss .pingpong = sm8350_pp, 27330e91bcbbSRobert Foss .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 27340e91bcbbSRobert Foss .merge_3d = sm8350_merge_3d, 27350e91bcbbSRobert Foss .intf_count = ARRAY_SIZE(sm8350_intf), 27360e91bcbbSRobert Foss .intf = sm8350_intf, 27370e91bcbbSRobert Foss .vbif_count = ARRAY_SIZE(sdm845_vbif), 27380e91bcbbSRobert Foss .vbif = sdm845_vbif, 27390e91bcbbSRobert Foss .reg_dma_count = 1, 27400e91bcbbSRobert Foss .dma_cfg = &sm8250_regdma, 27410e91bcbbSRobert Foss .perf = &sm8350_perf_data, 27420e91bcbbSRobert Foss .mdss_irqs = IRQ_SM8350_MASK, 27430e91bcbbSRobert Foss }; 27440e91bcbbSRobert Foss 2745100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = { 2746100d7ef6SDmitry Baryshkov .caps = &sm8450_dpu_caps, 2747100d7ef6SDmitry Baryshkov .mdp_count = ARRAY_SIZE(sm8450_mdp), 2748100d7ef6SDmitry Baryshkov .mdp = sm8450_mdp, 2749100d7ef6SDmitry Baryshkov .ctl_count = ARRAY_SIZE(sm8450_ctl), 2750100d7ef6SDmitry Baryshkov .ctl = sm8450_ctl, 2751100d7ef6SDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8450_sspp), 2752100d7ef6SDmitry Baryshkov .sspp = sm8450_sspp, 2753100d7ef6SDmitry Baryshkov .mixer_count = ARRAY_SIZE(sm8150_lm), 2754100d7ef6SDmitry Baryshkov .mixer = sm8150_lm, 2755100d7ef6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 2756100d7ef6SDmitry Baryshkov .dspp = sm8150_dspp, 2757100d7ef6SDmitry Baryshkov .pingpong_count = ARRAY_SIZE(sm8450_pp), 2758100d7ef6SDmitry Baryshkov .pingpong = sm8450_pp, 2759100d7ef6SDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8450_merge_3d), 2760100d7ef6SDmitry Baryshkov .merge_3d = sm8450_merge_3d, 2761100d7ef6SDmitry Baryshkov .intf_count = ARRAY_SIZE(sm8450_intf), 2762100d7ef6SDmitry Baryshkov .intf = sm8450_intf, 2763100d7ef6SDmitry Baryshkov .vbif_count = ARRAY_SIZE(sdm845_vbif), 2764100d7ef6SDmitry Baryshkov .vbif = sdm845_vbif, 2765100d7ef6SDmitry Baryshkov .reg_dma_count = 1, 2766100d7ef6SDmitry Baryshkov .dma_cfg = &sm8450_regdma, 2767100d7ef6SDmitry Baryshkov .perf = &sm8450_perf_data, 2768100d7ef6SDmitry Baryshkov .mdss_irqs = IRQ_SM8450_MASK, 2769100d7ef6SDmitry Baryshkov }; 2770100d7ef6SDmitry Baryshkov 2771efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = { 2772efcd0107SNeil Armstrong .caps = &sm8550_dpu_caps, 2773efcd0107SNeil Armstrong .mdp_count = ARRAY_SIZE(sm8550_mdp), 2774efcd0107SNeil Armstrong .mdp = sm8550_mdp, 2775efcd0107SNeil Armstrong .ctl_count = ARRAY_SIZE(sm8550_ctl), 2776efcd0107SNeil Armstrong .ctl = sm8550_ctl, 2777efcd0107SNeil Armstrong .sspp_count = ARRAY_SIZE(sm8550_sspp), 2778efcd0107SNeil Armstrong .sspp = sm8550_sspp, 2779efcd0107SNeil Armstrong .mixer_count = ARRAY_SIZE(sm8150_lm), 2780efcd0107SNeil Armstrong .mixer = sm8150_lm, 2781efcd0107SNeil Armstrong .dspp_count = ARRAY_SIZE(sm8150_dspp), 2782efcd0107SNeil Armstrong .dspp = sm8150_dspp, 2783efcd0107SNeil Armstrong .pingpong_count = ARRAY_SIZE(sm8550_pp), 2784efcd0107SNeil Armstrong .pingpong = sm8550_pp, 2785efcd0107SNeil Armstrong .merge_3d_count = ARRAY_SIZE(sm8550_merge_3d), 2786efcd0107SNeil Armstrong .merge_3d = sm8550_merge_3d, 2787efcd0107SNeil Armstrong .intf_count = ARRAY_SIZE(sm8550_intf), 2788efcd0107SNeil Armstrong .intf = sm8550_intf, 2789efcd0107SNeil Armstrong .vbif_count = ARRAY_SIZE(sdm845_vbif), 2790efcd0107SNeil Armstrong .vbif = sdm845_vbif, 2791efcd0107SNeil Armstrong .reg_dma_count = 1, 2792efcd0107SNeil Armstrong .dma_cfg = &sm8450_regdma, 2793efcd0107SNeil Armstrong .perf = &sm8450_perf_data, 2794efcd0107SNeil Armstrong .mdss_irqs = IRQ_SM8450_MASK, 2795efcd0107SNeil Armstrong }; 2796efcd0107SNeil Armstrong 2797de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 2798591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 2799591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 2800591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 2801591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 2802591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 2803591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 2804591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 2805fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2806fca5ad26SKalyan Thota .dspp = sc7180_dspp, 2807591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 2808591e34a0SKrishna Manikandan .mixer = sc7280_lm, 2809591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 2810591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 2811591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 2812591e34a0SKrishna Manikandan .intf = sc7280_intf, 2813591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 2814591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 2815477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 2816597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 2817591e34a0SKrishna Manikandan }; 2818591e34a0SKrishna Manikandan 2819de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 28205334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 28215334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 28225334087eSLoic Poulain .mdp = qcm2290_mdp, 28235334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 28245334087eSLoic Poulain .ctl = qcm2290_ctl, 28255334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 28265334087eSLoic Poulain .sspp = qcm2290_sspp, 28275334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 28285334087eSLoic Poulain .mixer = qcm2290_lm, 28295334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 28305334087eSLoic Poulain .dspp = qcm2290_dspp, 28315334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 28325334087eSLoic Poulain .pingpong = qcm2290_pp, 28335334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 28345334087eSLoic Poulain .intf = qcm2290_intf, 28355334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 28365334087eSLoic Poulain .vbif = sdm845_vbif, 28375334087eSLoic Poulain .reg_dma_count = 1, 2838481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2839477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 28405334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 28415334087eSLoic Poulain }; 28425334087eSLoic Poulain 2843abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2844de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2845de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2846de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2847de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2848de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2849de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2850de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2851de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2852de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 28533581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2854de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 28550e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 2856de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 28574a352c2fSBjorn Andersson { .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg}, 2858100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 2859efcd0107SNeil Armstrong { .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg}, 286025fdd593SJeykumar Sankaran }; 286125fdd593SJeykumar Sankaran 2862de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 286325fdd593SJeykumar Sankaran { 286425fdd593SJeykumar Sankaran int i; 286525fdd593SJeykumar Sankaran 286625fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2867de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2868de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 286925fdd593SJeykumar Sankaran } 287025fdd593SJeykumar Sankaran 287125fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 287232084967SDmitry Baryshkov 287325fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 287425fdd593SJeykumar Sankaran } 287525fdd593SJeykumar Sankaran 2876