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 * SSPP sub blocks config 32025fdd593SJeykumar Sankaran *************************************************************/ 32125fdd593SJeykumar Sankaran 32225fdd593SJeykumar Sankaran /* SSPP common configuration */ 323b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 32425fdd593SJeykumar Sankaran { \ 32525fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 32625fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 32725fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 32825fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 32925fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 33025fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 331b75ab05aSShubhashree Dhar .id = qseed_ver, \ 33225fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 33325fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 33425fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 33525fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 33625fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 337e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 33825fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 339e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 340dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 341dabfdd89SVinod Polimera } 342dabfdd89SVinod Polimera 343dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 344dabfdd89SVinod Polimera { \ 345dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 346dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 347dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 348dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 349dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 350dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 351dabfdd89SVinod Polimera .id = qseed_ver, \ 352dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 353dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 354dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 355dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 356dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 357dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 358dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 359dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 360dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 36125fdd593SJeykumar Sankaran } 36225fdd593SJeykumar Sankaran 36325fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 36425fdd593SJeykumar Sankaran { \ 36525fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 36625fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 36725fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 36825fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 36925fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 37025fdd593SJeykumar Sankaran .format_list = plane_formats, \ 371e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 37225fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 373e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 37425fdd593SJeykumar Sankaran } 37525fdd593SJeykumar Sankaran 37694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 37794391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 37894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 37994391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 38094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 38194391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 38294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 38394391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 38494391a14SAngeloGioacchino Del Regno 385dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 386dabfdd89SVinod Polimera .rot_maxheight = 1088, 387dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 388dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 389dabfdd89SVinod Polimera }; 390dabfdd89SVinod Polimera 391b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 392b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 393b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 394b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 395b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 396b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 397b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 398b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 39925fdd593SJeykumar Sankaran 40025fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 40125fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 40225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 40325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 40425fdd593SJeykumar Sankaran 4058f940ddbSKonrad Dybcio #define SSPP_BLK(_name, _id, _base, _len, _features, \ 40607ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 40725fdd593SJeykumar Sankaran { \ 40825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 4098f940ddbSKonrad Dybcio .base = _base, .len = _len, \ 41007ca1fc0SSravanthi Kollukuduru .features = _features, \ 41125fdd593SJeykumar Sankaran .sblk = &_sblk, \ 41225fdd593SJeykumar Sankaran .xin_id = _xinid, \ 41307ca1fc0SSravanthi Kollukuduru .type = _type, \ 41425fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 41525fdd593SJeykumar Sankaran } 41625fdd593SJeykumar Sankaran 417b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 418b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 419b75ab05aSShubhashree Dhar 420dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 421dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 422dabfdd89SVinod Polimera 4233581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 42438164e99SDmitry Baryshkov _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED4); 4253581b706SAdam Skladowski 426d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 42703c0c3cbSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 428d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 42903c0c3cbSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 430d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 43103c0c3cbSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 432d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 43303c0c3cbSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 434d21fc5dfSDmitry Baryshkov 435100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 436c7da17b6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 437100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 438c7da17b6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 439100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 440c7da17b6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 441100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 442c7da17b6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 443100d7ef6SDmitry Baryshkov 444efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_0 = 445d113d267SDmitry Baryshkov _VIG_SBLK("0", 7, DPU_SSPP_SCALER_QSEED4); 446efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_1 = 447d113d267SDmitry Baryshkov _VIG_SBLK("1", 8, DPU_SSPP_SCALER_QSEED4); 448efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_2 = 449d113d267SDmitry Baryshkov _VIG_SBLK("2", 9, DPU_SSPP_SCALER_QSEED4); 450efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_vig_sblk_3 = 451d113d267SDmitry Baryshkov _VIG_SBLK("3", 10, DPU_SSPP_SCALER_QSEED4); 452efcd0107SNeil Armstrong static const struct dpu_sspp_sub_blks sm8550_dma_sblk_4 = _DMA_SBLK("12", 5); 453e3011955SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8550_dma_sblk_5 = _DMA_SBLK("13", 6); 454efcd0107SNeil Armstrong 4554a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_0 = 456b3587cb6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); 4574a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_1 = 458b3587cb6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); 4594a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_2 = 460b3587cb6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); 4614a352c2fSBjorn Andersson static const struct dpu_sspp_sub_blks sc8280xp_vig_sblk_3 = 462b3587cb6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); 4634a352c2fSBjorn Andersson 4645334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 4655334087eSLoic Poulain { \ 4665334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 4675334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 4685334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 4695334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 4705334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 4715334087eSLoic Poulain .format_list = plane_formats_yuv, \ 4725334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 4735334087eSLoic Poulain .virt_format_list = plane_formats, \ 4745334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 4755334087eSLoic Poulain } 4765334087eSLoic Poulain 4775334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 4785334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 4795334087eSLoic Poulain 48025fdd593SJeykumar Sankaran /************************************************************* 48125fdd593SJeykumar Sankaran * MIXER sub blocks config 48225fdd593SJeykumar Sankaran *************************************************************/ 4837bdc0c4bSKalyan Thota 484e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 48525fdd593SJeykumar Sankaran { \ 48625fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 48725fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 4887bdc0c4bSKalyan Thota .features = _fmask, \ 4897bdc0c4bSKalyan Thota .sblk = _sblk, \ 49025fdd593SJeykumar Sankaran .pingpong = _pp, \ 491e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 492e47616dfSKalyan Thota .dspp = _dspp \ 49325fdd593SJeykumar Sankaran } 49425fdd593SJeykumar Sankaran 49594391a14SAngeloGioacchino Del Regno /* MSM8998 */ 49694391a14SAngeloGioacchino Del Regno 49794391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 49894391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 49994391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 50094391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 50194391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 50294391a14SAngeloGioacchino Del Regno 0x260, 0x290 50394391a14SAngeloGioacchino Del Regno }, 50494391a14SAngeloGioacchino Del Regno }; 50594391a14SAngeloGioacchino Del Regno 50694391a14SAngeloGioacchino Del Regno /* SDM845 */ 50794391a14SAngeloGioacchino Del Regno 50894391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 50994391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 51094391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 51194391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 51294391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 51394391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 51494391a14SAngeloGioacchino Del Regno }, 51594391a14SAngeloGioacchino Del Regno }; 51694391a14SAngeloGioacchino Del Regno 5177bdc0c4bSKalyan Thota /* SC7180 */ 5187bdc0c4bSKalyan Thota 5197bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 5207bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 5217bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 5227bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 5237bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 5247bdc0c4bSKalyan Thota }, 5257bdc0c4bSKalyan Thota }; 5267bdc0c4bSKalyan Thota 5275334087eSLoic Poulain /* QCM2290 */ 5285334087eSLoic Poulain 5295334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 530da06be8bSDmitry Baryshkov .maxwidth = DEFAULT_DPU_LINE_WIDTH, 5315334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 5325334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 5335334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 5345334087eSLoic Poulain }, 5355334087eSLoic Poulain }; 5365334087eSLoic Poulain 53725fdd593SJeykumar Sankaran /************************************************************* 538e47616dfSKalyan Thota * DSPP sub blocks config 539e47616dfSKalyan Thota *************************************************************/ 54094391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 54194391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 54294391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 54394391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 54494391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 54594391a14SAngeloGioacchino Del Regno }; 54694391a14SAngeloGioacchino Del Regno 5474259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 5484259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 5494259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 5504259ff7aSKalyan Thota }; 5514259ff7aSKalyan Thota 55205ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 55305ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 55405ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 55505ae91d9SDmitry Baryshkov }; 55605ae91d9SDmitry Baryshkov 557862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 558e47616dfSKalyan Thota {\ 559e47616dfSKalyan Thota .name = _name, .id = _id, \ 560e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 561862314bcSAngeloGioacchino Del Regno .features = _mask, \ 56205ae91d9SDmitry Baryshkov .sblk = _sblk \ 563e47616dfSKalyan Thota } 564e47616dfSKalyan Thota 565e47616dfSKalyan Thota /************************************************************* 56625fdd593SJeykumar Sankaran * PINGPONG sub blocks config 56725fdd593SJeykumar Sankaran *************************************************************/ 56825fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 56925fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 57025fdd593SJeykumar Sankaran .version = 0x1}, 57125fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 57225fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 57325fdd593SJeykumar Sankaran }; 57425fdd593SJeykumar Sankaran 57525fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 57625fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 57725fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 57825fdd593SJeykumar Sankaran }; 57925fdd593SJeykumar Sankaran 580591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 581591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 582591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 583591e34a0SKrishna Manikandan }; 584591e34a0SKrishna Manikandan 585efcd0107SNeil Armstrong #define PP_BLK_DIPHER(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 586efcd0107SNeil Armstrong {\ 587efcd0107SNeil Armstrong .name = _name, .id = _id, \ 588efcd0107SNeil Armstrong .base = _base, .len = 0, \ 589efcd0107SNeil Armstrong .features = BIT(DPU_PINGPONG_DITHER), \ 590efcd0107SNeil Armstrong .merge_3d = _merge_3d, \ 591efcd0107SNeil Armstrong .sblk = &_sblk, \ 592efcd0107SNeil Armstrong .intr_done = _done, \ 593efcd0107SNeil Armstrong .intr_rdptr = _rdptr, \ 594efcd0107SNeil Armstrong } 595667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 59625fdd593SJeykumar Sankaran {\ 59725fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 59825fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 59925fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 6004369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 601667e9985SDmitry Baryshkov .sblk = &_sblk, \ 602667e9985SDmitry Baryshkov .intr_done = _done, \ 603667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 60425fdd593SJeykumar Sankaran } 605667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 60625fdd593SJeykumar Sankaran {\ 60725fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 60825fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 60925fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 6104369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 611667e9985SDmitry Baryshkov .sblk = &_sblk, \ 612667e9985SDmitry Baryshkov .intr_done = _done, \ 613667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 61425fdd593SJeykumar Sankaran } 61525fdd593SJeykumar Sankaran 6164369c93cSDmitry Baryshkov /************************************************************* 6174369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 6184369c93cSDmitry Baryshkov *************************************************************/ 6194369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 6204369c93cSDmitry Baryshkov {\ 6214369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 6224369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 6234369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 6244369c93cSDmitry Baryshkov .sblk = NULL \ 6254369c93cSDmitry Baryshkov } 6264369c93cSDmitry Baryshkov 6277c5ab05eSVinod Koul /************************************************************* 6287c5ab05eSVinod Koul * DSC sub blocks config 6297c5ab05eSVinod Koul *************************************************************/ 6309da5daa0SMarijn Suijten #define DSC_BLK(_name, _id, _base, _features) \ 6317c5ab05eSVinod Koul {\ 6327c5ab05eSVinod Koul .name = _name, .id = _id, \ 6337c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 6349da5daa0SMarijn Suijten .features = _features, \ 6357c5ab05eSVinod Koul } 6367c5ab05eSVinod Koul 63725fdd593SJeykumar Sankaran /************************************************************* 63825fdd593SJeykumar Sankaran * INTF sub blocks config 63925fdd593SJeykumar Sankaran *************************************************************/ 6408399a5ffSKonrad Dybcio #define INTF_BLK(_name, _id, _base, _len, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 64125fdd593SJeykumar Sankaran {\ 64225fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 6438399a5ffSKonrad Dybcio .base = _base, .len = _len, \ 644cace3ac4SJonathan Marek .features = _features, \ 64525fdd593SJeykumar Sankaran .type = _type, \ 64625fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 647667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 648667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 649667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 65025fdd593SJeykumar Sankaran } 65125fdd593SJeykumar Sankaran 65225fdd593SJeykumar Sankaran /************************************************************* 65353324b99SAbhinav Kumar * Writeback blocks config 65453324b99SAbhinav Kumar *************************************************************/ 65553324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 656a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 65753324b99SAbhinav Kumar { \ 65853324b99SAbhinav Kumar .name = _name, .id = _id, \ 65953324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 66053324b99SAbhinav Kumar .features = _features, \ 66153324b99SAbhinav Kumar .format_list = wb2_formats, \ 66253324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 66353324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 66453324b99SAbhinav Kumar .xin_id = __xin_id, \ 66553324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 666a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 66753324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 66853324b99SAbhinav Kumar } 66953324b99SAbhinav Kumar 67053324b99SAbhinav Kumar /************************************************************* 67125fdd593SJeykumar Sankaran * VBIF sub blocks config 67225fdd593SJeykumar Sankaran *************************************************************/ 67325fdd593SJeykumar Sankaran /* VBIF QOS remap */ 67494391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 67594391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 676abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 677abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 67825fdd593SJeykumar Sankaran 67994391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 68094391a14SAngeloGioacchino Del Regno { 68194391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 68294391a14SAngeloGioacchino Del Regno .ot_limit = 2, 68394391a14SAngeloGioacchino Del Regno }, 68494391a14SAngeloGioacchino Del Regno { 68594391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 68694391a14SAngeloGioacchino Del Regno .ot_limit = 6, 68794391a14SAngeloGioacchino Del Regno }, 68894391a14SAngeloGioacchino Del Regno { 68994391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 69094391a14SAngeloGioacchino Del Regno .ot_limit = 16, 69194391a14SAngeloGioacchino Del Regno }, 69294391a14SAngeloGioacchino Del Regno }; 69394391a14SAngeloGioacchino Del Regno 69494391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 69594391a14SAngeloGioacchino Del Regno { 696606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 69794391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 69894391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 69994391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 70094391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 70194391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 702c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 70394391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 70494391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 70594391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 70694391a14SAngeloGioacchino Del Regno }, 70794391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 70894391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 70994391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 71094391a14SAngeloGioacchino Del Regno }, 71194391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 71294391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 71394391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 71494391a14SAngeloGioacchino Del Regno }, 71594391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 71694391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 71794391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 71894391a14SAngeloGioacchino Del Regno }, 71994391a14SAngeloGioacchino Del Regno .memtype_count = 14, 72094391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 72194391a14SAngeloGioacchino Del Regno }, 72294391a14SAngeloGioacchino Del Regno }; 72394391a14SAngeloGioacchino Del Regno 724abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 72525fdd593SJeykumar Sankaran { 726606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 72725fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 72825fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 72925fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 730c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 73125fdd593SJeykumar Sankaran .qos_rt_tbl = { 73225fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 73325fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 73425fdd593SJeykumar Sankaran }, 73525fdd593SJeykumar Sankaran .qos_nrt_tbl = { 73625fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 73725fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 73825fdd593SJeykumar Sankaran }, 73925fdd593SJeykumar Sankaran .memtype_count = 14, 74025fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 74125fdd593SJeykumar Sankaran }, 74225fdd593SJeykumar Sankaran }; 74325fdd593SJeykumar Sankaran 7444a352c2fSBjorn Andersson static const struct dpu_reg_dma_cfg sc8280xp_regdma = { 7454a352c2fSBjorn Andersson .base = 0x0, 7464a352c2fSBjorn Andersson .version = 0x00020000, 7474a352c2fSBjorn Andersson .trigger_sel_off = 0x119c, 7484a352c2fSBjorn Andersson .xin_id = 7, 7494a352c2fSBjorn Andersson .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 7504a352c2fSBjorn Andersson }; 7514a352c2fSBjorn Andersson 752abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 75325fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 75425fdd593SJeykumar Sankaran }; 75525fdd593SJeykumar Sankaran 756386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 757386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 758386fced3SJonathan Marek }; 759386fced3SJonathan Marek 760af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 761af776a3eSJonathan Marek .base = 0x0, 762af776a3eSJonathan Marek .version = 0x00010002, 763af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 764af776a3eSJonathan Marek .xin_id = 7, 765af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 766af776a3eSJonathan Marek }; 767af776a3eSJonathan Marek 7680e91bcbbSRobert Foss static const struct dpu_reg_dma_cfg sm8350_regdma = { 7690e91bcbbSRobert Foss .base = 0x400, 7700e91bcbbSRobert Foss .version = 0x00020000, 7710e91bcbbSRobert Foss .trigger_sel_off = 0x119c, 7720e91bcbbSRobert Foss .xin_id = 7, 7730e91bcbbSRobert Foss .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 7740e91bcbbSRobert Foss }; 7750e91bcbbSRobert Foss 776100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 777100d7ef6SDmitry Baryshkov .base = 0x0, 778100d7ef6SDmitry Baryshkov .version = 0x00020000, 779100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 780100d7ef6SDmitry Baryshkov .xin_id = 7, 781100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 782100d7ef6SDmitry Baryshkov }; 783100d7ef6SDmitry Baryshkov 78425fdd593SJeykumar Sankaran /************************************************************* 78525fdd593SJeykumar Sankaran * PERF data config 78625fdd593SJeykumar Sankaran *************************************************************/ 78725fdd593SJeykumar Sankaran 78825fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 78994391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 79094391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 79194391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 79294391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 79394391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 79494391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 79594391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 79694391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 79794391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 79894391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 79994391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 80094391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 80194391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 80294391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 80394391a14SAngeloGioacchino Del Regno }; 80494391a14SAngeloGioacchino Del Regno 805abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 80625fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 80725fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 80825fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 80925fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 81025fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 81125fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 81225fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 81325fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 81425fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 81525fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 81625fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 81725fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 81825fdd593SJeykumar Sankaran }; 81925fdd593SJeykumar Sankaran 82094391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 82194391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 82294391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 82394391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 82494391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 82594391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 82694391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 82794391a14SAngeloGioacchino Del Regno }; 82894391a14SAngeloGioacchino Del Regno 8297bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 8307bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 8317bdc0c4bSKalyan Thota }; 8327bdc0c4bSKalyan Thota 833386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 834386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 835386fced3SJonathan Marek }; 836386fced3SJonathan Marek 837f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 838f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 839f3af2d6eSRob Clark }; 840f3af2d6eSRob Clark 8415334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 8425334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 8435334087eSLoic Poulain }; 8445334087eSLoic Poulain 845abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 84625fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 84725fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 84825fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 84925fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 85025fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 85125fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 85225fdd593SJeykumar Sankaran }; 85325fdd593SJeykumar Sankaran 8547bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 8557bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 8567bdc0c4bSKalyan Thota }; 8577bdc0c4bSKalyan Thota 858f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 859f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 860f3af2d6eSRob Clark }; 861f3af2d6eSRob Clark 86294391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 86394391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 86494391a14SAngeloGioacchino Del Regno }; 86594391a14SAngeloGioacchino Del Regno 866abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 86725fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 86825fdd593SJeykumar Sankaran }; 86925fdd593SJeykumar Sankaran 8707bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 8717bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 8727bdc0c4bSKalyan Thota }; 8737bdc0c4bSKalyan Thota 87425fdd593SJeykumar Sankaran /************************************************************* 875de7d480fSDmitry Baryshkov * Hardware catalog 87625fdd593SJeykumar Sankaran *************************************************************/ 87725fdd593SJeykumar Sankaran 8781c611c48SDmitry Baryshkov #include "catalog/dpu_3_0_msm8998.h" 8791c611c48SDmitry Baryshkov 880460c410fSDmitry Baryshkov #include "catalog/dpu_4_0_sdm845.h" 881460c410fSDmitry Baryshkov 88225035306SDmitry Baryshkov #include "catalog/dpu_5_0_sm8150.h" 88397e2c803SDmitry Baryshkov #include "catalog/dpu_5_1_sc8180x.h" 884f3af2d6eSRob Clark 8852f36168eSDmitry Baryshkov #include "catalog/dpu_6_0_sm8250.h" 886c9cd1552SDmitry Baryshkov #include "catalog/dpu_6_2_sc7180.h" 88701f2e9a7SDmitry Baryshkov #include "catalog/dpu_6_3_sm6115.h" 888*5ce22484SDmitry Baryshkov #include "catalog/dpu_6_5_qcm2290.h" 88901f2e9a7SDmitry Baryshkov 890b8ece0c6SDmitry Baryshkov #include "catalog/dpu_7_0_sm8350.h" 891f0f2c32aSDmitry Baryshkov #include "catalog/dpu_7_2_sc7280.h" 892f0f2c32aSDmitry Baryshkov 893225978f4SDmitry Baryshkov #include "catalog/dpu_8_0_sc8280xp.h" 8949cc54793SDmitry Baryshkov #include "catalog/dpu_8_1_sm8450.h" 8959cc54793SDmitry Baryshkov 8969cc54793SDmitry Baryshkov #include "catalog/dpu_9_0_sm8550.h" 8979cc54793SDmitry Baryshkov 898abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 899de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 900de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 901de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 902de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 903de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 904de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 905de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 906de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 907de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 9083581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 909de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 9100e91bcbbSRobert Foss { .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg}, 911de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 9124a352c2fSBjorn Andersson { .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg}, 913100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 914efcd0107SNeil Armstrong { .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg}, 91525fdd593SJeykumar Sankaran }; 91625fdd593SJeykumar Sankaran 917de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 91825fdd593SJeykumar Sankaran { 91925fdd593SJeykumar Sankaran int i; 92025fdd593SJeykumar Sankaran 92125fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 922de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 923de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 92425fdd593SJeykumar Sankaran } 92525fdd593SJeykumar Sankaran 92625fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 92732084967SDmitry Baryshkov 92825fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 92925fdd593SJeykumar Sankaran } 93025fdd593SJeykumar Sankaran 931