197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. 353324b99SAbhinav Kumar * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved. 425fdd593SJeykumar Sankaran */ 525fdd593SJeykumar Sankaran 625fdd593SJeykumar Sankaran #define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__ 725fdd593SJeykumar Sankaran #include <linux/slab.h> 825fdd593SJeykumar Sankaran #include <linux/of_address.h> 925fdd593SJeykumar Sankaran #include <linux/platform_device.h> 1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h" 11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h" 1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h" 1325fdd593SJeykumar Sankaran #include "dpu_kms.h" 1425fdd593SJeykumar Sankaran 15a2a448b4SDmitry Baryshkov #define VIG_BASE_MASK \ 167bdc0c4bSKalyan Thota (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 17a2a448b4SDmitry Baryshkov BIT(DPU_SSPP_CDP) |\ 1825fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT)) 1925fdd593SJeykumar Sankaran 20a2a448b4SDmitry Baryshkov #define VIG_MASK \ 21a2a448b4SDmitry Baryshkov (VIG_BASE_MASK | \ 22a2a448b4SDmitry Baryshkov BIT(DPU_SSPP_CSC_10BIT)) 23a2a448b4SDmitry Baryshkov 2494391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \ 2594391a14SAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3)) 2694391a14SAngeloGioacchino Del Regno 277bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \ 28b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3)) 297bdc0c4bSKalyan Thota 308b409996SDmitry Baryshkov #define VIG_SDM845_MASK_SDMA \ 318b409996SDmitry Baryshkov (VIG_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 328b409996SDmitry Baryshkov 337bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \ 34b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4)) 357bdc0c4bSKalyan Thota 368b409996SDmitry Baryshkov #define VIG_SC7180_MASK_SDMA \ 378b409996SDmitry Baryshkov (VIG_SC7180_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 388b409996SDmitry Baryshkov 39a2a448b4SDmitry Baryshkov #define VIG_QCM2290_MASK (VIG_BASE_MASK | BIT(DPU_SSPP_QOS_8LVL)) 405334087eSLoic Poulain 4194391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \ 4294391a14SAngeloGioacchino Del Regno (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 4394391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 4494391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 4594391a14SAngeloGioacchino Del Regno 46dabfdd89SVinod Polimera #define VIG_SC7280_MASK \ 47dabfdd89SVinod Polimera (VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION)) 48dabfdd89SVinod Polimera 498b409996SDmitry Baryshkov #define VIG_SC7280_MASK_SDMA \ 508b409996SDmitry Baryshkov (VIG_SC7280_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 518b409996SDmitry Baryshkov 5225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \ 5325fdd593SJeykumar Sankaran (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\ 5425fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 5525fdd593SJeykumar Sankaran BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 5625fdd593SJeykumar Sankaran 5707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \ 5807ca1fc0SSravanthi Kollukuduru (DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR)) 5907ca1fc0SSravanthi Kollukuduru 608b409996SDmitry Baryshkov #define DMA_SDM845_MASK_SDMA \ 618b409996SDmitry Baryshkov (DMA_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 628b409996SDmitry Baryshkov 638b409996SDmitry Baryshkov #define DMA_CURSOR_SDM845_MASK_SDMA \ 648b409996SDmitry Baryshkov (DMA_CURSOR_SDM845_MASK | BIT(DPU_SSPP_SMART_DMA_V2)) 658b409996SDmitry Baryshkov 6694391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \ 6794391a14SAngeloGioacchino Del Regno (DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR)) 6894391a14SAngeloGioacchino Del Regno 692d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \ 70a5045b00SDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT)) 7125fdd593SJeykumar Sankaran 722d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \ 732d8a4edbSDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 742d8a4edbSDmitry Baryshkov 7500feff8fSDmitry Baryshkov #define MIXER_QCM2290_MASK \ 762d8a4edbSDmitry Baryshkov (BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 777bdc0c4bSKalyan Thota 7825fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER) 7925fdd593SJeykumar Sankaran 8025fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \ 8125fdd593SJeykumar Sankaran (PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2)) 8225fdd593SJeykumar Sankaran 83591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \ 8483a58b20SKalyan Thota (BIT(DPU_CTL_ACTIVE_CFG) | \ 8583a58b20SKalyan Thota BIT(DPU_CTL_FETCH_ACTIVE) | \ 8683a58b20SKalyan Thota BIT(DPU_CTL_VM_CFG) | \ 8783a58b20SKalyan Thota BIT(DPU_CTL_DSPP_SUB_BLOCK_FLUSH)) 88591e34a0SKrishna Manikandan 89e92a4ae1SDmitry Baryshkov #define CTL_SM8550_MASK \ 90e92a4ae1SDmitry Baryshkov (CTL_SC7280_MASK | BIT(DPU_CTL_HAS_LAYER_EXT4)) 91e92a4ae1SDmitry Baryshkov 924369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0) 934369c93cSDmitry Baryshkov 9494391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC) 9594391a14SAngeloGioacchino Del Regno 964259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) 97e47616dfSKalyan Thota 98cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0) 99cace3ac4SJonathan Marek 100e3969eadSVinod Polimera #define INTF_SC7180_MASK \ 101e3969eadSVinod Polimera (BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) | BIT(DPU_INTF_STATUS_SUPPORTED)) 102cace3ac4SJonathan Marek 103591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN) 104591e34a0SKrishna Manikandan 105597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 106597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 107597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 108597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 109597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 110597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 111597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 112597762d5SDmitry Baryshkov BIT(MDP_AD4_0_INTR) | \ 113597762d5SDmitry Baryshkov BIT(MDP_AD4_1_INTR)) 114597762d5SDmitry Baryshkov 115597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 116597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 117597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 118597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 119597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR)) 120597762d5SDmitry Baryshkov 121597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 122597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 123597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 124597762d5SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 125597762d5SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 126597762d5SDmitry Baryshkov BIT(MDP_INTF5_7xxx_INTR)) 127597762d5SDmitry Baryshkov 128597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 129597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 130597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 131597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 132597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 133597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 134597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 135597762d5SDmitry Baryshkov BIT(MDP_INTF4_INTR)) 136597762d5SDmitry Baryshkov 1370e91bcbbSRobert Foss #define IRQ_SM8350_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1380e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_INTR2) | \ 1390e91bcbbSRobert Foss BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1400e91bcbbSRobert Foss BIT(MDP_INTF0_7xxx_INTR) | \ 1410e91bcbbSRobert Foss BIT(MDP_INTF1_7xxx_INTR) | \ 1420e91bcbbSRobert Foss BIT(MDP_INTF2_7xxx_INTR) | \ 1437eb75dbdSRobert Foss BIT(MDP_INTF3_7xxx_INTR)) 1440e91bcbbSRobert Foss 145f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 146f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_INTR2) | \ 147f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 148f3af2d6eSRob Clark BIT(MDP_INTF0_INTR) | \ 149f3af2d6eSRob Clark BIT(MDP_INTF1_INTR) | \ 150f3af2d6eSRob Clark BIT(MDP_INTF2_INTR) | \ 151f3af2d6eSRob Clark BIT(MDP_INTF3_INTR) | \ 152f3af2d6eSRob Clark BIT(MDP_INTF4_INTR) | \ 153f3af2d6eSRob Clark BIT(MDP_INTF5_INTR) | \ 154f3af2d6eSRob Clark BIT(MDP_AD4_0_INTR) | \ 155f3af2d6eSRob Clark BIT(MDP_AD4_1_INTR)) 156597762d5SDmitry Baryshkov 1574a352c2fSBjorn Andersson #define IRQ_SC8280XP_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 1584a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_INTR2) | \ 1594a352c2fSBjorn Andersson BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 1604a352c2fSBjorn Andersson BIT(MDP_INTF0_7xxx_INTR) | \ 1614a352c2fSBjorn Andersson BIT(MDP_INTF1_7xxx_INTR) | \ 1624a352c2fSBjorn Andersson BIT(MDP_INTF2_7xxx_INTR) | \ 1634a352c2fSBjorn Andersson BIT(MDP_INTF3_7xxx_INTR) | \ 1644a352c2fSBjorn Andersson BIT(MDP_INTF4_7xxx_INTR) | \ 1654a352c2fSBjorn Andersson BIT(MDP_INTF5_7xxx_INTR) | \ 1664a352c2fSBjorn Andersson BIT(MDP_INTF6_7xxx_INTR) | \ 1674a352c2fSBjorn Andersson BIT(MDP_INTF7_7xxx_INTR) | \ 1684a352c2fSBjorn Andersson BIT(MDP_INTF8_7xxx_INTR)) 1694a352c2fSBjorn Andersson 170100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 171100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 172100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 173100d7ef6SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 174100d7ef6SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 175100d7ef6SDmitry Baryshkov BIT(MDP_INTF2_7xxx_INTR) | \ 176100d7ef6SDmitry Baryshkov BIT(MDP_INTF3_7xxx_INTR)) 177100d7ef6SDmitry Baryshkov 17853324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ 17953324b99SAbhinav Kumar BIT(DPU_WB_UBWC) | \ 18053324b99SAbhinav Kumar BIT(DPU_WB_YUV_CONFIG) | \ 18153324b99SAbhinav Kumar BIT(DPU_WB_PIPE_ALPHA) | \ 18253324b99SAbhinav Kumar BIT(DPU_WB_XY_ROI_OFFSET) | \ 18353324b99SAbhinav Kumar BIT(DPU_WB_QOS) | \ 18453324b99SAbhinav Kumar BIT(DPU_WB_QOS_8LVL) | \ 18553324b99SAbhinav Kumar BIT(DPU_WB_CDP) | \ 18653324b99SAbhinav Kumar BIT(DPU_WB_INPUT_CTRL)) 18753324b99SAbhinav Kumar 18825fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) 18925fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH 2048 19025fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 19125fdd593SJeykumar Sankaran 19225fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION 4 19325fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION 4 19425fdd593SJeykumar Sankaran 19525fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO 20 19625fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO 4 19725fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE 1 19825fdd593SJeykumar Sankaran 19925fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y) 20025fdd593SJeykumar Sankaran 20109c7e370SLee Jones static const uint32_t plane_formats[] = { 20209c7e370SLee Jones DRM_FORMAT_ARGB8888, 20309c7e370SLee Jones DRM_FORMAT_ABGR8888, 20409c7e370SLee Jones DRM_FORMAT_RGBA8888, 20509c7e370SLee Jones DRM_FORMAT_BGRA8888, 20609c7e370SLee Jones DRM_FORMAT_XRGB8888, 20709c7e370SLee Jones DRM_FORMAT_RGBX8888, 20809c7e370SLee Jones DRM_FORMAT_BGRX8888, 20909c7e370SLee Jones DRM_FORMAT_XBGR8888, 210ffbbed63SLeonard Lausen DRM_FORMAT_ARGB2101010, 211da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 21209c7e370SLee Jones DRM_FORMAT_RGB888, 21309c7e370SLee Jones DRM_FORMAT_BGR888, 21409c7e370SLee Jones DRM_FORMAT_RGB565, 21509c7e370SLee Jones DRM_FORMAT_BGR565, 21609c7e370SLee Jones DRM_FORMAT_ARGB1555, 21709c7e370SLee Jones DRM_FORMAT_ABGR1555, 21809c7e370SLee Jones DRM_FORMAT_RGBA5551, 21909c7e370SLee Jones DRM_FORMAT_BGRA5551, 22009c7e370SLee Jones DRM_FORMAT_XRGB1555, 22109c7e370SLee Jones DRM_FORMAT_XBGR1555, 22209c7e370SLee Jones DRM_FORMAT_RGBX5551, 22309c7e370SLee Jones DRM_FORMAT_BGRX5551, 22409c7e370SLee Jones DRM_FORMAT_ARGB4444, 22509c7e370SLee Jones DRM_FORMAT_ABGR4444, 22609c7e370SLee Jones DRM_FORMAT_RGBA4444, 22709c7e370SLee Jones DRM_FORMAT_BGRA4444, 22809c7e370SLee Jones DRM_FORMAT_XRGB4444, 22909c7e370SLee Jones DRM_FORMAT_XBGR4444, 23009c7e370SLee Jones DRM_FORMAT_RGBX4444, 23109c7e370SLee Jones DRM_FORMAT_BGRX4444, 23209c7e370SLee Jones }; 23309c7e370SLee Jones 23409c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 23509c7e370SLee Jones DRM_FORMAT_ARGB8888, 23609c7e370SLee Jones DRM_FORMAT_ABGR8888, 23709c7e370SLee Jones DRM_FORMAT_RGBA8888, 23809c7e370SLee Jones DRM_FORMAT_BGRX8888, 23909c7e370SLee Jones DRM_FORMAT_BGRA8888, 240ffbbed63SLeonard Lausen DRM_FORMAT_ARGB2101010, 241da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 24209c7e370SLee Jones DRM_FORMAT_XRGB8888, 24309c7e370SLee Jones DRM_FORMAT_XBGR8888, 24409c7e370SLee Jones DRM_FORMAT_RGBX8888, 24509c7e370SLee Jones DRM_FORMAT_RGB888, 24609c7e370SLee Jones DRM_FORMAT_BGR888, 24709c7e370SLee Jones DRM_FORMAT_RGB565, 24809c7e370SLee Jones DRM_FORMAT_BGR565, 24909c7e370SLee Jones DRM_FORMAT_ARGB1555, 25009c7e370SLee Jones DRM_FORMAT_ABGR1555, 25109c7e370SLee Jones DRM_FORMAT_RGBA5551, 25209c7e370SLee Jones DRM_FORMAT_BGRA5551, 25309c7e370SLee Jones DRM_FORMAT_XRGB1555, 25409c7e370SLee Jones DRM_FORMAT_XBGR1555, 25509c7e370SLee Jones DRM_FORMAT_RGBX5551, 25609c7e370SLee Jones DRM_FORMAT_BGRX5551, 25709c7e370SLee Jones DRM_FORMAT_ARGB4444, 25809c7e370SLee Jones DRM_FORMAT_ABGR4444, 25909c7e370SLee Jones DRM_FORMAT_RGBA4444, 26009c7e370SLee Jones DRM_FORMAT_BGRA4444, 26109c7e370SLee Jones DRM_FORMAT_XRGB4444, 26209c7e370SLee Jones DRM_FORMAT_XBGR4444, 26309c7e370SLee Jones DRM_FORMAT_RGBX4444, 26409c7e370SLee Jones DRM_FORMAT_BGRX4444, 26509c7e370SLee Jones 266f07c9946SJessica Zhang DRM_FORMAT_P010, 26709c7e370SLee Jones DRM_FORMAT_NV12, 26809c7e370SLee Jones DRM_FORMAT_NV21, 26909c7e370SLee Jones DRM_FORMAT_NV16, 27009c7e370SLee Jones DRM_FORMAT_NV61, 27109c7e370SLee Jones DRM_FORMAT_VYUY, 27209c7e370SLee Jones DRM_FORMAT_UYVY, 27309c7e370SLee Jones DRM_FORMAT_YUYV, 27409c7e370SLee Jones DRM_FORMAT_YVYU, 27509c7e370SLee Jones DRM_FORMAT_YUV420, 27609c7e370SLee Jones DRM_FORMAT_YVU420, 27709c7e370SLee Jones }; 27809c7e370SLee Jones 279dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 280dabfdd89SVinod Polimera DRM_FORMAT_NV12, 281dabfdd89SVinod Polimera /* TODO add formats after validation */ 282dabfdd89SVinod Polimera }; 283dabfdd89SVinod Polimera 28453324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 28553324b99SAbhinav Kumar DRM_FORMAT_RGB565, 28653324b99SAbhinav Kumar DRM_FORMAT_BGR565, 28753324b99SAbhinav Kumar DRM_FORMAT_RGB888, 28853324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 28953324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 29053324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 29153324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 29253324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 29353324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 29453324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 29553324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 29653324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 29753324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 29853324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 29953324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 30053324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 30153324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 30253324b99SAbhinav Kumar DRM_FORMAT_BGR565, 30353324b99SAbhinav Kumar DRM_FORMAT_BGR888, 30453324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 30553324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 30653324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 30753324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 30853324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 30953324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 31053324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 31153324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 31253324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 31353324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 31453324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 31553324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 31653324b99SAbhinav Kumar }; 31753324b99SAbhinav Kumar 31825fdd593SJeykumar Sankaran /************************************************************* 31925fdd593SJeykumar Sankaran * DPU sub blocks config 32025fdd593SJeykumar Sankaran *************************************************************/ 32125fdd593SJeykumar Sankaran /* DPU top level caps */ 32294391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 32394391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 32494391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 32594391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 32694391a14SAngeloGioacchino Del Regno .has_src_split = true, 32794391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 32894391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 32994391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 33094391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 33194391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 33294391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 33394391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 33494391a14SAngeloGioacchino Del Regno }; 33594391a14SAngeloGioacchino Del Regno 336c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 337da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 338c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 339c162352eSKonrad Dybcio .has_dim_layer = true, 340c162352eSKonrad Dybcio .has_idle_pc = true, 341c162352eSKonrad Dybcio .max_linewidth = 2160, 342c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 343c162352eSKonrad Dybcio }; 344c162352eSKonrad Dybcio 34525fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 34625fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 34725fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 34825fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 34925fdd593SJeykumar Sankaran .has_src_split = true, 35025fdd593SJeykumar Sankaran .has_dim_layer = true, 35125fdd593SJeykumar Sankaran .has_idle_pc = true, 35242a558b7SKalyan Thota .has_3d_merge = true, 3537e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3547e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3557e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3567e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 35725fdd593SJeykumar Sankaran }; 35825fdd593SJeykumar Sankaran 3597bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3607bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3617bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3627bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3637bdc0c4bSKalyan Thota .has_dim_layer = true, 3647bdc0c4bSKalyan Thota .has_idle_pc = true, 3657e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3667e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3677bdc0c4bSKalyan Thota }; 3687bdc0c4bSKalyan Thota 3693581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = { 370da06be8bSDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, 3713581b706SAdam Skladowski .max_mixer_blendstages = 0x4, 37238164e99SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 3733581b706SAdam Skladowski .has_dim_layer = true, 3743581b706SAdam Skladowski .has_idle_pc = true, 3753581b706SAdam Skladowski .max_linewidth = 2160, 3763581b706SAdam Skladowski .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3773581b706SAdam Skladowski }; 3783581b706SAdam Skladowski 379386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 380386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 381386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 382386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 383386fced3SJonathan Marek .has_src_split = true, 384386fced3SJonathan Marek .has_dim_layer = true, 385386fced3SJonathan Marek .has_idle_pc = true, 386386fced3SJonathan Marek .has_3d_merge = true, 387386fced3SJonathan Marek .max_linewidth = 4096, 388386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 389386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 390386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 391386fced3SJonathan Marek }; 392386fced3SJonathan Marek 393f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 394f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 395f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 396f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 397f3af2d6eSRob Clark .has_src_split = true, 398f3af2d6eSRob Clark .has_dim_layer = true, 399f3af2d6eSRob Clark .has_idle_pc = true, 400f3af2d6eSRob Clark .has_3d_merge = true, 401f3af2d6eSRob Clark .max_linewidth = 4096, 402f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 403f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 404f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 405f3af2d6eSRob Clark }; 406f3af2d6eSRob Clark 407af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 408af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 409af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 41003c0c3cbSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 411af776a3eSJonathan Marek .has_src_split = true, 412af776a3eSJonathan Marek .has_dim_layer = true, 413af776a3eSJonathan Marek .has_idle_pc = true, 414af776a3eSJonathan Marek .has_3d_merge = true, 415af776a3eSJonathan Marek .max_linewidth = 4096, 416af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 417af776a3eSJonathan Marek }; 418af776a3eSJonathan Marek 419fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg msm8998_ubwc_cfg = { 420fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_10, 421fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 422fbbd8cceSDmitry Baryshkov }; 423fbbd8cceSDmitry Baryshkov 424fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg qcm2290_ubwc_cfg = { 425fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 426fbbd8cceSDmitry Baryshkov }; 427fbbd8cceSDmitry Baryshkov 428fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sdm845_ubwc_cfg = { 429fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_20, 430fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 431fbbd8cceSDmitry Baryshkov }; 432fbbd8cceSDmitry Baryshkov 433fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc7180_ubwc_cfg = { 434fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_20, 435fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, 436fbbd8cceSDmitry Baryshkov }; 437fbbd8cceSDmitry Baryshkov 438fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm6115_ubwc_cfg = { 439fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_10, 440fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x1, 441fbbd8cceSDmitry Baryshkov .ubwc_swizzle = 0x7, 442fbbd8cceSDmitry Baryshkov }; 443fbbd8cceSDmitry Baryshkov 444fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8150_ubwc_cfg = { 445fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_30, 446fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x2, 447fbbd8cceSDmitry Baryshkov }; 448fbbd8cceSDmitry Baryshkov 449fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sc8180x_ubwc_cfg = { 450fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_30, 451fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, 452fbbd8cceSDmitry Baryshkov }; 453fbbd8cceSDmitry Baryshkov 454fbbd8cceSDmitry Baryshkov static const struct dpu_ubwc_cfg sm8250_ubwc_cfg = { 455fbbd8cceSDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 456fbbd8cceSDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 457fbbd8cceSDmitry Baryshkov .ubwc_swizzle = 0x6, 458fbbd8cceSDmitry Baryshkov }; 459fbbd8cceSDmitry Baryshkov 46094391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 46194391a14SAngeloGioacchino Del Regno { 46294391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 46394391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 46494391a14SAngeloGioacchino Del Regno .features = 0, 46594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 46694391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 46794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 46894391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 46994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 47094391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 47194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 47294391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 47394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 47494391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 47594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 47694391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 47794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 47894391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 47994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 48094391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 48194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 48294391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 48394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 48494391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 48594391a14SAngeloGioacchino Del Regno }, 48694391a14SAngeloGioacchino Del Regno }; 48794391a14SAngeloGioacchino Del Regno 488abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 48925fdd593SJeykumar Sankaran { 49025fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 49125fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 49203490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 49325fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 49425fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 49525fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 49625fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 49725fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 49825fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 49925fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 50025fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 50125fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 50225fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 50325fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 50425fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 505d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 50625fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 507d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 50825fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 50925fdd593SJeykumar Sankaran }, 51025fdd593SJeykumar Sankaran }; 51125fdd593SJeykumar Sankaran 5127bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 5137bdc0c4bSKalyan Thota { 5147bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 5157bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 5167bdc0c4bSKalyan Thota .features = 0, 5177bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5187bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 5197bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5207bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 521d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 5227b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 523d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 5247b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 525255f0561SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_WB2] = { 526255f0561SDmitry Baryshkov .reg_off = 0x3B8, .bit_off = 24}, 5277bdc0c4bSKalyan Thota }, 5287bdc0c4bSKalyan Thota }; 5297bdc0c4bSKalyan Thota 530f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 531f3af2d6eSRob Clark { 532f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 533f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 53410a88954SDmitry Baryshkov .features = BIT(DPU_MDP_AUDIO_SELECT), 535f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 536f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 537f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 538f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 539f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 540f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 541f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 542f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 543f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 544f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 545f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 546f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 547d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 548f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 549d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 550f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 551f3af2d6eSRob Clark }, 552f3af2d6eSRob Clark }; 553f3af2d6eSRob Clark 5543581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 5553581b706SAdam Skladowski { 5563581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 5573581b706SAdam Skladowski .base = 0x0, .len = 0x494, 5583581b706SAdam Skladowski .features = 0, 5593581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5603581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 5613581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5623581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 5633581b706SAdam Skladowski }, 5643581b706SAdam Skladowski }; 5653581b706SAdam Skladowski 566af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 567af776a3eSJonathan Marek { 568af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 569b910a020SRobert Foss .base = 0x0, .len = 0x494, 570af776a3eSJonathan Marek .features = 0, 571af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 572af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 573af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 574af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 575af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 576af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 577af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 578af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 579af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 580af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 581af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 582af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 583d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 584af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 585d6181c18SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 586af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 587af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 588af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 58953324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 59053324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 591af776a3eSJonathan Marek }, 592af776a3eSJonathan Marek }; 593af776a3eSJonathan Marek 5945334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 5955334087eSLoic Poulain { 5965334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 5975334087eSLoic Poulain .base = 0x0, .len = 0x494, 5985334087eSLoic Poulain .features = 0, 5995334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6005334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 6015334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6025334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 6035334087eSLoic Poulain }, 6045334087eSLoic Poulain }; 6055334087eSLoic Poulain 60625fdd593SJeykumar Sankaran /************************************************************* 60725fdd593SJeykumar Sankaran * CTL sub blocks config 60825fdd593SJeykumar Sankaran *************************************************************/ 60994391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 61094391a14SAngeloGioacchino Del Regno { 61194391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 61294391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 61394391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 61494391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 61594391a14SAngeloGioacchino Del Regno }, 61694391a14SAngeloGioacchino Del Regno { 61794391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 61894391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 61994391a14SAngeloGioacchino Del Regno .features = 0, 62094391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 62194391a14SAngeloGioacchino Del Regno }, 62294391a14SAngeloGioacchino Del Regno { 62394391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 62494391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 62594391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 62694391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 62794391a14SAngeloGioacchino Del Regno }, 62894391a14SAngeloGioacchino Del Regno { 62994391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 63094391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 63194391a14SAngeloGioacchino Del Regno .features = 0, 63294391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 63394391a14SAngeloGioacchino Del Regno }, 63494391a14SAngeloGioacchino Del Regno { 63594391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 63694391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 63794391a14SAngeloGioacchino Del Regno .features = 0, 63894391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 63994391a14SAngeloGioacchino Del Regno }, 64094391a14SAngeloGioacchino Del Regno }; 64194391a14SAngeloGioacchino Del Regno 642abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 64325fdd593SJeykumar Sankaran { 64425fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 64525fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 646667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 647667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 64825fdd593SJeykumar Sankaran }, 64925fdd593SJeykumar Sankaran { 65025fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 65125fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 652667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 653667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 65425fdd593SJeykumar Sankaran }, 65525fdd593SJeykumar Sankaran { 65625fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 65725fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 658667e9985SDmitry Baryshkov .features = 0, 659667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 66025fdd593SJeykumar Sankaran }, 66125fdd593SJeykumar Sankaran { 66225fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 66325fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 664667e9985SDmitry Baryshkov .features = 0, 665667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 66625fdd593SJeykumar Sankaran }, 66725fdd593SJeykumar Sankaran { 66825fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 66925fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 670667e9985SDmitry Baryshkov .features = 0, 671667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 67225fdd593SJeykumar Sankaran }, 67325fdd593SJeykumar Sankaran }; 67425fdd593SJeykumar Sankaran 6757bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 6767bdc0c4bSKalyan Thota { 6777bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 678ce6bd00aSDmitry Baryshkov .base = 0x1000, .len = 0x1dc, 679667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 680667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 6817bdc0c4bSKalyan Thota }, 6827bdc0c4bSKalyan Thota { 6837bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 684ce6bd00aSDmitry Baryshkov .base = 0x1200, .len = 0x1dc, 685667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 686667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 6877bdc0c4bSKalyan Thota }, 6887bdc0c4bSKalyan Thota { 6897bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 690ce6bd00aSDmitry Baryshkov .base = 0x1400, .len = 0x1dc, 691667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 692667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 6937bdc0c4bSKalyan Thota }, 6947bdc0c4bSKalyan Thota }; 6957bdc0c4bSKalyan Thota 696386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 697386fced3SJonathan Marek { 698386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 699386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 700667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 701667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 702386fced3SJonathan Marek }, 703386fced3SJonathan Marek { 704386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 705386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 706667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 707667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 708386fced3SJonathan Marek }, 709386fced3SJonathan Marek { 710386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 711386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 712667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 713667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 714386fced3SJonathan Marek }, 715386fced3SJonathan Marek { 716386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 717386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 718667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 719667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 720386fced3SJonathan Marek }, 721386fced3SJonathan Marek { 722386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 723386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 724667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 725667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 726386fced3SJonathan Marek }, 727386fced3SJonathan Marek { 728386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 729386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 730667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 731667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 732386fced3SJonathan Marek }, 733386fced3SJonathan Marek }; 734386fced3SJonathan Marek 7355334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 7365334087eSLoic Poulain { 7375334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 7385334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 7395334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 7405334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 7415334087eSLoic Poulain }, 7425334087eSLoic Poulain }; 7435334087eSLoic Poulain 74425fdd593SJeykumar Sankaran /************************************************************* 74525fdd593SJeykumar Sankaran * SSPP sub blocks config 74625fdd593SJeykumar Sankaran *************************************************************/ 74725fdd593SJeykumar Sankaran 74825fdd593SJeykumar Sankaran /* SSPP common configuration */ 749b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 75025fdd593SJeykumar Sankaran { \ 75125fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 75225fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 75325fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 75425fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 75525fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 75625fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 757b75ab05aSShubhashree Dhar .id = qseed_ver, \ 75825fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 75925fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 76025fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 76125fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 76225fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 763e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 76425fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 765e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 766dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 767dabfdd89SVinod Polimera } 768dabfdd89SVinod Polimera 769dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 770dabfdd89SVinod Polimera { \ 771dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 772dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 773dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 774dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 775dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 776dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 777dabfdd89SVinod Polimera .id = qseed_ver, \ 778dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 779dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 780dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 781dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 782dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 783dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 784dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 785dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 786dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 78725fdd593SJeykumar Sankaran } 78825fdd593SJeykumar Sankaran 78925fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 79025fdd593SJeykumar Sankaran { \ 79125fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 79225fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 79325fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 79425fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 79525fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 79625fdd593SJeykumar Sankaran .format_list = plane_formats, \ 797e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 79825fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 799e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 80025fdd593SJeykumar Sankaran } 80125fdd593SJeykumar Sankaran 80294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 80394391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 80494391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 80594391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 80694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 80794391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 80894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 80994391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 81094391a14SAngeloGioacchino Del Regno 811dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 812dabfdd89SVinod Polimera .rot_maxheight = 1088, 813dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 814dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 815dabfdd89SVinod Polimera }; 816dabfdd89SVinod Polimera 817b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 818b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 819b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 820b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 821b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 822b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 823b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 824b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 82525fdd593SJeykumar Sankaran 82625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 82725fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 82825fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 82925fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 83025fdd593SJeykumar Sankaran 8318f940ddbSKonrad Dybcio #define SSPP_BLK(_name, _id, _base, _len, _features, \ 83207ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 83325fdd593SJeykumar Sankaran { \ 83425fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 8358f940ddbSKonrad Dybcio .base = _base, .len = _len, \ 83607ca1fc0SSravanthi Kollukuduru .features = _features, \ 83725fdd593SJeykumar Sankaran .sblk = &_sblk, \ 83825fdd593SJeykumar Sankaran .xin_id = _xinid, \ 83907ca1fc0SSravanthi Kollukuduru .type = _type, \ 84025fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 84125fdd593SJeykumar Sankaran } 84225fdd593SJeykumar Sankaran 84394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 8448f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1ac, VIG_MSM8998_MASK, 84594391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 8468f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1ac, VIG_MSM8998_MASK, 84794391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 8488f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1ac, VIG_MSM8998_MASK, 84994391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 8508f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1ac, VIG_MSM8998_MASK, 85194391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 8528f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1ac, DMA_MSM8998_MASK, 85394391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 8548f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1ac, DMA_MSM8998_MASK, 85594391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 8568f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1ac, DMA_CURSOR_MSM8998_MASK, 8570abb6a24SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 8588f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1ac, DMA_CURSOR_MSM8998_MASK, 8590abb6a24SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 86094391a14SAngeloGioacchino Del Regno }; 86194391a14SAngeloGioacchino Del Regno 862abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 8638f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1c8, VIG_SDM845_MASK_SDMA, 86407ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 8658f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1c8, VIG_SDM845_MASK_SDMA, 86607ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 8678f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1c8, VIG_SDM845_MASK_SDMA, 86807ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 8698f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1c8, VIG_SDM845_MASK_SDMA, 87007ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 8718f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1c8, DMA_SDM845_MASK_SDMA, 87207ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 8738f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1c8, DMA_SDM845_MASK_SDMA, 87407ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 8758f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA, 876d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 8778f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1c8, DMA_CURSOR_SDM845_MASK_SDMA, 878d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 87925fdd593SJeykumar Sankaran }; 88025fdd593SJeykumar Sankaran 881b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 882b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 883b75ab05aSShubhashree Dhar 884dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 885dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 886dabfdd89SVinod Polimera 8877bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 8888f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK, 889b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 8908f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 8917bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 8928f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_CURSOR_SDM845_MASK, 893d6181c18SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 8948f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK, 895d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 8967bdc0c4bSKalyan Thota }; 8977bdc0c4bSKalyan Thota 8983581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 89938164e99SDmitry Baryshkov _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED4); 9003581b706SAdam Skladowski 9013581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 9028f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK, 9033581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 9048f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 9053581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 9063581b706SAdam Skladowski }; 9073581b706SAdam Skladowski 908d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 90903c0c3cbSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 910d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 91103c0c3cbSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 912d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 91303c0c3cbSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 914d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 91503c0c3cbSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 916d21fc5dfSDmitry Baryshkov 917d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 9188f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_SC7180_MASK_SDMA, 919d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 9208f940ddbSKonrad Dybcio SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1f8, VIG_SC7180_MASK_SDMA, 921d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 9228f940ddbSKonrad Dybcio SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1f8, VIG_SC7180_MASK_SDMA, 923d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 9248f940ddbSKonrad Dybcio SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1f8, VIG_SC7180_MASK_SDMA, 925d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 9268f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK_SDMA, 927d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 9288f940ddbSKonrad Dybcio SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1f8, DMA_SDM845_MASK_SDMA, 929d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 9308f940ddbSKonrad Dybcio SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 931d6181c18SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), 9328f940ddbSKonrad Dybcio SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1f8, DMA_CURSOR_SDM845_MASK_SDMA, 933d6181c18SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), 934d21fc5dfSDmitry Baryshkov }; 935d21fc5dfSDmitry Baryshkov 936100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 937c7da17b6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 938100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 939c7da17b6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 940100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 941c7da17b6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 942100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 943c7da17b6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 944100d7ef6SDmitry Baryshkov 945efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 = 946d113d267SDmitry Baryshkov _VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED4); 947efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 = 948d113d267SDmitry Baryshkov _VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED4); 949efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 = 950d113d267SDmitry Baryshkov _VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED4); 951efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 = 952d113d267SDmitry Baryshkov _VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED4); 953efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5); 954e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6); 955efcd0107SNeil Armstrong 9564a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 = 957b3587cb6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 9584a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 = 959b3587cb6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 9604a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 = 961b3587cb6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 9624a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 = 963b3587cb6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 9644a352c2fSBjorn Andersson 9655334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 9665334087eSLoic Poulain { \ 9675334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 9685334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 9695334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 9705334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 9715334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 9725334087eSLoic Poulain .format_list = plane_formats_yuv, \ 9735334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 9745334087eSLoic Poulain .virt_format_list = plane_formats, \ 9755334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 9765334087eSLoic Poulain } 9775334087eSLoic Poulain 9785334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 9795334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 9805334087eSLoic Poulain 9815334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 9828f940ddbSKonrad Dybcio SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1f8, VIG_QCM2290_MASK, 9835334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 9848f940ddbSKonrad Dybcio SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1f8, DMA_SDM845_MASK, 9855334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 9865334087eSLoic Poulain }; 9875334087eSLoic Poulain 98825fdd593SJeykumar Sankaran /************************************************************* 98925fdd593SJeykumar Sankaran * MIXER sub blocks config 99025fdd593SJeykumar Sankaran *************************************************************/ 9917bdc0c4bSKalyan Thota 992e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 99325fdd593SJeykumar Sankaran { \ 99425fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 99525fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 9967bdc0c4bSKalyan Thota .features = _fmask, \ 9977bdc0c4bSKalyan Thota .sblk = _sblk, \ 99825fdd593SJeykumar Sankaran .pingpong = _pp, \ 999e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1000e47616dfSKalyan Thota .dspp = _dspp \ 100125fdd593SJeykumar Sankaran } 100225fdd593SJeykumar Sankaran 100394391a14SAngeloGioacchino Del Regno /* MSM8998 */ 100494391a14SAngeloGioacchino Del Regno 100594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 100694391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 100794391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 100894391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 100994391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 101094391a14SAngeloGioacchino Del Regno 0x260, 0x290 101194391a14SAngeloGioacchino Del Regno }, 101294391a14SAngeloGioacchino Del Regno }; 101394391a14SAngeloGioacchino Del Regno 101494391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 10152d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 101694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 10172d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 101894391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 10192d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 102094391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 10212d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 102294391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 10232d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 102494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 10252d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 102694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 102794391a14SAngeloGioacchino Del Regno }; 102894391a14SAngeloGioacchino Del Regno 102994391a14SAngeloGioacchino Del Regno /* SDM845 */ 103094391a14SAngeloGioacchino Del Regno 103194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 103294391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 103394391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 103494391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 103594391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 103694391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 103794391a14SAngeloGioacchino Del Regno }, 103894391a14SAngeloGioacchino Del Regno }; 103994391a14SAngeloGioacchino Del Regno 1040abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 10417bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1042e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 10437bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1044e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 10457bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1046e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 10477bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1048e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 10497bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1050e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 10517bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1052e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 10537bdc0c4bSKalyan Thota }; 10547bdc0c4bSKalyan Thota 10557bdc0c4bSKalyan Thota /* SC7180 */ 10567bdc0c4bSKalyan Thota 10577bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 10587bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 10597bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 10607bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 10617bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 10627bdc0c4bSKalyan Thota }, 10637bdc0c4bSKalyan Thota }; 10647bdc0c4bSKalyan Thota 10657bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 106600feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1067e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 106800feff8fSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1069e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 107025fdd593SJeykumar Sankaran }; 107125fdd593SJeykumar Sankaran 1072386fced3SJonathan Marek /* SM8150 */ 1073386fced3SJonathan Marek 1074386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1075386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 107605ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1077386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 107805ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1079386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1080386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1081386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1082386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1083386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1084386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1085386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1086386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1087386fced3SJonathan Marek }; 1088386fced3SJonathan Marek 10895334087eSLoic Poulain /* QCM2290 */ 10905334087eSLoic Poulain 10915334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 1092da06be8bSDmitry Baryshkov .maxwidth = DEFAULT_DPU_LINE_WIDTH, 10935334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 10945334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 10955334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 10965334087eSLoic Poulain }, 10975334087eSLoic Poulain }; 10985334087eSLoic Poulain 10995334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 110000feff8fSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_QCM2290_MASK, 11015334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 11025334087eSLoic Poulain }; 11035334087eSLoic Poulain 110425fdd593SJeykumar Sankaran /************************************************************* 1105e47616dfSKalyan Thota * DSPP sub blocks config 1106e47616dfSKalyan Thota *************************************************************/ 110794391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 110894391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 110994391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 111094391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 111194391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 111294391a14SAngeloGioacchino Del Regno }; 111394391a14SAngeloGioacchino Del Regno 11144259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 11154259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 11164259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 11174259ff7aSKalyan Thota }; 11184259ff7aSKalyan Thota 111905ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 112005ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 112105ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 112205ae91d9SDmitry Baryshkov }; 112305ae91d9SDmitry Baryshkov 1124862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1125e47616dfSKalyan Thota {\ 1126e47616dfSKalyan Thota .name = _name, .id = _id, \ 1127e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1128862314bcSAngeloGioacchino Del Regno .features = _mask, \ 112905ae91d9SDmitry Baryshkov .sblk = _sblk \ 1130e47616dfSKalyan Thota } 1131e47616dfSKalyan Thota 113294391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 113394391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 113494391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 113594391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 113694391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 113794391a14SAngeloGioacchino Del Regno }; 113894391a14SAngeloGioacchino Del Regno 1139e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1140862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1141862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 114205ae91d9SDmitry Baryshkov }; 114305ae91d9SDmitry Baryshkov 114405ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1145862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1146862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1147862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1148862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1149862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1150862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1151862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1152862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1153e47616dfSKalyan Thota }; 1154386fced3SJonathan Marek 11555334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 11565334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 11575334087eSLoic Poulain &sm8150_dspp_sblk), 11585334087eSLoic Poulain }; 11595334087eSLoic Poulain 1160e47616dfSKalyan Thota /************************************************************* 116125fdd593SJeykumar Sankaran * PINGPONG sub blocks config 116225fdd593SJeykumar Sankaran *************************************************************/ 116325fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 116425fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 116525fdd593SJeykumar Sankaran .version = 0x1}, 116625fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 116725fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 116825fdd593SJeykumar Sankaran }; 116925fdd593SJeykumar Sankaran 117025fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 117125fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 117225fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 117325fdd593SJeykumar Sankaran }; 117425fdd593SJeykumar Sankaran 1175591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1176591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1177591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1178591e34a0SKrishna Manikandan }; 1179591e34a0SKrishna Manikandan 1180efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 1181efcd0107SNeil Armstrong {\ 1182efcd0107SNeil Armstrong .name = _name, .id = _id, \ 1183efcd0107SNeil Armstrong .base = _base, .len = 0, \ 1184efcd0107SNeil Armstrong .features = BIT(DPU_PINGPONG_DITHER), \ 1185efcd0107SNeil Armstrong .merge_3d = _merge_3d, \ 1186efcd0107SNeil Armstrong .sblk = &_sblk, \ 1187efcd0107SNeil Armstrong .intr_done = _done, \ 1188efcd0107SNeil Armstrong .intr_rdptr = _rdptr, \ 1189efcd0107SNeil Armstrong } 1190667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 119125fdd593SJeykumar Sankaran {\ 119225fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 119325fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 119425fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 11954369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1196667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1197667e9985SDmitry Baryshkov .intr_done = _done, \ 1198667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 119925fdd593SJeykumar Sankaran } 1200667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 120125fdd593SJeykumar Sankaran {\ 120225fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 120325fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 120425fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 12054369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1206667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1207667e9985SDmitry Baryshkov .intr_done = _done, \ 1208667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 120925fdd593SJeykumar Sankaran } 121025fdd593SJeykumar Sankaran 1211abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1212667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1213667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1214667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1215667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1216667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1217667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1218667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1219667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1220667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1221667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1222667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1223667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 122425fdd593SJeykumar Sankaran }; 122525fdd593SJeykumar Sankaran 1226ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg sc7180_pp[] = { 1227667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1228667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 12297bdc0c4bSKalyan Thota }; 12307bdc0c4bSKalyan Thota 1231386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1232667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1233667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1234667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1235667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1236667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1237667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1238667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1239667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1240667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1241667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1242667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1243667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1244667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1245667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1246667e9985SDmitry Baryshkov -1), 1247667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 12483431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1249667e9985SDmitry Baryshkov -1), 12504369c93cSDmitry Baryshkov }; 12514369c93cSDmitry Baryshkov 1252ac1c5ed6SDmitry Baryshkov static const struct dpu_pingpong_cfg qcm2290_pp[] = { 12535334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 12545334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 12555334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 12565334087eSLoic Poulain }; 12575334087eSLoic Poulain 12584369c93cSDmitry Baryshkov /************************************************************* 12594369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 12604369c93cSDmitry Baryshkov *************************************************************/ 12614369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 12624369c93cSDmitry Baryshkov {\ 12634369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 12644369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 12654369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 12664369c93cSDmitry Baryshkov .sblk = NULL \ 12674369c93cSDmitry Baryshkov } 12684369c93cSDmitry Baryshkov 12694369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 12704369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 12714369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 12724369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1273386fced3SJonathan Marek }; 1274386fced3SJonathan Marek 12757c5ab05eSVinod Koul /************************************************************* 12767c5ab05eSVinod Koul * DSC sub blocks config 12777c5ab05eSVinod Koul *************************************************************/ 12789da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \ 12797c5ab05eSVinod Koul {\ 12807c5ab05eSVinod Koul .name = _name, .id = _id, \ 12817c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 12829da5daa0SMarijn Suijten .features = _features, \ 12837c5ab05eSVinod Koul } 12847c5ab05eSVinod Koul 1285fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sdm845_dsc[] = { 12869da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, 0), 12879da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, 0), 12889da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, 0), 12899da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, 0), 12909da5daa0SMarijn Suijten }; 12919da5daa0SMarijn Suijten 1292fc4fcfb0SDmitry Baryshkov static const struct dpu_dsc_cfg sm8150_dsc[] = { 12939da5daa0SMarijn Suijten DSC_BLK("dsc_0", DSC_0, 0x80000, BIT(DPU_DSC_OUTPUT_CTRL)), 12949da5daa0SMarijn Suijten DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), 12959da5daa0SMarijn Suijten DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)), 12969da5daa0SMarijn Suijten DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)), 12977c5ab05eSVinod Koul }; 12987c5ab05eSVinod Koul 129925fdd593SJeykumar Sankaran /************************************************************* 130025fdd593SJeykumar Sankaran * INTF sub blocks config 130125fdd593SJeykumar Sankaran *************************************************************/ 13028399a5ffSKonrad Dybcio #define INTF_BLK(_name, _id, _base, _len, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 130325fdd593SJeykumar Sankaran {\ 130425fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 13058399a5ffSKonrad Dybcio .base = _base, .len = _len, \ 1306cace3ac4SJonathan Marek .features = _features, \ 130725fdd593SJeykumar Sankaran .type = _type, \ 130825fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1309667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1310667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1311667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 131225fdd593SJeykumar Sankaran } 131325fdd593SJeykumar Sankaran 131494391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 13158399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 13168399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 13178399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 13188399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 131994391a14SAngeloGioacchino Del Regno }; 132094391a14SAngeloGioacchino Del Regno 1321abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 13228399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 13238399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x280, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 13248399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x280, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 13258399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 132625fdd593SJeykumar Sankaran }; 132725fdd593SJeykumar Sankaran 13287bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 13298399a5ffSKonrad 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), 13308399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 13317bdc0c4bSKalyan Thota }; 13327bdc0c4bSKalyan Thota 1333386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 13348399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x6A000, 0x280, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 13358399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 13368399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 13378399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1338386fced3SJonathan Marek }; 1339386fced3SJonathan Marek 1340f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 13418399a5ffSKonrad 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), 13428399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2bc, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 13438399a5ffSKonrad Dybcio INTF_BLK("intf_2", INTF_2, 0x6B000, 0x2bc, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1344f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 13458399a5ffSKonrad Dybcio INTF_BLK("intf_3", INTF_3, 0x6B800, 0x280, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 13468399a5ffSKonrad 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), 13478399a5ffSKonrad 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), 1348f3af2d6eSRob Clark }; 1349f3af2d6eSRob Clark 13505334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 13518399a5ffSKonrad Dybcio INTF_BLK("intf_0", INTF_0, 0x00000, 0x280, INTF_DP, 0, 0, 0, 0, 0, 0), 13528399a5ffSKonrad Dybcio INTF_BLK("intf_1", INTF_1, 0x6A800, 0x2c0, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 13535334087eSLoic Poulain }; 13545334087eSLoic Poulain 135525fdd593SJeykumar Sankaran /************************************************************* 135653324b99SAbhinav Kumar * Writeback blocks config 135753324b99SAbhinav Kumar *************************************************************/ 135853324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1359a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 136053324b99SAbhinav Kumar { \ 136153324b99SAbhinav Kumar .name = _name, .id = _id, \ 136253324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 136353324b99SAbhinav Kumar .features = _features, \ 136453324b99SAbhinav Kumar .format_list = wb2_formats, \ 136553324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 136653324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 136753324b99SAbhinav Kumar .xin_id = __xin_id, \ 136853324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1369a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 137053324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 137153324b99SAbhinav Kumar } 137253324b99SAbhinav Kumar 137353324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 137453324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1375a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 137653324b99SAbhinav Kumar }; 137753324b99SAbhinav Kumar 137853324b99SAbhinav Kumar /************************************************************* 137925fdd593SJeykumar Sankaran * VBIF sub blocks config 138025fdd593SJeykumar Sankaran *************************************************************/ 138125fdd593SJeykumar Sankaran /* VBIF QOS remap */ 138294391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 138394391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1384abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1385abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 138625fdd593SJeykumar Sankaran 138794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 138894391a14SAngeloGioacchino Del Regno { 138994391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 139094391a14SAngeloGioacchino Del Regno .ot_limit = 2, 139194391a14SAngeloGioacchino Del Regno }, 139294391a14SAngeloGioacchino Del Regno { 139394391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 139494391a14SAngeloGioacchino Del Regno .ot_limit = 6, 139594391a14SAngeloGioacchino Del Regno }, 139694391a14SAngeloGioacchino Del Regno { 139794391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 139894391a14SAngeloGioacchino Del Regno .ot_limit = 16, 139994391a14SAngeloGioacchino Del Regno }, 140094391a14SAngeloGioacchino Del Regno }; 140194391a14SAngeloGioacchino Del Regno 140294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 140394391a14SAngeloGioacchino Del Regno { 1404606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 140594391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 140694391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 140794391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 140894391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 140994391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 1410c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 141194391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 141294391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 141394391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 141494391a14SAngeloGioacchino Del Regno }, 141594391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 141694391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 141794391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 141894391a14SAngeloGioacchino Del Regno }, 141994391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 142094391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 142194391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 142294391a14SAngeloGioacchino Del Regno }, 142394391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 142494391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 142594391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 142694391a14SAngeloGioacchino Del Regno }, 142794391a14SAngeloGioacchino Del Regno .memtype_count = 14, 142894391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 142994391a14SAngeloGioacchino Del Regno }, 143094391a14SAngeloGioacchino Del Regno }; 143194391a14SAngeloGioacchino Del Regno 1432abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 143325fdd593SJeykumar Sankaran { 1434606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 143525fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 143625fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 143725fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 1438c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 143925fdd593SJeykumar Sankaran .qos_rt_tbl = { 144025fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 144125fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 144225fdd593SJeykumar Sankaran }, 144325fdd593SJeykumar Sankaran .qos_nrt_tbl = { 144425fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 144525fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 144625fdd593SJeykumar Sankaran }, 144725fdd593SJeykumar Sankaran .memtype_count = 14, 144825fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 144925fdd593SJeykumar Sankaran }, 145025fdd593SJeykumar Sankaran }; 145125fdd593SJeykumar Sankaran 14524a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = { 14534a352c2fSBjorn Andersson .base = 0x0, 14544a352c2fSBjorn Andersson .version = 0x00020000, 14554a352c2fSBjorn Andersson .trigger_sel_off = 0x119c, 14564a352c2fSBjorn Andersson .xin_id = 7, 14574a352c2fSBjorn Andersson .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 14584a352c2fSBjorn Andersson }; 14594a352c2fSBjorn Andersson 1460abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 146125fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 146225fdd593SJeykumar Sankaran }; 146325fdd593SJeykumar Sankaran 1464386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 1465386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 1466386fced3SJonathan Marek }; 1467386fced3SJonathan Marek 1468af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 1469af776a3eSJonathan Marek .base = 0x0, 1470af776a3eSJonathan Marek .version = 0x00010002, 1471af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 1472af776a3eSJonathan Marek .xin_id = 7, 1473af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1474af776a3eSJonathan Marek }; 1475af776a3eSJonathan Marek 14760e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 14770e91bcbbSRobert Foss .base = 0x400, 14780e91bcbbSRobert Foss .version = 0x00020000, 14790e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 14800e91bcbbSRobert Foss .xin_id = 7, 14810e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 14820e91bcbbSRobert Foss }; 14830e91bcbbSRobert Foss 1484100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 1485100d7ef6SDmitry Baryshkov .base = 0x0, 1486100d7ef6SDmitry Baryshkov .version = 0x00020000, 1487100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 1488100d7ef6SDmitry Baryshkov .xin_id = 7, 1489100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1490100d7ef6SDmitry Baryshkov }; 1491100d7ef6SDmitry Baryshkov 149225fdd593SJeykumar Sankaran /************************************************************* 149325fdd593SJeykumar Sankaran * PERF data config 149425fdd593SJeykumar Sankaran *************************************************************/ 149525fdd593SJeykumar Sankaran 149625fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 149794391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 149894391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 149994391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 150094391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 150194391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 150294391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 150394391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 150494391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 150594391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 150694391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 150794391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 150894391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 150994391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 151094391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 151194391a14SAngeloGioacchino Del Regno }; 151294391a14SAngeloGioacchino Del Regno 1513abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 151425fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 151525fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 151625fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 151725fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 151825fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 151925fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 152025fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 152125fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 152225fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 152325fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 152425fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 152525fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 152625fdd593SJeykumar Sankaran }; 152725fdd593SJeykumar Sankaran 152894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 152994391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 153094391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 153194391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 153294391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 153394391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 153494391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 153594391a14SAngeloGioacchino Del Regno }; 153694391a14SAngeloGioacchino Del Regno 15377bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 15387bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 15397bdc0c4bSKalyan Thota }; 15407bdc0c4bSKalyan Thota 1541386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 1542386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 1543386fced3SJonathan Marek }; 1544386fced3SJonathan Marek 1545f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 1546f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 1547f3af2d6eSRob Clark }; 1548f3af2d6eSRob Clark 15495334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 15505334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 15515334087eSLoic Poulain }; 15525334087eSLoic Poulain 1553abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 155425fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 155525fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 155625fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 155725fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 155825fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 155925fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 156025fdd593SJeykumar Sankaran }; 156125fdd593SJeykumar Sankaran 15627bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 15637bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 15647bdc0c4bSKalyan Thota }; 15657bdc0c4bSKalyan Thota 1566f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 1567f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 1568f3af2d6eSRob Clark }; 1569f3af2d6eSRob Clark 157094391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 157194391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 157294391a14SAngeloGioacchino Del Regno }; 157394391a14SAngeloGioacchino Del Regno 1574abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 157525fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 157625fdd593SJeykumar Sankaran }; 157725fdd593SJeykumar Sankaran 15787bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 15797bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 15807bdc0c4bSKalyan Thota }; 15817bdc0c4bSKalyan Thota 158294391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 158394391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 158494391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 158594391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 158694391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 158794391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 158894391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 158994391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 159094391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 159194391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 159294391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 159394391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 159494391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 159594391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 159694391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 159794391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 159894391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 159994391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 160094391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 160194391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 160294391a14SAngeloGioacchino Del Regno }, 160394391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 160494391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 160594391a14SAngeloGioacchino Del Regno }, 160694391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 160794391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 160894391a14SAngeloGioacchino Del Regno }, 160994391a14SAngeloGioacchino Del Regno }, 161094391a14SAngeloGioacchino Del Regno .cdp_cfg = { 161194391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 161294391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 161394391a14SAngeloGioacchino Del Regno }, 161494391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 161594391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 161694391a14SAngeloGioacchino Del Regno }; 161794391a14SAngeloGioacchino Del Regno 1618abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 161925fdd593SJeykumar Sankaran .max_bw_low = 6800000, 162025fdd593SJeykumar Sankaran .max_bw_high = 6800000, 162125fdd593SJeykumar Sankaran .min_core_ib = 2400000, 162225fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 162325fdd593SJeykumar Sankaran .min_dram_ib = 800000, 162425fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 162525fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 162625fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 162725fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 162825fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 162925fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 163025fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 163125fdd593SJeykumar Sankaran .amortizable_threshold = 25, 163225fdd593SJeykumar Sankaran .min_prefill_lines = 24, 163325fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 16345bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 163525fdd593SJeykumar Sankaran .qos_lut_tbl = { 163625fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 163725fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 163825fdd593SJeykumar Sankaran }, 163925fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 164025fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 164125fdd593SJeykumar Sankaran }, 164225fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 164325fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 164425fdd593SJeykumar Sankaran }, 164525fdd593SJeykumar Sankaran }, 164625fdd593SJeykumar Sankaran .cdp_cfg = { 164725fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 164825fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 164925fdd593SJeykumar Sankaran }, 16504f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 16514f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 165225fdd593SJeykumar Sankaran }; 165325fdd593SJeykumar Sankaran 16547bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 165571dc6c08SKrishna Manikandan .max_bw_low = 6800000, 165671dc6c08SKrishna Manikandan .max_bw_high = 6800000, 16577bdc0c4bSKalyan Thota .min_core_ib = 2400000, 16587bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 1659c33b7c03SKalyan Thota .min_dram_ib = 1600000, 1660c33b7c03SKalyan Thota .min_prefill_lines = 24, 16617bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 16625bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 16637bdc0c4bSKalyan Thota .qos_lut_tbl = { 16647bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 16657bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 16667bdc0c4bSKalyan Thota }, 16677bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 16687bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 16697bdc0c4bSKalyan Thota }, 16707bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 16717bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 16727bdc0c4bSKalyan Thota }, 16737bdc0c4bSKalyan Thota }, 16747bdc0c4bSKalyan Thota .cdp_cfg = { 16757bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 16767bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 16777bdc0c4bSKalyan Thota }, 1678c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 1679c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 16807bdc0c4bSKalyan Thota }; 16817bdc0c4bSKalyan Thota 16823581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 16833581b706SAdam Skladowski .max_bw_low = 3100000, 16843581b706SAdam Skladowski .max_bw_high = 4000000, 16853581b706SAdam Skladowski .min_core_ib = 2400000, 16863581b706SAdam Skladowski .min_llcc_ib = 800000, 16873581b706SAdam Skladowski .min_dram_ib = 800000, 16883581b706SAdam Skladowski .min_prefill_lines = 24, 16893581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 16903581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 16913581b706SAdam Skladowski .qos_lut_tbl = { 16923581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 16933581b706SAdam Skladowski .entries = sc7180_qos_linear 16943581b706SAdam Skladowski }, 16953581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 16963581b706SAdam Skladowski .entries = sc7180_qos_macrotile 16973581b706SAdam Skladowski }, 16983581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 16993581b706SAdam Skladowski .entries = sc7180_qos_nrt 17003581b706SAdam Skladowski }, 17013581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 17023581b706SAdam Skladowski }, 17033581b706SAdam Skladowski .cdp_cfg = { 17043581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 17053581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 17063581b706SAdam Skladowski }, 17073581b706SAdam Skladowski .clk_inefficiency_factor = 105, 17083581b706SAdam Skladowski .bw_inefficiency_factor = 120, 17093581b706SAdam Skladowski }; 17103581b706SAdam Skladowski 1711386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 1712386fced3SJonathan Marek .max_bw_low = 12800000, 1713386fced3SJonathan Marek .max_bw_high = 12800000, 1714386fced3SJonathan Marek .min_core_ib = 2400000, 1715386fced3SJonathan Marek .min_llcc_ib = 800000, 1716386fced3SJonathan Marek .min_dram_ib = 800000, 17174f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 1718386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 17195bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 1720386fced3SJonathan Marek .qos_lut_tbl = { 1721386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 1722386fced3SJonathan Marek .entries = sm8150_qos_linear 1723386fced3SJonathan Marek }, 1724386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1725386fced3SJonathan Marek .entries = sc7180_qos_macrotile 1726386fced3SJonathan Marek }, 1727386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1728386fced3SJonathan Marek .entries = sc7180_qos_nrt 1729386fced3SJonathan Marek }, 1730386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1731386fced3SJonathan Marek }, 1732386fced3SJonathan Marek .cdp_cfg = { 1733386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1734386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1735386fced3SJonathan Marek }, 17364f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 17374f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1738386fced3SJonathan Marek }; 1739386fced3SJonathan Marek 1740f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 1741f3af2d6eSRob Clark .max_bw_low = 9600000, 1742f3af2d6eSRob Clark .max_bw_high = 9600000, 1743f3af2d6eSRob Clark .min_core_ib = 2400000, 1744f3af2d6eSRob Clark .min_llcc_ib = 800000, 1745f3af2d6eSRob Clark .min_dram_ib = 800000, 1746f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 1747f3af2d6eSRob Clark .qos_lut_tbl = { 17484a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_linear), 17494a352c2fSBjorn Andersson .entries = sc7180_qos_linear 17504a352c2fSBjorn Andersson }, 17514a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 17524a352c2fSBjorn Andersson .entries = sc7180_qos_macrotile 17534a352c2fSBjorn Andersson }, 17544a352c2fSBjorn Andersson {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 17554a352c2fSBjorn Andersson .entries = sc7180_qos_nrt 17564a352c2fSBjorn Andersson }, 17574a352c2fSBjorn Andersson /* TODO: macrotile-qseed is different from macrotile */ 17584a352c2fSBjorn Andersson }, 17594a352c2fSBjorn Andersson .cdp_cfg = { 17604a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 1}, 17614a352c2fSBjorn Andersson {.rd_enable = 1, .wr_enable = 0} 17624a352c2fSBjorn Andersson }, 17634a352c2fSBjorn Andersson .clk_inefficiency_factor = 105, 17644a352c2fSBjorn Andersson .bw_inefficiency_factor = 120, 17654a352c2fSBjorn Andersson }; 17664a352c2fSBjorn Andersson 1767af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 1768af776a3eSJonathan Marek .max_bw_low = 13700000, 1769af776a3eSJonathan Marek .max_bw_high = 16600000, 1770af776a3eSJonathan Marek .min_core_ib = 4800000, 1771af776a3eSJonathan Marek .min_llcc_ib = 0, 1772af776a3eSJonathan Marek .min_dram_ib = 800000, 17734f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 1774af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 17755bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 1776af776a3eSJonathan Marek .qos_lut_tbl = { 1777af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 1778af776a3eSJonathan Marek .entries = sc7180_qos_linear 1779af776a3eSJonathan Marek }, 1780af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1781af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 1782af776a3eSJonathan Marek }, 1783af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1784af776a3eSJonathan Marek .entries = sc7180_qos_nrt 1785af776a3eSJonathan Marek }, 1786af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1787af776a3eSJonathan Marek }, 1788af776a3eSJonathan Marek .cdp_cfg = { 1789af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1790af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1791af776a3eSJonathan Marek }, 17924f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 17934f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1794af776a3eSJonathan Marek }; 1795af776a3eSJonathan Marek 17965334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 17975334087eSLoic Poulain .max_bw_low = 2700000, 17985334087eSLoic Poulain .max_bw_high = 2700000, 17995334087eSLoic Poulain .min_core_ib = 1300000, 18005334087eSLoic Poulain .min_llcc_ib = 0, 18015334087eSLoic Poulain .min_dram_ib = 1600000, 18025334087eSLoic Poulain .min_prefill_lines = 24, 18035334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 18045334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 18055334087eSLoic Poulain .qos_lut_tbl = { 18065334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 18075334087eSLoic Poulain .entries = qcm2290_qos_linear 18085334087eSLoic Poulain }, 18095334087eSLoic Poulain }, 18105334087eSLoic Poulain .cdp_cfg = { 18115334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 18125334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 18135334087eSLoic Poulain }, 18145334087eSLoic Poulain .clk_inefficiency_factor = 105, 18155334087eSLoic Poulain .bw_inefficiency_factor = 120, 18165334087eSLoic Poulain }; 181725fdd593SJeykumar Sankaran /************************************************************* 1818de7d480fSDmitry Baryshkov * Hardware catalog 181925fdd593SJeykumar Sankaran *************************************************************/ 182025fdd593SJeykumar Sankaran 1821de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 182294391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 1823fbbd8cceSDmitry Baryshkov .ubwc = &msm8998_ubwc_cfg, 182494391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 182594391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 182694391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 182794391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 182894391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 182994391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 183094391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 183194391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 18326452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 18336452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 183494391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 183594391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 183694391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 183794391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 183894391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 183994391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 184094391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 1841477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 184294391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 184394391a14SAngeloGioacchino Del Regno }; 184494391a14SAngeloGioacchino Del Regno 1845de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 184625fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 1847fbbd8cceSDmitry Baryshkov .ubwc = &sdm845_ubwc_cfg, 184825fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 184925fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 185025fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 185125fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 185225fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 185325fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 185425fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 185525fdd593SJeykumar Sankaran .mixer = sdm845_lm, 185625fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 185725fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 18587c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 18597c5ab05eSVinod Koul .dsc = sdm845_dsc, 186025fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 186125fdd593SJeykumar Sankaran .intf = sdm845_intf, 186225fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 186325fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 186425fdd593SJeykumar Sankaran .reg_dma_count = 1, 1865481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1866477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 1867597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 186825fdd593SJeykumar Sankaran }; 186925fdd593SJeykumar Sankaran 1870de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 18717bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 1872fbbd8cceSDmitry Baryshkov .ubwc = &sc7180_ubwc_cfg, 18737bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 18747bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 18757bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 18767bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 18777bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 18787bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 18797bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 18807bdc0c4bSKalyan Thota .mixer = sc7180_lm, 1881e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 1882e47616dfSKalyan Thota .dspp = sc7180_dspp, 18837bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 18847bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 18857bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 18867bdc0c4bSKalyan Thota .intf = sc7180_intf, 188751e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 188851e4d60eSAbhinav Kumar .wb = sm8250_wb, 18897bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 18907bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 18917bdc0c4bSKalyan Thota .reg_dma_count = 1, 1892481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1893477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 1894597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 18957bdc0c4bSKalyan Thota }; 18967bdc0c4bSKalyan Thota 18973581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 18983581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 1899fbbd8cceSDmitry Baryshkov .ubwc = &sm6115_ubwc_cfg, 19003581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 19013581b706SAdam Skladowski .mdp = sm6115_mdp, 19023581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 19033581b706SAdam Skladowski .ctl = qcm2290_ctl, 19043581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 19053581b706SAdam Skladowski .sspp = sm6115_sspp, 19063581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 19073581b706SAdam Skladowski .mixer = qcm2290_lm, 19083581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 19093581b706SAdam Skladowski .dspp = qcm2290_dspp, 19103581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 19113581b706SAdam Skladowski .pingpong = qcm2290_pp, 19123581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 19133581b706SAdam Skladowski .intf = qcm2290_intf, 19143581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 19153581b706SAdam Skladowski .vbif = sdm845_vbif, 19163581b706SAdam Skladowski .perf = &sm6115_perf_data, 19173581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 19183581b706SAdam Skladowski }; 19193581b706SAdam Skladowski 1920de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 1921386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 1922fbbd8cceSDmitry Baryshkov .ubwc = &sm8150_ubwc_cfg, 1923386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 1924386fced3SJonathan Marek .mdp = sdm845_mdp, 1925386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 1926386fced3SJonathan Marek .ctl = sm8150_ctl, 1927386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 1928386fced3SJonathan Marek .sspp = sdm845_sspp, 1929386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 1930386fced3SJonathan Marek .mixer = sm8150_lm, 193105ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 193205ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 19339da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 19349da5daa0SMarijn Suijten .dsc = sm8150_dsc, 1935386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 1936386fced3SJonathan Marek .pingpong = sm8150_pp, 19374369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 19384369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 1939386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 1940386fced3SJonathan Marek .intf = sm8150_intf, 1941386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 1942386fced3SJonathan Marek .vbif = sdm845_vbif, 1943386fced3SJonathan Marek .reg_dma_count = 1, 1944481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 1945477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 1946597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 1947386fced3SJonathan Marek }; 1948386fced3SJonathan Marek 1949de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 1950f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 1951fbbd8cceSDmitry Baryshkov .ubwc = &sc8180x_ubwc_cfg, 1952f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 1953f3af2d6eSRob Clark .mdp = sc8180x_mdp, 1954f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 1955f3af2d6eSRob Clark .ctl = sm8150_ctl, 1956f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 1957f3af2d6eSRob Clark .sspp = sdm845_sspp, 1958f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 1959f3af2d6eSRob Clark .mixer = sm8150_lm, 1960f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 1961f3af2d6eSRob Clark .pingpong = sm8150_pp, 1962f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 1963f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 1964f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 1965f3af2d6eSRob Clark .intf = sc8180x_intf, 1966f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 1967f3af2d6eSRob Clark .vbif = sdm845_vbif, 1968f3af2d6eSRob Clark .reg_dma_count = 1, 1969481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 1970477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 1971f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 1972f3af2d6eSRob Clark }; 1973f3af2d6eSRob Clark 1974de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 1975af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 1976fbbd8cceSDmitry Baryshkov .ubwc = &sm8250_ubwc_cfg, 1977af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 1978af776a3eSJonathan Marek .mdp = sm8250_mdp, 1979af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 1980af776a3eSJonathan Marek .ctl = sm8150_ctl, 1981d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 1982d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 1983af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 1984af776a3eSJonathan Marek .mixer = sm8150_lm, 198505ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 198605ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 19879da5daa0SMarijn Suijten .dsc_count = ARRAY_SIZE(sm8150_dsc), 19889da5daa0SMarijn Suijten .dsc = sm8150_dsc, 1989af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 1990af776a3eSJonathan Marek .pingpong = sm8150_pp, 19914369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 19924369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 1993af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 1994af776a3eSJonathan Marek .intf = sm8150_intf, 1995af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 1996af776a3eSJonathan Marek .vbif = sdm845_vbif, 199753324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 199853324b99SAbhinav Kumar .wb = sm8250_wb, 1999af776a3eSJonathan Marek .reg_dma_count = 1, 2000481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2001477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2002597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2003af776a3eSJonathan Marek }; 2004af776a3eSJonathan Marek 2005de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 20065334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 2007fbbd8cceSDmitry Baryshkov .ubwc = &qcm2290_ubwc_cfg, 20085334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 20095334087eSLoic Poulain .mdp = qcm2290_mdp, 20105334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 20115334087eSLoic Poulain .ctl = qcm2290_ctl, 20125334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 20135334087eSLoic Poulain .sspp = qcm2290_sspp, 20145334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 20155334087eSLoic Poulain .mixer = qcm2290_lm, 20165334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 20175334087eSLoic Poulain .dspp = qcm2290_dspp, 20185334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 20195334087eSLoic Poulain .pingpong = qcm2290_pp, 20205334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 20215334087eSLoic Poulain .intf = qcm2290_intf, 20225334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 20235334087eSLoic Poulain .vbif = sdm845_vbif, 2024477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 20255334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 20265334087eSLoic Poulain }; 20275334087eSLoic Poulain 2028*b8ece0c6SDmitry Baryshkov #include "catalog/dpu_7_0_sm8350.h" 2029f0f2c32aSDmitry Baryshkov #include "catalog/dpu_7_2_sc7280.h" 2030f0f2c32aSDmitry Baryshkov 2031225978f4SDmitry Baryshkov #include "catalog/dpu_8_0_sc8280xp.h" 20329cc54793SDmitry Baryshkov #include "catalog/dpu_8_1_sm8450.h" 20339cc54793SDmitry Baryshkov 20349cc54793SDmitry Baryshkov #include "catalog/dpu_9_0_sm8550.h" 20359cc54793SDmitry Baryshkov 2036abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2037de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2038de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2039de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2040de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2041de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2042de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2043de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2044de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2045de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 20463581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2047de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 20480e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 2049de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 20504a352c2fSBjorn Andersson { .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg}, 2051100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 2052efcd0107SNeil Armstrong { .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg}, 205325fdd593SJeykumar Sankaran }; 205425fdd593SJeykumar Sankaran 2055de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 205625fdd593SJeykumar Sankaran { 205725fdd593SJeykumar Sankaran int i; 205825fdd593SJeykumar Sankaran 205925fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2060de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2061de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 206225fdd593SJeykumar Sankaran } 206325fdd593SJeykumar Sankaran 206425fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 206532084967SDmitry Baryshkov 206625fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 206725fdd593SJeykumar Sankaran } 206825fdd593SJeykumar Sankaran 2069