197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. 353324b99SAbhinav Kumar * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved. 425fdd593SJeykumar Sankaran */ 525fdd593SJeykumar Sankaran 625fdd593SJeykumar Sankaran #define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__ 725fdd593SJeykumar Sankaran #include <linux/slab.h> 825fdd593SJeykumar Sankaran #include <linux/of_address.h> 925fdd593SJeykumar Sankaran #include <linux/platform_device.h> 1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h" 11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h" 1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h" 1325fdd593SJeykumar Sankaran #include "dpu_kms.h" 1425fdd593SJeykumar Sankaran 15a2a448b4SDmitry Baryshkov #define VIG_BASE_MASK \ 167bdc0c4bSKalyan Thota (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 17a2a448b4SDmitry Baryshkov BIT(DPU_SSPP_CDP) |\ 1825fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT)) 1925fdd593SJeykumar Sankaran 20a2a448b4SDmitry Baryshkov #define VIG_MASK \ 21a2a448b4SDmitry Baryshkov (VIG_BASE_MASK | \ 22a2a448b4SDmitry Baryshkov BIT(DPU_SSPP_CSC_10BIT)) 23a2a448b4SDmitry Baryshkov 2494391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \ 2594391a14SAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3)) 2694391a14SAngeloGioacchino Del Regno 277bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \ 28b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3)) 297bdc0c4bSKalyan Thota 308b409996SDmitry Baryshkov #define VIG_SDM845_MASK_SDMA \ 318b409996SDmitry Baryshkov (VIG_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 328b409996SDmitry Baryshkov 337bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \ 34b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4)) 357bdc0c4bSKalyan Thota 368b409996SDmitry Baryshkov #define VIG_SC7180_MASK_SDMA \ 378b409996SDmitry Baryshkov (VIG_SC7180_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 388b409996SDmitry Baryshkov 39a2a448b4SDmitry Baryshkov #define VIG_QCM2290_MASK (VIG_BASE_MASK | BIT(DPU_SSPP_QOS_8LVL)) 405334087eSLoic Poulain 4194391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \ 4294391a14SAngeloGioacchino Del Regno (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 4394391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 4494391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 4594391a14SAngeloGioacchino Del Regno 46dabfdd89SVinod Polimera #define VIG_SC7280_MASK \ 47dabfdd89SVinod Polimera (VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION)) 48dabfdd89SVinod Polimera 498b409996SDmitry Baryshkov #define VIG_SC7280_MASK_SDMA \ 508b409996SDmitry Baryshkov (VIG_SC7280_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 518b409996SDmitry Baryshkov 5225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \ 5325fdd593SJeykumar Sankaran (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\ 5425fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 5525fdd593SJeykumar Sankaran BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 5625fdd593SJeykumar Sankaran 5707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \ 5807ca1fc0SSravanthi Kollukuduru (DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR)) 5907ca1fc0SSravanthi Kollukuduru 608b409996SDmitry Baryshkov #define DMA_SDM845_MASK_SDMA \ 618b409996SDmitry Baryshkov (DMA_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 628b409996SDmitry Baryshkov 638b409996SDmitry Baryshkov #define DMA_CURSOR_SDM845_MASK_SDMA \ 648b409996SDmitry Baryshkov (DMA_CURSOR_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 658b409996SDmitry Baryshkov 6694391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \ 6794391a14SAngeloGioacchino Del Regno (DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR)) 6894391a14SAngeloGioacchino Del Regno 692d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \ 70a5045b00SDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT)) 7125fdd593SJeykumar Sankaran 722d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \ 732d8a4edbSDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 742d8a4edbSDmitry Baryshkov 7500feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \ 762d8a4edbSDmitry Baryshkov (BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 777bdc0c4bSKalyan Thota 7825fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER) 7925fdd593SJeykumar Sankaran 8025fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \ 8125fdd593SJeykumar Sankaran (PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2)) 8225fdd593SJeykumar Sankaran 83591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \ 8483a58b20SKalyan Thota (BIT(DPU_CTL_ACTIVE_CFG) | \ 8583a58b20SKalyan Thota BIT(DPU_CTL_FETCH_ACTIVE) | \ 8683a58b20SKalyan Thota BIT(DPU_CTL_VM_CFG) | \ 8783a58b20SKalyan Thota BIT(DPU_CTL_DSPP_SUB_BLOCK_FLUSH)) 88591e34a0SKrishna Manikandan 89e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \ 90e92a4ae1SDmitry Baryshkov (CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4)) 91e92a4ae1SDmitry Baryshkov 924369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0) 934369c93cSDmitry Baryshkov 9494391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC) 9594391a14SAngeloGioacchino Del Regno 964259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) 97e47616dfSKalyan Thota 98cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0) 99cace3ac4SJonathan Marek 100e3969eadSVinod Polimera #define INTF_SC7180_MASK \ 101e3969eadSVinod Polimera (BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) | BIT(DPU_INTF_STATUS_SUPPORTED)) 102cace3ac4SJonathan Marek 103591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN) 104591e34a0SKrishna Manikandan 105597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 106597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 107597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 108597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 109597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 110597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 111597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 112597762d5SDmitry Baryshkov BIT(MDP_AD4_0_INTR) | \ 113597762d5SDmitry Baryshkov BIT(MDP_AD4_1_INTR)) 114597762d5SDmitry Baryshkov 115597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 116597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 117597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 118597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 119597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR)) 120597762d5SDmitry Baryshkov 121597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 122597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 123597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 124597762d5SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 125597762d5SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 126597762d5SDmitry Baryshkov BIT(MDP_INTF5_7xxx_INTR)) 127597762d5SDmitry Baryshkov 128597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 129597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 130597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 131597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 132597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 133597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 134597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 135597762d5SDmitry Baryshkov BIT(MDP_INTF4_INTR)) 136597762d5SDmitry Baryshkov 1370e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1380e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_INTR2) | \ 1390e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1400e91bcbbSRobert Foss BIT(MDP_INTF0_7xxx_INTR) | \ 1410e91bcbbSRobert Foss BIT(MDP_INTF1_7xxx_INTR) | \ 1420e91bcbbSRobert Foss BIT(MDP_INTF2_7xxx_INTR) | \ 1437eb75dbdSRobert Foss BIT(MDP_INTF3_7xxx_INTR)) 1440e91bcbbSRobert Foss 145f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 146f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_INTR2) | \ 147f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 148f3af2d6eSRob Clark BIT(MDP_INTF0_INTR) | \ 149f3af2d6eSRob Clark BIT(MDP_INTF1_INTR) | \ 150f3af2d6eSRob Clark BIT(MDP_INTF2_INTR) | \ 151f3af2d6eSRob Clark BIT(MDP_INTF3_INTR) | \ 152f3af2d6eSRob Clark BIT(MDP_INTF4_INTR) | \ 153f3af2d6eSRob Clark BIT(MDP_INTF5_INTR) | \ 154f3af2d6eSRob Clark BIT(MDP_AD4_0_INTR) | \ 155f3af2d6eSRob Clark BIT(MDP_AD4_1_INTR)) 156597762d5SDmitry Baryshkov 1574a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1584a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_INTR2) | \ 1594a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1604a352c2fSBjorn Andersson BIT(MDP_INTF0_7xxx_INTR) | \ 1614a352c2fSBjorn Andersson BIT(MDP_INTF1_7xxx_INTR) | \ 1624a352c2fSBjorn Andersson BIT(MDP_INTF2_7xxx_INTR) | \ 1634a352c2fSBjorn Andersson BIT(MDP_INTF3_7xxx_INTR) | \ 1644a352c2fSBjorn Andersson BIT(MDP_INTF4_7xxx_INTR) | \ 1654a352c2fSBjorn Andersson BIT(MDP_INTF5_7xxx_INTR) | \ 1664a352c2fSBjorn Andersson BIT(MDP_INTF6_7xxx_INTR) | \ 1674a352c2fSBjorn Andersson BIT(MDP_INTF7_7xxx_INTR) | \ 1684a352c2fSBjorn Andersson BIT(MDP_INTF8_7xxx_INTR)) 1694a352c2fSBjorn Andersson 170100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 171100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 172100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 173100d7ef6SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 174100d7ef6SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 175100d7ef6SDmitry Baryshkov BIT(MDP_INTF2_7xxx_INTR) | \ 176100d7ef6SDmitry Baryshkov BIT(MDP_INTF3_7xxx_INTR)) 177100d7ef6SDmitry Baryshkov 17853324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ 17953324b99SAbhinav Kumar BIT(DPU_WB_UBWC) | \ 18053324b99SAbhinav Kumar BIT(DPU_WB_YUV_CONFIG) | \ 18153324b99SAbhinav Kumar BIT(DPU_WB_PIPE_ALPHA) | \ 18253324b99SAbhinav Kumar BIT(DPU_WB_XY_ROI_OFFSET) | \ 18353324b99SAbhinav Kumar BIT(DPU_WB_QOS) | \ 18453324b99SAbhinav Kumar BIT(DPU_WB_QOS_8LVL) | \ 18553324b99SAbhinav Kumar BIT(DPU_WB_CDP) | \ 18653324b99SAbhinav Kumar BIT(DPU_WB_INPUT_CTRL)) 18753324b99SAbhinav Kumar 18825fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) 18925fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH 2048 19025fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 19125fdd593SJeykumar Sankaran 19225fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION 4 19325fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION 4 19425fdd593SJeykumar Sankaran 19525fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO 20 19625fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO 4 19725fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE 1 19825fdd593SJeykumar Sankaran 19925fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y) 20025fdd593SJeykumar Sankaran 20109c7e370SLee Jones static const uint32_t plane_formats[] = { 20209c7e370SLee Jones DRM_FORMAT_ARGB8888, 20309c7e370SLee Jones DRM_FORMAT_ABGR8888, 20409c7e370SLee Jones DRM_FORMAT_RGBA8888, 20509c7e370SLee Jones DRM_FORMAT_BGRA8888, 20609c7e370SLee Jones DRM_FORMAT_XRGB8888, 20709c7e370SLee Jones DRM_FORMAT_RGBX8888, 20809c7e370SLee Jones DRM_FORMAT_BGRX8888, 20909c7e370SLee Jones DRM_FORMAT_XBGR8888, 210ffbbed63SLeonard Lausen DRM_FORMAT_ARGB2101010, 211da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 21209c7e370SLee Jones DRM_FORMAT_RGB888, 21309c7e370SLee Jones DRM_FORMAT_BGR888, 21409c7e370SLee Jones DRM_FORMAT_RGB565, 21509c7e370SLee Jones DRM_FORMAT_BGR565, 21609c7e370SLee Jones DRM_FORMAT_ARGB1555, 21709c7e370SLee Jones DRM_FORMAT_ABGR1555, 21809c7e370SLee Jones DRM_FORMAT_RGBA5551, 21909c7e370SLee Jones DRM_FORMAT_BGRA5551, 22009c7e370SLee Jones DRM_FORMAT_XRGB1555, 22109c7e370SLee Jones DRM_FORMAT_XBGR1555, 22209c7e370SLee Jones DRM_FORMAT_RGBX5551, 22309c7e370SLee Jones DRM_FORMAT_BGRX5551, 22409c7e370SLee Jones DRM_FORMAT_ARGB4444, 22509c7e370SLee Jones DRM_FORMAT_ABGR4444, 22609c7e370SLee Jones DRM_FORMAT_RGBA4444, 22709c7e370SLee Jones DRM_FORMAT_BGRA4444, 22809c7e370SLee Jones DRM_FORMAT_XRGB4444, 22909c7e370SLee Jones DRM_FORMAT_XBGR4444, 23009c7e370SLee Jones DRM_FORMAT_RGBX4444, 23109c7e370SLee Jones DRM_FORMAT_BGRX4444, 23209c7e370SLee Jones }; 23309c7e370SLee Jones 23409c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 23509c7e370SLee Jones DRM_FORMAT_ARGB8888, 23609c7e370SLee Jones DRM_FORMAT_ABGR8888, 23709c7e370SLee Jones DRM_FORMAT_RGBA8888, 23809c7e370SLee Jones DRM_FORMAT_BGRX8888, 23909c7e370SLee Jones DRM_FORMAT_BGRA8888, 240ffbbed63SLeonard Lausen DRM_FORMAT_ARGB2101010, 241da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 24209c7e370SLee Jones DRM_FORMAT_XRGB8888, 24309c7e370SLee Jones DRM_FORMAT_XBGR8888, 24409c7e370SLee Jones DRM_FORMAT_RGBX8888, 24509c7e370SLee Jones DRM_FORMAT_RGB888, 24609c7e370SLee Jones DRM_FORMAT_BGR888, 24709c7e370SLee Jones DRM_FORMAT_RGB565, 24809c7e370SLee Jones DRM_FORMAT_BGR565, 24909c7e370SLee Jones DRM_FORMAT_ARGB1555, 25009c7e370SLee Jones DRM_FORMAT_ABGR1555, 25109c7e370SLee Jones DRM_FORMAT_RGBA5551, 25209c7e370SLee Jones DRM_FORMAT_BGRA5551, 25309c7e370SLee Jones DRM_FORMAT_XRGB1555, 25409c7e370SLee Jones DRM_FORMAT_XBGR1555, 25509c7e370SLee Jones DRM_FORMAT_RGBX5551, 25609c7e370SLee Jones DRM_FORMAT_BGRX5551, 25709c7e370SLee Jones DRM_FORMAT_ARGB4444, 25809c7e370SLee Jones DRM_FORMAT_ABGR4444, 25909c7e370SLee Jones DRM_FORMAT_RGBA4444, 26009c7e370SLee Jones DRM_FORMAT_BGRA4444, 26109c7e370SLee Jones DRM_FORMAT_XRGB4444, 26209c7e370SLee Jones DRM_FORMAT_XBGR4444, 26309c7e370SLee Jones DRM_FORMAT_RGBX4444, 26409c7e370SLee Jones DRM_FORMAT_BGRX4444, 26509c7e370SLee Jones 266f07c9946SJessica Zhang DRM_FORMAT_P010, 26709c7e370SLee Jones DRM_FORMAT_NV12, 26809c7e370SLee Jones DRM_FORMAT_NV21, 26909c7e370SLee Jones DRM_FORMAT_NV16, 27009c7e370SLee Jones DRM_FORMAT_NV61, 27109c7e370SLee Jones DRM_FORMAT_VYUY, 27209c7e370SLee Jones DRM_FORMAT_UYVY, 27309c7e370SLee Jones DRM_FORMAT_YUYV, 27409c7e370SLee Jones DRM_FORMAT_YVYU, 27509c7e370SLee Jones DRM_FORMAT_YUV420, 27609c7e370SLee Jones DRM_FORMAT_YVU420, 27709c7e370SLee Jones }; 27809c7e370SLee Jones 279dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 280dabfdd89SVinod Polimera DRM_FORMAT_NV12, 281dabfdd89SVinod Polimera /* TODO add formats after validation */ 282dabfdd89SVinod Polimera }; 283dabfdd89SVinod Polimera 28453324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 28553324b99SAbhinav Kumar DRM_FORMAT_RGB565, 28653324b99SAbhinav Kumar DRM_FORMAT_BGR565, 28753324b99SAbhinav Kumar DRM_FORMAT_RGB888, 28853324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 28953324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 29053324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 29153324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 29253324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 29353324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 29453324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 29553324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 29653324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 29753324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 29853324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 29953324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 30053324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 30153324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 30253324b99SAbhinav Kumar DRM_FORMAT_BGR565, 30353324b99SAbhinav Kumar DRM_FORMAT_BGR888, 30453324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 30553324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 30653324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 30753324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 30853324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 30953324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 31053324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 31153324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 31253324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 31353324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 31453324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 31553324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 31653324b99SAbhinav Kumar }; 31753324b99SAbhinav Kumar 31825fdd593SJeykumar Sankaran /************************************************************* 31925fdd593SJeykumar Sankaran * DPU sub blocks config 32025fdd593SJeykumar Sankaran *************************************************************/ 32125fdd593SJeykumar Sankaran /* DPU top level caps */ 32294391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 32394391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 32494391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 32594391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 32694391a14SAngeloGioacchino Del Regno .has_src_split = true, 32794391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 32894391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 32994391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 33094391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 33194391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 33294391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 33394391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 33494391a14SAngeloGioacchino Del Regno }; 33594391a14SAngeloGioacchino Del Regno 336c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 337da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 338c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 339c162352eSKonrad Dybcio .has_dim_layer = true, 340c162352eSKonrad Dybcio .has_idle_pc = true, 341c162352eSKonrad Dybcio .max_linewidth = 2160, 342c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 343c162352eSKonrad Dybcio }; 344c162352eSKonrad Dybcio 34525fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 34625fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 34725fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 34825fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 34925fdd593SJeykumar Sankaran .has_src_split = true, 35025fdd593SJeykumar Sankaran .has_dim_layer = true, 35125fdd593SJeykumar Sankaran .has_idle_pc = true, 35242a558b7SKalyan Thota .has_3d_merge = true, 3537e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3547e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3557e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3567e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 35725fdd593SJeykumar Sankaran }; 35825fdd593SJeykumar Sankaran 3597bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3607bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3617bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3627bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3637bdc0c4bSKalyan Thota .has_dim_layer = true, 3647bdc0c4bSKalyan Thota .has_idle_pc = true, 3657e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3667e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3677bdc0c4bSKalyan Thota }; 3687bdc0c4bSKalyan Thota 3693581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = { 370da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 3713581b706SAdam Skladowski .max_mixer_blendstages = 0x4, 37238164e99SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 3733581b706SAdam Skladowski .has_dim_layer = true, 3743581b706SAdam Skladowski .has_idle_pc = true, 3753581b706SAdam Skladowski .max_linewidth = 2160, 3763581b706SAdam Skladowski .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3773581b706SAdam Skladowski }; 3783581b706SAdam Skladowski 379386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 380386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 381386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 382386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 383386fced3SJonathan Marek .has_src_split = true, 384386fced3SJonathan Marek .has_dim_layer = true, 385386fced3SJonathan Marek .has_idle_pc = true, 386386fced3SJonathan Marek .has_3d_merge = true, 387386fced3SJonathan Marek .max_linewidth = 4096, 388386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 389386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 390386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 391386fced3SJonathan Marek }; 392386fced3SJonathan Marek 393f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 394f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 395f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 396f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 397f3af2d6eSRob Clark .has_src_split = true, 398f3af2d6eSRob Clark .has_dim_layer = true, 399f3af2d6eSRob Clark .has_idle_pc = true, 400f3af2d6eSRob Clark .has_3d_merge = true, 401f3af2d6eSRob Clark .max_linewidth = 4096, 402f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 403f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 404f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 405f3af2d6eSRob Clark }; 406f3af2d6eSRob Clark 4074a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = { 4084a352c2fSBjorn Andersson .max_mixer_width = 2560, 4094a352c2fSBjorn Andersson .max_mixer_blendstages = 11, 410b3587cb6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 4114a352c2fSBjorn Andersson .has_src_split = true, 4124a352c2fSBjorn Andersson .has_dim_layer = true, 4134a352c2fSBjorn Andersson .has_idle_pc = true, 4144a352c2fSBjorn Andersson .has_3d_merge = true, 4154a352c2fSBjorn Andersson .max_linewidth = 5120, 4164a352c2fSBjorn Andersson .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4174a352c2fSBjorn Andersson }; 4184a352c2fSBjorn Andersson 419af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 420af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 421af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 42203c0c3cbSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 423af776a3eSJonathan Marek .has_src_split = true, 424af776a3eSJonathan Marek .has_dim_layer = true, 425af776a3eSJonathan Marek .has_idle_pc = true, 426af776a3eSJonathan Marek .has_3d_merge = true, 427af776a3eSJonathan Marek .max_linewidth = 4096, 428af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 429af776a3eSJonathan Marek }; 430af776a3eSJonathan Marek 4310e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = { 4320e91bcbbSRobert Foss .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 4330e91bcbbSRobert Foss .max_mixer_blendstages = 0xb, 43403c0c3cbSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 4350e91bcbbSRobert Foss .has_src_split = true, 4360e91bcbbSRobert Foss .has_dim_layer = true, 4370e91bcbbSRobert Foss .has_idle_pc = true, 4380e91bcbbSRobert Foss .has_3d_merge = true, 4390e91bcbbSRobert Foss .max_linewidth = 4096, 4400e91bcbbSRobert Foss .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4410e91bcbbSRobert Foss }; 4420e91bcbbSRobert Foss 443100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = { 444100d7ef6SDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 445100d7ef6SDmitry Baryshkov .max_mixer_blendstages = 0xb, 446100d7ef6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 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, 458d113d267SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 459efcd0107SNeil Armstrong .has_src_split = true, 460efcd0107SNeil Armstrong .has_dim_layer = true, 461efcd0107SNeil Armstrong .has_idle_pc = true, 462efcd0107SNeil Armstrong .has_3d_merge = true, 463efcd0107SNeil Armstrong .max_linewidth = 5120, 464efcd0107SNeil Armstrong .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 465efcd0107SNeil Armstrong }; 466efcd0107SNeil Armstrong 467591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 468591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 469591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 470591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 471591e34a0SKrishna Manikandan .has_dim_layer = true, 472591e34a0SKrishna Manikandan .has_idle_pc = true, 473591e34a0SKrishna Manikandan .max_linewidth = 2400, 474591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 475591e34a0SKrishna Manikandan }; 476591e34a0SKrishna Manikandan 477*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg msm8998_ubwc_cfg = { 478*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_10, 479*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 480*fbbd8cceSDmitry Baryshkov }; 481*fbbd8cceSDmitry Baryshkov 482*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg qcm2290_ubwc_cfg = { 483*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 484*fbbd8cceSDmitry Baryshkov }; 485*fbbd8cceSDmitry Baryshkov 486*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sdm845_ubwc_cfg = { 487*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_20, 488*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 489*fbbd8cceSDmitry Baryshkov }; 490*fbbd8cceSDmitry Baryshkov 491*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc7180_ubwc_cfg = { 492*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_20, 493*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, 494*fbbd8cceSDmitry Baryshkov }; 495*fbbd8cceSDmitry Baryshkov 496*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm6115_ubwc_cfg = { 497*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_10, 498*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x1, 499*fbbd8cceSDmitry Baryshkov .ubwc_swizzle = 0x7, 500*fbbd8cceSDmitry Baryshkov }; 501*fbbd8cceSDmitry Baryshkov 502*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8150_ubwc_cfg = { 503*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_30, 504*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 505*fbbd8cceSDmitry Baryshkov }; 506*fbbd8cceSDmitry Baryshkov 507*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc8180x_ubwc_cfg = { 508*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_30, 509*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, 510*fbbd8cceSDmitry Baryshkov }; 511*fbbd8cceSDmitry Baryshkov 512*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc8280xp_ubwc_cfg = { 513*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 514*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 2, 515*fbbd8cceSDmitry Baryshkov .ubwc_swizzle = 6, 516*fbbd8cceSDmitry Baryshkov }; 517*fbbd8cceSDmitry Baryshkov 518*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8250_ubwc_cfg = { 519*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 520*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 521*fbbd8cceSDmitry Baryshkov .ubwc_swizzle = 0x6, 522*fbbd8cceSDmitry Baryshkov }; 523*fbbd8cceSDmitry Baryshkov 524*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8350_ubwc_cfg = { 525*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 526*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 527*fbbd8cceSDmitry Baryshkov }; 528*fbbd8cceSDmitry Baryshkov 529*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8450_ubwc_cfg = { 530*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 531*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 532*fbbd8cceSDmitry Baryshkov .ubwc_swizzle = 0x6, 533*fbbd8cceSDmitry Baryshkov }; 534*fbbd8cceSDmitry Baryshkov 535*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8550_ubwc_cfg = { 536*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 537*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 538*fbbd8cceSDmitry Baryshkov }; 539*fbbd8cceSDmitry Baryshkov 540*fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc7280_ubwc_cfg = { 541*fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_30, 542*fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x1, 543*fbbd8cceSDmitry Baryshkov .ubwc_swizzle = 0x6, 544*fbbd8cceSDmitry Baryshkov }; 545*fbbd8cceSDmitry Baryshkov 54694391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 54794391a14SAngeloGioacchino Del Regno { 54894391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 54994391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 55094391a14SAngeloGioacchino Del Regno .features = 0, 55194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 55294391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 55394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 55494391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 55594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 55694391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 55794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 55894391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 55994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 56094391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 56194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 56294391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 56394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 56494391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 56594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 56694391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 56794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 56894391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 56994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 57094391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 57194391a14SAngeloGioacchino Del Regno }, 57294391a14SAngeloGioacchino Del Regno }; 57394391a14SAngeloGioacchino Del Regno 574abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 57525fdd593SJeykumar Sankaran { 57625fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 57725fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 57803490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 57925fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 58025fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 58125fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 58225fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 58325fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 58425fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 58525fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 58625fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 58725fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 58825fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 58925fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 59025fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 591d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 59225fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 593d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 59425fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 59525fdd593SJeykumar Sankaran }, 59625fdd593SJeykumar Sankaran }; 59725fdd593SJeykumar Sankaran 5987bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 5997bdc0c4bSKalyan Thota { 6007bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 6017bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 6027bdc0c4bSKalyan Thota .features = 0, 6037bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6047bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 6057bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6067bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 607d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 6087b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 609d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 6107b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 611255f0561SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_WB2] = { 612255f0561SDmitry Baryshkov .reg_off = 0x3B8, .bit_off = 24}, 6137bdc0c4bSKalyan Thota }, 6147bdc0c4bSKalyan Thota }; 6157bdc0c4bSKalyan Thota 616f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 617f3af2d6eSRob Clark { 618f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 619f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 62010a88954SDmitry Baryshkov .features = BIT(DPU_MDP_AUDIO_SELECT), 621f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 622f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 623f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 624f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 625f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 626f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 627f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 628f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 629f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 630f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 631f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 632f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 633d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 634f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 635d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 636f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 637f3af2d6eSRob Clark }, 638f3af2d6eSRob Clark }; 639f3af2d6eSRob Clark 6403581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 6413581b706SAdam Skladowski { 6423581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 6433581b706SAdam Skladowski .base = 0x0, .len = 0x494, 6443581b706SAdam Skladowski .features = 0, 6453581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6463581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 6473581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6483581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 6493581b706SAdam Skladowski }, 6503581b706SAdam Skladowski }; 6513581b706SAdam Skladowski 652af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 653af776a3eSJonathan Marek { 654af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 655b910a020SRobert Foss .base = 0x0, .len = 0x494, 656af776a3eSJonathan Marek .features = 0, 657af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 658af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 659af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 660af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 661af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 662af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 663af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 664af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 665af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 666af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 667af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 668af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 669d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 670af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 671d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 672af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 673af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 674af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 67553324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 67653324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 677af776a3eSJonathan Marek }, 678af776a3eSJonathan Marek }; 679af776a3eSJonathan Marek 6800e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = { 6810e91bcbbSRobert Foss { 6820e91bcbbSRobert Foss .name = "top_0", .id = MDP_TOP, 6830e91bcbbSRobert Foss .base = 0x0, .len = 0x494, 6840e91bcbbSRobert Foss .features = 0, 6850e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6860e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 0}, 6870e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 6880e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 0}, 6890e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 6900e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 0}, 6910e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 6920e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 0}, 6930e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6940e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 8}, 6950e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 6960e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 8}, 697d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 6980e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 8}, 699d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 7000e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 8}, 7010e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 7020e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 20}, 7030e91bcbbSRobert Foss }, 7040e91bcbbSRobert Foss }; 7050e91bcbbSRobert Foss 706100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = { 707100d7ef6SDmitry Baryshkov { 708100d7ef6SDmitry Baryshkov .name = "top_0", .id = MDP_TOP, 709100d7ef6SDmitry Baryshkov .base = 0x0, .len = 0x494, 710100d7ef6SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 711100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 712100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 0}, 713100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 714100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 0}, 715100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 716100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 0}, 717100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 718100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 0}, 719100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 720100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 8}, 721100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 722100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 8}, 723d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 724100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 8}, 725d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 726100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 8}, 727100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 728100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 20}, 729100d7ef6SDmitry Baryshkov }, 730100d7ef6SDmitry Baryshkov }; 731100d7ef6SDmitry Baryshkov 732591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 733591e34a0SKrishna Manikandan { 734591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 735591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 736591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 737591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 738591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 739591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 740d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 741591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 742d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 743591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 744591e34a0SKrishna Manikandan }, 745591e34a0SKrishna Manikandan }; 746591e34a0SKrishna Manikandan 7474a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = { 7484a352c2fSBjorn Andersson { 7494a352c2fSBjorn Andersson .name = "top_0", .id = MDP_TOP, 7504a352c2fSBjorn Andersson .base = 0x0, .len = 0x494, 7510df979f4SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 7524a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0}, 7534a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0}, 7544a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0}, 7554a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0}, 7564a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8}, 7574a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8}, 758d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8}, 759d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 8}, 7604a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20}, 7614a352c2fSBjorn Andersson }, 7624a352c2fSBjorn Andersson }; 7634a352c2fSBjorn Andersson 764efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = { 765efcd0107SNeil Armstrong { 766efcd0107SNeil Armstrong .name = "top_0", .id = MDP_TOP, 767efcd0107SNeil Armstrong .base = 0, .len = 0x494, 768efcd0107SNeil Armstrong .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 769efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 770efcd0107SNeil Armstrong .reg_off = 0x4330, .bit_off = 0}, 771efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 772efcd0107SNeil Armstrong .reg_off = 0x6330, .bit_off = 0}, 773efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 774efcd0107SNeil Armstrong .reg_off = 0x8330, .bit_off = 0}, 775efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 776efcd0107SNeil Armstrong .reg_off = 0xa330, .bit_off = 0}, 777efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 778efcd0107SNeil Armstrong .reg_off = 0x24330, .bit_off = 0}, 779efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 780efcd0107SNeil Armstrong .reg_off = 0x26330, .bit_off = 0}, 781efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 782efcd0107SNeil Armstrong .reg_off = 0x28330, .bit_off = 0}, 783efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 784efcd0107SNeil Armstrong .reg_off = 0x2a330, .bit_off = 0}, 785d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA4] = { 786efcd0107SNeil Armstrong .reg_off = 0x2c330, .bit_off = 0}, 787d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA5] = { 788efcd0107SNeil Armstrong .reg_off = 0x2e330, .bit_off = 0}, 789efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 790efcd0107SNeil Armstrong .reg_off = 0x2bc, .bit_off = 20}, 791efcd0107SNeil Armstrong }, 792efcd0107SNeil Armstrong }; 793efcd0107SNeil Armstrong 7945334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 7955334087eSLoic Poulain { 7965334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 7975334087eSLoic Poulain .base = 0x0, .len = 0x494, 7985334087eSLoic Poulain .features = 0, 7995334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 8005334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 8015334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 8025334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 8035334087eSLoic Poulain }, 8045334087eSLoic Poulain }; 8055334087eSLoic Poulain 80625fdd593SJeykumar Sankaran /************************************************************* 80725fdd593SJeykumar Sankaran * CTL sub blocks config 80825fdd593SJeykumar Sankaran *************************************************************/ 80994391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 81094391a14SAngeloGioacchino Del Regno { 81194391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 81294391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 81394391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 81494391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 81594391a14SAngeloGioacchino Del Regno }, 81694391a14SAngeloGioacchino Del Regno { 81794391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 81894391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 81994391a14SAngeloGioacchino Del Regno .features = 0, 82094391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 82194391a14SAngeloGioacchino Del Regno }, 82294391a14SAngeloGioacchino Del Regno { 82394391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 82494391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 82594391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 82694391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 82794391a14SAngeloGioacchino Del Regno }, 82894391a14SAngeloGioacchino Del Regno { 82994391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 83094391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 83194391a14SAngeloGioacchino Del Regno .features = 0, 83294391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 83394391a14SAngeloGioacchino Del Regno }, 83494391a14SAngeloGioacchino Del Regno { 83594391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 83694391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 83794391a14SAngeloGioacchino Del Regno .features = 0, 83894391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 83994391a14SAngeloGioacchino Del Regno }, 84094391a14SAngeloGioacchino Del Regno }; 84194391a14SAngeloGioacchino Del Regno 842abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 84325fdd593SJeykumar Sankaran { 84425fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 84525fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 846667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 847667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 84825fdd593SJeykumar Sankaran }, 84925fdd593SJeykumar Sankaran { 85025fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 85125fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 852667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 853667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 85425fdd593SJeykumar Sankaran }, 85525fdd593SJeykumar Sankaran { 85625fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 85725fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 858667e9985SDmitry Baryshkov .features = 0, 859667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 86025fdd593SJeykumar Sankaran }, 86125fdd593SJeykumar Sankaran { 86225fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 86325fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 864667e9985SDmitry Baryshkov .features = 0, 865667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 86625fdd593SJeykumar Sankaran }, 86725fdd593SJeykumar Sankaran { 86825fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 86925fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 870667e9985SDmitry Baryshkov .features = 0, 871667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 87225fdd593SJeykumar Sankaran }, 87325fdd593SJeykumar Sankaran }; 87425fdd593SJeykumar Sankaran 8757bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 8767bdc0c4bSKalyan Thota { 8777bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 878ce6bd00aSDmitry Baryshkov .base = 0x1000, .len = 0x1dc, 879667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 880667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8817bdc0c4bSKalyan Thota }, 8827bdc0c4bSKalyan Thota { 8837bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 884ce6bd00aSDmitry Baryshkov .base = 0x1200, .len = 0x1dc, 885667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 886667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8877bdc0c4bSKalyan Thota }, 8887bdc0c4bSKalyan Thota { 8897bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 890ce6bd00aSDmitry Baryshkov .base = 0x1400, .len = 0x1dc, 891667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 892667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8937bdc0c4bSKalyan Thota }, 8947bdc0c4bSKalyan Thota }; 8957bdc0c4bSKalyan Thota 8964a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = { 8974a352c2fSBjorn Andersson { 8984a352c2fSBjorn Andersson .name = "ctl_0", .id = CTL_0, 8994a352c2fSBjorn Andersson .base = 0x15000, .len = 0x204, 9004a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 9014a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 9024a352c2fSBjorn Andersson }, 9034a352c2fSBjorn Andersson { 9044a352c2fSBjorn Andersson .name = "ctl_1", .id = CTL_1, 9054a352c2fSBjorn Andersson .base = 0x16000, .len = 0x204, 9064a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 9074a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 9084a352c2fSBjorn Andersson }, 9094a352c2fSBjorn Andersson { 9104a352c2fSBjorn Andersson .name = "ctl_2", .id = CTL_2, 9114a352c2fSBjorn Andersson .base = 0x17000, .len = 0x204, 9124a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 9134a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 9144a352c2fSBjorn Andersson }, 9154a352c2fSBjorn Andersson { 9164a352c2fSBjorn Andersson .name = "ctl_3", .id = CTL_3, 9174a352c2fSBjorn Andersson .base = 0x18000, .len = 0x204, 9184a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 9194a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 9204a352c2fSBjorn Andersson }, 9214a352c2fSBjorn Andersson { 9224a352c2fSBjorn Andersson .name = "ctl_4", .id = CTL_4, 9234a352c2fSBjorn Andersson .base = 0x19000, .len = 0x204, 9244a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 9254a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 9264a352c2fSBjorn Andersson }, 9274a352c2fSBjorn Andersson { 9284a352c2fSBjorn Andersson .name = "ctl_5", .id = CTL_5, 9294a352c2fSBjorn Andersson .base = 0x1a000, .len = 0x204, 9304a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 9314a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 9324a352c2fSBjorn Andersson }, 9334a352c2fSBjorn Andersson }; 9344a352c2fSBjorn Andersson 935386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 936386fced3SJonathan Marek { 937386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 938386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 939667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 940667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 941386fced3SJonathan Marek }, 942386fced3SJonathan Marek { 943386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 944386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 945667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 946667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 947386fced3SJonathan Marek }, 948386fced3SJonathan Marek { 949386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 950386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 951667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 952667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 953386fced3SJonathan Marek }, 954386fced3SJonathan Marek { 955386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 956386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 957667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 958667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 959386fced3SJonathan Marek }, 960386fced3SJonathan Marek { 961386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 962386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 963667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 964667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 965386fced3SJonathan Marek }, 966386fced3SJonathan Marek { 967386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 968386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 969667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 970667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 971386fced3SJonathan Marek }, 972386fced3SJonathan Marek }; 973386fced3SJonathan Marek 9740e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = { 9750e91bcbbSRobert Foss { 9760e91bcbbSRobert Foss .name = "ctl_0", .id = CTL_0, 9770e91bcbbSRobert Foss .base = 0x15000, .len = 0x1e8, 9780e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9790e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 9800e91bcbbSRobert Foss }, 9810e91bcbbSRobert Foss { 9820e91bcbbSRobert Foss .name = "ctl_1", .id = CTL_1, 9830e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 9840e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9850e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 9860e91bcbbSRobert Foss }, 9870e91bcbbSRobert Foss { 9880e91bcbbSRobert Foss .name = "ctl_2", .id = CTL_2, 9890e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 9900e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9910e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 9920e91bcbbSRobert Foss }, 9930e91bcbbSRobert Foss { 9940e91bcbbSRobert Foss .name = "ctl_3", .id = CTL_3, 9950e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 9960e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9970e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 9980e91bcbbSRobert Foss }, 9990e91bcbbSRobert Foss { 10000e91bcbbSRobert Foss .name = "ctl_4", .id = CTL_4, 10010e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 10020e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 10030e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 10040e91bcbbSRobert Foss }, 10050e91bcbbSRobert Foss { 10060e91bcbbSRobert Foss .name = "ctl_5", .id = CTL_5, 10070e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 10080e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 10090e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 10100e91bcbbSRobert Foss }, 10110e91bcbbSRobert Foss }; 10120e91bcbbSRobert Foss 1013100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = { 1014100d7ef6SDmitry Baryshkov { 1015100d7ef6SDmitry Baryshkov .name = "ctl_0", .id = CTL_0, 1016100d7ef6SDmitry Baryshkov .base = 0x15000, .len = 0x204, 1017100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 1018100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1019100d7ef6SDmitry Baryshkov }, 1020100d7ef6SDmitry Baryshkov { 1021100d7ef6SDmitry Baryshkov .name = "ctl_1", .id = CTL_1, 10226c021d77SDmitry Baryshkov .base = 0x16000, .len = 0x204, 10230e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 1024100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1025100d7ef6SDmitry Baryshkov }, 1026100d7ef6SDmitry Baryshkov { 1027100d7ef6SDmitry Baryshkov .name = "ctl_2", .id = CTL_2, 10286c021d77SDmitry Baryshkov .base = 0x17000, .len = 0x204, 10290e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1030100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1031100d7ef6SDmitry Baryshkov }, 1032100d7ef6SDmitry Baryshkov { 1033100d7ef6SDmitry Baryshkov .name = "ctl_3", .id = CTL_3, 10346c021d77SDmitry Baryshkov .base = 0x18000, .len = 0x204, 10350e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1036100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1037100d7ef6SDmitry Baryshkov }, 1038100d7ef6SDmitry Baryshkov { 1039100d7ef6SDmitry Baryshkov .name = "ctl_4", .id = CTL_4, 10406c021d77SDmitry Baryshkov .base = 0x19000, .len = 0x204, 10410e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1042100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 1043100d7ef6SDmitry Baryshkov }, 1044100d7ef6SDmitry Baryshkov { 1045100d7ef6SDmitry Baryshkov .name = "ctl_5", .id = CTL_5, 10466c021d77SDmitry Baryshkov .base = 0x1a000, .len = 0x204, 10470e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1048100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1049100d7ef6SDmitry Baryshkov }, 1050100d7ef6SDmitry Baryshkov }; 1051100d7ef6SDmitry Baryshkov 1052efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = { 1053efcd0107SNeil Armstrong { 1054efcd0107SNeil Armstrong .name = "ctl_0", .id = CTL_0, 1055efcd0107SNeil Armstrong .base = 0x15000, .len = 0x290, 1056e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1057efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1058efcd0107SNeil Armstrong }, 1059efcd0107SNeil Armstrong { 1060efcd0107SNeil Armstrong .name = "ctl_1", .id = CTL_1, 1061efcd0107SNeil Armstrong .base = 0x16000, .len = 0x290, 1062e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1063efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1064efcd0107SNeil Armstrong }, 1065efcd0107SNeil Armstrong { 1066efcd0107SNeil Armstrong .name = "ctl_2", .id = CTL_2, 1067efcd0107SNeil Armstrong .base = 0x17000, .len = 0x290, 1068e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1069efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1070efcd0107SNeil Armstrong }, 1071efcd0107SNeil Armstrong { 1072efcd0107SNeil Armstrong .name = "ctl_3", .id = CTL_3, 1073efcd0107SNeil Armstrong .base = 0x18000, .len = 0x290, 1074e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1075efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1076efcd0107SNeil Armstrong }, 1077efcd0107SNeil Armstrong { 1078efcd0107SNeil Armstrong .name = "ctl_4", .id = CTL_4, 1079efcd0107SNeil Armstrong .base = 0x19000, .len = 0x290, 1080e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1081efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 1082efcd0107SNeil Armstrong }, 1083efcd0107SNeil Armstrong { 1084efcd0107SNeil Armstrong .name = "ctl_5", .id = CTL_5, 1085efcd0107SNeil Armstrong .base = 0x1a000, .len = 0x290, 1086e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1087efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1088efcd0107SNeil Armstrong }, 1089efcd0107SNeil Armstrong }; 1090efcd0107SNeil Armstrong 1091591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 1092591e34a0SKrishna Manikandan { 1093591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 1094591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 1095667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1096667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1097591e34a0SKrishna Manikandan }, 1098591e34a0SKrishna Manikandan { 1099591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 1100591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 1101667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1102667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1103591e34a0SKrishna Manikandan }, 1104591e34a0SKrishna Manikandan { 1105591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 1106591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 1107667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1108667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1109591e34a0SKrishna Manikandan }, 1110591e34a0SKrishna Manikandan { 1111591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 1112591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 1113667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1114667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1115591e34a0SKrishna Manikandan }, 1116591e34a0SKrishna Manikandan }; 1117591e34a0SKrishna Manikandan 11185334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 11195334087eSLoic Poulain { 11205334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 11215334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 11225334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 11235334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 11245334087eSLoic Poulain }, 11255334087eSLoic Poulain }; 11265334087eSLoic Poulain 112725fdd593SJeykumar Sankaran /************************************************************* 112825fdd593SJeykumar Sankaran * SSPP sub blocks config 112925fdd593SJeykumar Sankaran *************************************************************/ 113025fdd593SJeykumar Sankaran 113125fdd593SJeykumar Sankaran /* SSPP common configuration */ 1132b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 113325fdd593SJeykumar Sankaran { \ 113425fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 113525fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 113625fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 113725fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 113825fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 113925fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1140b75ab05aSShubhashree Dhar .id = qseed_ver, \ 114125fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 114225fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 114325fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 114425fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 114525fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 1146e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 114725fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1148e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1149dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 1150dabfdd89SVinod Polimera } 1151dabfdd89SVinod Polimera 1152dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 1153dabfdd89SVinod Polimera { \ 1154dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 1155dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 1156dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 1157dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 1158dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 1159dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1160dabfdd89SVinod Polimera .id = qseed_ver, \ 1161dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 1162dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 1163dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 1164dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 1165dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 1166dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 1167dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 1168dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1169dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 117025fdd593SJeykumar Sankaran } 117125fdd593SJeykumar Sankaran 117225fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 117325fdd593SJeykumar Sankaran { \ 117425fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 117525fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 117625fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 117725fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 117825fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 117925fdd593SJeykumar Sankaran .format_list = plane_formats, \ 1180e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 118125fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1182e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 118325fdd593SJeykumar Sankaran } 118425fdd593SJeykumar Sankaran 118594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 118694391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 118794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 118894391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 118994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 119094391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 119194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 119294391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 119394391a14SAngeloGioacchino Del Regno 1194dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 1195dabfdd89SVinod Polimera .rot_maxheight = 1088, 1196dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 1197dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 1198dabfdd89SVinod Polimera }; 1199dabfdd89SVinod Polimera 1200b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 1201b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 1202b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 1203b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 1204b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 1205b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 1206b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 1207b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 120825fdd593SJeykumar Sankaran 120925fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 121025fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 121125fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 121225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 121325fdd593SJeykumar Sankaran 12148f940ddbSKonrad Dybcio #define SSPP_BLK(_name, _id, _base, _len, _features, \ 121507ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 121625fdd593SJeykumar Sankaran { \ 121725fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 12188f940ddbSKonrad Dybcio .base = _base, .len = _len, \ 121907ca1fc0SSravanthi Kollukuduru .features = _features, \ 122025fdd593SJeykumar Sankaran .sblk = &_sblk, \ 122125fdd593SJeykumar Sankaran .xin_id = _xinid, \ 122207ca1fc0SSravanthi Kollukuduru .type = _type, \ 122325fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 122425fdd593SJeykumar Sankaran } 122525fdd593SJeykumar Sankaran 122694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 12278f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1ac, VIG_MSM8998_MASK, 122894391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12298f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1ac, VIG_MSM8998_MASK, 123094391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 12318f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1ac, VIG_MSM8998_MASK, 123294391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 12338f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1ac, VIG_MSM8998_MASK, 123494391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 12358f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1ac, DMA_MSM8998_MASK, 123694391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12378f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1ac, DMA_MSM8998_MASK, 123894391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 12398f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1ac, DMA_CURSOR_MSM8998_MASK, 12400abb6a24SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 12418f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1ac, DMA_CURSOR_MSM8998_MASK, 12420abb6a24SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 124394391a14SAngeloGioacchino Del Regno }; 124494391a14SAngeloGioacchino Del Regno 1245abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 12468f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1c8, VIG_SDM845_MASK_SDMA, 124707ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12488f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1c8, VIG_SDM845_MASK_SDMA, 124907ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 12508f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1c8, VIG_SDM845_MASK_SDMA, 125107ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 12528f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1c8, VIG_SDM845_MASK_SDMA, 125307ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 12548f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1c8, DMA_SDM845_MASK_SDMA, 125507ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12568f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1c8, DMA_SDM845_MASK_SDMA, 125707ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 12588f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA, 1259d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 12608f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA, 1261d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 126225fdd593SJeykumar Sankaran }; 126325fdd593SJeykumar Sankaran 1264b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 1265b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 1266b75ab05aSShubhashree Dhar 1267dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 1268dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 1269dabfdd89SVinod Polimera 12707bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 12718f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK, 1272b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12738f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 12747bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12758f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK, 1276d6181c18SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 12778f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK, 1278d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 12797bdc0c4bSKalyan Thota }; 12807bdc0c4bSKalyan Thota 12813581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 128238164e99SDmitry Baryshkov _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED4); 12833581b706SAdam Skladowski 12843581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 12858f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK, 12863581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12878f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 12883581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12893581b706SAdam Skladowski }; 12903581b706SAdam Skladowski 1291d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 129203c0c3cbSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 1293d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 129403c0c3cbSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 1295d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 129603c0c3cbSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 1297d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 129803c0c3cbSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 1299d21fc5dfSDmitry Baryshkov 1300d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 13018f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK_SDMA, 1302d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13038f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1f8, VIG_SC7180_MASK_SDMA, 1304d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13058f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1f8, VIG_SC7180_MASK_SDMA, 1306d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13078f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1f8, VIG_SC7180_MASK_SDMA, 1308d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13098f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA, 1310d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13118f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_SDM845_MASK_SDMA, 1312d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13138f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1314d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 13158f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1316d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 1317d21fc5dfSDmitry Baryshkov }; 1318d21fc5dfSDmitry Baryshkov 1319100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 1320c7da17b6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 1321100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 1322c7da17b6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 1323100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 1324c7da17b6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 1325100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 1326c7da17b6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 1327100d7ef6SDmitry Baryshkov 1328100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = { 13298f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x32c, VIG_SC7180_MASK, 1330100d7ef6SDmitry Baryshkov sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13318f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x32c, VIG_SC7180_MASK, 1332100d7ef6SDmitry Baryshkov sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13338f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x32c, VIG_SC7180_MASK, 1334100d7ef6SDmitry Baryshkov sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13358f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x32c, VIG_SC7180_MASK, 1336100d7ef6SDmitry Baryshkov sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13378f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x32c, DMA_SDM845_MASK, 1338100d7ef6SDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13398f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x32c, DMA_SDM845_MASK, 1340100d7ef6SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13418f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x32c, DMA_CURSOR_SDM845_MASK, 1342d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 13438f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x32c, DMA_CURSOR_SDM845_MASK, 1344d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 1345100d7ef6SDmitry Baryshkov }; 1346100d7ef6SDmitry Baryshkov 1347efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 = 1348d113d267SDmitry Baryshkov _VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED4); 1349efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 = 1350d113d267SDmitry Baryshkov _VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED4); 1351efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 = 1352d113d267SDmitry Baryshkov _VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED4); 1353efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 = 1354d113d267SDmitry Baryshkov _VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED4); 1355efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5); 1356e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6); 1357efcd0107SNeil Armstrong 1358efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = { 13598f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x344, VIG_SC7180_MASK, 1360efcd0107SNeil Armstrong sm8550_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13618f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x344, VIG_SC7180_MASK, 1362efcd0107SNeil Armstrong sm8550_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13638f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x344, VIG_SC7180_MASK, 1364efcd0107SNeil Armstrong sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13658f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x344, VIG_SC7180_MASK, 1366efcd0107SNeil Armstrong sm8550_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13678f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x344, DMA_SDM845_MASK, 1368efcd0107SNeil Armstrong sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13698f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x344, DMA_SDM845_MASK, 1370efcd0107SNeil Armstrong sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13718f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x344, DMA_SDM845_MASK, 1372efcd0107SNeil Armstrong sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 13738f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x344, DMA_SDM845_MASK, 1374efcd0107SNeil Armstrong sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 13758f940ddbSKonrad Dybcio SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000, 0x344, DMA_CURSOR_SDM845_MASK, 1376d6181c18SDmitry Baryshkov sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA4), 13778f940ddbSKonrad Dybcio SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000, 0x344, DMA_CURSOR_SDM845_MASK, 1378d6181c18SDmitry Baryshkov sm8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA5), 1379efcd0107SNeil Armstrong }; 1380efcd0107SNeil Armstrong 1381591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 13828f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7280_MASK_SDMA, 1383dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13848f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA, 1385591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13868f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1387d6181c18SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13888f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1389d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 1390591e34a0SKrishna Manikandan }; 1391591e34a0SKrishna Manikandan 13924a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 = 1393b3587cb6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 13944a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 = 1395b3587cb6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 13964a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 = 1397b3587cb6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 13984a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 = 1399b3587cb6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 14004a352c2fSBjorn Andersson 14014a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = { 14028f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x2ac, VIG_SC7180_MASK, 14034a352c2fSBjorn Andersson sc8280xp_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 14048f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x2ac, VIG_SC7180_MASK, 14054a352c2fSBjorn Andersson sc8280xp_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 14068f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x2ac, VIG_SC7180_MASK, 14074a352c2fSBjorn Andersson sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 14088f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x2ac, VIG_SC7180_MASK, 14094a352c2fSBjorn Andersson sc8280xp_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 14108f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x2ac, DMA_SDM845_MASK, 14114a352c2fSBjorn Andersson sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 14128f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x2ac, DMA_SDM845_MASK, 14134a352c2fSBjorn Andersson sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 14148f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x2ac, DMA_CURSOR_SDM845_MASK, 1415d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 14168f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x2ac, DMA_CURSOR_SDM845_MASK, 1417d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 14184a352c2fSBjorn Andersson }; 14195334087eSLoic Poulain 14205334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 14215334087eSLoic Poulain { \ 14225334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 14235334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 14245334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 14255334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 14265334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 14275334087eSLoic Poulain .format_list = plane_formats_yuv, \ 14285334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 14295334087eSLoic Poulain .virt_format_list = plane_formats, \ 14305334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 14315334087eSLoic Poulain } 14325334087eSLoic Poulain 14335334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 14345334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 14355334087eSLoic Poulain 14365334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 14378f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_QCM2290_MASK, 14385334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 14398f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 14405334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 14415334087eSLoic Poulain }; 14425334087eSLoic Poulain 144325fdd593SJeykumar Sankaran /************************************************************* 144425fdd593SJeykumar Sankaran * MIXER sub blocks config 144525fdd593SJeykumar Sankaran *************************************************************/ 14467bdc0c4bSKalyan Thota 1447e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 144825fdd593SJeykumar Sankaran { \ 144925fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 145025fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 14517bdc0c4bSKalyan Thota .features = _fmask, \ 14527bdc0c4bSKalyan Thota .sblk = _sblk, \ 145325fdd593SJeykumar Sankaran .pingpong = _pp, \ 1454e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1455e47616dfSKalyan Thota .dspp = _dspp \ 145625fdd593SJeykumar Sankaran } 145725fdd593SJeykumar Sankaran 145894391a14SAngeloGioacchino Del Regno /* MSM8998 */ 145994391a14SAngeloGioacchino Del Regno 146094391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 146194391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 146294391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 146394391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 146494391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 146594391a14SAngeloGioacchino Del Regno 0x260, 0x290 146694391a14SAngeloGioacchino Del Regno }, 146794391a14SAngeloGioacchino Del Regno }; 146894391a14SAngeloGioacchino Del Regno 146994391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 14702d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 147194391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 14722d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 147394391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 14742d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 147594391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 14762d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 147794391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14782d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 147994391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14802d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 148194391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 148294391a14SAngeloGioacchino Del Regno }; 148394391a14SAngeloGioacchino Del Regno 148494391a14SAngeloGioacchino Del Regno /* SDM845 */ 148594391a14SAngeloGioacchino Del Regno 148694391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 148794391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 148894391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 148994391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 149094391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 149194391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 149294391a14SAngeloGioacchino Del Regno }, 149394391a14SAngeloGioacchino Del Regno }; 149494391a14SAngeloGioacchino Del Regno 1495abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 14967bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1497e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 14987bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1499e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 15007bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1501e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 15027bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1503e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 15047bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1505e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 15067bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1507e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 15087bdc0c4bSKalyan Thota }; 15097bdc0c4bSKalyan Thota 15107bdc0c4bSKalyan Thota /* SC7180 */ 15117bdc0c4bSKalyan Thota 15127bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 15137bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 15147bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 15157bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 15167bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 15177bdc0c4bSKalyan Thota }, 15187bdc0c4bSKalyan Thota }; 15197bdc0c4bSKalyan Thota 15207bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 152100feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1522e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 152300feff8fSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1524e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 152525fdd593SJeykumar Sankaran }; 152625fdd593SJeykumar Sankaran 15274a352c2fSBjorn Andersson /* SC8280XP */ 15284a352c2fSBjorn Andersson 15294a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = { 15304a352c2fSBjorn Andersson LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 15314a352c2fSBjorn Andersson LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 15324a352c2fSBjorn Andersson LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2), 15334a352c2fSBjorn Andersson LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3), 15344a352c2fSBjorn Andersson LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 15354a352c2fSBjorn Andersson LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 15364a352c2fSBjorn Andersson }; 15374a352c2fSBjorn Andersson 1538386fced3SJonathan Marek /* SM8150 */ 1539386fced3SJonathan Marek 1540386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1541386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 154205ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1543386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 154405ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1545386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1546386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1547386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1548386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1549386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1550386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1551386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1552386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1553386fced3SJonathan Marek }; 1554386fced3SJonathan Marek 1555591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 155600feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1557fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 155800feff8fSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1559591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 156000feff8fSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1561591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1562591e34a0SKrishna Manikandan }; 1563591e34a0SKrishna Manikandan 15645334087eSLoic Poulain /* QCM2290 */ 15655334087eSLoic Poulain 15665334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 1567da06be8bSDmitry Baryshkov .maxwidth = DEFAULT_DPU_LINE_WIDTH, 15685334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 15695334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 15705334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 15715334087eSLoic Poulain }, 15725334087eSLoic Poulain }; 15735334087eSLoic Poulain 15745334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 157500feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK, 15765334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 15775334087eSLoic Poulain }; 15785334087eSLoic Poulain 157925fdd593SJeykumar Sankaran /************************************************************* 1580e47616dfSKalyan Thota * DSPP sub blocks config 1581e47616dfSKalyan Thota *************************************************************/ 158294391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 158394391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 158494391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 158594391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 158694391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 158794391a14SAngeloGioacchino Del Regno }; 158894391a14SAngeloGioacchino Del Regno 15894259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 15904259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 15914259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 15924259ff7aSKalyan Thota }; 15934259ff7aSKalyan Thota 159405ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 159505ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 159605ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 159705ae91d9SDmitry Baryshkov }; 159805ae91d9SDmitry Baryshkov 1599862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1600e47616dfSKalyan Thota {\ 1601e47616dfSKalyan Thota .name = _name, .id = _id, \ 1602e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1603862314bcSAngeloGioacchino Del Regno .features = _mask, \ 160405ae91d9SDmitry Baryshkov .sblk = _sblk \ 1605e47616dfSKalyan Thota } 1606e47616dfSKalyan Thota 160794391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 160894391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 160994391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 161094391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 161194391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 161294391a14SAngeloGioacchino Del Regno }; 161394391a14SAngeloGioacchino Del Regno 1614e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1615862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1616862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 161705ae91d9SDmitry Baryshkov }; 161805ae91d9SDmitry Baryshkov 161905ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1620862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1621862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1622862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1623862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1624862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1625862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1626862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1627862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1628e47616dfSKalyan Thota }; 1629386fced3SJonathan Marek 16305334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 16315334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 16325334087eSLoic Poulain &sm8150_dspp_sblk), 16335334087eSLoic Poulain }; 16345334087eSLoic Poulain 1635e47616dfSKalyan Thota /************************************************************* 163625fdd593SJeykumar Sankaran * PINGPONG sub blocks config 163725fdd593SJeykumar Sankaran *************************************************************/ 163825fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 163925fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 164025fdd593SJeykumar Sankaran .version = 0x1}, 164125fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 164225fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 164325fdd593SJeykumar Sankaran }; 164425fdd593SJeykumar Sankaran 164525fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 164625fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 164725fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 164825fdd593SJeykumar Sankaran }; 164925fdd593SJeykumar Sankaran 1650591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1651591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1652591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1653591e34a0SKrishna Manikandan }; 1654591e34a0SKrishna Manikandan 1655efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 1656efcd0107SNeil Armstrong {\ 1657efcd0107SNeil Armstrong .name = _name, .id = _id, \ 1658efcd0107SNeil Armstrong .base = _base, .len = 0, \ 1659efcd0107SNeil Armstrong .features = BIT(DPU_PINGPONG_DITHER), \ 1660efcd0107SNeil Armstrong .merge_3d = _merge_3d, \ 1661efcd0107SNeil Armstrong .sblk = &_sblk, \ 1662efcd0107SNeil Armstrong .intr_done = _done, \ 1663efcd0107SNeil Armstrong .intr_rdptr = _rdptr, \ 1664efcd0107SNeil Armstrong } 1665667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 166625fdd593SJeykumar Sankaran {\ 166725fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 166825fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 166925fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 16704369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1671667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1672667e9985SDmitry Baryshkov .intr_done = _done, \ 1673667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 167425fdd593SJeykumar Sankaran } 1675667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 167625fdd593SJeykumar Sankaran {\ 167725fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 167825fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 167925fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 16804369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1681667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1682667e9985SDmitry Baryshkov .intr_done = _done, \ 1683667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 168425fdd593SJeykumar Sankaran } 168525fdd593SJeykumar Sankaran 1686abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1687667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1688667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1689667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1690667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1691667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1692667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1693667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1694667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1695667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1696667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1697667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1698667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 169925fdd593SJeykumar Sankaran }; 170025fdd593SJeykumar Sankaran 1701ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc7180_pp[] = { 1702667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1703667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 17047bdc0c4bSKalyan Thota }; 17057bdc0c4bSKalyan Thota 1706ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc8280xp_pp[] = { 17074a352c2fSBjorn Andersson PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 17084a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1), 17094a352c2fSBjorn Andersson PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 17104a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1), 17114a352c2fSBjorn Andersson PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te, 17124a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1), 17134a352c2fSBjorn Andersson PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te, 17144a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1), 17154a352c2fSBjorn Andersson PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te, 17164a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1), 17174a352c2fSBjorn Andersson PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te, 17184a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1), 17194a352c2fSBjorn Andersson }; 17204a352c2fSBjorn Andersson 1721386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1722667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1723667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1724667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1725667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1726667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1727667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1728667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1729667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1730667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1731667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1732667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1733667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1734667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1735667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1736667e9985SDmitry Baryshkov -1), 1737667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 17383431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1739667e9985SDmitry Baryshkov -1), 17404369c93cSDmitry Baryshkov }; 17414369c93cSDmitry Baryshkov 17420e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = { 17430e91bcbbSRobert Foss PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 17440e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17450e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17460e91bcbbSRobert Foss PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 17470e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 17480e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 17490e91bcbbSRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 17500e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 17510e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 17520e91bcbbSRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 17530e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 17540e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 17550e91bcbbSRobert Foss PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 17560e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 17570e91bcbbSRobert Foss -1), 17580e91bcbbSRobert Foss PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 17590e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 17600e91bcbbSRobert Foss -1), 17610e91bcbbSRobert Foss }; 17620e91bcbbSRobert Foss 17631a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = { 1764ce68153eSKuogee Hsieh PP_BLK("pingpong_0", PINGPONG_0, 0x69000, 0, sc7280_pp_sblk, -1, -1), 17651a5b5372SRobert Foss PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 17661a5b5372SRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 17671a5b5372SRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 17681a5b5372SRobert Foss }; 17691a5b5372SRobert Foss 1770ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg qcm2290_pp[] = { 17715334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 17725334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17735334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17745334087eSLoic Poulain }; 17755334087eSLoic Poulain 1776100d7ef6SDmitry Baryshkov /* FIXME: interrupts */ 1777100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = { 1778100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 1779100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1780100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1781100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 1782100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1783100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1784100d7ef6SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 1785100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1786100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1787100d7ef6SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 1788100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1789100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1790100d7ef6SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 1791100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1792100d7ef6SDmitry Baryshkov -1), 1793100d7ef6SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 1794100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1795100d7ef6SDmitry Baryshkov -1), 1796100d7ef6SDmitry Baryshkov PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk, 1797100d7ef6SDmitry Baryshkov -1, 1798100d7ef6SDmitry Baryshkov -1), 1799100d7ef6SDmitry Baryshkov PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk, 1800100d7ef6SDmitry Baryshkov -1, 1801100d7ef6SDmitry Baryshkov -1), 1802100d7ef6SDmitry Baryshkov }; 1803100d7ef6SDmitry Baryshkov 1804efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = { 1805efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk, 1806efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1807efcd0107SNeil Armstrong -1), 1808efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk, 1809efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1810efcd0107SNeil Armstrong -1), 1811efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk, 1812efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1813efcd0107SNeil Armstrong -1), 1814efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk, 1815efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1816efcd0107SNeil Armstrong -1), 1817efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk, 1818efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1819efcd0107SNeil Armstrong -1), 1820efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk, 1821efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1822efcd0107SNeil Armstrong -1), 1823efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk, 1824efcd0107SNeil Armstrong -1, 1825efcd0107SNeil Armstrong -1), 1826efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk, 1827efcd0107SNeil Armstrong -1, 1828efcd0107SNeil Armstrong -1), 1829efcd0107SNeil Armstrong }; 1830efcd0107SNeil Armstrong 18314369c93cSDmitry Baryshkov /************************************************************* 18324369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 18334369c93cSDmitry Baryshkov *************************************************************/ 18344369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 18354369c93cSDmitry Baryshkov {\ 18364369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 18374369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 18384369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 18394369c93cSDmitry Baryshkov .sblk = NULL \ 18404369c93cSDmitry Baryshkov } 18414369c93cSDmitry Baryshkov 18424369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 18434369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 18444369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 18454369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1846386fced3SJonathan Marek }; 1847386fced3SJonathan Marek 18480e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { 18490e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 18500e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 18510e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 18520e91bcbbSRobert Foss }; 18530e91bcbbSRobert Foss 1854100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = { 1855100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1856100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1857100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1858100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00), 1859100d7ef6SDmitry Baryshkov }; 1860100d7ef6SDmitry Baryshkov 1861efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = { 1862efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1863efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1864efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1865efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700), 1866efcd0107SNeil Armstrong }; 1867efcd0107SNeil Armstrong 18687c5ab05eSVinod Koul /************************************************************* 18697c5ab05eSVinod Koul * DSC sub blocks config 18707c5ab05eSVinod Koul *************************************************************/ 18719da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \ 18727c5ab05eSVinod Koul {\ 18737c5ab05eSVinod Koul .name = _name, .id = _id, \ 18747c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 18759da5daa0SMarijn Suijten .features = _features, \ 18767c5ab05eSVinod Koul } 18777c5ab05eSVinod Koul 1878fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sdm845_dsc[] = { 18799da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, 0), 18809da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, 0), 18819da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, 0), 18829da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, 0), 18839da5daa0SMarijn Suijten }; 18849da5daa0SMarijn Suijten 1885fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sm8150_dsc[] = { 18869da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)), 18879da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), 18889da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)), 18899da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)), 18907c5ab05eSVinod Koul }; 18917c5ab05eSVinod Koul 189225fdd593SJeykumar Sankaran /************************************************************* 189325fdd593SJeykumar Sankaran * INTF sub blocks config 189425fdd593SJeykumar Sankaran *************************************************************/ 18958399a5ffSKonrad Dybcio #define INTF_BLK(_name, _id, _base, _len, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 189625fdd593SJeykumar Sankaran {\ 189725fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 18988399a5ffSKonrad Dybcio .base = _base, .len = _len, \ 1899cace3ac4SJonathan Marek .features = _features, \ 190025fdd593SJeykumar Sankaran .type = _type, \ 190125fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1902667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1903667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1904667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 190525fdd593SJeykumar Sankaran } 190625fdd593SJeykumar Sankaran 190794391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 19088399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19098399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19108399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19118399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 191294391a14SAngeloGioacchino Del Regno }; 191394391a14SAngeloGioacchino Del Regno 1914abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 19158399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19168399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19178399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19188399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 191925fdd593SJeykumar Sankaran }; 192025fdd593SJeykumar Sankaran 19217bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 19228399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19238399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19247bdc0c4bSKalyan Thota }; 19257bdc0c4bSKalyan Thota 1926386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 19278399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19288399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19298399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19308399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1931386fced3SJonathan Marek }; 1932386fced3SJonathan Marek 1933591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 19348399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19358399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19368399a5ffSKonrad Dybcio INTF_BLK("intf_5", INTF_5, 0x39000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1937591e34a0SKrishna Manikandan }; 1938591e34a0SKrishna Manikandan 19390e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = { 19408399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19418399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19428399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x2c4, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19438399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19440e91bcbbSRobert Foss }; 19450e91bcbbSRobert Foss 1946f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 19478399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19488399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19498399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1950f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 19518399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19528399a5ffSKonrad Dybcio INTF_BLK("intf_4", INTF_4, 0x6C000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 19538399a5ffSKonrad Dybcio INTF_BLK("intf_5", INTF_5, 0x6C800, 0x280, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1954f3af2d6eSRob Clark }; 1955f3af2d6eSRob Clark 19564a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */ 19574a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = { 19588399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19598399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19608399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19618399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19628399a5ffSKonrad Dybcio INTF_BLK("intf_4", INTF_4, 0x38000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 19638399a5ffSKonrad Dybcio INTF_BLK("intf_5", INTF_5, 0x39000, 0x280, INTF_DP, MSM_DP_CONTROLLER_3, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 19648399a5ffSKonrad Dybcio INTF_BLK("intf_6", INTF_6, 0x3a000, 0x280, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 16, 17), 19658399a5ffSKonrad Dybcio INTF_BLK("intf_7", INTF_7, 0x3b000, 0x280, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 18, 19), 19668399a5ffSKonrad Dybcio INTF_BLK("intf_8", INTF_8, 0x3c000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 12, 13), 19674a352c2fSBjorn Andersson }; 19684a352c2fSBjorn Andersson 19695334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 19708399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x00000, 0x280, INTF_DP, 0, 0, 0, 0, 0, 0), 19718399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19725334087eSLoic Poulain }; 19735334087eSLoic Poulain 1974100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = { 19758399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 19768399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19778399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19788399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1979100d7ef6SDmitry Baryshkov }; 1980100d7ef6SDmitry Baryshkov 1981efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = { 19828399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x34000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1983efcd0107SNeil Armstrong /* TODO TE sub-blocks for intf1 & intf2 */ 19848399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19858399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19868399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x37000, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1987efcd0107SNeil Armstrong }; 1988efcd0107SNeil Armstrong 198925fdd593SJeykumar Sankaran /************************************************************* 199053324b99SAbhinav Kumar * Writeback blocks config 199153324b99SAbhinav Kumar *************************************************************/ 199253324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1993a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 199453324b99SAbhinav Kumar { \ 199553324b99SAbhinav Kumar .name = _name, .id = _id, \ 199653324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 199753324b99SAbhinav Kumar .features = _features, \ 199853324b99SAbhinav Kumar .format_list = wb2_formats, \ 199953324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 200053324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 200153324b99SAbhinav Kumar .xin_id = __xin_id, \ 200253324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 2003a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 200453324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 200553324b99SAbhinav Kumar } 200653324b99SAbhinav Kumar 200753324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 200853324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 2009a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 201053324b99SAbhinav Kumar }; 201153324b99SAbhinav Kumar 201253324b99SAbhinav Kumar /************************************************************* 201325fdd593SJeykumar Sankaran * VBIF sub blocks config 201425fdd593SJeykumar Sankaran *************************************************************/ 201525fdd593SJeykumar Sankaran /* VBIF QOS remap */ 201694391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 201794391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 2018abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 2019abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 202025fdd593SJeykumar Sankaran 202194391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 202294391a14SAngeloGioacchino Del Regno { 202394391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 202494391a14SAngeloGioacchino Del Regno .ot_limit = 2, 202594391a14SAngeloGioacchino Del Regno }, 202694391a14SAngeloGioacchino Del Regno { 202794391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 202894391a14SAngeloGioacchino Del Regno .ot_limit = 6, 202994391a14SAngeloGioacchino Del Regno }, 203094391a14SAngeloGioacchino Del Regno { 203194391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 203294391a14SAngeloGioacchino Del Regno .ot_limit = 16, 203394391a14SAngeloGioacchino Del Regno }, 203494391a14SAngeloGioacchino Del Regno }; 203594391a14SAngeloGioacchino Del Regno 203694391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 203794391a14SAngeloGioacchino Del Regno { 2038606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 203994391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 204094391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 204194391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 204294391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 204394391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 2044c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 204594391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 204694391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 204794391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 204894391a14SAngeloGioacchino Del Regno }, 204994391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 205094391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 205194391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 205294391a14SAngeloGioacchino Del Regno }, 205394391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 205494391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 205594391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 205694391a14SAngeloGioacchino Del Regno }, 205794391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 205894391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 205994391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 206094391a14SAngeloGioacchino Del Regno }, 206194391a14SAngeloGioacchino Del Regno .memtype_count = 14, 206294391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 206394391a14SAngeloGioacchino Del Regno }, 206494391a14SAngeloGioacchino Del Regno }; 206594391a14SAngeloGioacchino Del Regno 2066abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 206725fdd593SJeykumar Sankaran { 2068606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 206925fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 207025fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 207125fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 2072c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 207325fdd593SJeykumar Sankaran .qos_rt_tbl = { 207425fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 207525fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 207625fdd593SJeykumar Sankaran }, 207725fdd593SJeykumar Sankaran .qos_nrt_tbl = { 207825fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 207925fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 208025fdd593SJeykumar Sankaran }, 208125fdd593SJeykumar Sankaran .memtype_count = 14, 208225fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 208325fdd593SJeykumar Sankaran }, 208425fdd593SJeykumar Sankaran }; 208525fdd593SJeykumar Sankaran 20864a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = { 20874a352c2fSBjorn Andersson .base = 0x0, 20884a352c2fSBjorn Andersson .version = 0x00020000, 20894a352c2fSBjorn Andersson .trigger_sel_off = 0x119c, 20904a352c2fSBjorn Andersson .xin_id = 7, 20914a352c2fSBjorn Andersson .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20924a352c2fSBjorn Andersson }; 20934a352c2fSBjorn Andersson 2094abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 209525fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 209625fdd593SJeykumar Sankaran }; 209725fdd593SJeykumar Sankaran 2098386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 2099386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 2100386fced3SJonathan Marek }; 2101386fced3SJonathan Marek 2102af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 2103af776a3eSJonathan Marek .base = 0x0, 2104af776a3eSJonathan Marek .version = 0x00010002, 2105af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 2106af776a3eSJonathan Marek .xin_id = 7, 2107af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2108af776a3eSJonathan Marek }; 2109af776a3eSJonathan Marek 21100e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 21110e91bcbbSRobert Foss .base = 0x400, 21120e91bcbbSRobert Foss .version = 0x00020000, 21130e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 21140e91bcbbSRobert Foss .xin_id = 7, 21150e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 21160e91bcbbSRobert Foss }; 21170e91bcbbSRobert Foss 2118100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 2119100d7ef6SDmitry Baryshkov .base = 0x0, 2120100d7ef6SDmitry Baryshkov .version = 0x00020000, 2121100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 2122100d7ef6SDmitry Baryshkov .xin_id = 7, 2123100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2124100d7ef6SDmitry Baryshkov }; 2125100d7ef6SDmitry Baryshkov 212625fdd593SJeykumar Sankaran /************************************************************* 212725fdd593SJeykumar Sankaran * PERF data config 212825fdd593SJeykumar Sankaran *************************************************************/ 212925fdd593SJeykumar Sankaran 213025fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 213194391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 213294391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 213394391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 213494391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 213594391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 213694391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 213794391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 213894391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 213994391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 214094391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 214194391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 214294391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 214394391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 214494391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 214594391a14SAngeloGioacchino Del Regno }; 214694391a14SAngeloGioacchino Del Regno 2147abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 214825fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 214925fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 215025fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 215125fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 215225fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 215325fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 215425fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 215525fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 215625fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 215725fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 215825fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 215925fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 216025fdd593SJeykumar Sankaran }; 216125fdd593SJeykumar Sankaran 216294391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 216394391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 216494391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 216594391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 216694391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 216794391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 216894391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 216994391a14SAngeloGioacchino Del Regno }; 217094391a14SAngeloGioacchino Del Regno 21717bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 21727bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 21737bdc0c4bSKalyan Thota }; 21747bdc0c4bSKalyan Thota 2175386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 2176386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 2177386fced3SJonathan Marek }; 2178386fced3SJonathan Marek 2179f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 2180f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 2181f3af2d6eSRob Clark }; 2182f3af2d6eSRob Clark 21835334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 21845334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 21855334087eSLoic Poulain }; 21865334087eSLoic Poulain 2187abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 218825fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 218925fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 219025fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 219125fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 219225fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 219325fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 219425fdd593SJeykumar Sankaran }; 219525fdd593SJeykumar Sankaran 21967bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 21977bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 21987bdc0c4bSKalyan Thota }; 21997bdc0c4bSKalyan Thota 2200f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 2201f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 2202f3af2d6eSRob Clark }; 2203f3af2d6eSRob Clark 220494391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 220594391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 220694391a14SAngeloGioacchino Del Regno }; 220794391a14SAngeloGioacchino Del Regno 2208abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 220925fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 221025fdd593SJeykumar Sankaran }; 221125fdd593SJeykumar Sankaran 22127bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 22137bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 22147bdc0c4bSKalyan Thota }; 22157bdc0c4bSKalyan Thota 221694391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 221794391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 221894391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 221994391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 222094391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 222194391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 222294391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 222394391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 222494391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 222594391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 222694391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 222794391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 222894391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 222994391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 223094391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 223194391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 223294391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 223394391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 223494391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 223594391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 223694391a14SAngeloGioacchino Del Regno }, 223794391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 223894391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 223994391a14SAngeloGioacchino Del Regno }, 224094391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 224194391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 224294391a14SAngeloGioacchino Del Regno }, 224394391a14SAngeloGioacchino Del Regno }, 224494391a14SAngeloGioacchino Del Regno .cdp_cfg = { 224594391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 224694391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 224794391a14SAngeloGioacchino Del Regno }, 224894391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 224994391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 225094391a14SAngeloGioacchino Del Regno }; 225194391a14SAngeloGioacchino Del Regno 2252abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 225325fdd593SJeykumar Sankaran .max_bw_low = 6800000, 225425fdd593SJeykumar Sankaran .max_bw_high = 6800000, 225525fdd593SJeykumar Sankaran .min_core_ib = 2400000, 225625fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 225725fdd593SJeykumar Sankaran .min_dram_ib = 800000, 225825fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 225925fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 226025fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 226125fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 226225fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 226325fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 226425fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 226525fdd593SJeykumar Sankaran .amortizable_threshold = 25, 226625fdd593SJeykumar Sankaran .min_prefill_lines = 24, 226725fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 22685bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 226925fdd593SJeykumar Sankaran .qos_lut_tbl = { 227025fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 227125fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 227225fdd593SJeykumar Sankaran }, 227325fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 227425fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 227525fdd593SJeykumar Sankaran }, 227625fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 227725fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 227825fdd593SJeykumar Sankaran }, 227925fdd593SJeykumar Sankaran }, 228025fdd593SJeykumar Sankaran .cdp_cfg = { 228125fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 228225fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 228325fdd593SJeykumar Sankaran }, 22844f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 22854f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 228625fdd593SJeykumar Sankaran }; 228725fdd593SJeykumar Sankaran 22887bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 228971dc6c08SKrishna Manikandan .max_bw_low = 6800000, 229071dc6c08SKrishna Manikandan .max_bw_high = 6800000, 22917bdc0c4bSKalyan Thota .min_core_ib = 2400000, 22927bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 2293c33b7c03SKalyan Thota .min_dram_ib = 1600000, 2294c33b7c03SKalyan Thota .min_prefill_lines = 24, 22957bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22965bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22977bdc0c4bSKalyan Thota .qos_lut_tbl = { 22987bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22997bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 23007bdc0c4bSKalyan Thota }, 23017bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 23027bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 23037bdc0c4bSKalyan Thota }, 23047bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 23057bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 23067bdc0c4bSKalyan Thota }, 23077bdc0c4bSKalyan Thota }, 23087bdc0c4bSKalyan Thota .cdp_cfg = { 23097bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 23107bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 23117bdc0c4bSKalyan Thota }, 2312c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 2313c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 23147bdc0c4bSKalyan Thota }; 23157bdc0c4bSKalyan Thota 23163581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 23173581b706SAdam Skladowski .max_bw_low = 3100000, 23183581b706SAdam Skladowski .max_bw_high = 4000000, 23193581b706SAdam Skladowski .min_core_ib = 2400000, 23203581b706SAdam Skladowski .min_llcc_ib = 800000, 23213581b706SAdam Skladowski .min_dram_ib = 800000, 23223581b706SAdam Skladowski .min_prefill_lines = 24, 23233581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 23243581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 23253581b706SAdam Skladowski .qos_lut_tbl = { 23263581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 23273581b706SAdam Skladowski .entries = sc7180_qos_linear 23283581b706SAdam Skladowski }, 23293581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 23303581b706SAdam Skladowski .entries = sc7180_qos_macrotile 23313581b706SAdam Skladowski }, 23323581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 23333581b706SAdam Skladowski .entries = sc7180_qos_nrt 23343581b706SAdam Skladowski }, 23353581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 23363581b706SAdam Skladowski }, 23373581b706SAdam Skladowski .cdp_cfg = { 23383581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 23393581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 23403581b706SAdam Skladowski }, 23413581b706SAdam Skladowski .clk_inefficiency_factor = 105, 23423581b706SAdam Skladowski .bw_inefficiency_factor = 120, 23433581b706SAdam Skladowski }; 23443581b706SAdam Skladowski 2345386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 2346386fced3SJonathan Marek .max_bw_low = 12800000, 2347386fced3SJonathan Marek .max_bw_high = 12800000, 2348386fced3SJonathan Marek .min_core_ib = 2400000, 2349386fced3SJonathan Marek .min_llcc_ib = 800000, 2350386fced3SJonathan Marek .min_dram_ib = 800000, 23514f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 2352386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23535bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 2354386fced3SJonathan Marek .qos_lut_tbl = { 2355386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 2356386fced3SJonathan Marek .entries = sm8150_qos_linear 2357386fced3SJonathan Marek }, 2358386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2359386fced3SJonathan Marek .entries = sc7180_qos_macrotile 2360386fced3SJonathan Marek }, 2361386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2362386fced3SJonathan Marek .entries = sc7180_qos_nrt 2363386fced3SJonathan Marek }, 2364386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2365386fced3SJonathan Marek }, 2366386fced3SJonathan Marek .cdp_cfg = { 2367386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2368386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2369386fced3SJonathan Marek }, 23704f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 23714f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2372386fced3SJonathan Marek }; 2373386fced3SJonathan Marek 2374f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 2375f3af2d6eSRob Clark .max_bw_low = 9600000, 2376f3af2d6eSRob Clark .max_bw_high = 9600000, 2377f3af2d6eSRob Clark .min_core_ib = 2400000, 2378f3af2d6eSRob Clark .min_llcc_ib = 800000, 2379f3af2d6eSRob Clark .min_dram_ib = 800000, 2380f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 2381f3af2d6eSRob Clark .qos_lut_tbl = { 23824a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_linear), 23834a352c2fSBjorn Andersson .entries = sc7180_qos_linear 23844a352c2fSBjorn Andersson }, 23854a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 23864a352c2fSBjorn Andersson .entries = sc7180_qos_macrotile 23874a352c2fSBjorn Andersson }, 23884a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 23894a352c2fSBjorn Andersson .entries = sc7180_qos_nrt 23904a352c2fSBjorn Andersson }, 23914a352c2fSBjorn Andersson /* TODO: macrotile-qseed is different from macrotile */ 23924a352c2fSBjorn Andersson }, 23934a352c2fSBjorn Andersson .cdp_cfg = { 23944a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 1}, 23954a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 0} 23964a352c2fSBjorn Andersson }, 23974a352c2fSBjorn Andersson .clk_inefficiency_factor = 105, 23984a352c2fSBjorn Andersson .bw_inefficiency_factor = 120, 23994a352c2fSBjorn Andersson }; 24004a352c2fSBjorn Andersson 24014a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = { 24024a352c2fSBjorn Andersson .max_bw_low = 13600000, 24034a352c2fSBjorn Andersson .max_bw_high = 18200000, 24044a352c2fSBjorn Andersson .min_core_ib = 2500000, 24054a352c2fSBjorn Andersson .min_llcc_ib = 0, 24064a352c2fSBjorn Andersson .min_dram_ib = 800000, 24074a352c2fSBjorn Andersson .danger_lut_tbl = {0xf, 0xffff, 0x0}, 24084a352c2fSBjorn Andersson .qos_lut_tbl = { 2409f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 2410f3af2d6eSRob Clark .entries = sc8180x_qos_linear 2411f3af2d6eSRob Clark }, 2412f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 2413f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 2414f3af2d6eSRob Clark }, 2415f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2416f3af2d6eSRob Clark .entries = sc7180_qos_nrt 2417f3af2d6eSRob Clark }, 2418f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 2419f3af2d6eSRob Clark }, 2420f3af2d6eSRob Clark .cdp_cfg = { 2421f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 2422f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 2423f3af2d6eSRob Clark }, 2424f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 2425f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 2426f3af2d6eSRob Clark }; 2427f3af2d6eSRob Clark 2428af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 2429af776a3eSJonathan Marek .max_bw_low = 13700000, 2430af776a3eSJonathan Marek .max_bw_high = 16600000, 2431af776a3eSJonathan Marek .min_core_ib = 4800000, 2432af776a3eSJonathan Marek .min_llcc_ib = 0, 2433af776a3eSJonathan Marek .min_dram_ib = 800000, 24344f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 2435af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 24365bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 2437af776a3eSJonathan Marek .qos_lut_tbl = { 2438af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2439af776a3eSJonathan Marek .entries = sc7180_qos_linear 2440af776a3eSJonathan Marek }, 2441af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2442af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 2443af776a3eSJonathan Marek }, 2444af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2445af776a3eSJonathan Marek .entries = sc7180_qos_nrt 2446af776a3eSJonathan Marek }, 2447af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2448af776a3eSJonathan Marek }, 2449af776a3eSJonathan Marek .cdp_cfg = { 2450af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2451af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2452af776a3eSJonathan Marek }, 24534f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 24544f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2455af776a3eSJonathan Marek }; 2456af776a3eSJonathan Marek 2457100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = { 2458100d7ef6SDmitry Baryshkov .max_bw_low = 13600000, 2459100d7ef6SDmitry Baryshkov .max_bw_high = 18200000, 2460100d7ef6SDmitry Baryshkov .min_core_ib = 2500000, 2461100d7ef6SDmitry Baryshkov .min_llcc_ib = 0, 2462100d7ef6SDmitry Baryshkov .min_dram_ib = 800000, 2463100d7ef6SDmitry Baryshkov .min_prefill_lines = 35, 2464100d7ef6SDmitry Baryshkov /* FIXME: lut tables */ 2465100d7ef6SDmitry Baryshkov .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 2466100d7ef6SDmitry Baryshkov .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 2467100d7ef6SDmitry Baryshkov .qos_lut_tbl = { 2468100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2469100d7ef6SDmitry Baryshkov .entries = sc7180_qos_linear 2470100d7ef6SDmitry Baryshkov }, 2471100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2472100d7ef6SDmitry Baryshkov .entries = sc7180_qos_macrotile 2473100d7ef6SDmitry Baryshkov }, 2474100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2475100d7ef6SDmitry Baryshkov .entries = sc7180_qos_nrt 2476100d7ef6SDmitry Baryshkov }, 2477100d7ef6SDmitry Baryshkov /* TODO: macrotile-qseed is different from macrotile */ 2478100d7ef6SDmitry Baryshkov }, 2479100d7ef6SDmitry Baryshkov .cdp_cfg = { 2480100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 1}, 2481100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 0} 2482100d7ef6SDmitry Baryshkov }, 2483100d7ef6SDmitry Baryshkov .clk_inefficiency_factor = 105, 2484100d7ef6SDmitry Baryshkov .bw_inefficiency_factor = 120, 2485100d7ef6SDmitry Baryshkov }; 2486100d7ef6SDmitry Baryshkov 2487591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 2488591e34a0SKrishna Manikandan .max_bw_low = 4700000, 2489591e34a0SKrishna Manikandan .max_bw_high = 8800000, 2490591e34a0SKrishna Manikandan .min_core_ib = 2500000, 2491591e34a0SKrishna Manikandan .min_llcc_ib = 0, 2492591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 2493591e34a0SKrishna Manikandan .min_prefill_lines = 24, 2494591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 24955bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 2496591e34a0SKrishna Manikandan .qos_lut_tbl = { 2497591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2498591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2499591e34a0SKrishna Manikandan }, 2500591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2501591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2502591e34a0SKrishna Manikandan }, 2503591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2504591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 2505591e34a0SKrishna Manikandan }, 2506591e34a0SKrishna Manikandan }, 2507591e34a0SKrishna Manikandan .cdp_cfg = { 2508591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 2509591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 2510591e34a0SKrishna Manikandan }, 2511591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 2512591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 2513591e34a0SKrishna Manikandan }; 2514591e34a0SKrishna Manikandan 25150e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = { 25160e91bcbbSRobert Foss .max_bw_low = 11800000, 25170e91bcbbSRobert Foss .max_bw_high = 15500000, 25180e91bcbbSRobert Foss .min_core_ib = 2500000, 25190e91bcbbSRobert Foss .min_llcc_ib = 0, 25200e91bcbbSRobert Foss .min_dram_ib = 800000, 25210e91bcbbSRobert Foss .min_prefill_lines = 40, 25220e91bcbbSRobert Foss /* FIXME: lut tables */ 25230e91bcbbSRobert Foss .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 25240e91bcbbSRobert Foss .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 25250e91bcbbSRobert Foss .qos_lut_tbl = { 25260e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_linear), 25270e91bcbbSRobert Foss .entries = sc7180_qos_linear 25280e91bcbbSRobert Foss }, 25290e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 25300e91bcbbSRobert Foss .entries = sc7180_qos_macrotile 25310e91bcbbSRobert Foss }, 25320e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 25330e91bcbbSRobert Foss .entries = sc7180_qos_nrt 25340e91bcbbSRobert Foss }, 25350e91bcbbSRobert Foss /* TODO: macrotile-qseed is different from macrotile */ 25360e91bcbbSRobert Foss }, 25370e91bcbbSRobert Foss .cdp_cfg = { 25380e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 1}, 25390e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 0} 25400e91bcbbSRobert Foss }, 25410e91bcbbSRobert Foss .clk_inefficiency_factor = 105, 25420e91bcbbSRobert Foss .bw_inefficiency_factor = 120, 25430e91bcbbSRobert Foss }; 25440e91bcbbSRobert Foss 25455334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 25465334087eSLoic Poulain .max_bw_low = 2700000, 25475334087eSLoic Poulain .max_bw_high = 2700000, 25485334087eSLoic Poulain .min_core_ib = 1300000, 25495334087eSLoic Poulain .min_llcc_ib = 0, 25505334087eSLoic Poulain .min_dram_ib = 1600000, 25515334087eSLoic Poulain .min_prefill_lines = 24, 25525334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 25535334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 25545334087eSLoic Poulain .qos_lut_tbl = { 25555334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 25565334087eSLoic Poulain .entries = qcm2290_qos_linear 25575334087eSLoic Poulain }, 25585334087eSLoic Poulain }, 25595334087eSLoic Poulain .cdp_cfg = { 25605334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 25615334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 25625334087eSLoic Poulain }, 25635334087eSLoic Poulain .clk_inefficiency_factor = 105, 25645334087eSLoic Poulain .bw_inefficiency_factor = 120, 25655334087eSLoic Poulain }; 256625fdd593SJeykumar Sankaran /************************************************************* 2567de7d480fSDmitry Baryshkov * Hardware catalog 256825fdd593SJeykumar Sankaran *************************************************************/ 256925fdd593SJeykumar Sankaran 2570de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 257194391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 2572*fbbd8cceSDmitry Baryshkov .ubwc = &msm8998_ubwc_cfg, 257394391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 257494391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 257594391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 257694391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 257794391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 257894391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 257994391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 258094391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 25816452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 25826452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 258394391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 258494391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 258594391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 258694391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 258794391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 258894391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 258994391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 2590477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 259194391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 259294391a14SAngeloGioacchino Del Regno }; 259394391a14SAngeloGioacchino Del Regno 2594de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 259525fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 2596*fbbd8cceSDmitry Baryshkov .ubwc = &sdm845_ubwc_cfg, 259725fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 259825fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 259925fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 260025fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 260125fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 260225fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 260325fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 260425fdd593SJeykumar Sankaran .mixer = sdm845_lm, 260525fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 260625fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 26077c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 26087c5ab05eSVinod Koul .dsc = sdm845_dsc, 260925fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 261025fdd593SJeykumar Sankaran .intf = sdm845_intf, 261125fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 261225fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 261325fdd593SJeykumar Sankaran .reg_dma_count = 1, 2614481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2615477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 2616597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 261725fdd593SJeykumar Sankaran }; 261825fdd593SJeykumar Sankaran 2619de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 26207bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 2621*fbbd8cceSDmitry Baryshkov .ubwc = &sc7180_ubwc_cfg, 26227bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 26237bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 26247bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 26257bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 26267bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 26277bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 26287bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 26297bdc0c4bSKalyan Thota .mixer = sc7180_lm, 2630e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2631e47616dfSKalyan Thota .dspp = sc7180_dspp, 26327bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 26337bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 26347bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 26357bdc0c4bSKalyan Thota .intf = sc7180_intf, 263651e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 263751e4d60eSAbhinav Kumar .wb = sm8250_wb, 26387bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 26397bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 26407bdc0c4bSKalyan Thota .reg_dma_count = 1, 2641481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2642477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 2643597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 26447bdc0c4bSKalyan Thota }; 26457bdc0c4bSKalyan Thota 26463581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 26473581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 2648*fbbd8cceSDmitry Baryshkov .ubwc = &sm6115_ubwc_cfg, 26493581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 26503581b706SAdam Skladowski .mdp = sm6115_mdp, 26513581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 26523581b706SAdam Skladowski .ctl = qcm2290_ctl, 26533581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 26543581b706SAdam Skladowski .sspp = sm6115_sspp, 26553581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 26563581b706SAdam Skladowski .mixer = qcm2290_lm, 26573581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 26583581b706SAdam Skladowski .dspp = qcm2290_dspp, 26593581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 26603581b706SAdam Skladowski .pingpong = qcm2290_pp, 26613581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 26623581b706SAdam Skladowski .intf = qcm2290_intf, 26633581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 26643581b706SAdam Skladowski .vbif = sdm845_vbif, 26653581b706SAdam Skladowski .perf = &sm6115_perf_data, 26663581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 26673581b706SAdam Skladowski }; 26683581b706SAdam Skladowski 2669de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 2670386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 2671*fbbd8cceSDmitry Baryshkov .ubwc = &sm8150_ubwc_cfg, 2672386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 2673386fced3SJonathan Marek .mdp = sdm845_mdp, 2674386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2675386fced3SJonathan Marek .ctl = sm8150_ctl, 2676386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 2677386fced3SJonathan Marek .sspp = sdm845_sspp, 2678386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2679386fced3SJonathan Marek .mixer = sm8150_lm, 268005ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 268105ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 26829da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 26839da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2684386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2685386fced3SJonathan Marek .pingpong = sm8150_pp, 26864369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 26874369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2688386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2689386fced3SJonathan Marek .intf = sm8150_intf, 2690386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2691386fced3SJonathan Marek .vbif = sdm845_vbif, 2692386fced3SJonathan Marek .reg_dma_count = 1, 2693481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2694477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 2695597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 2696386fced3SJonathan Marek }; 2697386fced3SJonathan Marek 2698de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 2699f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 2700*fbbd8cceSDmitry Baryshkov .ubwc = &sc8180x_ubwc_cfg, 2701f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 2702f3af2d6eSRob Clark .mdp = sc8180x_mdp, 2703f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 2704f3af2d6eSRob Clark .ctl = sm8150_ctl, 2705f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 2706f3af2d6eSRob Clark .sspp = sdm845_sspp, 2707f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 2708f3af2d6eSRob Clark .mixer = sm8150_lm, 2709f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 2710f3af2d6eSRob Clark .pingpong = sm8150_pp, 2711f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 2712f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 2713f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 2714f3af2d6eSRob Clark .intf = sc8180x_intf, 2715f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 2716f3af2d6eSRob Clark .vbif = sdm845_vbif, 2717f3af2d6eSRob Clark .reg_dma_count = 1, 2718481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2719477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 2720f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 2721f3af2d6eSRob Clark }; 2722f3af2d6eSRob Clark 27234a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = { 27244a352c2fSBjorn Andersson .caps = &sc8280xp_dpu_caps, 2725*fbbd8cceSDmitry Baryshkov .ubwc = &sc8280xp_ubwc_cfg, 27264a352c2fSBjorn Andersson .mdp_count = ARRAY_SIZE(sc8280xp_mdp), 27274a352c2fSBjorn Andersson .mdp = sc8280xp_mdp, 27284a352c2fSBjorn Andersson .ctl_count = ARRAY_SIZE(sc8280xp_ctl), 27294a352c2fSBjorn Andersson .ctl = sc8280xp_ctl, 27304a352c2fSBjorn Andersson .sspp_count = ARRAY_SIZE(sc8280xp_sspp), 27314a352c2fSBjorn Andersson .sspp = sc8280xp_sspp, 27324a352c2fSBjorn Andersson .mixer_count = ARRAY_SIZE(sc8280xp_lm), 27334a352c2fSBjorn Andersson .mixer = sc8280xp_lm, 27344a352c2fSBjorn Andersson .dspp_count = ARRAY_SIZE(sm8150_dspp), 27354a352c2fSBjorn Andersson .dspp = sm8150_dspp, 27364a352c2fSBjorn Andersson .pingpong_count = ARRAY_SIZE(sc8280xp_pp), 27374a352c2fSBjorn Andersson .pingpong = sc8280xp_pp, 27384a352c2fSBjorn Andersson .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 27394a352c2fSBjorn Andersson .merge_3d = sm8350_merge_3d, 27404a352c2fSBjorn Andersson .intf_count = ARRAY_SIZE(sc8280xp_intf), 27414a352c2fSBjorn Andersson .intf = sc8280xp_intf, 27424a352c2fSBjorn Andersson .vbif_count = ARRAY_SIZE(sdm845_vbif), 27434a352c2fSBjorn Andersson .vbif = sdm845_vbif, 274483bb1f13SDmitry Baryshkov .reg_dma_count = 1, 274583bb1f13SDmitry Baryshkov .dma_cfg = &sc8280xp_regdma, 27464a352c2fSBjorn Andersson .perf = &sc8280xp_perf_data, 27474a352c2fSBjorn Andersson .mdss_irqs = IRQ_SC8280XP_MASK, 27484a352c2fSBjorn Andersson }; 27494a352c2fSBjorn Andersson 2750de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 2751af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 2752*fbbd8cceSDmitry Baryshkov .ubwc = &sm8250_ubwc_cfg, 2753af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 2754af776a3eSJonathan Marek .mdp = sm8250_mdp, 2755af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2756af776a3eSJonathan Marek .ctl = sm8150_ctl, 2757d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 2758d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 2759af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2760af776a3eSJonathan Marek .mixer = sm8150_lm, 276105ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 276205ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 27639da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 27649da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2765af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2766af776a3eSJonathan Marek .pingpong = sm8150_pp, 27674369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 27684369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2769af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2770af776a3eSJonathan Marek .intf = sm8150_intf, 2771af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2772af776a3eSJonathan Marek .vbif = sdm845_vbif, 277353324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 277453324b99SAbhinav Kumar .wb = sm8250_wb, 2775af776a3eSJonathan Marek .reg_dma_count = 1, 2776481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2777477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2778597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2779af776a3eSJonathan Marek }; 2780af776a3eSJonathan Marek 27810e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = { 27820e91bcbbSRobert Foss .caps = &sm8350_dpu_caps, 2783*fbbd8cceSDmitry Baryshkov .ubwc = &sm8350_ubwc_cfg, 27840e91bcbbSRobert Foss .mdp_count = ARRAY_SIZE(sm8350_mdp), 27850e91bcbbSRobert Foss .mdp = sm8350_mdp, 27860e91bcbbSRobert Foss .ctl_count = ARRAY_SIZE(sm8350_ctl), 27870e91bcbbSRobert Foss .ctl = sm8350_ctl, 27880e91bcbbSRobert Foss .sspp_count = ARRAY_SIZE(sm8250_sspp), 27890e91bcbbSRobert Foss .sspp = sm8250_sspp, 27900e91bcbbSRobert Foss .mixer_count = ARRAY_SIZE(sm8150_lm), 27910e91bcbbSRobert Foss .mixer = sm8150_lm, 27920e91bcbbSRobert Foss .dspp_count = ARRAY_SIZE(sm8150_dspp), 27930e91bcbbSRobert Foss .dspp = sm8150_dspp, 27940e91bcbbSRobert Foss .pingpong_count = ARRAY_SIZE(sm8350_pp), 27950e91bcbbSRobert Foss .pingpong = sm8350_pp, 27960e91bcbbSRobert Foss .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 27970e91bcbbSRobert Foss .merge_3d = sm8350_merge_3d, 27980e91bcbbSRobert Foss .intf_count = ARRAY_SIZE(sm8350_intf), 27990e91bcbbSRobert Foss .intf = sm8350_intf, 28000e91bcbbSRobert Foss .vbif_count = ARRAY_SIZE(sdm845_vbif), 28010e91bcbbSRobert Foss .vbif = sdm845_vbif, 28020e91bcbbSRobert Foss .reg_dma_count = 1, 2803764b9481SDmitry Baryshkov .dma_cfg = &sm8350_regdma, 28040e91bcbbSRobert Foss .perf = &sm8350_perf_data, 28050e91bcbbSRobert Foss .mdss_irqs = IRQ_SM8350_MASK, 28060e91bcbbSRobert Foss }; 28070e91bcbbSRobert Foss 2808100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = { 2809100d7ef6SDmitry Baryshkov .caps = &sm8450_dpu_caps, 2810*fbbd8cceSDmitry Baryshkov .ubwc = &sm8450_ubwc_cfg, 2811100d7ef6SDmitry Baryshkov .mdp_count = ARRAY_SIZE(sm8450_mdp), 2812100d7ef6SDmitry Baryshkov .mdp = sm8450_mdp, 2813100d7ef6SDmitry Baryshkov .ctl_count = ARRAY_SIZE(sm8450_ctl), 2814100d7ef6SDmitry Baryshkov .ctl = sm8450_ctl, 2815100d7ef6SDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8450_sspp), 2816100d7ef6SDmitry Baryshkov .sspp = sm8450_sspp, 2817100d7ef6SDmitry Baryshkov .mixer_count = ARRAY_SIZE(sm8150_lm), 2818100d7ef6SDmitry Baryshkov .mixer = sm8150_lm, 2819100d7ef6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 2820100d7ef6SDmitry Baryshkov .dspp = sm8150_dspp, 2821100d7ef6SDmitry Baryshkov .pingpong_count = ARRAY_SIZE(sm8450_pp), 2822100d7ef6SDmitry Baryshkov .pingpong = sm8450_pp, 2823100d7ef6SDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8450_merge_3d), 2824100d7ef6SDmitry Baryshkov .merge_3d = sm8450_merge_3d, 2825100d7ef6SDmitry Baryshkov .intf_count = ARRAY_SIZE(sm8450_intf), 2826100d7ef6SDmitry Baryshkov .intf = sm8450_intf, 2827100d7ef6SDmitry Baryshkov .vbif_count = ARRAY_SIZE(sdm845_vbif), 2828100d7ef6SDmitry Baryshkov .vbif = sdm845_vbif, 2829100d7ef6SDmitry Baryshkov .reg_dma_count = 1, 2830100d7ef6SDmitry Baryshkov .dma_cfg = &sm8450_regdma, 2831100d7ef6SDmitry Baryshkov .perf = &sm8450_perf_data, 2832100d7ef6SDmitry Baryshkov .mdss_irqs = IRQ_SM8450_MASK, 2833100d7ef6SDmitry Baryshkov }; 2834100d7ef6SDmitry Baryshkov 2835efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = { 2836efcd0107SNeil Armstrong .caps = &sm8550_dpu_caps, 2837*fbbd8cceSDmitry Baryshkov .ubwc = &sm8550_ubwc_cfg, 2838efcd0107SNeil Armstrong .mdp_count = ARRAY_SIZE(sm8550_mdp), 2839efcd0107SNeil Armstrong .mdp = sm8550_mdp, 2840efcd0107SNeil Armstrong .ctl_count = ARRAY_SIZE(sm8550_ctl), 2841efcd0107SNeil Armstrong .ctl = sm8550_ctl, 2842efcd0107SNeil Armstrong .sspp_count = ARRAY_SIZE(sm8550_sspp), 2843efcd0107SNeil Armstrong .sspp = sm8550_sspp, 2844efcd0107SNeil Armstrong .mixer_count = ARRAY_SIZE(sm8150_lm), 2845efcd0107SNeil Armstrong .mixer = sm8150_lm, 2846efcd0107SNeil Armstrong .dspp_count = ARRAY_SIZE(sm8150_dspp), 2847efcd0107SNeil Armstrong .dspp = sm8150_dspp, 2848efcd0107SNeil Armstrong .pingpong_count = ARRAY_SIZE(sm8550_pp), 2849efcd0107SNeil Armstrong .pingpong = sm8550_pp, 2850efcd0107SNeil Armstrong .merge_3d_count = ARRAY_SIZE(sm8550_merge_3d), 2851efcd0107SNeil Armstrong .merge_3d = sm8550_merge_3d, 2852efcd0107SNeil Armstrong .intf_count = ARRAY_SIZE(sm8550_intf), 2853efcd0107SNeil Armstrong .intf = sm8550_intf, 2854efcd0107SNeil Armstrong .vbif_count = ARRAY_SIZE(sdm845_vbif), 2855efcd0107SNeil Armstrong .vbif = sdm845_vbif, 2856efcd0107SNeil Armstrong .reg_dma_count = 1, 2857efcd0107SNeil Armstrong .dma_cfg = &sm8450_regdma, 2858efcd0107SNeil Armstrong .perf = &sm8450_perf_data, 2859efcd0107SNeil Armstrong .mdss_irqs = IRQ_SM8450_MASK, 2860efcd0107SNeil Armstrong }; 2861efcd0107SNeil Armstrong 2862de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 2863591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 2864*fbbd8cceSDmitry Baryshkov .ubwc = &sc7280_ubwc_cfg, 2865591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 2866591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 2867591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 2868591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 2869591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 2870591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 2871fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2872fca5ad26SKalyan Thota .dspp = sc7180_dspp, 2873591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 2874591e34a0SKrishna Manikandan .mixer = sc7280_lm, 2875591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 2876591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 2877591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 2878591e34a0SKrishna Manikandan .intf = sc7280_intf, 2879591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 2880591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 2881477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 2882597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 2883591e34a0SKrishna Manikandan }; 2884591e34a0SKrishna Manikandan 2885de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 28865334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 2887*fbbd8cceSDmitry Baryshkov .ubwc = &qcm2290_ubwc_cfg, 28885334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 28895334087eSLoic Poulain .mdp = qcm2290_mdp, 28905334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 28915334087eSLoic Poulain .ctl = qcm2290_ctl, 28925334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 28935334087eSLoic Poulain .sspp = qcm2290_sspp, 28945334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 28955334087eSLoic Poulain .mixer = qcm2290_lm, 28965334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 28975334087eSLoic Poulain .dspp = qcm2290_dspp, 28985334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 28995334087eSLoic Poulain .pingpong = qcm2290_pp, 29005334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 29015334087eSLoic Poulain .intf = qcm2290_intf, 29025334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 29035334087eSLoic Poulain .vbif = sdm845_vbif, 2904477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 29055334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 29065334087eSLoic Poulain }; 29075334087eSLoic Poulain 2908abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2909de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2910de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2911de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2912de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2913de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2914de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2915de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2916de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2917de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 29183581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2919de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 29200e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 2921de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 29224a352c2fSBjorn Andersson { .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg}, 2923100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 2924efcd0107SNeil Armstrong { .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg}, 292525fdd593SJeykumar Sankaran }; 292625fdd593SJeykumar Sankaran 2927de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 292825fdd593SJeykumar Sankaran { 292925fdd593SJeykumar Sankaran int i; 293025fdd593SJeykumar Sankaran 293125fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2932de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2933de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 293425fdd593SJeykumar Sankaran } 293525fdd593SJeykumar Sankaran 293625fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 293732084967SDmitry Baryshkov 293825fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 293925fdd593SJeykumar Sankaran } 294025fdd593SJeykumar Sankaran 2941