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 .ubwc_version = DPU_HW_UBWC_VER_10, 32794391a14SAngeloGioacchino Del Regno .has_src_split = true, 32894391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 32994391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 33094391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 33194391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 33294391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 33394391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 33494391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 33594391a14SAngeloGioacchino Del Regno }; 33694391a14SAngeloGioacchino Del Regno 337c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 338da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 339c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 340c162352eSKonrad Dybcio .has_dim_layer = true, 341c162352eSKonrad Dybcio .has_idle_pc = true, 342c162352eSKonrad Dybcio .max_linewidth = 2160, 343c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 344c162352eSKonrad Dybcio }; 345c162352eSKonrad Dybcio 34625fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 34725fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 34825fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 34925fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 35025fdd593SJeykumar Sankaran .ubwc_version = DPU_HW_UBWC_VER_20, 35125fdd593SJeykumar Sankaran .has_src_split = true, 35225fdd593SJeykumar Sankaran .has_dim_layer = true, 35325fdd593SJeykumar Sankaran .has_idle_pc = true, 35442a558b7SKalyan Thota .has_3d_merge = true, 3557e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3567e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3577e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3587e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 35925fdd593SJeykumar Sankaran }; 36025fdd593SJeykumar Sankaran 3617bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3627bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3637bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3647bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3657bdc0c4bSKalyan Thota .ubwc_version = DPU_HW_UBWC_VER_20, 3667bdc0c4bSKalyan Thota .has_dim_layer = true, 3677bdc0c4bSKalyan Thota .has_idle_pc = true, 3687e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3697e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3707bdc0c4bSKalyan Thota }; 3717bdc0c4bSKalyan Thota 3723581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = { 373da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 3743581b706SAdam Skladowski .max_mixer_blendstages = 0x4, 37538164e99SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 3760b5a8e81SDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_10, 3773581b706SAdam Skladowski .has_dim_layer = true, 3783581b706SAdam Skladowski .has_idle_pc = true, 3793581b706SAdam Skladowski .max_linewidth = 2160, 3803581b706SAdam Skladowski .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3813581b706SAdam Skladowski }; 3823581b706SAdam Skladowski 383386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 384386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 385386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 386386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 387386fced3SJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_30, 388386fced3SJonathan Marek .has_src_split = true, 389386fced3SJonathan Marek .has_dim_layer = true, 390386fced3SJonathan Marek .has_idle_pc = true, 391386fced3SJonathan Marek .has_3d_merge = true, 392386fced3SJonathan Marek .max_linewidth = 4096, 393386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 394386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 395386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 396386fced3SJonathan Marek }; 397386fced3SJonathan Marek 398f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 399f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 400f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 401f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 402f3af2d6eSRob Clark .ubwc_version = DPU_HW_UBWC_VER_30, 403f3af2d6eSRob Clark .has_src_split = true, 404f3af2d6eSRob Clark .has_dim_layer = true, 405f3af2d6eSRob Clark .has_idle_pc = true, 406f3af2d6eSRob Clark .has_3d_merge = true, 407f3af2d6eSRob Clark .max_linewidth = 4096, 408f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 409f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 410f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 411f3af2d6eSRob Clark }; 412f3af2d6eSRob Clark 4134a352c2fSBjorn Andersson static const struct dpu_caps sc8280xp_dpu_caps = { 4144a352c2fSBjorn Andersson .max_mixer_width = 2560, 4154a352c2fSBjorn Andersson .max_mixer_blendstages = 11, 416b3587cb6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 4174a352c2fSBjorn Andersson .ubwc_version = DPU_HW_UBWC_VER_40, 4184a352c2fSBjorn Andersson .has_src_split = true, 4194a352c2fSBjorn Andersson .has_dim_layer = true, 4204a352c2fSBjorn Andersson .has_idle_pc = true, 4214a352c2fSBjorn Andersson .has_3d_merge = true, 4224a352c2fSBjorn Andersson .max_linewidth = 5120, 4234a352c2fSBjorn Andersson .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4244a352c2fSBjorn Andersson }; 4254a352c2fSBjorn Andersson 426af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 427af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 428af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 42903c0c3cbSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 430af776a3eSJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_40, 431af776a3eSJonathan Marek .has_src_split = true, 432af776a3eSJonathan Marek .has_dim_layer = true, 433af776a3eSJonathan Marek .has_idle_pc = true, 434af776a3eSJonathan Marek .has_3d_merge = true, 435af776a3eSJonathan Marek .max_linewidth = 4096, 436af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 437af776a3eSJonathan Marek }; 438af776a3eSJonathan Marek 4390e91bcbbSRobert Foss static const struct dpu_caps sm8350_dpu_caps = { 4400e91bcbbSRobert Foss .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 4410e91bcbbSRobert Foss .max_mixer_blendstages = 0xb, 44203c0c3cbSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 4430e91bcbbSRobert Foss .ubwc_version = DPU_HW_UBWC_VER_40, 4440e91bcbbSRobert Foss .has_src_split = true, 4450e91bcbbSRobert Foss .has_dim_layer = true, 4460e91bcbbSRobert Foss .has_idle_pc = true, 4470e91bcbbSRobert Foss .has_3d_merge = true, 4480e91bcbbSRobert Foss .max_linewidth = 4096, 4490e91bcbbSRobert Foss .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 4500e91bcbbSRobert Foss }; 4510e91bcbbSRobert Foss 452100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = { 453100d7ef6SDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 454100d7ef6SDmitry Baryshkov .max_mixer_blendstages = 0xb, 455100d7ef6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 456100d7ef6SDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 457100d7ef6SDmitry Baryshkov .has_src_split = true, 458100d7ef6SDmitry Baryshkov .has_dim_layer = true, 459100d7ef6SDmitry Baryshkov .has_idle_pc = true, 460100d7ef6SDmitry Baryshkov .has_3d_merge = true, 461100d7ef6SDmitry Baryshkov .max_linewidth = 5120, 462100d7ef6SDmitry Baryshkov .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 463100d7ef6SDmitry Baryshkov }; 464100d7ef6SDmitry Baryshkov 465efcd0107SNeil Armstrong static const struct dpu_caps sm8550_dpu_caps = { 466efcd0107SNeil Armstrong .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 467efcd0107SNeil Armstrong .max_mixer_blendstages = 0xb, 468d113d267SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 469efcd0107SNeil Armstrong .ubwc_version = DPU_HW_UBWC_VER_40, 470efcd0107SNeil Armstrong .has_src_split = true, 471efcd0107SNeil Armstrong .has_dim_layer = true, 472efcd0107SNeil Armstrong .has_idle_pc = true, 473efcd0107SNeil Armstrong .has_3d_merge = true, 474efcd0107SNeil Armstrong .max_linewidth = 5120, 475efcd0107SNeil Armstrong .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 476efcd0107SNeil Armstrong }; 477efcd0107SNeil Armstrong 478591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 479591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 480591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 481591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 482591e34a0SKrishna Manikandan .ubwc_version = DPU_HW_UBWC_VER_30, 483591e34a0SKrishna Manikandan .has_dim_layer = true, 484591e34a0SKrishna Manikandan .has_idle_pc = true, 485591e34a0SKrishna Manikandan .max_linewidth = 2400, 486591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 487591e34a0SKrishna Manikandan }; 488591e34a0SKrishna Manikandan 48994391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 49094391a14SAngeloGioacchino Del Regno { 49194391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 49294391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 49394391a14SAngeloGioacchino Del Regno .features = 0, 49494391a14SAngeloGioacchino Del Regno .highest_bank_bit = 0x2, 49594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 49694391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 49794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 49894391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 49994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 50094391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 50194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 50294391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 50394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 50494391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 50594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 50694391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 50794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 50894391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 50994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 51094391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 51194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 51294391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 51394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 51494391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 51594391a14SAngeloGioacchino Del Regno }, 51694391a14SAngeloGioacchino Del Regno }; 51794391a14SAngeloGioacchino Del Regno 518abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 51925fdd593SJeykumar Sankaran { 52025fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 52125fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 52203490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 52325fdd593SJeykumar Sankaran .highest_bank_bit = 0x2, 52425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 52525fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 52625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 52725fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 52825fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 52925fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 53025fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 53125fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 53225fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 53325fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 53425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 53525fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 536d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 53725fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 538d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 53925fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 54025fdd593SJeykumar Sankaran }, 54125fdd593SJeykumar Sankaran }; 54225fdd593SJeykumar Sankaran 5437bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 5447bdc0c4bSKalyan Thota { 5457bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 5467bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 5477bdc0c4bSKalyan Thota .features = 0, 5487bdc0c4bSKalyan Thota .highest_bank_bit = 0x3, 5497bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5507bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 5517bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5527bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 553d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 5547b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 555d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 5567b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 557255f0561SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_WB2] = { 558255f0561SDmitry Baryshkov .reg_off = 0x3B8, .bit_off = 24}, 5597bdc0c4bSKalyan Thota }, 5607bdc0c4bSKalyan Thota }; 5617bdc0c4bSKalyan Thota 562f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 563f3af2d6eSRob Clark { 564f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 565f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 56610a88954SDmitry Baryshkov .features = BIT(DPU_MDP_AUDIO_SELECT), 567f3af2d6eSRob Clark .highest_bank_bit = 0x3, 568f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 569f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 570f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 571f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 572f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 573f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 574f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 575f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 576f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 577f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 578f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 579f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 580d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 581f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 582d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 583f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 584f3af2d6eSRob Clark }, 585f3af2d6eSRob Clark }; 586f3af2d6eSRob Clark 5873581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 5883581b706SAdam Skladowski { 5893581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 5903581b706SAdam Skladowski .base = 0x0, .len = 0x494, 5913581b706SAdam Skladowski .features = 0, 5923581b706SAdam Skladowski .highest_bank_bit = 0x1, 59331c31805SDmitry Baryshkov .ubwc_swizzle = 0x7, 5943581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5953581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 5963581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5973581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 5983581b706SAdam Skladowski }, 5993581b706SAdam Skladowski }; 6003581b706SAdam Skladowski 601af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 602af776a3eSJonathan Marek { 603af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 604b910a020SRobert Foss .base = 0x0, .len = 0x494, 605af776a3eSJonathan Marek .features = 0, 606af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 60731c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 608af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 609af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 610af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 611af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 612af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 613af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 614af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 615af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 616af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 617af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 618af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 619af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 620d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 621af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 622d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 623af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 624af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 625af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 62653324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 62753324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 628af776a3eSJonathan Marek }, 629af776a3eSJonathan Marek }; 630af776a3eSJonathan Marek 6310e91bcbbSRobert Foss static const struct dpu_mdp_cfg sm8350_mdp[] = { 6320e91bcbbSRobert Foss { 6330e91bcbbSRobert Foss .name = "top_0", .id = MDP_TOP, 6340e91bcbbSRobert Foss .base = 0x0, .len = 0x494, 6350e91bcbbSRobert Foss .features = 0, 6360e91bcbbSRobert Foss .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 6370e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6380e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 0}, 6390e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 6400e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 0}, 6410e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 6420e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 0}, 6430e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 6440e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 0}, 6450e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6460e91bcbbSRobert Foss .reg_off = 0x2ac, .bit_off = 8}, 6470e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 6480e91bcbbSRobert Foss .reg_off = 0x2b4, .bit_off = 8}, 649d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 6500e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 8}, 651d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 6520e91bcbbSRobert Foss .reg_off = 0x2c4, .bit_off = 8}, 6530e91bcbbSRobert Foss .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 6540e91bcbbSRobert Foss .reg_off = 0x2bc, .bit_off = 20}, 6550e91bcbbSRobert Foss }, 6560e91bcbbSRobert Foss }; 6570e91bcbbSRobert Foss 658100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = { 659100d7ef6SDmitry Baryshkov { 660100d7ef6SDmitry Baryshkov .name = "top_0", .id = MDP_TOP, 661100d7ef6SDmitry Baryshkov .base = 0x0, .len = 0x494, 662100d7ef6SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 663100d7ef6SDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 66431c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 665100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 666100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 0}, 667100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 668100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 0}, 669100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 670100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 0}, 671100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 672100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 0}, 673100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 674100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 8}, 675100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 676100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 8}, 677d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 678100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 8}, 679d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 680100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 8}, 681100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 682100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 20}, 683100d7ef6SDmitry Baryshkov }, 684100d7ef6SDmitry Baryshkov }; 685100d7ef6SDmitry Baryshkov 686591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 687591e34a0SKrishna Manikandan { 688591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 689591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 690591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 69131c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 692591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 693591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 694591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 695591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 696d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 697591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 698d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 699591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 700591e34a0SKrishna Manikandan }, 701591e34a0SKrishna Manikandan }; 702591e34a0SKrishna Manikandan 7034a352c2fSBjorn Andersson static const struct dpu_mdp_cfg sc8280xp_mdp[] = { 7044a352c2fSBjorn Andersson { 7054a352c2fSBjorn Andersson .name = "top_0", .id = MDP_TOP, 7064a352c2fSBjorn Andersson .base = 0x0, .len = 0x494, 7070df979f4SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 7084a352c2fSBjorn Andersson .highest_bank_bit = 2, 7094a352c2fSBjorn Andersson .ubwc_swizzle = 6, 7104a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0}, 7114a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0}, 7124a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0}, 7134a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0}, 7144a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8}, 7154a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8}, 716d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8}, 717d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 8}, 7184a352c2fSBjorn Andersson .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { .reg_off = 0x2bc, .bit_off = 20}, 7194a352c2fSBjorn Andersson }, 7204a352c2fSBjorn Andersson }; 7214a352c2fSBjorn Andersson 722efcd0107SNeil Armstrong static const struct dpu_mdp_cfg sm8550_mdp[] = { 723efcd0107SNeil Armstrong { 724efcd0107SNeil Armstrong .name = "top_0", .id = MDP_TOP, 725efcd0107SNeil Armstrong .base = 0, .len = 0x494, 726efcd0107SNeil Armstrong .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 727efcd0107SNeil Armstrong .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 72831c31805SDmitry Baryshkov .ubwc_swizzle = 0x6, 729efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 730efcd0107SNeil Armstrong .reg_off = 0x4330, .bit_off = 0}, 731efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 732efcd0107SNeil Armstrong .reg_off = 0x6330, .bit_off = 0}, 733efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 734efcd0107SNeil Armstrong .reg_off = 0x8330, .bit_off = 0}, 735efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 736efcd0107SNeil Armstrong .reg_off = 0xa330, .bit_off = 0}, 737efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 738efcd0107SNeil Armstrong .reg_off = 0x24330, .bit_off = 0}, 739efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 740efcd0107SNeil Armstrong .reg_off = 0x26330, .bit_off = 0}, 741efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 742efcd0107SNeil Armstrong .reg_off = 0x28330, .bit_off = 0}, 743efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 744efcd0107SNeil Armstrong .reg_off = 0x2a330, .bit_off = 0}, 745d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA4] = { 746efcd0107SNeil Armstrong .reg_off = 0x2c330, .bit_off = 0}, 747d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA5] = { 748efcd0107SNeil Armstrong .reg_off = 0x2e330, .bit_off = 0}, 749efcd0107SNeil Armstrong .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 750efcd0107SNeil Armstrong .reg_off = 0x2bc, .bit_off = 20}, 751efcd0107SNeil Armstrong }, 752efcd0107SNeil Armstrong }; 753efcd0107SNeil Armstrong 7545334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 7555334087eSLoic Poulain { 7565334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 7575334087eSLoic Poulain .base = 0x0, .len = 0x494, 7585334087eSLoic Poulain .features = 0, 7595334087eSLoic Poulain .highest_bank_bit = 0x2, 7605334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 7615334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 7625334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 7635334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 7645334087eSLoic Poulain }, 7655334087eSLoic Poulain }; 7665334087eSLoic Poulain 76725fdd593SJeykumar Sankaran /************************************************************* 76825fdd593SJeykumar Sankaran * CTL sub blocks config 76925fdd593SJeykumar Sankaran *************************************************************/ 77094391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 77194391a14SAngeloGioacchino Del Regno { 77294391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 77394391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 77494391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 77594391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 77694391a14SAngeloGioacchino Del Regno }, 77794391a14SAngeloGioacchino Del Regno { 77894391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 77994391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 78094391a14SAngeloGioacchino Del Regno .features = 0, 78194391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 78294391a14SAngeloGioacchino Del Regno }, 78394391a14SAngeloGioacchino Del Regno { 78494391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 78594391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 78694391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 78794391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 78894391a14SAngeloGioacchino Del Regno }, 78994391a14SAngeloGioacchino Del Regno { 79094391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 79194391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 79294391a14SAngeloGioacchino Del Regno .features = 0, 79394391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 79494391a14SAngeloGioacchino Del Regno }, 79594391a14SAngeloGioacchino Del Regno { 79694391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 79794391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 79894391a14SAngeloGioacchino Del Regno .features = 0, 79994391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 80094391a14SAngeloGioacchino Del Regno }, 80194391a14SAngeloGioacchino Del Regno }; 80294391a14SAngeloGioacchino Del Regno 803abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 80425fdd593SJeykumar Sankaran { 80525fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 80625fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 807667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 808667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 80925fdd593SJeykumar Sankaran }, 81025fdd593SJeykumar Sankaran { 81125fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 81225fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 813667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 814667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 81525fdd593SJeykumar Sankaran }, 81625fdd593SJeykumar Sankaran { 81725fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 81825fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 819667e9985SDmitry Baryshkov .features = 0, 820667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 82125fdd593SJeykumar Sankaran }, 82225fdd593SJeykumar Sankaran { 82325fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 82425fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 825667e9985SDmitry Baryshkov .features = 0, 826667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 82725fdd593SJeykumar Sankaran }, 82825fdd593SJeykumar Sankaran { 82925fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 83025fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 831667e9985SDmitry Baryshkov .features = 0, 832667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 83325fdd593SJeykumar Sankaran }, 83425fdd593SJeykumar Sankaran }; 83525fdd593SJeykumar Sankaran 8367bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 8377bdc0c4bSKalyan Thota { 8387bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 839ce6bd00aSDmitry Baryshkov .base = 0x1000, .len = 0x1dc, 840667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 841667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8427bdc0c4bSKalyan Thota }, 8437bdc0c4bSKalyan Thota { 8447bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 845ce6bd00aSDmitry Baryshkov .base = 0x1200, .len = 0x1dc, 846667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 847667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8487bdc0c4bSKalyan Thota }, 8497bdc0c4bSKalyan Thota { 8507bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 851ce6bd00aSDmitry Baryshkov .base = 0x1400, .len = 0x1dc, 852667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 853667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8547bdc0c4bSKalyan Thota }, 8557bdc0c4bSKalyan Thota }; 8567bdc0c4bSKalyan Thota 8574a352c2fSBjorn Andersson static const struct dpu_ctl_cfg sc8280xp_ctl[] = { 8584a352c2fSBjorn Andersson { 8594a352c2fSBjorn Andersson .name = "ctl_0", .id = CTL_0, 8604a352c2fSBjorn Andersson .base = 0x15000, .len = 0x204, 8614a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8624a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8634a352c2fSBjorn Andersson }, 8644a352c2fSBjorn Andersson { 8654a352c2fSBjorn Andersson .name = "ctl_1", .id = CTL_1, 8664a352c2fSBjorn Andersson .base = 0x16000, .len = 0x204, 8674a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8684a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 8694a352c2fSBjorn Andersson }, 8704a352c2fSBjorn Andersson { 8714a352c2fSBjorn Andersson .name = "ctl_2", .id = CTL_2, 8724a352c2fSBjorn Andersson .base = 0x17000, .len = 0x204, 8734a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8744a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 8754a352c2fSBjorn Andersson }, 8764a352c2fSBjorn Andersson { 8774a352c2fSBjorn Andersson .name = "ctl_3", .id = CTL_3, 8784a352c2fSBjorn Andersson .base = 0x18000, .len = 0x204, 8794a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8804a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 8814a352c2fSBjorn Andersson }, 8824a352c2fSBjorn Andersson { 8834a352c2fSBjorn Andersson .name = "ctl_4", .id = CTL_4, 8844a352c2fSBjorn Andersson .base = 0x19000, .len = 0x204, 8854a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8864a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 8874a352c2fSBjorn Andersson }, 8884a352c2fSBjorn Andersson { 8894a352c2fSBjorn Andersson .name = "ctl_5", .id = CTL_5, 8904a352c2fSBjorn Andersson .base = 0x1a000, .len = 0x204, 8914a352c2fSBjorn Andersson .features = CTL_SC7280_MASK, 8924a352c2fSBjorn Andersson .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 8934a352c2fSBjorn Andersson }, 8944a352c2fSBjorn Andersson }; 8954a352c2fSBjorn Andersson 896386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 897386fced3SJonathan Marek { 898386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 899386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 900667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 901667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 902386fced3SJonathan Marek }, 903386fced3SJonathan Marek { 904386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 905386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 906667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 907667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 908386fced3SJonathan Marek }, 909386fced3SJonathan Marek { 910386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 911386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 912667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 913667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 914386fced3SJonathan Marek }, 915386fced3SJonathan Marek { 916386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 917386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 918667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 919667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 920386fced3SJonathan Marek }, 921386fced3SJonathan Marek { 922386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 923386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 924667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 925667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 926386fced3SJonathan Marek }, 927386fced3SJonathan Marek { 928386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 929386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 930667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 931667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 932386fced3SJonathan Marek }, 933386fced3SJonathan Marek }; 934386fced3SJonathan Marek 9350e91bcbbSRobert Foss static const struct dpu_ctl_cfg sm8350_ctl[] = { 9360e91bcbbSRobert Foss { 9370e91bcbbSRobert Foss .name = "ctl_0", .id = CTL_0, 9380e91bcbbSRobert Foss .base = 0x15000, .len = 0x1e8, 9390e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9400e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 9410e91bcbbSRobert Foss }, 9420e91bcbbSRobert Foss { 9430e91bcbbSRobert Foss .name = "ctl_1", .id = CTL_1, 9440e91bcbbSRobert Foss .base = 0x16000, .len = 0x1e8, 9450e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 9460e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 9470e91bcbbSRobert Foss }, 9480e91bcbbSRobert Foss { 9490e91bcbbSRobert Foss .name = "ctl_2", .id = CTL_2, 9500e91bcbbSRobert Foss .base = 0x17000, .len = 0x1e8, 9510e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9520e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 9530e91bcbbSRobert Foss }, 9540e91bcbbSRobert Foss { 9550e91bcbbSRobert Foss .name = "ctl_3", .id = CTL_3, 9560e91bcbbSRobert Foss .base = 0x18000, .len = 0x1e8, 9570e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9580e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 9590e91bcbbSRobert Foss }, 9600e91bcbbSRobert Foss { 9610e91bcbbSRobert Foss .name = "ctl_4", .id = CTL_4, 9620e91bcbbSRobert Foss .base = 0x19000, .len = 0x1e8, 9630e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9640e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 9650e91bcbbSRobert Foss }, 9660e91bcbbSRobert Foss { 9670e91bcbbSRobert Foss .name = "ctl_5", .id = CTL_5, 9680e91bcbbSRobert Foss .base = 0x1a000, .len = 0x1e8, 9690e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 9700e91bcbbSRobert Foss .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 9710e91bcbbSRobert Foss }, 9720e91bcbbSRobert Foss }; 9730e91bcbbSRobert Foss 974100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = { 975100d7ef6SDmitry Baryshkov { 976100d7ef6SDmitry Baryshkov .name = "ctl_0", .id = CTL_0, 977100d7ef6SDmitry Baryshkov .base = 0x15000, .len = 0x204, 978100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 979100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 980100d7ef6SDmitry Baryshkov }, 981100d7ef6SDmitry Baryshkov { 982100d7ef6SDmitry Baryshkov .name = "ctl_1", .id = CTL_1, 9836c021d77SDmitry Baryshkov .base = 0x16000, .len = 0x204, 9840e91bcbbSRobert Foss .features = BIT(DPU_CTL_SPLIT_DISPLAY) | CTL_SC7280_MASK, 985100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 986100d7ef6SDmitry Baryshkov }, 987100d7ef6SDmitry Baryshkov { 988100d7ef6SDmitry Baryshkov .name = "ctl_2", .id = CTL_2, 9896c021d77SDmitry Baryshkov .base = 0x17000, .len = 0x204, 9900e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 991100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 992100d7ef6SDmitry Baryshkov }, 993100d7ef6SDmitry Baryshkov { 994100d7ef6SDmitry Baryshkov .name = "ctl_3", .id = CTL_3, 9956c021d77SDmitry Baryshkov .base = 0x18000, .len = 0x204, 9960e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 997100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 998100d7ef6SDmitry Baryshkov }, 999100d7ef6SDmitry Baryshkov { 1000100d7ef6SDmitry Baryshkov .name = "ctl_4", .id = CTL_4, 10016c021d77SDmitry Baryshkov .base = 0x19000, .len = 0x204, 10020e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1003100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 1004100d7ef6SDmitry Baryshkov }, 1005100d7ef6SDmitry Baryshkov { 1006100d7ef6SDmitry Baryshkov .name = "ctl_5", .id = CTL_5, 10076c021d77SDmitry Baryshkov .base = 0x1a000, .len = 0x204, 10080e91bcbbSRobert Foss .features = CTL_SC7280_MASK, 1009100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1010100d7ef6SDmitry Baryshkov }, 1011100d7ef6SDmitry Baryshkov }; 1012100d7ef6SDmitry Baryshkov 1013efcd0107SNeil Armstrong static const struct dpu_ctl_cfg sm8550_ctl[] = { 1014efcd0107SNeil Armstrong { 1015efcd0107SNeil Armstrong .name = "ctl_0", .id = CTL_0, 1016efcd0107SNeil Armstrong .base = 0x15000, .len = 0x290, 1017e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1018efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1019efcd0107SNeil Armstrong }, 1020efcd0107SNeil Armstrong { 1021efcd0107SNeil Armstrong .name = "ctl_1", .id = CTL_1, 1022efcd0107SNeil Armstrong .base = 0x16000, .len = 0x290, 1023e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK | BIT(DPU_CTL_SPLIT_DISPLAY), 1024efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1025efcd0107SNeil Armstrong }, 1026efcd0107SNeil Armstrong { 1027efcd0107SNeil Armstrong .name = "ctl_2", .id = CTL_2, 1028efcd0107SNeil Armstrong .base = 0x17000, .len = 0x290, 1029e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1030efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1031efcd0107SNeil Armstrong }, 1032efcd0107SNeil Armstrong { 1033efcd0107SNeil Armstrong .name = "ctl_3", .id = CTL_3, 1034efcd0107SNeil Armstrong .base = 0x18000, .len = 0x290, 1035e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1036efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1037efcd0107SNeil Armstrong }, 1038efcd0107SNeil Armstrong { 1039efcd0107SNeil Armstrong .name = "ctl_4", .id = CTL_4, 1040efcd0107SNeil Armstrong .base = 0x19000, .len = 0x290, 1041e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1042efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 1043efcd0107SNeil Armstrong }, 1044efcd0107SNeil Armstrong { 1045efcd0107SNeil Armstrong .name = "ctl_5", .id = CTL_5, 1046efcd0107SNeil Armstrong .base = 0x1a000, .len = 0x290, 1047e92a4ae1SDmitry Baryshkov .features = CTL_SM8550_MASK, 1048efcd0107SNeil Armstrong .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 1049efcd0107SNeil Armstrong }, 1050efcd0107SNeil Armstrong }; 1051efcd0107SNeil Armstrong 1052591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 1053591e34a0SKrishna Manikandan { 1054591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 1055591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 1056667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1057667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 1058591e34a0SKrishna Manikandan }, 1059591e34a0SKrishna Manikandan { 1060591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 1061591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 1062667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1063667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 1064591e34a0SKrishna Manikandan }, 1065591e34a0SKrishna Manikandan { 1066591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 1067591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 1068667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1069667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 1070591e34a0SKrishna Manikandan }, 1071591e34a0SKrishna Manikandan { 1072591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 1073591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 1074667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 1075667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 1076591e34a0SKrishna Manikandan }, 1077591e34a0SKrishna Manikandan }; 1078591e34a0SKrishna Manikandan 10795334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 10805334087eSLoic Poulain { 10815334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 10825334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 10835334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 10845334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 10855334087eSLoic Poulain }, 10865334087eSLoic Poulain }; 10875334087eSLoic Poulain 108825fdd593SJeykumar Sankaran /************************************************************* 108925fdd593SJeykumar Sankaran * SSPP sub blocks config 109025fdd593SJeykumar Sankaran *************************************************************/ 109125fdd593SJeykumar Sankaran 109225fdd593SJeykumar Sankaran /* SSPP common configuration */ 1093b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 109425fdd593SJeykumar Sankaran { \ 109525fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 109625fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 109725fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 109825fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 109925fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 110025fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1101b75ab05aSShubhashree Dhar .id = qseed_ver, \ 110225fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 110325fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 110425fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 110525fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 110625fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 1107e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 110825fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1109e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1110dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 1111dabfdd89SVinod Polimera } 1112dabfdd89SVinod Polimera 1113dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 1114dabfdd89SVinod Polimera { \ 1115dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 1116dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 1117dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 1118dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 1119dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 1120dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 1121dabfdd89SVinod Polimera .id = qseed_ver, \ 1122dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 1123dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 1124dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 1125dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 1126dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 1127dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 1128dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 1129dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 1130dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 113125fdd593SJeykumar Sankaran } 113225fdd593SJeykumar Sankaran 113325fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 113425fdd593SJeykumar Sankaran { \ 113525fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 113625fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 113725fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 113825fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 113925fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 114025fdd593SJeykumar Sankaran .format_list = plane_formats, \ 1141e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 114225fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 1143e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 114425fdd593SJeykumar Sankaran } 114525fdd593SJeykumar Sankaran 114694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 114794391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 114894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 114994391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 115094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 115194391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 115294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 115394391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 115494391a14SAngeloGioacchino Del Regno 1155dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 1156dabfdd89SVinod Polimera .rot_maxheight = 1088, 1157dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 1158dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 1159dabfdd89SVinod Polimera }; 1160dabfdd89SVinod Polimera 1161b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 1162b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 1163b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 1164b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 1165b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 1166b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 1167b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 1168b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 116925fdd593SJeykumar Sankaran 117025fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 117125fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 117225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 117325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 117425fdd593SJeykumar Sankaran 11758f940ddbSKonrad Dybcio #define SSPP_BLK(_name, _id, _base, _len, _features, \ 117607ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 117725fdd593SJeykumar Sankaran { \ 117825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 11798f940ddbSKonrad Dybcio .base = _base, .len = _len, \ 118007ca1fc0SSravanthi Kollukuduru .features = _features, \ 118125fdd593SJeykumar Sankaran .sblk = &_sblk, \ 118225fdd593SJeykumar Sankaran .xin_id = _xinid, \ 118307ca1fc0SSravanthi Kollukuduru .type = _type, \ 118425fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 118525fdd593SJeykumar Sankaran } 118625fdd593SJeykumar Sankaran 118794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 11888f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1ac, VIG_MSM8998_MASK, 118994391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 11908f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1ac, VIG_MSM8998_MASK, 119194391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 11928f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1ac, VIG_MSM8998_MASK, 119394391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 11948f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1ac, VIG_MSM8998_MASK, 119594391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 11968f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1ac, DMA_MSM8998_MASK, 119794391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 11988f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1ac, DMA_MSM8998_MASK, 119994391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 12008f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1ac, DMA_CURSOR_MSM8998_MASK, 12010abb6a24SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 12028f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1ac, DMA_CURSOR_MSM8998_MASK, 12030abb6a24SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 120494391a14SAngeloGioacchino Del Regno }; 120594391a14SAngeloGioacchino Del Regno 1206abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 12078f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1c8, VIG_SDM845_MASK_SDMA, 120807ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12098f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1c8, VIG_SDM845_MASK_SDMA, 121007ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 12118f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1c8, VIG_SDM845_MASK_SDMA, 121207ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 12138f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1c8, VIG_SDM845_MASK_SDMA, 121407ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 12158f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1c8, DMA_SDM845_MASK_SDMA, 121607ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12178f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1c8, DMA_SDM845_MASK_SDMA, 121807ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 12198f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA, 1220d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 12218f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA, 1222d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 122325fdd593SJeykumar Sankaran }; 122425fdd593SJeykumar Sankaran 1225b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 1226b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 1227b75ab05aSShubhashree Dhar 1228dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 1229dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 1230dabfdd89SVinod Polimera 12317bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 12328f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK, 1233b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12348f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 12357bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12368f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK, 1237d6181c18SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 12388f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK, 1239d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 12407bdc0c4bSKalyan Thota }; 12417bdc0c4bSKalyan Thota 12423581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 124338164e99SDmitry Baryshkov _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED4); 12443581b706SAdam Skladowski 12453581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 12468f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK, 12473581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12488f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 12493581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12503581b706SAdam Skladowski }; 12513581b706SAdam Skladowski 1252d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 125303c0c3cbSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 1254d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 125503c0c3cbSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 1256d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 125703c0c3cbSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 1258d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 125903c0c3cbSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 1260d21fc5dfSDmitry Baryshkov 1261d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 12628f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK_SDMA, 1263d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12648f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1f8, VIG_SC7180_MASK_SDMA, 1265d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 12668f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1f8, VIG_SC7180_MASK_SDMA, 1267d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 12688f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1f8, VIG_SC7180_MASK_SDMA, 1269d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 12708f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA, 1271d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 12728f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_SDM845_MASK_SDMA, 1273d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 12748f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1275d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 12768f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1277d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 1278d21fc5dfSDmitry Baryshkov }; 1279d21fc5dfSDmitry Baryshkov 1280100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 1281c7da17b6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 1282100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 1283c7da17b6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 1284100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 1285c7da17b6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 1286100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 1287c7da17b6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 1288100d7ef6SDmitry Baryshkov 1289100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = { 12908f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x32c, VIG_SC7180_MASK, 1291100d7ef6SDmitry Baryshkov sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 12928f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x32c, VIG_SC7180_MASK, 1293100d7ef6SDmitry Baryshkov sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 12948f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x32c, VIG_SC7180_MASK, 1295100d7ef6SDmitry Baryshkov sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 12968f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x32c, VIG_SC7180_MASK, 1297100d7ef6SDmitry Baryshkov sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 12988f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x32c, DMA_SDM845_MASK, 1299100d7ef6SDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13008f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x32c, DMA_SDM845_MASK, 1301100d7ef6SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13028f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x32c, DMA_CURSOR_SDM845_MASK, 1303d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 13048f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x32c, DMA_CURSOR_SDM845_MASK, 1305d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 1306100d7ef6SDmitry Baryshkov }; 1307100d7ef6SDmitry Baryshkov 1308efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 = 1309d113d267SDmitry Baryshkov _VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED4); 1310efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 = 1311d113d267SDmitry Baryshkov _VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED4); 1312efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 = 1313d113d267SDmitry Baryshkov _VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED4); 1314efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 = 1315d113d267SDmitry Baryshkov _VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED4); 1316efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5); 1317e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6); 1318efcd0107SNeil Armstrong 1319efcd0107SNeil Armstrong static const struct dpu_sspp_cfg sm8550_sspp[] = { 13208f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x344, VIG_SC7180_MASK, 1321efcd0107SNeil Armstrong sm8550_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13228f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x344, VIG_SC7180_MASK, 1323efcd0107SNeil Armstrong sm8550_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13248f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x344, VIG_SC7180_MASK, 1325efcd0107SNeil Armstrong sm8550_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13268f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x344, VIG_SC7180_MASK, 1327efcd0107SNeil Armstrong sm8550_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13288f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x344, DMA_SDM845_MASK, 1329efcd0107SNeil Armstrong sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13308f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x344, DMA_SDM845_MASK, 1331efcd0107SNeil Armstrong sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13328f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x344, DMA_SDM845_MASK, 1333efcd0107SNeil Armstrong sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 13348f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x344, DMA_SDM845_MASK, 1335efcd0107SNeil Armstrong sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 13368f940ddbSKonrad Dybcio SSPP_BLK("sspp_12", SSPP_DMA4, 0x2c000, 0x344, DMA_CURSOR_SDM845_MASK, 1337d6181c18SDmitry Baryshkov sm8550_dma_sblk_4, 14, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA4), 13388f940ddbSKonrad Dybcio SSPP_BLK("sspp_13", SSPP_DMA5, 0x2e000, 0x344, DMA_CURSOR_SDM845_MASK, 1339d6181c18SDmitry Baryshkov sm8550_dma_sblk_5, 15, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA5), 1340efcd0107SNeil Armstrong }; 1341efcd0107SNeil Armstrong 1342591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 13438f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7280_MASK_SDMA, 1344dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13458f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA, 1346591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13478f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1348d6181c18SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13498f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 1350d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 1351591e34a0SKrishna Manikandan }; 1352591e34a0SKrishna Manikandan 13534a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 = 1354b3587cb6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 13554a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 = 1356b3587cb6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 13574a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 = 1358b3587cb6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 13594a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 = 1360b3587cb6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 13614a352c2fSBjorn Andersson 13624a352c2fSBjorn Andersson static const struct dpu_sspp_cfg sc8280xp_sspp[] = { 13638f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x2ac, VIG_SC7180_MASK, 13644a352c2fSBjorn Andersson sc8280xp_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 13658f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x2ac, VIG_SC7180_MASK, 13664a352c2fSBjorn Andersson sc8280xp_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 13678f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x2ac, VIG_SC7180_MASK, 13684a352c2fSBjorn Andersson sc8280xp_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 13698f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x2ac, VIG_SC7180_MASK, 13704a352c2fSBjorn Andersson sc8280xp_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 13718f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x2ac, DMA_SDM845_MASK, 13724a352c2fSBjorn Andersson sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 13738f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x2ac, DMA_SDM845_MASK, 13744a352c2fSBjorn Andersson sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 13758f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x2ac, DMA_CURSOR_SDM845_MASK, 1376d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 13778f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x2ac, DMA_CURSOR_SDM845_MASK, 1378d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 13794a352c2fSBjorn Andersson }; 13805334087eSLoic Poulain 13815334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 13825334087eSLoic Poulain { \ 13835334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 13845334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 13855334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 13865334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 13875334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 13885334087eSLoic Poulain .format_list = plane_formats_yuv, \ 13895334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 13905334087eSLoic Poulain .virt_format_list = plane_formats, \ 13915334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 13925334087eSLoic Poulain } 13935334087eSLoic Poulain 13945334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 13955334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 13965334087eSLoic Poulain 13975334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 13988f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_QCM2290_MASK, 13995334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 14008f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 14015334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 14025334087eSLoic Poulain }; 14035334087eSLoic Poulain 140425fdd593SJeykumar Sankaran /************************************************************* 140525fdd593SJeykumar Sankaran * MIXER sub blocks config 140625fdd593SJeykumar Sankaran *************************************************************/ 14077bdc0c4bSKalyan Thota 1408e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 140925fdd593SJeykumar Sankaran { \ 141025fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 141125fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 14127bdc0c4bSKalyan Thota .features = _fmask, \ 14137bdc0c4bSKalyan Thota .sblk = _sblk, \ 141425fdd593SJeykumar Sankaran .pingpong = _pp, \ 1415e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1416e47616dfSKalyan Thota .dspp = _dspp \ 141725fdd593SJeykumar Sankaran } 141825fdd593SJeykumar Sankaran 141994391a14SAngeloGioacchino Del Regno /* MSM8998 */ 142094391a14SAngeloGioacchino Del Regno 142194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 142294391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 142394391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 142494391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 142594391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 142694391a14SAngeloGioacchino Del Regno 0x260, 0x290 142794391a14SAngeloGioacchino Del Regno }, 142894391a14SAngeloGioacchino Del Regno }; 142994391a14SAngeloGioacchino Del Regno 143094391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 14312d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 143294391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 14332d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 143494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 14352d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 143694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 14372d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 143894391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14392d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 144094391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 14412d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 144294391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 144394391a14SAngeloGioacchino Del Regno }; 144494391a14SAngeloGioacchino Del Regno 144594391a14SAngeloGioacchino Del Regno /* SDM845 */ 144694391a14SAngeloGioacchino Del Regno 144794391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 144894391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 144994391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 145094391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 145194391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 145294391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 145394391a14SAngeloGioacchino Del Regno }, 145494391a14SAngeloGioacchino Del Regno }; 145594391a14SAngeloGioacchino Del Regno 1456abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 14577bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1458e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 14597bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1460e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 14617bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1462e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 14637bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1464e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14657bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1466e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 14677bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1468e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 14697bdc0c4bSKalyan Thota }; 14707bdc0c4bSKalyan Thota 14717bdc0c4bSKalyan Thota /* SC7180 */ 14727bdc0c4bSKalyan Thota 14737bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 14747bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 14757bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 14767bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 14777bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 14787bdc0c4bSKalyan Thota }, 14797bdc0c4bSKalyan Thota }; 14807bdc0c4bSKalyan Thota 14817bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 148200feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1483e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 148400feff8fSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1485e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 148625fdd593SJeykumar Sankaran }; 148725fdd593SJeykumar Sankaran 14884a352c2fSBjorn Andersson /* SC8280XP */ 14894a352c2fSBjorn Andersson 14904a352c2fSBjorn Andersson static const struct dpu_lm_cfg sc8280xp_lm[] = { 14914a352c2fSBjorn Andersson LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 14924a352c2fSBjorn Andersson LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 14934a352c2fSBjorn Andersson LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_2, LM_3, DSPP_2), 14944a352c2fSBjorn Andersson LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_3, LM_2, DSPP_3), 14954a352c2fSBjorn Andersson LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 14964a352c2fSBjorn Andersson LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 14974a352c2fSBjorn Andersson }; 14984a352c2fSBjorn Andersson 1499386fced3SJonathan Marek /* SM8150 */ 1500386fced3SJonathan Marek 1501386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1502386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 150305ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1504386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 150505ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1506386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1507386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1508386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1509386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1510386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1511386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1512386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1513386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1514386fced3SJonathan Marek }; 1515386fced3SJonathan Marek 1516591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 151700feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1518fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 151900feff8fSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1520591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 152100feff8fSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1522591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1523591e34a0SKrishna Manikandan }; 1524591e34a0SKrishna Manikandan 15255334087eSLoic Poulain /* QCM2290 */ 15265334087eSLoic Poulain 15275334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 1528da06be8bSDmitry Baryshkov .maxwidth = DEFAULT_DPU_LINE_WIDTH, 15295334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 15305334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 15315334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 15325334087eSLoic Poulain }, 15335334087eSLoic Poulain }; 15345334087eSLoic Poulain 15355334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 153600feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK, 15375334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 15385334087eSLoic Poulain }; 15395334087eSLoic Poulain 154025fdd593SJeykumar Sankaran /************************************************************* 1541e47616dfSKalyan Thota * DSPP sub blocks config 1542e47616dfSKalyan Thota *************************************************************/ 154394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 154494391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 154594391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 154694391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 154794391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 154894391a14SAngeloGioacchino Del Regno }; 154994391a14SAngeloGioacchino Del Regno 15504259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 15514259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 15524259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 15534259ff7aSKalyan Thota }; 15544259ff7aSKalyan Thota 155505ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 155605ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 155705ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 155805ae91d9SDmitry Baryshkov }; 155905ae91d9SDmitry Baryshkov 1560862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1561e47616dfSKalyan Thota {\ 1562e47616dfSKalyan Thota .name = _name, .id = _id, \ 1563e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1564862314bcSAngeloGioacchino Del Regno .features = _mask, \ 156505ae91d9SDmitry Baryshkov .sblk = _sblk \ 1566e47616dfSKalyan Thota } 1567e47616dfSKalyan Thota 156894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 156994391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 157094391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 157194391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 157294391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 157394391a14SAngeloGioacchino Del Regno }; 157494391a14SAngeloGioacchino Del Regno 1575e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1576862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1577862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 157805ae91d9SDmitry Baryshkov }; 157905ae91d9SDmitry Baryshkov 158005ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1581862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1582862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1583862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1584862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1585862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1586862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1587862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1588862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1589e47616dfSKalyan Thota }; 1590386fced3SJonathan Marek 15915334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 15925334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 15935334087eSLoic Poulain &sm8150_dspp_sblk), 15945334087eSLoic Poulain }; 15955334087eSLoic Poulain 1596e47616dfSKalyan Thota /************************************************************* 159725fdd593SJeykumar Sankaran * PINGPONG sub blocks config 159825fdd593SJeykumar Sankaran *************************************************************/ 159925fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 160025fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 160125fdd593SJeykumar Sankaran .version = 0x1}, 160225fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 160325fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 160425fdd593SJeykumar Sankaran }; 160525fdd593SJeykumar Sankaran 160625fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 160725fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 160825fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 160925fdd593SJeykumar Sankaran }; 161025fdd593SJeykumar Sankaran 1611591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1612591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1613591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1614591e34a0SKrishna Manikandan }; 1615591e34a0SKrishna Manikandan 1616efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 1617efcd0107SNeil Armstrong {\ 1618efcd0107SNeil Armstrong .name = _name, .id = _id, \ 1619efcd0107SNeil Armstrong .base = _base, .len = 0, \ 1620efcd0107SNeil Armstrong .features = BIT(DPU_PINGPONG_DITHER), \ 1621efcd0107SNeil Armstrong .merge_3d = _merge_3d, \ 1622efcd0107SNeil Armstrong .sblk = &_sblk, \ 1623efcd0107SNeil Armstrong .intr_done = _done, \ 1624efcd0107SNeil Armstrong .intr_rdptr = _rdptr, \ 1625efcd0107SNeil Armstrong } 1626667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 162725fdd593SJeykumar Sankaran {\ 162825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 162925fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 163025fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 16314369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1632667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1633667e9985SDmitry Baryshkov .intr_done = _done, \ 1634667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 163525fdd593SJeykumar Sankaran } 1636667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 163725fdd593SJeykumar Sankaran {\ 163825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 163925fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 164025fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 16414369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1642667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1643667e9985SDmitry Baryshkov .intr_done = _done, \ 1644667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 164525fdd593SJeykumar Sankaran } 164625fdd593SJeykumar Sankaran 1647abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1648667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1649667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1650667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1651667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1652667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1653667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1654667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1655667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1656667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1657667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1658667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1659667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 166025fdd593SJeykumar Sankaran }; 166125fdd593SJeykumar Sankaran 1662*ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc7180_pp[] = { 1663667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1664667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 16657bdc0c4bSKalyan Thota }; 16667bdc0c4bSKalyan Thota 1667*ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc8280xp_pp[] = { 16684a352c2fSBjorn Andersson PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 16694a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), -1), 16704a352c2fSBjorn Andersson PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 16714a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), -1), 16724a352c2fSBjorn Andersson PP_BLK_TE("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk_te, 16734a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), -1), 16744a352c2fSBjorn Andersson PP_BLK_TE("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk_te, 16754a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), -1), 16764a352c2fSBjorn Andersson PP_BLK_TE("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk_te, 16774a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), -1), 16784a352c2fSBjorn Andersson PP_BLK_TE("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk_te, 16794a352c2fSBjorn Andersson DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), -1), 16804a352c2fSBjorn Andersson }; 16814a352c2fSBjorn Andersson 1682386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1683667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1684667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1685667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1686667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1687667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1688667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1689667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1690667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1691667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1692667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1693667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1694667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1695667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1696667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1697667e9985SDmitry Baryshkov -1), 1698667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 16993431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1700667e9985SDmitry Baryshkov -1), 17014369c93cSDmitry Baryshkov }; 17024369c93cSDmitry Baryshkov 17030e91bcbbSRobert Foss static const struct dpu_pingpong_cfg sm8350_pp[] = { 17040e91bcbbSRobert Foss PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 17050e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17060e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17070e91bcbbSRobert Foss PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 17080e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 17090e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 17100e91bcbbSRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 17110e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 17120e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 17130e91bcbbSRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 17140e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 17150e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 17160e91bcbbSRobert Foss PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 17170e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 17180e91bcbbSRobert Foss -1), 17190e91bcbbSRobert Foss PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 17200e91bcbbSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 17210e91bcbbSRobert Foss -1), 17220e91bcbbSRobert Foss }; 17230e91bcbbSRobert Foss 17241a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = { 1725ce68153eSKuogee Hsieh PP_BLK("pingpong_0", PINGPONG_0, 0x69000, 0, sc7280_pp_sblk, -1, -1), 17261a5b5372SRobert Foss PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 17271a5b5372SRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 17281a5b5372SRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 17291a5b5372SRobert Foss }; 17301a5b5372SRobert Foss 1731*ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg qcm2290_pp[] = { 17325334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 17335334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 17345334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 17355334087eSLoic Poulain }; 17365334087eSLoic Poulain 1737100d7ef6SDmitry Baryshkov /* FIXME: interrupts */ 1738100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = { 1739100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 1740100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1741100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1742100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 1743100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1744100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1745100d7ef6SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 1746100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1747100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1748100d7ef6SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 1749100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1750100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1751100d7ef6SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 1752100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1753100d7ef6SDmitry Baryshkov -1), 1754100d7ef6SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 1755100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1756100d7ef6SDmitry Baryshkov -1), 1757100d7ef6SDmitry Baryshkov PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk, 1758100d7ef6SDmitry Baryshkov -1, 1759100d7ef6SDmitry Baryshkov -1), 1760100d7ef6SDmitry Baryshkov PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk, 1761100d7ef6SDmitry Baryshkov -1, 1762100d7ef6SDmitry Baryshkov -1), 1763100d7ef6SDmitry Baryshkov }; 1764100d7ef6SDmitry Baryshkov 1765efcd0107SNeil Armstrong static const struct dpu_pingpong_cfg sm8550_pp[] = { 1766efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sc7280_pp_sblk, 1767efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1768efcd0107SNeil Armstrong -1), 1769efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sc7280_pp_sblk, 1770efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1771efcd0107SNeil Armstrong -1), 1772efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sc7280_pp_sblk, 1773efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1774efcd0107SNeil Armstrong -1), 1775efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sc7280_pp_sblk, 1776efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1777efcd0107SNeil Armstrong -1), 1778efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sc7280_pp_sblk, 1779efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1780efcd0107SNeil Armstrong -1), 1781efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sc7280_pp_sblk, 1782efcd0107SNeil Armstrong DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1783efcd0107SNeil Armstrong -1), 1784efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_6", PINGPONG_6, 0x66000, MERGE_3D_3, sc7280_pp_sblk, 1785efcd0107SNeil Armstrong -1, 1786efcd0107SNeil Armstrong -1), 1787efcd0107SNeil Armstrong PP_BLK_DIPHER("pingpong_7", PINGPONG_7, 0x66400, MERGE_3D_3, sc7280_pp_sblk, 1788efcd0107SNeil Armstrong -1, 1789efcd0107SNeil Armstrong -1), 1790efcd0107SNeil Armstrong }; 1791efcd0107SNeil Armstrong 17924369c93cSDmitry Baryshkov /************************************************************* 17934369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 17944369c93cSDmitry Baryshkov *************************************************************/ 17954369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 17964369c93cSDmitry Baryshkov {\ 17974369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 17984369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 17994369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 18004369c93cSDmitry Baryshkov .sblk = NULL \ 18014369c93cSDmitry Baryshkov } 18024369c93cSDmitry Baryshkov 18034369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 18044369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 18054369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 18064369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1807386fced3SJonathan Marek }; 1808386fced3SJonathan Marek 18090e91bcbbSRobert Foss static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { 18100e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 18110e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 18120e91bcbbSRobert Foss MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 18130e91bcbbSRobert Foss }; 18140e91bcbbSRobert Foss 1815100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = { 1816100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1817100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1818100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1819100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00), 1820100d7ef6SDmitry Baryshkov }; 1821100d7ef6SDmitry Baryshkov 1822efcd0107SNeil Armstrong static const struct dpu_merge_3d_cfg sm8550_merge_3d[] = { 1823efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1824efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1825efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1826efcd0107SNeil Armstrong MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x66700), 1827efcd0107SNeil Armstrong }; 1828efcd0107SNeil Armstrong 18297c5ab05eSVinod Koul /************************************************************* 18307c5ab05eSVinod Koul * DSC sub blocks config 18317c5ab05eSVinod Koul *************************************************************/ 18329da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \ 18337c5ab05eSVinod Koul {\ 18347c5ab05eSVinod Koul .name = _name, .id = _id, \ 18357c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 18369da5daa0SMarijn Suijten .features = _features, \ 18377c5ab05eSVinod Koul } 18387c5ab05eSVinod Koul 1839fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sdm845_dsc[] = { 18409da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, 0), 18419da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, 0), 18429da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, 0), 18439da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, 0), 18449da5daa0SMarijn Suijten }; 18459da5daa0SMarijn Suijten 1846fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sm8150_dsc[] = { 18479da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)), 18489da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), 18499da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)), 18509da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)), 18517c5ab05eSVinod Koul }; 18527c5ab05eSVinod Koul 185325fdd593SJeykumar Sankaran /************************************************************* 185425fdd593SJeykumar Sankaran * INTF sub blocks config 185525fdd593SJeykumar Sankaran *************************************************************/ 18568399a5ffSKonrad Dybcio #define INTF_BLK(_name, _id, _base, _len, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 185725fdd593SJeykumar Sankaran {\ 185825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 18598399a5ffSKonrad Dybcio .base = _base, .len = _len, \ 1860cace3ac4SJonathan Marek .features = _features, \ 186125fdd593SJeykumar Sankaran .type = _type, \ 186225fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1863667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1864667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1865667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 186625fdd593SJeykumar Sankaran } 186725fdd593SJeykumar Sankaran 186894391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 18698399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 18708399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18718399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 18728399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 187394391a14SAngeloGioacchino Del Regno }; 187494391a14SAngeloGioacchino Del Regno 1875abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 18768399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 18778399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18788399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 18798399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 188025fdd593SJeykumar Sankaran }; 188125fdd593SJeykumar Sankaran 18827bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 18838399a5ffSKonrad 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), 18848399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18857bdc0c4bSKalyan Thota }; 18867bdc0c4bSKalyan Thota 1887386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 18888399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 18898399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18908399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 18918399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1892386fced3SJonathan Marek }; 1893386fced3SJonathan Marek 1894591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 18958399a5ffSKonrad 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), 18968399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 18978399a5ffSKonrad 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), 1898591e34a0SKrishna Manikandan }; 1899591e34a0SKrishna Manikandan 19000e91bcbbSRobert Foss static const struct dpu_intf_cfg sm8350_intf[] = { 19018399a5ffSKonrad 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), 19028399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x2c4, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19038399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x2c4, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19048399a5ffSKonrad 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), 19050e91bcbbSRobert Foss }; 19060e91bcbbSRobert Foss 1907f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 19088399a5ffSKonrad 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), 19098399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19108399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1911f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 19128399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 19138399a5ffSKonrad 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), 19148399a5ffSKonrad 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), 1915f3af2d6eSRob Clark }; 1916f3af2d6eSRob Clark 19174a352c2fSBjorn Andersson /* TODO: INTF 3, 8 and 7 are used for MST, marked as INTF_NONE for now */ 19184a352c2fSBjorn Andersson static const struct dpu_intf_cfg sc8280xp_intf[] = { 19198399a5ffSKonrad 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), 19208399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19218399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19228399a5ffSKonrad 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), 19238399a5ffSKonrad 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), 19248399a5ffSKonrad 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), 19258399a5ffSKonrad 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), 19268399a5ffSKonrad 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), 19278399a5ffSKonrad 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), 19284a352c2fSBjorn Andersson }; 19294a352c2fSBjorn Andersson 19305334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 19318399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x00000, 0x280, INTF_DP, 0, 0, 0, 0, 0, 0), 19328399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19335334087eSLoic Poulain }; 19345334087eSLoic Poulain 1935100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = { 19368399a5ffSKonrad 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), 19378399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19388399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19398399a5ffSKonrad 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), 1940100d7ef6SDmitry Baryshkov }; 1941100d7ef6SDmitry Baryshkov 1942efcd0107SNeil Armstrong static const struct dpu_intf_cfg sm8550_intf[] = { 19438399a5ffSKonrad 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), 1944efcd0107SNeil Armstrong /* TODO TE sub-blocks for intf1 & intf2 */ 19458399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x35000, 0x300, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 19468399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x36000, 0x300, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 19478399a5ffSKonrad 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), 1948efcd0107SNeil Armstrong }; 1949efcd0107SNeil Armstrong 195025fdd593SJeykumar Sankaran /************************************************************* 195153324b99SAbhinav Kumar * Writeback blocks config 195253324b99SAbhinav Kumar *************************************************************/ 195353324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1954a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 195553324b99SAbhinav Kumar { \ 195653324b99SAbhinav Kumar .name = _name, .id = _id, \ 195753324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 195853324b99SAbhinav Kumar .features = _features, \ 195953324b99SAbhinav Kumar .format_list = wb2_formats, \ 196053324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 196153324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 196253324b99SAbhinav Kumar .xin_id = __xin_id, \ 196353324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1964a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 196553324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 196653324b99SAbhinav Kumar } 196753324b99SAbhinav Kumar 196853324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 196953324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1970a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 197153324b99SAbhinav Kumar }; 197253324b99SAbhinav Kumar 197353324b99SAbhinav Kumar /************************************************************* 197425fdd593SJeykumar Sankaran * VBIF sub blocks config 197525fdd593SJeykumar Sankaran *************************************************************/ 197625fdd593SJeykumar Sankaran /* VBIF QOS remap */ 197794391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 197894391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1979abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1980abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 198125fdd593SJeykumar Sankaran 198294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 198394391a14SAngeloGioacchino Del Regno { 198494391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 198594391a14SAngeloGioacchino Del Regno .ot_limit = 2, 198694391a14SAngeloGioacchino Del Regno }, 198794391a14SAngeloGioacchino Del Regno { 198894391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 198994391a14SAngeloGioacchino Del Regno .ot_limit = 6, 199094391a14SAngeloGioacchino Del Regno }, 199194391a14SAngeloGioacchino Del Regno { 199294391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 199394391a14SAngeloGioacchino Del Regno .ot_limit = 16, 199494391a14SAngeloGioacchino Del Regno }, 199594391a14SAngeloGioacchino Del Regno }; 199694391a14SAngeloGioacchino Del Regno 199794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 199894391a14SAngeloGioacchino Del Regno { 1999606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 200094391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 200194391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 200294391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 200394391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 200494391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 2005c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 200694391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 200794391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 200894391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 200994391a14SAngeloGioacchino Del Regno }, 201094391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 201194391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 201294391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 201394391a14SAngeloGioacchino Del Regno }, 201494391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 201594391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 201694391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 201794391a14SAngeloGioacchino Del Regno }, 201894391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 201994391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 202094391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 202194391a14SAngeloGioacchino Del Regno }, 202294391a14SAngeloGioacchino Del Regno .memtype_count = 14, 202394391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 202494391a14SAngeloGioacchino Del Regno }, 202594391a14SAngeloGioacchino Del Regno }; 202694391a14SAngeloGioacchino Del Regno 2027abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 202825fdd593SJeykumar Sankaran { 2029606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 203025fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 203125fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 203225fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 2033c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 203425fdd593SJeykumar Sankaran .qos_rt_tbl = { 203525fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 203625fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 203725fdd593SJeykumar Sankaran }, 203825fdd593SJeykumar Sankaran .qos_nrt_tbl = { 203925fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 204025fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 204125fdd593SJeykumar Sankaran }, 204225fdd593SJeykumar Sankaran .memtype_count = 14, 204325fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 204425fdd593SJeykumar Sankaran }, 204525fdd593SJeykumar Sankaran }; 204625fdd593SJeykumar Sankaran 20474a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = { 20484a352c2fSBjorn Andersson .base = 0x0, 20494a352c2fSBjorn Andersson .version = 0x00020000, 20504a352c2fSBjorn Andersson .trigger_sel_off = 0x119c, 20514a352c2fSBjorn Andersson .xin_id = 7, 20524a352c2fSBjorn Andersson .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20534a352c2fSBjorn Andersson }; 20544a352c2fSBjorn Andersson 2055abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 205625fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 205725fdd593SJeykumar Sankaran }; 205825fdd593SJeykumar Sankaran 2059386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 2060386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 2061386fced3SJonathan Marek }; 2062386fced3SJonathan Marek 2063af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 2064af776a3eSJonathan Marek .base = 0x0, 2065af776a3eSJonathan Marek .version = 0x00010002, 2066af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 2067af776a3eSJonathan Marek .xin_id = 7, 2068af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2069af776a3eSJonathan Marek }; 2070af776a3eSJonathan Marek 20710e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 20720e91bcbbSRobert Foss .base = 0x400, 20730e91bcbbSRobert Foss .version = 0x00020000, 20740e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 20750e91bcbbSRobert Foss .xin_id = 7, 20760e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 20770e91bcbbSRobert Foss }; 20780e91bcbbSRobert Foss 2079100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 2080100d7ef6SDmitry Baryshkov .base = 0x0, 2081100d7ef6SDmitry Baryshkov .version = 0x00020000, 2082100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 2083100d7ef6SDmitry Baryshkov .xin_id = 7, 2084100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 2085100d7ef6SDmitry Baryshkov }; 2086100d7ef6SDmitry Baryshkov 208725fdd593SJeykumar Sankaran /************************************************************* 208825fdd593SJeykumar Sankaran * PERF data config 208925fdd593SJeykumar Sankaran *************************************************************/ 209025fdd593SJeykumar Sankaran 209125fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 209294391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 209394391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 209494391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 209594391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 209694391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 209794391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 209894391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 209994391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 210094391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 210194391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 210294391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 210394391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 210494391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 210594391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 210694391a14SAngeloGioacchino Del Regno }; 210794391a14SAngeloGioacchino Del Regno 2108abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 210925fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 211025fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 211125fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 211225fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 211325fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 211425fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 211525fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 211625fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 211725fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 211825fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 211925fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 212025fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 212125fdd593SJeykumar Sankaran }; 212225fdd593SJeykumar Sankaran 212394391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 212494391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 212594391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 212694391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 212794391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 212894391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 212994391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 213094391a14SAngeloGioacchino Del Regno }; 213194391a14SAngeloGioacchino Del Regno 21327bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 21337bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 21347bdc0c4bSKalyan Thota }; 21357bdc0c4bSKalyan Thota 2136386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 2137386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 2138386fced3SJonathan Marek }; 2139386fced3SJonathan Marek 2140f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 2141f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 2142f3af2d6eSRob Clark }; 2143f3af2d6eSRob Clark 21445334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 21455334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 21465334087eSLoic Poulain }; 21475334087eSLoic Poulain 2148abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 214925fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 215025fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 215125fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 215225fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 215325fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 215425fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 215525fdd593SJeykumar Sankaran }; 215625fdd593SJeykumar Sankaran 21577bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 21587bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 21597bdc0c4bSKalyan Thota }; 21607bdc0c4bSKalyan Thota 2161f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 2162f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 2163f3af2d6eSRob Clark }; 2164f3af2d6eSRob Clark 216594391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 216694391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 216794391a14SAngeloGioacchino Del Regno }; 216894391a14SAngeloGioacchino Del Regno 2169abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 217025fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 217125fdd593SJeykumar Sankaran }; 217225fdd593SJeykumar Sankaran 21737bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 21747bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 21757bdc0c4bSKalyan Thota }; 21767bdc0c4bSKalyan Thota 217794391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 217894391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 217994391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 218094391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 218194391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 218294391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 218394391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 218494391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 218594391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 218694391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 218794391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 218894391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 218994391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 219094391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 219194391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 219294391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 219394391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 219494391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 219594391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 219694391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 219794391a14SAngeloGioacchino Del Regno }, 219894391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 219994391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 220094391a14SAngeloGioacchino Del Regno }, 220194391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 220294391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 220394391a14SAngeloGioacchino Del Regno }, 220494391a14SAngeloGioacchino Del Regno }, 220594391a14SAngeloGioacchino Del Regno .cdp_cfg = { 220694391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 220794391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 220894391a14SAngeloGioacchino Del Regno }, 220994391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 221094391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 221194391a14SAngeloGioacchino Del Regno }; 221294391a14SAngeloGioacchino Del Regno 2213abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 221425fdd593SJeykumar Sankaran .max_bw_low = 6800000, 221525fdd593SJeykumar Sankaran .max_bw_high = 6800000, 221625fdd593SJeykumar Sankaran .min_core_ib = 2400000, 221725fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 221825fdd593SJeykumar Sankaran .min_dram_ib = 800000, 221925fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 222025fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 222125fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 222225fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 222325fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 222425fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 222525fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 222625fdd593SJeykumar Sankaran .amortizable_threshold = 25, 222725fdd593SJeykumar Sankaran .min_prefill_lines = 24, 222825fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 22295bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 223025fdd593SJeykumar Sankaran .qos_lut_tbl = { 223125fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 223225fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 223325fdd593SJeykumar Sankaran }, 223425fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 223525fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 223625fdd593SJeykumar Sankaran }, 223725fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 223825fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 223925fdd593SJeykumar Sankaran }, 224025fdd593SJeykumar Sankaran }, 224125fdd593SJeykumar Sankaran .cdp_cfg = { 224225fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 224325fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 224425fdd593SJeykumar Sankaran }, 22454f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 22464f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 224725fdd593SJeykumar Sankaran }; 224825fdd593SJeykumar Sankaran 22497bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 225071dc6c08SKrishna Manikandan .max_bw_low = 6800000, 225171dc6c08SKrishna Manikandan .max_bw_high = 6800000, 22527bdc0c4bSKalyan Thota .min_core_ib = 2400000, 22537bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 2254c33b7c03SKalyan Thota .min_dram_ib = 1600000, 2255c33b7c03SKalyan Thota .min_prefill_lines = 24, 22567bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22575bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22587bdc0c4bSKalyan Thota .qos_lut_tbl = { 22597bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22607bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 22617bdc0c4bSKalyan Thota }, 22627bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22637bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 22647bdc0c4bSKalyan Thota }, 22657bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22667bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 22677bdc0c4bSKalyan Thota }, 22687bdc0c4bSKalyan Thota }, 22697bdc0c4bSKalyan Thota .cdp_cfg = { 22707bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 22717bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 22727bdc0c4bSKalyan Thota }, 2273c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 2274c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 22757bdc0c4bSKalyan Thota }; 22767bdc0c4bSKalyan Thota 22773581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 22783581b706SAdam Skladowski .max_bw_low = 3100000, 22793581b706SAdam Skladowski .max_bw_high = 4000000, 22803581b706SAdam Skladowski .min_core_ib = 2400000, 22813581b706SAdam Skladowski .min_llcc_ib = 800000, 22823581b706SAdam Skladowski .min_dram_ib = 800000, 22833581b706SAdam Skladowski .min_prefill_lines = 24, 22843581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 22853581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 22863581b706SAdam Skladowski .qos_lut_tbl = { 22873581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 22883581b706SAdam Skladowski .entries = sc7180_qos_linear 22893581b706SAdam Skladowski }, 22903581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 22913581b706SAdam Skladowski .entries = sc7180_qos_macrotile 22923581b706SAdam Skladowski }, 22933581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 22943581b706SAdam Skladowski .entries = sc7180_qos_nrt 22953581b706SAdam Skladowski }, 22963581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 22973581b706SAdam Skladowski }, 22983581b706SAdam Skladowski .cdp_cfg = { 22993581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 23003581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 23013581b706SAdam Skladowski }, 23023581b706SAdam Skladowski .clk_inefficiency_factor = 105, 23033581b706SAdam Skladowski .bw_inefficiency_factor = 120, 23043581b706SAdam Skladowski }; 23053581b706SAdam Skladowski 2306386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 2307386fced3SJonathan Marek .max_bw_low = 12800000, 2308386fced3SJonathan Marek .max_bw_high = 12800000, 2309386fced3SJonathan Marek .min_core_ib = 2400000, 2310386fced3SJonathan Marek .min_llcc_ib = 800000, 2311386fced3SJonathan Marek .min_dram_ib = 800000, 23124f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 2313386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23145bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 2315386fced3SJonathan Marek .qos_lut_tbl = { 2316386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 2317386fced3SJonathan Marek .entries = sm8150_qos_linear 2318386fced3SJonathan Marek }, 2319386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2320386fced3SJonathan Marek .entries = sc7180_qos_macrotile 2321386fced3SJonathan Marek }, 2322386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2323386fced3SJonathan Marek .entries = sc7180_qos_nrt 2324386fced3SJonathan Marek }, 2325386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2326386fced3SJonathan Marek }, 2327386fced3SJonathan Marek .cdp_cfg = { 2328386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2329386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2330386fced3SJonathan Marek }, 23314f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 23324f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2333386fced3SJonathan Marek }; 2334386fced3SJonathan Marek 2335f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 2336f3af2d6eSRob Clark .max_bw_low = 9600000, 2337f3af2d6eSRob Clark .max_bw_high = 9600000, 2338f3af2d6eSRob Clark .min_core_ib = 2400000, 2339f3af2d6eSRob Clark .min_llcc_ib = 800000, 2340f3af2d6eSRob Clark .min_dram_ib = 800000, 2341f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 2342f3af2d6eSRob Clark .qos_lut_tbl = { 23434a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_linear), 23444a352c2fSBjorn Andersson .entries = sc7180_qos_linear 23454a352c2fSBjorn Andersson }, 23464a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 23474a352c2fSBjorn Andersson .entries = sc7180_qos_macrotile 23484a352c2fSBjorn Andersson }, 23494a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 23504a352c2fSBjorn Andersson .entries = sc7180_qos_nrt 23514a352c2fSBjorn Andersson }, 23524a352c2fSBjorn Andersson /* TODO: macrotile-qseed is different from macrotile */ 23534a352c2fSBjorn Andersson }, 23544a352c2fSBjorn Andersson .cdp_cfg = { 23554a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 1}, 23564a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 0} 23574a352c2fSBjorn Andersson }, 23584a352c2fSBjorn Andersson .clk_inefficiency_factor = 105, 23594a352c2fSBjorn Andersson .bw_inefficiency_factor = 120, 23604a352c2fSBjorn Andersson }; 23614a352c2fSBjorn Andersson 23624a352c2fSBjorn Andersson static const struct dpu_perf_cfg sc8280xp_perf_data = { 23634a352c2fSBjorn Andersson .max_bw_low = 13600000, 23644a352c2fSBjorn Andersson .max_bw_high = 18200000, 23654a352c2fSBjorn Andersson .min_core_ib = 2500000, 23664a352c2fSBjorn Andersson .min_llcc_ib = 0, 23674a352c2fSBjorn Andersson .min_dram_ib = 800000, 23684a352c2fSBjorn Andersson .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23694a352c2fSBjorn Andersson .qos_lut_tbl = { 2370f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 2371f3af2d6eSRob Clark .entries = sc8180x_qos_linear 2372f3af2d6eSRob Clark }, 2373f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 2374f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 2375f3af2d6eSRob Clark }, 2376f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2377f3af2d6eSRob Clark .entries = sc7180_qos_nrt 2378f3af2d6eSRob Clark }, 2379f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 2380f3af2d6eSRob Clark }, 2381f3af2d6eSRob Clark .cdp_cfg = { 2382f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 2383f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 2384f3af2d6eSRob Clark }, 2385f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 2386f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 2387f3af2d6eSRob Clark }; 2388f3af2d6eSRob Clark 2389af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 2390af776a3eSJonathan Marek .max_bw_low = 13700000, 2391af776a3eSJonathan Marek .max_bw_high = 16600000, 2392af776a3eSJonathan Marek .min_core_ib = 4800000, 2393af776a3eSJonathan Marek .min_llcc_ib = 0, 2394af776a3eSJonathan Marek .min_dram_ib = 800000, 23954f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 2396af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 23975bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 2398af776a3eSJonathan Marek .qos_lut_tbl = { 2399af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2400af776a3eSJonathan Marek .entries = sc7180_qos_linear 2401af776a3eSJonathan Marek }, 2402af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2403af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 2404af776a3eSJonathan Marek }, 2405af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2406af776a3eSJonathan Marek .entries = sc7180_qos_nrt 2407af776a3eSJonathan Marek }, 2408af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 2409af776a3eSJonathan Marek }, 2410af776a3eSJonathan Marek .cdp_cfg = { 2411af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 2412af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 2413af776a3eSJonathan Marek }, 24144f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 24154f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 2416af776a3eSJonathan Marek }; 2417af776a3eSJonathan Marek 2418100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = { 2419100d7ef6SDmitry Baryshkov .max_bw_low = 13600000, 2420100d7ef6SDmitry Baryshkov .max_bw_high = 18200000, 2421100d7ef6SDmitry Baryshkov .min_core_ib = 2500000, 2422100d7ef6SDmitry Baryshkov .min_llcc_ib = 0, 2423100d7ef6SDmitry Baryshkov .min_dram_ib = 800000, 2424100d7ef6SDmitry Baryshkov .min_prefill_lines = 35, 2425100d7ef6SDmitry Baryshkov /* FIXME: lut tables */ 2426100d7ef6SDmitry Baryshkov .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 2427100d7ef6SDmitry Baryshkov .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 2428100d7ef6SDmitry Baryshkov .qos_lut_tbl = { 2429100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_linear), 2430100d7ef6SDmitry Baryshkov .entries = sc7180_qos_linear 2431100d7ef6SDmitry Baryshkov }, 2432100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2433100d7ef6SDmitry Baryshkov .entries = sc7180_qos_macrotile 2434100d7ef6SDmitry Baryshkov }, 2435100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2436100d7ef6SDmitry Baryshkov .entries = sc7180_qos_nrt 2437100d7ef6SDmitry Baryshkov }, 2438100d7ef6SDmitry Baryshkov /* TODO: macrotile-qseed is different from macrotile */ 2439100d7ef6SDmitry Baryshkov }, 2440100d7ef6SDmitry Baryshkov .cdp_cfg = { 2441100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 1}, 2442100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 0} 2443100d7ef6SDmitry Baryshkov }, 2444100d7ef6SDmitry Baryshkov .clk_inefficiency_factor = 105, 2445100d7ef6SDmitry Baryshkov .bw_inefficiency_factor = 120, 2446100d7ef6SDmitry Baryshkov }; 2447100d7ef6SDmitry Baryshkov 2448591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 2449591e34a0SKrishna Manikandan .max_bw_low = 4700000, 2450591e34a0SKrishna Manikandan .max_bw_high = 8800000, 2451591e34a0SKrishna Manikandan .min_core_ib = 2500000, 2452591e34a0SKrishna Manikandan .min_llcc_ib = 0, 2453591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 2454591e34a0SKrishna Manikandan .min_prefill_lines = 24, 2455591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 24565bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 2457591e34a0SKrishna Manikandan .qos_lut_tbl = { 2458591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2459591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2460591e34a0SKrishna Manikandan }, 2461591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 2462591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 2463591e34a0SKrishna Manikandan }, 2464591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 2465591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 2466591e34a0SKrishna Manikandan }, 2467591e34a0SKrishna Manikandan }, 2468591e34a0SKrishna Manikandan .cdp_cfg = { 2469591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 2470591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 2471591e34a0SKrishna Manikandan }, 2472591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 2473591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 2474591e34a0SKrishna Manikandan }; 2475591e34a0SKrishna Manikandan 24760e91bcbbSRobert Foss static const struct dpu_perf_cfg sm8350_perf_data = { 24770e91bcbbSRobert Foss .max_bw_low = 11800000, 24780e91bcbbSRobert Foss .max_bw_high = 15500000, 24790e91bcbbSRobert Foss .min_core_ib = 2500000, 24800e91bcbbSRobert Foss .min_llcc_ib = 0, 24810e91bcbbSRobert Foss .min_dram_ib = 800000, 24820e91bcbbSRobert Foss .min_prefill_lines = 40, 24830e91bcbbSRobert Foss /* FIXME: lut tables */ 24840e91bcbbSRobert Foss .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 24850e91bcbbSRobert Foss .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 24860e91bcbbSRobert Foss .qos_lut_tbl = { 24870e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_linear), 24880e91bcbbSRobert Foss .entries = sc7180_qos_linear 24890e91bcbbSRobert Foss }, 24900e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 24910e91bcbbSRobert Foss .entries = sc7180_qos_macrotile 24920e91bcbbSRobert Foss }, 24930e91bcbbSRobert Foss {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 24940e91bcbbSRobert Foss .entries = sc7180_qos_nrt 24950e91bcbbSRobert Foss }, 24960e91bcbbSRobert Foss /* TODO: macrotile-qseed is different from macrotile */ 24970e91bcbbSRobert Foss }, 24980e91bcbbSRobert Foss .cdp_cfg = { 24990e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 1}, 25000e91bcbbSRobert Foss {.rd_enable = 1, .wr_enable = 0} 25010e91bcbbSRobert Foss }, 25020e91bcbbSRobert Foss .clk_inefficiency_factor = 105, 25030e91bcbbSRobert Foss .bw_inefficiency_factor = 120, 25040e91bcbbSRobert Foss }; 25050e91bcbbSRobert Foss 25065334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 25075334087eSLoic Poulain .max_bw_low = 2700000, 25085334087eSLoic Poulain .max_bw_high = 2700000, 25095334087eSLoic Poulain .min_core_ib = 1300000, 25105334087eSLoic Poulain .min_llcc_ib = 0, 25115334087eSLoic Poulain .min_dram_ib = 1600000, 25125334087eSLoic Poulain .min_prefill_lines = 24, 25135334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 25145334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 25155334087eSLoic Poulain .qos_lut_tbl = { 25165334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 25175334087eSLoic Poulain .entries = qcm2290_qos_linear 25185334087eSLoic Poulain }, 25195334087eSLoic Poulain }, 25205334087eSLoic Poulain .cdp_cfg = { 25215334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 25225334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 25235334087eSLoic Poulain }, 25245334087eSLoic Poulain .clk_inefficiency_factor = 105, 25255334087eSLoic Poulain .bw_inefficiency_factor = 120, 25265334087eSLoic Poulain }; 252725fdd593SJeykumar Sankaran /************************************************************* 2528de7d480fSDmitry Baryshkov * Hardware catalog 252925fdd593SJeykumar Sankaran *************************************************************/ 253025fdd593SJeykumar Sankaran 2531de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 253294391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 253394391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 253494391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 253594391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 253694391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 253794391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 253894391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 253994391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 254094391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 25416452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 25426452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 254394391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 254494391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 254594391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 254694391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 254794391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 254894391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 254994391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 2550477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 255194391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 255294391a14SAngeloGioacchino Del Regno }; 255394391a14SAngeloGioacchino Del Regno 2554de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 255525fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 255625fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 255725fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 255825fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 255925fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 256025fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 256125fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 256225fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 256325fdd593SJeykumar Sankaran .mixer = sdm845_lm, 256425fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 256525fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 25667c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 25677c5ab05eSVinod Koul .dsc = sdm845_dsc, 256825fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 256925fdd593SJeykumar Sankaran .intf = sdm845_intf, 257025fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 257125fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 257225fdd593SJeykumar Sankaran .reg_dma_count = 1, 2573481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2574477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 2575597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 257625fdd593SJeykumar Sankaran }; 257725fdd593SJeykumar Sankaran 2578de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 25797bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 25807bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 25817bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 25827bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 25837bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 25847bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 25857bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 25867bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 25877bdc0c4bSKalyan Thota .mixer = sc7180_lm, 2588e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2589e47616dfSKalyan Thota .dspp = sc7180_dspp, 25907bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 25917bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 25927bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 25937bdc0c4bSKalyan Thota .intf = sc7180_intf, 259451e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 259551e4d60eSAbhinav Kumar .wb = sm8250_wb, 25967bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 25977bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 25987bdc0c4bSKalyan Thota .reg_dma_count = 1, 2599481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2600477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 2601597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 26027bdc0c4bSKalyan Thota }; 26037bdc0c4bSKalyan Thota 26043581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 26053581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 26063581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 26073581b706SAdam Skladowski .mdp = sm6115_mdp, 26083581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 26093581b706SAdam Skladowski .ctl = qcm2290_ctl, 26103581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 26113581b706SAdam Skladowski .sspp = sm6115_sspp, 26123581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 26133581b706SAdam Skladowski .mixer = qcm2290_lm, 26143581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 26153581b706SAdam Skladowski .dspp = qcm2290_dspp, 26163581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 26173581b706SAdam Skladowski .pingpong = qcm2290_pp, 26183581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 26193581b706SAdam Skladowski .intf = qcm2290_intf, 26203581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 26213581b706SAdam Skladowski .vbif = sdm845_vbif, 26223581b706SAdam Skladowski .perf = &sm6115_perf_data, 26233581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 26243581b706SAdam Skladowski }; 26253581b706SAdam Skladowski 2626de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 2627386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 2628386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 2629386fced3SJonathan Marek .mdp = sdm845_mdp, 2630386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2631386fced3SJonathan Marek .ctl = sm8150_ctl, 2632386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 2633386fced3SJonathan Marek .sspp = sdm845_sspp, 2634386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2635386fced3SJonathan Marek .mixer = sm8150_lm, 263605ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 263705ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 26389da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 26399da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2640386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2641386fced3SJonathan Marek .pingpong = sm8150_pp, 26424369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 26434369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2644386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2645386fced3SJonathan Marek .intf = sm8150_intf, 2646386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2647386fced3SJonathan Marek .vbif = sdm845_vbif, 2648386fced3SJonathan Marek .reg_dma_count = 1, 2649481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2650477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 2651597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 2652386fced3SJonathan Marek }; 2653386fced3SJonathan Marek 2654de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 2655f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 2656f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 2657f3af2d6eSRob Clark .mdp = sc8180x_mdp, 2658f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 2659f3af2d6eSRob Clark .ctl = sm8150_ctl, 2660f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 2661f3af2d6eSRob Clark .sspp = sdm845_sspp, 2662f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 2663f3af2d6eSRob Clark .mixer = sm8150_lm, 2664f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 2665f3af2d6eSRob Clark .pingpong = sm8150_pp, 2666f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 2667f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 2668f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 2669f3af2d6eSRob Clark .intf = sc8180x_intf, 2670f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 2671f3af2d6eSRob Clark .vbif = sdm845_vbif, 2672f3af2d6eSRob Clark .reg_dma_count = 1, 2673481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2674477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 2675f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 2676f3af2d6eSRob Clark }; 2677f3af2d6eSRob Clark 26784a352c2fSBjorn Andersson static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = { 26794a352c2fSBjorn Andersson .caps = &sc8280xp_dpu_caps, 26804a352c2fSBjorn Andersson .mdp_count = ARRAY_SIZE(sc8280xp_mdp), 26814a352c2fSBjorn Andersson .mdp = sc8280xp_mdp, 26824a352c2fSBjorn Andersson .ctl_count = ARRAY_SIZE(sc8280xp_ctl), 26834a352c2fSBjorn Andersson .ctl = sc8280xp_ctl, 26844a352c2fSBjorn Andersson .sspp_count = ARRAY_SIZE(sc8280xp_sspp), 26854a352c2fSBjorn Andersson .sspp = sc8280xp_sspp, 26864a352c2fSBjorn Andersson .mixer_count = ARRAY_SIZE(sc8280xp_lm), 26874a352c2fSBjorn Andersson .mixer = sc8280xp_lm, 26884a352c2fSBjorn Andersson .dspp_count = ARRAY_SIZE(sm8150_dspp), 26894a352c2fSBjorn Andersson .dspp = sm8150_dspp, 26904a352c2fSBjorn Andersson .pingpong_count = ARRAY_SIZE(sc8280xp_pp), 26914a352c2fSBjorn Andersson .pingpong = sc8280xp_pp, 26924a352c2fSBjorn Andersson .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 26934a352c2fSBjorn Andersson .merge_3d = sm8350_merge_3d, 26944a352c2fSBjorn Andersson .intf_count = ARRAY_SIZE(sc8280xp_intf), 26954a352c2fSBjorn Andersson .intf = sc8280xp_intf, 26964a352c2fSBjorn Andersson .vbif_count = ARRAY_SIZE(sdm845_vbif), 26974a352c2fSBjorn Andersson .vbif = sdm845_vbif, 269883bb1f13SDmitry Baryshkov .reg_dma_count = 1, 269983bb1f13SDmitry Baryshkov .dma_cfg = &sc8280xp_regdma, 27004a352c2fSBjorn Andersson .perf = &sc8280xp_perf_data, 27014a352c2fSBjorn Andersson .mdss_irqs = IRQ_SC8280XP_MASK, 27024a352c2fSBjorn Andersson }; 27034a352c2fSBjorn Andersson 2704de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 2705af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 2706af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 2707af776a3eSJonathan Marek .mdp = sm8250_mdp, 2708af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2709af776a3eSJonathan Marek .ctl = sm8150_ctl, 2710d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 2711d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 2712af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2713af776a3eSJonathan Marek .mixer = sm8150_lm, 271405ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 271505ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 27169da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 27179da5daa0SMarijn Suijten .dsc = sm8150_dsc, 2718af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2719af776a3eSJonathan Marek .pingpong = sm8150_pp, 27204369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 27214369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2722af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2723af776a3eSJonathan Marek .intf = sm8150_intf, 2724af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2725af776a3eSJonathan Marek .vbif = sdm845_vbif, 272653324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 272753324b99SAbhinav Kumar .wb = sm8250_wb, 2728af776a3eSJonathan Marek .reg_dma_count = 1, 2729481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2730477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2731597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2732af776a3eSJonathan Marek }; 2733af776a3eSJonathan Marek 27340e91bcbbSRobert Foss static const struct dpu_mdss_cfg sm8350_dpu_cfg = { 27350e91bcbbSRobert Foss .caps = &sm8350_dpu_caps, 27360e91bcbbSRobert Foss .mdp_count = ARRAY_SIZE(sm8350_mdp), 27370e91bcbbSRobert Foss .mdp = sm8350_mdp, 27380e91bcbbSRobert Foss .ctl_count = ARRAY_SIZE(sm8350_ctl), 27390e91bcbbSRobert Foss .ctl = sm8350_ctl, 27400e91bcbbSRobert Foss .sspp_count = ARRAY_SIZE(sm8250_sspp), 27410e91bcbbSRobert Foss .sspp = sm8250_sspp, 27420e91bcbbSRobert Foss .mixer_count = ARRAY_SIZE(sm8150_lm), 27430e91bcbbSRobert Foss .mixer = sm8150_lm, 27440e91bcbbSRobert Foss .dspp_count = ARRAY_SIZE(sm8150_dspp), 27450e91bcbbSRobert Foss .dspp = sm8150_dspp, 27460e91bcbbSRobert Foss .pingpong_count = ARRAY_SIZE(sm8350_pp), 27470e91bcbbSRobert Foss .pingpong = sm8350_pp, 27480e91bcbbSRobert Foss .merge_3d_count = ARRAY_SIZE(sm8350_merge_3d), 27490e91bcbbSRobert Foss .merge_3d = sm8350_merge_3d, 27500e91bcbbSRobert Foss .intf_count = ARRAY_SIZE(sm8350_intf), 27510e91bcbbSRobert Foss .intf = sm8350_intf, 27520e91bcbbSRobert Foss .vbif_count = ARRAY_SIZE(sdm845_vbif), 27530e91bcbbSRobert Foss .vbif = sdm845_vbif, 27540e91bcbbSRobert Foss .reg_dma_count = 1, 2755764b9481SDmitry Baryshkov .dma_cfg = &sm8350_regdma, 27560e91bcbbSRobert Foss .perf = &sm8350_perf_data, 27570e91bcbbSRobert Foss .mdss_irqs = IRQ_SM8350_MASK, 27580e91bcbbSRobert Foss }; 27590e91bcbbSRobert Foss 2760100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = { 2761100d7ef6SDmitry Baryshkov .caps = &sm8450_dpu_caps, 2762100d7ef6SDmitry Baryshkov .mdp_count = ARRAY_SIZE(sm8450_mdp), 2763100d7ef6SDmitry Baryshkov .mdp = sm8450_mdp, 2764100d7ef6SDmitry Baryshkov .ctl_count = ARRAY_SIZE(sm8450_ctl), 2765100d7ef6SDmitry Baryshkov .ctl = sm8450_ctl, 2766100d7ef6SDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8450_sspp), 2767100d7ef6SDmitry Baryshkov .sspp = sm8450_sspp, 2768100d7ef6SDmitry Baryshkov .mixer_count = ARRAY_SIZE(sm8150_lm), 2769100d7ef6SDmitry Baryshkov .mixer = sm8150_lm, 2770100d7ef6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 2771100d7ef6SDmitry Baryshkov .dspp = sm8150_dspp, 2772100d7ef6SDmitry Baryshkov .pingpong_count = ARRAY_SIZE(sm8450_pp), 2773100d7ef6SDmitry Baryshkov .pingpong = sm8450_pp, 2774100d7ef6SDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8450_merge_3d), 2775100d7ef6SDmitry Baryshkov .merge_3d = sm8450_merge_3d, 2776100d7ef6SDmitry Baryshkov .intf_count = ARRAY_SIZE(sm8450_intf), 2777100d7ef6SDmitry Baryshkov .intf = sm8450_intf, 2778100d7ef6SDmitry Baryshkov .vbif_count = ARRAY_SIZE(sdm845_vbif), 2779100d7ef6SDmitry Baryshkov .vbif = sdm845_vbif, 2780100d7ef6SDmitry Baryshkov .reg_dma_count = 1, 2781100d7ef6SDmitry Baryshkov .dma_cfg = &sm8450_regdma, 2782100d7ef6SDmitry Baryshkov .perf = &sm8450_perf_data, 2783100d7ef6SDmitry Baryshkov .mdss_irqs = IRQ_SM8450_MASK, 2784100d7ef6SDmitry Baryshkov }; 2785100d7ef6SDmitry Baryshkov 2786efcd0107SNeil Armstrong static const struct dpu_mdss_cfg sm8550_dpu_cfg = { 2787efcd0107SNeil Armstrong .caps = &sm8550_dpu_caps, 2788efcd0107SNeil Armstrong .mdp_count = ARRAY_SIZE(sm8550_mdp), 2789efcd0107SNeil Armstrong .mdp = sm8550_mdp, 2790efcd0107SNeil Armstrong .ctl_count = ARRAY_SIZE(sm8550_ctl), 2791efcd0107SNeil Armstrong .ctl = sm8550_ctl, 2792efcd0107SNeil Armstrong .sspp_count = ARRAY_SIZE(sm8550_sspp), 2793efcd0107SNeil Armstrong .sspp = sm8550_sspp, 2794efcd0107SNeil Armstrong .mixer_count = ARRAY_SIZE(sm8150_lm), 2795efcd0107SNeil Armstrong .mixer = sm8150_lm, 2796efcd0107SNeil Armstrong .dspp_count = ARRAY_SIZE(sm8150_dspp), 2797efcd0107SNeil Armstrong .dspp = sm8150_dspp, 2798efcd0107SNeil Armstrong .pingpong_count = ARRAY_SIZE(sm8550_pp), 2799efcd0107SNeil Armstrong .pingpong = sm8550_pp, 2800efcd0107SNeil Armstrong .merge_3d_count = ARRAY_SIZE(sm8550_merge_3d), 2801efcd0107SNeil Armstrong .merge_3d = sm8550_merge_3d, 2802efcd0107SNeil Armstrong .intf_count = ARRAY_SIZE(sm8550_intf), 2803efcd0107SNeil Armstrong .intf = sm8550_intf, 2804efcd0107SNeil Armstrong .vbif_count = ARRAY_SIZE(sdm845_vbif), 2805efcd0107SNeil Armstrong .vbif = sdm845_vbif, 2806efcd0107SNeil Armstrong .reg_dma_count = 1, 2807efcd0107SNeil Armstrong .dma_cfg = &sm8450_regdma, 2808efcd0107SNeil Armstrong .perf = &sm8450_perf_data, 2809efcd0107SNeil Armstrong .mdss_irqs = IRQ_SM8450_MASK, 2810efcd0107SNeil Armstrong }; 2811efcd0107SNeil Armstrong 2812de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 2813591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 2814591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 2815591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 2816591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 2817591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 2818591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 2819591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 2820fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2821fca5ad26SKalyan Thota .dspp = sc7180_dspp, 2822591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 2823591e34a0SKrishna Manikandan .mixer = sc7280_lm, 2824591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 2825591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 2826591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 2827591e34a0SKrishna Manikandan .intf = sc7280_intf, 2828591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 2829591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 2830477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 2831597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 2832591e34a0SKrishna Manikandan }; 2833591e34a0SKrishna Manikandan 2834de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 28355334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 28365334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 28375334087eSLoic Poulain .mdp = qcm2290_mdp, 28385334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 28395334087eSLoic Poulain .ctl = qcm2290_ctl, 28405334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 28415334087eSLoic Poulain .sspp = qcm2290_sspp, 28425334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 28435334087eSLoic Poulain .mixer = qcm2290_lm, 28445334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 28455334087eSLoic Poulain .dspp = qcm2290_dspp, 28465334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 28475334087eSLoic Poulain .pingpong = qcm2290_pp, 28485334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 28495334087eSLoic Poulain .intf = qcm2290_intf, 28505334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 28515334087eSLoic Poulain .vbif = sdm845_vbif, 2852477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 28535334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 28545334087eSLoic Poulain }; 28555334087eSLoic Poulain 2856abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2857de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2858de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2859de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2860de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2861de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2862de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2863de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2864de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2865de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 28663581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2867de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 28680e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 2869de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 28704a352c2fSBjorn Andersson { .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg}, 2871100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 2872efcd0107SNeil Armstrong { .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg}, 287325fdd593SJeykumar Sankaran }; 287425fdd593SJeykumar Sankaran 2875de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 287625fdd593SJeykumar Sankaran { 287725fdd593SJeykumar Sankaran int i; 287825fdd593SJeykumar Sankaran 287925fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2880de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2881de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 288225fdd593SJeykumar Sankaran } 288325fdd593SJeykumar Sankaran 288425fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 288532084967SDmitry Baryshkov 288625fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 288725fdd593SJeykumar Sankaran } 288825fdd593SJeykumar Sankaran 2889