197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 225fdd593SJeykumar Sankaran /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. 353324b99SAbhinav Kumar * Copyright (c) 2022. Qualcomm Innovation Center, Inc. All rights reserved. 425fdd593SJeykumar Sankaran */ 525fdd593SJeykumar Sankaran 625fdd593SJeykumar Sankaran #define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__ 725fdd593SJeykumar Sankaran #include <linux/slab.h> 825fdd593SJeykumar Sankaran #include <linux/of_address.h> 925fdd593SJeykumar Sankaran #include <linux/platform_device.h> 1025fdd593SJeykumar Sankaran #include "dpu_hw_mdss.h" 11597762d5SDmitry Baryshkov #include "dpu_hw_interrupts.h" 1225fdd593SJeykumar Sankaran #include "dpu_hw_catalog.h" 1325fdd593SJeykumar Sankaran #include "dpu_kms.h" 1425fdd593SJeykumar Sankaran 157bdc0c4bSKalyan Thota #define VIG_MASK \ 167bdc0c4bSKalyan Thota (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 17b8dab65bSAngeloGioacchino Del Regno BIT(DPU_SSPP_CSC_10BIT) | BIT(DPU_SSPP_CDP) |\ 1825fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_EXCL_RECT)) 1925fdd593SJeykumar Sankaran 2094391a14SAngeloGioacchino Del Regno #define VIG_MSM8998_MASK \ 2194391a14SAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_SCALER_QSEED3)) 2294391a14SAngeloGioacchino Del Regno 237bdc0c4bSKalyan Thota #define VIG_SDM845_MASK \ 24b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3)) 257bdc0c4bSKalyan Thota 267bdc0c4bSKalyan Thota #define VIG_SC7180_MASK \ 27b8dab65bSAngeloGioacchino Del Regno (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED4)) 287bdc0c4bSKalyan Thota 29d21fc5dfSDmitry Baryshkov #define VIG_SM8250_MASK \ 30095eed89SDmitry Baryshkov (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL) | BIT(DPU_SSPP_SCALER_QSEED3LITE)) 31d21fc5dfSDmitry Baryshkov 325334087eSLoic Poulain #define VIG_QCM2290_MASK (VIG_MASK | BIT(DPU_SSPP_QOS_8LVL)) 335334087eSLoic Poulain 3494391a14SAngeloGioacchino Del Regno #define DMA_MSM8998_MASK \ 3594391a14SAngeloGioacchino Del Regno (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) |\ 3694391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 3794391a14SAngeloGioacchino Del Regno BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 3894391a14SAngeloGioacchino Del Regno 39dabfdd89SVinod Polimera #define VIG_SC7280_MASK \ 40dabfdd89SVinod Polimera (VIG_SC7180_MASK | BIT(DPU_SSPP_INLINE_ROTATION)) 41dabfdd89SVinod Polimera 4225fdd593SJeykumar Sankaran #define DMA_SDM845_MASK \ 4325fdd593SJeykumar Sankaran (BIT(DPU_SSPP_SRC) | BIT(DPU_SSPP_QOS) | BIT(DPU_SSPP_QOS_8LVL) |\ 4425fdd593SJeykumar Sankaran BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\ 4525fdd593SJeykumar Sankaran BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT)) 4625fdd593SJeykumar Sankaran 4707ca1fc0SSravanthi Kollukuduru #define DMA_CURSOR_SDM845_MASK \ 4807ca1fc0SSravanthi Kollukuduru (DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR)) 4907ca1fc0SSravanthi Kollukuduru 5094391a14SAngeloGioacchino Del Regno #define DMA_CURSOR_MSM8998_MASK \ 5194391a14SAngeloGioacchino Del Regno (DMA_MSM8998_MASK | BIT(DPU_SSPP_CURSOR)) 5294391a14SAngeloGioacchino Del Regno 532d8a4edbSDmitry Baryshkov #define MIXER_MSM8998_MASK \ 5425fdd593SJeykumar Sankaran (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER)) 5525fdd593SJeykumar Sankaran 562d8a4edbSDmitry Baryshkov #define MIXER_SDM845_MASK \ 572d8a4edbSDmitry Baryshkov (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 582d8a4edbSDmitry Baryshkov 597bdc0c4bSKalyan Thota #define MIXER_SC7180_MASK \ 602d8a4edbSDmitry Baryshkov (BIT(DPU_DIM_LAYER) | BIT(DPU_MIXER_COMBINED_ALPHA)) 617bdc0c4bSKalyan Thota 6225fdd593SJeykumar Sankaran #define PINGPONG_SDM845_MASK BIT(DPU_PINGPONG_DITHER) 6325fdd593SJeykumar Sankaran 6425fdd593SJeykumar Sankaran #define PINGPONG_SDM845_SPLIT_MASK \ 6525fdd593SJeykumar Sankaran (PINGPONG_SDM845_MASK | BIT(DPU_PINGPONG_TE2)) 6625fdd593SJeykumar Sankaran 67591e34a0SKrishna Manikandan #define CTL_SC7280_MASK \ 6844bf8704SKalyan Thota (BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE) | BIT(DPU_CTL_VM_CFG)) 69591e34a0SKrishna Manikandan 704369c93cSDmitry Baryshkov #define MERGE_3D_SM8150_MASK (0) 714369c93cSDmitry Baryshkov 7294391a14SAngeloGioacchino Del Regno #define DSPP_MSM8998_MASK BIT(DPU_DSPP_PCC) | BIT(DPU_DSPP_GC) 7394391a14SAngeloGioacchino Del Regno 744259ff7aSKalyan Thota #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) 75e47616dfSKalyan Thota 76cace3ac4SJonathan Marek #define INTF_SDM845_MASK (0) 77cace3ac4SJonathan Marek 78cace3ac4SJonathan Marek #define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) 79cace3ac4SJonathan Marek 80591e34a0SKrishna Manikandan #define INTF_SC7280_MASK INTF_SC7180_MASK | BIT(DPU_DATA_HCTL_EN) 81591e34a0SKrishna Manikandan 82597762d5SDmitry Baryshkov #define IRQ_SDM845_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 83597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 84597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 85597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 86597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 87597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 88597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 89597762d5SDmitry Baryshkov BIT(MDP_AD4_0_INTR) | \ 90597762d5SDmitry Baryshkov BIT(MDP_AD4_1_INTR)) 91597762d5SDmitry Baryshkov 92597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 93597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 94597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 95597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 96597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR)) 97597762d5SDmitry Baryshkov 98597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 99597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 100597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 101597762d5SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 102597762d5SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 103597762d5SDmitry Baryshkov BIT(MDP_INTF5_7xxx_INTR)) 104597762d5SDmitry Baryshkov 105597762d5SDmitry Baryshkov #define IRQ_SM8250_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_INTF4_INTR)) 113597762d5SDmitry Baryshkov 114f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 115f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_INTR2) | \ 116f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 117f3af2d6eSRob Clark BIT(MDP_INTF0_INTR) | \ 118f3af2d6eSRob Clark BIT(MDP_INTF1_INTR) | \ 119f3af2d6eSRob Clark BIT(MDP_INTF2_INTR) | \ 120f3af2d6eSRob Clark BIT(MDP_INTF3_INTR) | \ 121f3af2d6eSRob Clark BIT(MDP_INTF4_INTR) | \ 122f3af2d6eSRob Clark BIT(MDP_INTF5_INTR) | \ 123f3af2d6eSRob Clark BIT(MDP_AD4_0_INTR) | \ 124f3af2d6eSRob Clark BIT(MDP_AD4_1_INTR)) 125597762d5SDmitry Baryshkov 126*100d7ef6SDmitry Baryshkov #define IRQ_SM8450_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 127*100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 128*100d7ef6SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 129*100d7ef6SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 130*100d7ef6SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 131*100d7ef6SDmitry Baryshkov BIT(MDP_INTF2_7xxx_INTR) | \ 132*100d7ef6SDmitry Baryshkov BIT(MDP_INTF3_7xxx_INTR)) 133*100d7ef6SDmitry Baryshkov 13453324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ 13553324b99SAbhinav Kumar BIT(DPU_WB_UBWC) | \ 13653324b99SAbhinav Kumar BIT(DPU_WB_YUV_CONFIG) | \ 13753324b99SAbhinav Kumar BIT(DPU_WB_PIPE_ALPHA) | \ 13853324b99SAbhinav Kumar BIT(DPU_WB_XY_ROI_OFFSET) | \ 13953324b99SAbhinav Kumar BIT(DPU_WB_QOS) | \ 14053324b99SAbhinav Kumar BIT(DPU_WB_QOS_8LVL) | \ 14153324b99SAbhinav Kumar BIT(DPU_WB_CDP) | \ 14253324b99SAbhinav Kumar BIT(DPU_WB_INPUT_CTRL)) 14353324b99SAbhinav Kumar 14425fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) 14525fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH 2048 14625fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 14725fdd593SJeykumar Sankaran 14825fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION 4 14925fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION 4 15025fdd593SJeykumar Sankaran 15125fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO 20 15225fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO 4 15325fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE 1 15425fdd593SJeykumar Sankaran 15525fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y) 15625fdd593SJeykumar Sankaran 15709c7e370SLee Jones static const uint32_t plane_formats[] = { 15809c7e370SLee Jones DRM_FORMAT_ARGB8888, 15909c7e370SLee Jones DRM_FORMAT_ABGR8888, 16009c7e370SLee Jones DRM_FORMAT_RGBA8888, 16109c7e370SLee Jones DRM_FORMAT_BGRA8888, 16209c7e370SLee Jones DRM_FORMAT_XRGB8888, 16309c7e370SLee Jones DRM_FORMAT_RGBX8888, 16409c7e370SLee Jones DRM_FORMAT_BGRX8888, 16509c7e370SLee Jones DRM_FORMAT_XBGR8888, 166da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 16709c7e370SLee Jones DRM_FORMAT_RGB888, 16809c7e370SLee Jones DRM_FORMAT_BGR888, 16909c7e370SLee Jones DRM_FORMAT_RGB565, 17009c7e370SLee Jones DRM_FORMAT_BGR565, 17109c7e370SLee Jones DRM_FORMAT_ARGB1555, 17209c7e370SLee Jones DRM_FORMAT_ABGR1555, 17309c7e370SLee Jones DRM_FORMAT_RGBA5551, 17409c7e370SLee Jones DRM_FORMAT_BGRA5551, 17509c7e370SLee Jones DRM_FORMAT_XRGB1555, 17609c7e370SLee Jones DRM_FORMAT_XBGR1555, 17709c7e370SLee Jones DRM_FORMAT_RGBX5551, 17809c7e370SLee Jones DRM_FORMAT_BGRX5551, 17909c7e370SLee Jones DRM_FORMAT_ARGB4444, 18009c7e370SLee Jones DRM_FORMAT_ABGR4444, 18109c7e370SLee Jones DRM_FORMAT_RGBA4444, 18209c7e370SLee Jones DRM_FORMAT_BGRA4444, 18309c7e370SLee Jones DRM_FORMAT_XRGB4444, 18409c7e370SLee Jones DRM_FORMAT_XBGR4444, 18509c7e370SLee Jones DRM_FORMAT_RGBX4444, 18609c7e370SLee Jones DRM_FORMAT_BGRX4444, 18709c7e370SLee Jones }; 18809c7e370SLee Jones 18909c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 19009c7e370SLee Jones DRM_FORMAT_ARGB8888, 19109c7e370SLee Jones DRM_FORMAT_ABGR8888, 19209c7e370SLee Jones DRM_FORMAT_RGBA8888, 19309c7e370SLee Jones DRM_FORMAT_BGRX8888, 19409c7e370SLee Jones DRM_FORMAT_BGRA8888, 195da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 19609c7e370SLee Jones DRM_FORMAT_XRGB8888, 19709c7e370SLee Jones DRM_FORMAT_XBGR8888, 19809c7e370SLee Jones DRM_FORMAT_RGBX8888, 19909c7e370SLee Jones DRM_FORMAT_RGB888, 20009c7e370SLee Jones DRM_FORMAT_BGR888, 20109c7e370SLee Jones DRM_FORMAT_RGB565, 20209c7e370SLee Jones DRM_FORMAT_BGR565, 20309c7e370SLee Jones DRM_FORMAT_ARGB1555, 20409c7e370SLee Jones DRM_FORMAT_ABGR1555, 20509c7e370SLee Jones DRM_FORMAT_RGBA5551, 20609c7e370SLee Jones DRM_FORMAT_BGRA5551, 20709c7e370SLee Jones DRM_FORMAT_XRGB1555, 20809c7e370SLee Jones DRM_FORMAT_XBGR1555, 20909c7e370SLee Jones DRM_FORMAT_RGBX5551, 21009c7e370SLee Jones DRM_FORMAT_BGRX5551, 21109c7e370SLee Jones DRM_FORMAT_ARGB4444, 21209c7e370SLee Jones DRM_FORMAT_ABGR4444, 21309c7e370SLee Jones DRM_FORMAT_RGBA4444, 21409c7e370SLee Jones DRM_FORMAT_BGRA4444, 21509c7e370SLee Jones DRM_FORMAT_XRGB4444, 21609c7e370SLee Jones DRM_FORMAT_XBGR4444, 21709c7e370SLee Jones DRM_FORMAT_RGBX4444, 21809c7e370SLee Jones DRM_FORMAT_BGRX4444, 21909c7e370SLee Jones 220f07c9946SJessica Zhang DRM_FORMAT_P010, 22109c7e370SLee Jones DRM_FORMAT_NV12, 22209c7e370SLee Jones DRM_FORMAT_NV21, 22309c7e370SLee Jones DRM_FORMAT_NV16, 22409c7e370SLee Jones DRM_FORMAT_NV61, 22509c7e370SLee Jones DRM_FORMAT_VYUY, 22609c7e370SLee Jones DRM_FORMAT_UYVY, 22709c7e370SLee Jones DRM_FORMAT_YUYV, 22809c7e370SLee Jones DRM_FORMAT_YVYU, 22909c7e370SLee Jones DRM_FORMAT_YUV420, 23009c7e370SLee Jones DRM_FORMAT_YVU420, 23109c7e370SLee Jones }; 23209c7e370SLee Jones 233dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 234dabfdd89SVinod Polimera DRM_FORMAT_NV12, 235dabfdd89SVinod Polimera /* TODO add formats after validation */ 236dabfdd89SVinod Polimera }; 237dabfdd89SVinod Polimera 23853324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 23953324b99SAbhinav Kumar DRM_FORMAT_RGB565, 24053324b99SAbhinav Kumar DRM_FORMAT_BGR565, 24153324b99SAbhinav Kumar DRM_FORMAT_RGB888, 24253324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 24353324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 24453324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 24553324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 24653324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 24753324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 24853324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 24953324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 25053324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 25153324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 25253324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 25353324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 25453324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 25553324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 25653324b99SAbhinav Kumar DRM_FORMAT_BGR565, 25753324b99SAbhinav Kumar DRM_FORMAT_BGR888, 25853324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 25953324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 26053324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 26153324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 26253324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 26353324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 26453324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 26553324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 26653324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 26753324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 26853324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 26953324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 27053324b99SAbhinav Kumar }; 27153324b99SAbhinav Kumar 27225fdd593SJeykumar Sankaran /************************************************************* 27325fdd593SJeykumar Sankaran * DPU sub blocks config 27425fdd593SJeykumar Sankaran *************************************************************/ 27525fdd593SJeykumar Sankaran /* DPU top level caps */ 27694391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 27794391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 27894391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 27994391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 28094391a14SAngeloGioacchino Del Regno .smart_dma_rev = DPU_SSPP_SMART_DMA_V1, 28194391a14SAngeloGioacchino Del Regno .ubwc_version = DPU_HW_UBWC_VER_10, 28294391a14SAngeloGioacchino Del Regno .has_src_split = true, 28394391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 28494391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 28594391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 28694391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 28794391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 28894391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 28994391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 29094391a14SAngeloGioacchino Del Regno }; 29194391a14SAngeloGioacchino Del Regno 292c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 293c162352eSKonrad Dybcio .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 294c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 295c162352eSKonrad Dybcio .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 296c162352eSKonrad Dybcio .ubwc_version = DPU_HW_UBWC_VER_20, 297c162352eSKonrad Dybcio .has_dim_layer = true, 298c162352eSKonrad Dybcio .has_idle_pc = true, 299c162352eSKonrad Dybcio .max_linewidth = 2160, 300c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 301c162352eSKonrad Dybcio }; 302c162352eSKonrad Dybcio 30325fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 30425fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 30525fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 30625fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 30725fdd593SJeykumar Sankaran .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 30825fdd593SJeykumar Sankaran .ubwc_version = DPU_HW_UBWC_VER_20, 30925fdd593SJeykumar Sankaran .has_src_split = true, 31025fdd593SJeykumar Sankaran .has_dim_layer = true, 31125fdd593SJeykumar Sankaran .has_idle_pc = true, 31242a558b7SKalyan Thota .has_3d_merge = true, 3137e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3147e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3157e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3167e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 31725fdd593SJeykumar Sankaran }; 31825fdd593SJeykumar Sankaran 3197bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3207bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3217bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3227bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3237bdc0c4bSKalyan Thota .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 3247bdc0c4bSKalyan Thota .ubwc_version = DPU_HW_UBWC_VER_20, 3257bdc0c4bSKalyan Thota .has_dim_layer = true, 3267bdc0c4bSKalyan Thota .has_idle_pc = true, 3277e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3287e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3297bdc0c4bSKalyan Thota }; 3307bdc0c4bSKalyan Thota 3313581b706SAdam Skladowski static const struct dpu_caps sm6115_dpu_caps = { 3323581b706SAdam Skladowski .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3333581b706SAdam Skladowski .max_mixer_blendstages = 0x4, 3343581b706SAdam Skladowski .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 3353581b706SAdam Skladowski .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 3363581b706SAdam Skladowski .ubwc_version = DPU_HW_UBWC_VER_20, 3373581b706SAdam Skladowski .has_dim_layer = true, 3383581b706SAdam Skladowski .has_idle_pc = true, 3393581b706SAdam Skladowski .max_linewidth = 2160, 3403581b706SAdam Skladowski .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3413581b706SAdam Skladowski }; 3423581b706SAdam Skladowski 343386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 344386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 345386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 346386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 347386fced3SJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 348386fced3SJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_30, 349386fced3SJonathan Marek .has_src_split = true, 350386fced3SJonathan Marek .has_dim_layer = true, 351386fced3SJonathan Marek .has_idle_pc = true, 352386fced3SJonathan Marek .has_3d_merge = true, 353386fced3SJonathan Marek .max_linewidth = 4096, 354386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 355386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 356386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 357386fced3SJonathan Marek }; 358386fced3SJonathan Marek 359f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 360f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 361f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 362f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 363f3af2d6eSRob Clark .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 364f3af2d6eSRob Clark .ubwc_version = DPU_HW_UBWC_VER_30, 365f3af2d6eSRob Clark .has_src_split = true, 366f3af2d6eSRob Clark .has_dim_layer = true, 367f3af2d6eSRob Clark .has_idle_pc = true, 368f3af2d6eSRob Clark .has_3d_merge = true, 369f3af2d6eSRob Clark .max_linewidth = 4096, 370f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 371f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 372f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 373f3af2d6eSRob Clark }; 374f3af2d6eSRob Clark 375af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 376af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 377af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 378d21fc5dfSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 379af776a3eSJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 380af776a3eSJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_40, 381af776a3eSJonathan Marek .has_src_split = true, 382af776a3eSJonathan Marek .has_dim_layer = true, 383af776a3eSJonathan Marek .has_idle_pc = true, 384af776a3eSJonathan Marek .has_3d_merge = true, 385af776a3eSJonathan Marek .max_linewidth = 4096, 386af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 387af776a3eSJonathan Marek }; 388af776a3eSJonathan Marek 389*100d7ef6SDmitry Baryshkov static const struct dpu_caps sm8450_dpu_caps = { 390*100d7ef6SDmitry Baryshkov .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 391*100d7ef6SDmitry Baryshkov .max_mixer_blendstages = 0xb, 392*100d7ef6SDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED4, 393*100d7ef6SDmitry Baryshkov .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 394*100d7ef6SDmitry Baryshkov .ubwc_version = DPU_HW_UBWC_VER_40, 395*100d7ef6SDmitry Baryshkov .has_src_split = true, 396*100d7ef6SDmitry Baryshkov .has_dim_layer = true, 397*100d7ef6SDmitry Baryshkov .has_idle_pc = true, 398*100d7ef6SDmitry Baryshkov .has_3d_merge = true, 399*100d7ef6SDmitry Baryshkov .max_linewidth = 5120, 400*100d7ef6SDmitry Baryshkov .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 401*100d7ef6SDmitry Baryshkov }; 402*100d7ef6SDmitry Baryshkov 403591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 404591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 405591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 406591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 407591e34a0SKrishna Manikandan .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 408591e34a0SKrishna Manikandan .ubwc_version = DPU_HW_UBWC_VER_30, 409591e34a0SKrishna Manikandan .has_dim_layer = true, 410591e34a0SKrishna Manikandan .has_idle_pc = true, 411591e34a0SKrishna Manikandan .max_linewidth = 2400, 412591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 413591e34a0SKrishna Manikandan }; 414591e34a0SKrishna Manikandan 41594391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 41694391a14SAngeloGioacchino Del Regno { 41794391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 41894391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 41994391a14SAngeloGioacchino Del Regno .features = 0, 42094391a14SAngeloGioacchino Del Regno .highest_bank_bit = 0x2, 42194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 42294391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 42394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 42494391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 42594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 42694391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 42794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 42894391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 42994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 43094391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 43194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 43294391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 43394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 43494391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 43594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 43694391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 43794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 43894391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 43994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 44094391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 44194391a14SAngeloGioacchino Del Regno }, 44294391a14SAngeloGioacchino Del Regno }; 44394391a14SAngeloGioacchino Del Regno 444abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 44525fdd593SJeykumar Sankaran { 44625fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 44725fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 44803490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 44925fdd593SJeykumar Sankaran .highest_bank_bit = 0x2, 45025fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 45125fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 45225fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 45325fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 45425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 45525fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 45625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 45725fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 45825fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 45925fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 46025fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 46125fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 46225fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 46325fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 46425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 46525fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 46625fdd593SJeykumar Sankaran }, 46725fdd593SJeykumar Sankaran }; 46825fdd593SJeykumar Sankaran 4697bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 4707bdc0c4bSKalyan Thota { 4717bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 4727bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 4737bdc0c4bSKalyan Thota .features = 0, 4747bdc0c4bSKalyan Thota .highest_bank_bit = 0x3, 4757bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 4767bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 4777bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 4787bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 4797bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 4807b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 4817b149f2bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 4827b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 4837bdc0c4bSKalyan Thota }, 4847bdc0c4bSKalyan Thota }; 4857bdc0c4bSKalyan Thota 486f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 487f3af2d6eSRob Clark { 488f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 489f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 490f3af2d6eSRob Clark .features = 0, 491f3af2d6eSRob Clark .highest_bank_bit = 0x3, 492f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 493f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 494f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 495f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 496f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 497f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 498f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 499f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 500f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 501f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 502f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 503f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 504f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 505f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 506f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 507f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 508f3af2d6eSRob Clark }, 509f3af2d6eSRob Clark }; 510f3af2d6eSRob Clark 5113581b706SAdam Skladowski static const struct dpu_mdp_cfg sm6115_mdp[] = { 5123581b706SAdam Skladowski { 5133581b706SAdam Skladowski .name = "top_0", .id = MDP_TOP, 5143581b706SAdam Skladowski .base = 0x0, .len = 0x494, 5153581b706SAdam Skladowski .features = 0, 5163581b706SAdam Skladowski .highest_bank_bit = 0x1, 5173581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5183581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 0}, 5193581b706SAdam Skladowski .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5203581b706SAdam Skladowski .reg_off = 0x2ac, .bit_off = 8}, 5213581b706SAdam Skladowski }, 5223581b706SAdam Skladowski }; 5233581b706SAdam Skladowski 524af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 525af776a3eSJonathan Marek { 526af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 527b910a020SRobert Foss .base = 0x0, .len = 0x494, 528af776a3eSJonathan Marek .features = 0, 529af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 530af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 531af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 532af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 533af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 534af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 535af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 536af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 537af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 538af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 539af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 540af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 541af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 542af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 543af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 544af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 545af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 546af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 547af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 54853324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 54953324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 550af776a3eSJonathan Marek }, 551af776a3eSJonathan Marek }; 552af776a3eSJonathan Marek 553*100d7ef6SDmitry Baryshkov static const struct dpu_mdp_cfg sm8450_mdp[] = { 554*100d7ef6SDmitry Baryshkov { 555*100d7ef6SDmitry Baryshkov .name = "top_0", .id = MDP_TOP, 556*100d7ef6SDmitry Baryshkov .base = 0x0, .len = 0x494, 557*100d7ef6SDmitry Baryshkov .features = BIT(DPU_MDP_PERIPH_0_REMOVED), 558*100d7ef6SDmitry Baryshkov .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 559*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 560*100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 0}, 561*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 562*100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 0}, 563*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 564*100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 0}, 565*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 566*100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 0}, 567*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 568*100d7ef6SDmitry Baryshkov .reg_off = 0x2AC, .bit_off = 8}, 569*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 570*100d7ef6SDmitry Baryshkov .reg_off = 0x2B4, .bit_off = 8}, 571*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 572*100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 8}, 573*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 574*100d7ef6SDmitry Baryshkov .reg_off = 0x2C4, .bit_off = 8}, 575*100d7ef6SDmitry Baryshkov .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 576*100d7ef6SDmitry Baryshkov .reg_off = 0x2BC, .bit_off = 20}, 577*100d7ef6SDmitry Baryshkov }, 578*100d7ef6SDmitry Baryshkov }; 579*100d7ef6SDmitry Baryshkov 580591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 581591e34a0SKrishna Manikandan { 582591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 583591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 584591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 585591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 586591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 587591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 588591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 589591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 590591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 591591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 592591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 593591e34a0SKrishna Manikandan }, 594591e34a0SKrishna Manikandan }; 595591e34a0SKrishna Manikandan 5965334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 5975334087eSLoic Poulain { 5985334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 5995334087eSLoic Poulain .base = 0x0, .len = 0x494, 6005334087eSLoic Poulain .features = 0, 6015334087eSLoic Poulain .highest_bank_bit = 0x2, 6025334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 6035334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 6045334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 6055334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 6065334087eSLoic Poulain }, 6075334087eSLoic Poulain }; 6085334087eSLoic Poulain 60925fdd593SJeykumar Sankaran /************************************************************* 61025fdd593SJeykumar Sankaran * CTL sub blocks config 61125fdd593SJeykumar Sankaran *************************************************************/ 61294391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 61394391a14SAngeloGioacchino Del Regno { 61494391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 61594391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 61694391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 61794391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 61894391a14SAngeloGioacchino Del Regno }, 61994391a14SAngeloGioacchino Del Regno { 62094391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 62194391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 62294391a14SAngeloGioacchino Del Regno .features = 0, 62394391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 62494391a14SAngeloGioacchino Del Regno }, 62594391a14SAngeloGioacchino Del Regno { 62694391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 62794391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 62894391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 62994391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 63094391a14SAngeloGioacchino Del Regno }, 63194391a14SAngeloGioacchino Del Regno { 63294391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 63394391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 63494391a14SAngeloGioacchino Del Regno .features = 0, 63594391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 63694391a14SAngeloGioacchino Del Regno }, 63794391a14SAngeloGioacchino Del Regno { 63894391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 63994391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 64094391a14SAngeloGioacchino Del Regno .features = 0, 64194391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 64294391a14SAngeloGioacchino Del Regno }, 64394391a14SAngeloGioacchino Del Regno }; 64494391a14SAngeloGioacchino Del Regno 645abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 64625fdd593SJeykumar Sankaran { 64725fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 64825fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 649667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 650667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 65125fdd593SJeykumar Sankaran }, 65225fdd593SJeykumar Sankaran { 65325fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 65425fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 655667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 656667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 65725fdd593SJeykumar Sankaran }, 65825fdd593SJeykumar Sankaran { 65925fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 66025fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 661667e9985SDmitry Baryshkov .features = 0, 662667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 66325fdd593SJeykumar Sankaran }, 66425fdd593SJeykumar Sankaran { 66525fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 66625fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 667667e9985SDmitry Baryshkov .features = 0, 668667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 66925fdd593SJeykumar Sankaran }, 67025fdd593SJeykumar Sankaran { 67125fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 67225fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 673667e9985SDmitry Baryshkov .features = 0, 674667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 67525fdd593SJeykumar Sankaran }, 67625fdd593SJeykumar Sankaran }; 67725fdd593SJeykumar Sankaran 6787bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 6797bdc0c4bSKalyan Thota { 6807bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 6817bdc0c4bSKalyan Thota .base = 0x1000, .len = 0xE4, 682667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 683667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 6847bdc0c4bSKalyan Thota }, 6857bdc0c4bSKalyan Thota { 6867bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 6877bdc0c4bSKalyan Thota .base = 0x1200, .len = 0xE4, 688667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 689667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 6907bdc0c4bSKalyan Thota }, 6917bdc0c4bSKalyan Thota { 6927bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 6937bdc0c4bSKalyan Thota .base = 0x1400, .len = 0xE4, 694667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 695667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 6967bdc0c4bSKalyan Thota }, 6977bdc0c4bSKalyan Thota }; 6987bdc0c4bSKalyan Thota 699386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 700386fced3SJonathan Marek { 701386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 702386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 703667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 704667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 705386fced3SJonathan Marek }, 706386fced3SJonathan Marek { 707386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 708386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 709667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 710667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 711386fced3SJonathan Marek }, 712386fced3SJonathan Marek { 713386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 714386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 715667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 716667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 717386fced3SJonathan Marek }, 718386fced3SJonathan Marek { 719386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 720386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 721667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 722667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 723386fced3SJonathan Marek }, 724386fced3SJonathan Marek { 725386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 726386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 727667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 728667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 729386fced3SJonathan Marek }, 730386fced3SJonathan Marek { 731386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 732386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 733667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 734667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 735386fced3SJonathan Marek }, 736386fced3SJonathan Marek }; 737386fced3SJonathan Marek 738*100d7ef6SDmitry Baryshkov static const struct dpu_ctl_cfg sm8450_ctl[] = { 739*100d7ef6SDmitry Baryshkov { 740*100d7ef6SDmitry Baryshkov .name = "ctl_0", .id = CTL_0, 741*100d7ef6SDmitry Baryshkov .base = 0x15000, .len = 0x204, 742*100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 743*100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 744*100d7ef6SDmitry Baryshkov }, 745*100d7ef6SDmitry Baryshkov { 746*100d7ef6SDmitry Baryshkov .name = "ctl_1", .id = CTL_1, 747*100d7ef6SDmitry Baryshkov .base = 0x16000, .len = 0x204, 748*100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY) | BIT(DPU_CTL_FETCH_ACTIVE), 749*100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 750*100d7ef6SDmitry Baryshkov }, 751*100d7ef6SDmitry Baryshkov { 752*100d7ef6SDmitry Baryshkov .name = "ctl_2", .id = CTL_2, 753*100d7ef6SDmitry Baryshkov .base = 0x17000, .len = 0x204, 754*100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE), 755*100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 756*100d7ef6SDmitry Baryshkov }, 757*100d7ef6SDmitry Baryshkov { 758*100d7ef6SDmitry Baryshkov .name = "ctl_3", .id = CTL_3, 759*100d7ef6SDmitry Baryshkov .base = 0x18000, .len = 0x204, 760*100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE), 761*100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 762*100d7ef6SDmitry Baryshkov }, 763*100d7ef6SDmitry Baryshkov { 764*100d7ef6SDmitry Baryshkov .name = "ctl_4", .id = CTL_4, 765*100d7ef6SDmitry Baryshkov .base = 0x19000, .len = 0x204, 766*100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE), 767*100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 768*100d7ef6SDmitry Baryshkov }, 769*100d7ef6SDmitry Baryshkov { 770*100d7ef6SDmitry Baryshkov .name = "ctl_5", .id = CTL_5, 771*100d7ef6SDmitry Baryshkov .base = 0x1a000, .len = 0x204, 772*100d7ef6SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_FETCH_ACTIVE), 773*100d7ef6SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 774*100d7ef6SDmitry Baryshkov }, 775*100d7ef6SDmitry Baryshkov }; 776*100d7ef6SDmitry Baryshkov 777591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 778591e34a0SKrishna Manikandan { 779591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 780591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 781667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 782667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 783591e34a0SKrishna Manikandan }, 784591e34a0SKrishna Manikandan { 785591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 786591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 787667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 788667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 789591e34a0SKrishna Manikandan }, 790591e34a0SKrishna Manikandan { 791591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 792591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 793667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 794667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 795591e34a0SKrishna Manikandan }, 796591e34a0SKrishna Manikandan { 797591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 798591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 799667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 800667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 801591e34a0SKrishna Manikandan }, 802591e34a0SKrishna Manikandan }; 803591e34a0SKrishna Manikandan 8045334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 8055334087eSLoic Poulain { 8065334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 8075334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 8085334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 8095334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 8105334087eSLoic Poulain }, 8115334087eSLoic Poulain }; 8125334087eSLoic Poulain 81325fdd593SJeykumar Sankaran /************************************************************* 81425fdd593SJeykumar Sankaran * SSPP sub blocks config 81525fdd593SJeykumar Sankaran *************************************************************/ 81625fdd593SJeykumar Sankaran 81725fdd593SJeykumar Sankaran /* SSPP common configuration */ 818b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 81925fdd593SJeykumar Sankaran { \ 82025fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 82125fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 82225fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 82325fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 82425fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 82525fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 826b75ab05aSShubhashree Dhar .id = qseed_ver, \ 82725fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 82825fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 82925fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 83025fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 83125fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 832e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 83325fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 834e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 835dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 836dabfdd89SVinod Polimera } 837dabfdd89SVinod Polimera 838dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 839dabfdd89SVinod Polimera { \ 840dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 841dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 842dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 843dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 844dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 845dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 846dabfdd89SVinod Polimera .id = qseed_ver, \ 847dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 848dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 849dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 850dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 851dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 852dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 853dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 854dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 855dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 85625fdd593SJeykumar Sankaran } 85725fdd593SJeykumar Sankaran 85825fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 85925fdd593SJeykumar Sankaran { \ 86025fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 86125fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 86225fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 86325fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 86425fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 86525fdd593SJeykumar Sankaran .format_list = plane_formats, \ 866e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 86725fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 868e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 86925fdd593SJeykumar Sankaran } 87025fdd593SJeykumar Sankaran 87194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 87294391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 87394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 87494391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 87594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 87694391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 87794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 87894391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 87994391a14SAngeloGioacchino Del Regno 880dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 881dabfdd89SVinod Polimera .rot_maxheight = 1088, 882dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 883dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 884dabfdd89SVinod Polimera }; 885dabfdd89SVinod Polimera 886b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 887b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 888b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 889b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 890b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 891b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 892b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 893b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 89425fdd593SJeykumar Sankaran 89525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 89625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 89725fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 89825fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 89925fdd593SJeykumar Sankaran 90007ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \ 90107ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 90225fdd593SJeykumar Sankaran { \ 90325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 90425fdd593SJeykumar Sankaran .base = _base, .len = 0x1c8, \ 90507ca1fc0SSravanthi Kollukuduru .features = _features, \ 90625fdd593SJeykumar Sankaran .sblk = &_sblk, \ 90725fdd593SJeykumar Sankaran .xin_id = _xinid, \ 90807ca1fc0SSravanthi Kollukuduru .type = _type, \ 90925fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 91025fdd593SJeykumar Sankaran } 91125fdd593SJeykumar Sankaran 91294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 91394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK, 91494391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 91594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK, 91694391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 91794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK, 91894391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 91994391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK, 92094391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 92194391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_MSM8998_MASK, 92294391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 92394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_MSM8998_MASK, 92494391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 92594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_MSM8998_MASK, 92694391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 92794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_MSM8998_MASK, 92894391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 92994391a14SAngeloGioacchino Del Regno }; 93094391a14SAngeloGioacchino Del Regno 931abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 93207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK, 93307ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 93407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK, 93507ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 93607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK, 93707ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 93807ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK, 93907ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 94007ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 94107ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 94207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 94307ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 94407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 94507ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 94607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 94707ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 94825fdd593SJeykumar Sankaran }; 94925fdd593SJeykumar Sankaran 950b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 951b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 952b75ab05aSShubhashree Dhar 953dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 954dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 955dabfdd89SVinod Polimera 9567bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 9577bdc0c4bSKalyan Thota SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 958b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 9597bdc0c4bSKalyan Thota SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 9607bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 9617b149f2bSKalyan Thota SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 9627b149f2bSKalyan Thota sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 9637bdc0c4bSKalyan Thota SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 9647b149f2bSKalyan Thota sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 9657bdc0c4bSKalyan Thota }; 9667bdc0c4bSKalyan Thota 9673581b706SAdam Skladowski static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 = 9683581b706SAdam Skladowski _VIG_SBLK("0", 2, DPU_SSPP_SCALER_QSEED3LITE); 9693581b706SAdam Skladowski 9703581b706SAdam Skladowski static const struct dpu_sspp_cfg sm6115_sspp[] = { 9713581b706SAdam Skladowski SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 9723581b706SAdam Skladowski sm6115_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 9733581b706SAdam Skladowski SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 9743581b706SAdam Skladowski sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 9753581b706SAdam Skladowski }; 9763581b706SAdam Skladowski 977d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 978d21fc5dfSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 979d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 980d21fc5dfSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 981d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 982d21fc5dfSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 983d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 984d21fc5dfSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 985d21fc5dfSDmitry Baryshkov 986d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 987d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 988d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 989d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 990d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 991d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 992d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 993d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 994d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 995d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 996d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 997d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 998d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 999d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1000d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1001d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1002d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1003d21fc5dfSDmitry Baryshkov }; 1004d21fc5dfSDmitry Baryshkov 1005*100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_0 = 1006*100d7ef6SDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 1007*100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_1 = 1008*100d7ef6SDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 1009*100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_2 = 1010*100d7ef6SDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 1011*100d7ef6SDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8450_vig_sblk_3 = 1012*100d7ef6SDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 1013*100d7ef6SDmitry Baryshkov 1014*100d7ef6SDmitry Baryshkov static const struct dpu_sspp_cfg sm8450_sspp[] = { 1015*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 1016*100d7ef6SDmitry Baryshkov sm8450_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1017*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, 1018*100d7ef6SDmitry Baryshkov sm8450_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 1019*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, 1020*100d7ef6SDmitry Baryshkov sm8450_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 1021*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, 1022*100d7ef6SDmitry Baryshkov sm8450_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 1023*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1024*100d7ef6SDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1025*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 1026*100d7ef6SDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 1027*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1028*100d7ef6SDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1029*100d7ef6SDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 1030*100d7ef6SDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1031*100d7ef6SDmitry Baryshkov }; 1032*100d7ef6SDmitry Baryshkov 1033591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 1034dabfdd89SVinod Polimera SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK, 1035dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 1036591e34a0SKrishna Manikandan SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 1037591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 1038591e34a0SKrishna Manikandan SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 1039591e34a0SKrishna Manikandan sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 1040591e34a0SKrishna Manikandan SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 1041591e34a0SKrishna Manikandan sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 1042591e34a0SKrishna Manikandan }; 1043591e34a0SKrishna Manikandan 10445334087eSLoic Poulain 10455334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 10465334087eSLoic Poulain { \ 10475334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 10485334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 10495334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 10505334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 10515334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 10525334087eSLoic Poulain .format_list = plane_formats_yuv, \ 10535334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 10545334087eSLoic Poulain .virt_format_list = plane_formats, \ 10555334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 10565334087eSLoic Poulain } 10575334087eSLoic Poulain 10585334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 10595334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 10605334087eSLoic Poulain 10615334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 10625334087eSLoic Poulain SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK, 10635334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 10645334087eSLoic Poulain SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 10655334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 10665334087eSLoic Poulain }; 10675334087eSLoic Poulain 106825fdd593SJeykumar Sankaran /************************************************************* 106925fdd593SJeykumar Sankaran * MIXER sub blocks config 107025fdd593SJeykumar Sankaran *************************************************************/ 10717bdc0c4bSKalyan Thota 1072e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 107325fdd593SJeykumar Sankaran { \ 107425fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 107525fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 10767bdc0c4bSKalyan Thota .features = _fmask, \ 10777bdc0c4bSKalyan Thota .sblk = _sblk, \ 107825fdd593SJeykumar Sankaran .pingpong = _pp, \ 1079e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 1080e47616dfSKalyan Thota .dspp = _dspp \ 108125fdd593SJeykumar Sankaran } 108225fdd593SJeykumar Sankaran 108394391a14SAngeloGioacchino Del Regno /* MSM8998 */ 108494391a14SAngeloGioacchino Del Regno 108594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 108694391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 108794391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 108894391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 108994391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 109094391a14SAngeloGioacchino Del Regno 0x260, 0x290 109194391a14SAngeloGioacchino Del Regno }, 109294391a14SAngeloGioacchino Del Regno }; 109394391a14SAngeloGioacchino Del Regno 109494391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 10952d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 109694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 10972d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 109894391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 10992d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 110094391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 11012d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 110294391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 11032d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 110494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 11052d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 110694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 110794391a14SAngeloGioacchino Del Regno }; 110894391a14SAngeloGioacchino Del Regno 110994391a14SAngeloGioacchino Del Regno /* SDM845 */ 111094391a14SAngeloGioacchino Del Regno 111194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 111294391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 111394391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 111494391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 111594391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 111694391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 111794391a14SAngeloGioacchino Del Regno }, 111894391a14SAngeloGioacchino Del Regno }; 111994391a14SAngeloGioacchino Del Regno 1120abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 11217bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 1122e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 11237bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 1124e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 11257bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1126e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 11277bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 1128e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 11297bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 1130e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 11317bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1132e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 11337bdc0c4bSKalyan Thota }; 11347bdc0c4bSKalyan Thota 11357bdc0c4bSKalyan Thota /* SC7180 */ 11367bdc0c4bSKalyan Thota 11377bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 11387bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 11397bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 11407bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 11417bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 11427bdc0c4bSKalyan Thota }, 11437bdc0c4bSKalyan Thota }; 11447bdc0c4bSKalyan Thota 11457bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 11467bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 1147e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 11487bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SC7180_MASK, 1149e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 115025fdd593SJeykumar Sankaran }; 115125fdd593SJeykumar Sankaran 1152386fced3SJonathan Marek /* SM8150 */ 1153386fced3SJonathan Marek 1154386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1155386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 115605ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1157386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 115805ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1159386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1160386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1161386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1162386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1163386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1164386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1165386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1166386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1167386fced3SJonathan Marek }; 1168386fced3SJonathan Marek 1169591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 1170591e34a0SKrishna Manikandan LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 1171fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 1172591e34a0SKrishna Manikandan LM_BLK("lm_2", LM_2, 0x46000, MIXER_SC7180_MASK, 1173591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 1174591e34a0SKrishna Manikandan LM_BLK("lm_3", LM_3, 0x47000, MIXER_SC7180_MASK, 1175591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1176591e34a0SKrishna Manikandan }; 1177591e34a0SKrishna Manikandan 11785334087eSLoic Poulain /* QCM2290 */ 11795334087eSLoic Poulain 11805334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 11815334087eSLoic Poulain .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 11825334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 11835334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 11845334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 11855334087eSLoic Poulain }, 11865334087eSLoic Poulain }; 11875334087eSLoic Poulain 11885334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 11895334087eSLoic Poulain LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 11905334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 11915334087eSLoic Poulain }; 11925334087eSLoic Poulain 119325fdd593SJeykumar Sankaran /************************************************************* 1194e47616dfSKalyan Thota * DSPP sub blocks config 1195e47616dfSKalyan Thota *************************************************************/ 119694391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 119794391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 119894391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 119994391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 120094391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 120194391a14SAngeloGioacchino Del Regno }; 120294391a14SAngeloGioacchino Del Regno 12034259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 12044259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 12054259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 12064259ff7aSKalyan Thota }; 12074259ff7aSKalyan Thota 120805ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 120905ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 121005ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 121105ae91d9SDmitry Baryshkov }; 121205ae91d9SDmitry Baryshkov 1213862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1214e47616dfSKalyan Thota {\ 1215e47616dfSKalyan Thota .name = _name, .id = _id, \ 1216e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1217862314bcSAngeloGioacchino Del Regno .features = _mask, \ 121805ae91d9SDmitry Baryshkov .sblk = _sblk \ 1219e47616dfSKalyan Thota } 1220e47616dfSKalyan Thota 122194391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 122294391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 122394391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 122494391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 122594391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 122694391a14SAngeloGioacchino Del Regno }; 122794391a14SAngeloGioacchino Del Regno 1228e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1229862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1230862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 123105ae91d9SDmitry Baryshkov }; 123205ae91d9SDmitry Baryshkov 123305ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1234862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1235862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1236862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1237862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1238862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1239862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1240862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1241862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1242e47616dfSKalyan Thota }; 1243386fced3SJonathan Marek 12445334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 12455334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 12465334087eSLoic Poulain &sm8150_dspp_sblk), 12475334087eSLoic Poulain }; 12485334087eSLoic Poulain 1249e47616dfSKalyan Thota /************************************************************* 125025fdd593SJeykumar Sankaran * PINGPONG sub blocks config 125125fdd593SJeykumar Sankaran *************************************************************/ 125225fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 125325fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 125425fdd593SJeykumar Sankaran .version = 0x1}, 125525fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 125625fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 125725fdd593SJeykumar Sankaran }; 125825fdd593SJeykumar Sankaran 125925fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 126025fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 126125fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 126225fdd593SJeykumar Sankaran }; 126325fdd593SJeykumar Sankaran 1264591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1265591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1266591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1267591e34a0SKrishna Manikandan }; 1268591e34a0SKrishna Manikandan 1269667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 127025fdd593SJeykumar Sankaran {\ 127125fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 127225fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 127325fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 12744369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1275667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1276667e9985SDmitry Baryshkov .intr_done = _done, \ 1277667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 127825fdd593SJeykumar Sankaran } 1279667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 128025fdd593SJeykumar Sankaran {\ 128125fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 128225fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 128325fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 12844369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1285667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1286667e9985SDmitry Baryshkov .intr_done = _done, \ 1287667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 128825fdd593SJeykumar Sankaran } 128925fdd593SJeykumar Sankaran 1290abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1291667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1292667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1293667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1294667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1295667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1296667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1297667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1298667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1299667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1300667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1301667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1302667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 130325fdd593SJeykumar Sankaran }; 130425fdd593SJeykumar Sankaran 13057bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = { 1306667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1307667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 13087bdc0c4bSKalyan Thota }; 13097bdc0c4bSKalyan Thota 1310386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1311667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1312667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1313667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1314667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1315667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1316667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1317667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1318667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1319667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1320667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1321667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1322667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1323667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1324667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1325667e9985SDmitry Baryshkov -1), 1326667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 13273431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1328667e9985SDmitry Baryshkov -1), 13294369c93cSDmitry Baryshkov }; 13304369c93cSDmitry Baryshkov 13311a5b5372SRobert Foss static const struct dpu_pingpong_cfg sc7280_pp[] = { 13321a5b5372SRobert Foss PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), 13331a5b5372SRobert Foss PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 13341a5b5372SRobert Foss PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 13351a5b5372SRobert Foss PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 13361a5b5372SRobert Foss }; 13371a5b5372SRobert Foss 13385334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = { 13395334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 13405334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 13415334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 13425334087eSLoic Poulain }; 13435334087eSLoic Poulain 1344*100d7ef6SDmitry Baryshkov /* FIXME: interrupts */ 1345*100d7ef6SDmitry Baryshkov static const struct dpu_pingpong_cfg sm8450_pp[] = { 1346*100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x69000, MERGE_3D_0, sdm845_pp_sblk_te, 1347*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1348*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1349*100d7ef6SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x6a000, MERGE_3D_0, sdm845_pp_sblk_te, 1350*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1351*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1352*100d7ef6SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, MERGE_3D_1, sdm845_pp_sblk, 1353*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1354*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1355*100d7ef6SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, MERGE_3D_1, sdm845_pp_sblk, 1356*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1357*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1358*100d7ef6SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x6d000, MERGE_3D_2, sdm845_pp_sblk, 1359*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1360*100d7ef6SDmitry Baryshkov -1), 1361*100d7ef6SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x6e000, MERGE_3D_2, sdm845_pp_sblk, 1362*100d7ef6SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1363*100d7ef6SDmitry Baryshkov -1), 1364*100d7ef6SDmitry Baryshkov PP_BLK("pingpong_6", PINGPONG_6, 0x65800, MERGE_3D_3, sdm845_pp_sblk, 1365*100d7ef6SDmitry Baryshkov -1, 1366*100d7ef6SDmitry Baryshkov -1), 1367*100d7ef6SDmitry Baryshkov PP_BLK("pingpong_7", PINGPONG_7, 0x65c00, MERGE_3D_3, sdm845_pp_sblk, 1368*100d7ef6SDmitry Baryshkov -1, 1369*100d7ef6SDmitry Baryshkov -1), 1370*100d7ef6SDmitry Baryshkov }; 1371*100d7ef6SDmitry Baryshkov 13724369c93cSDmitry Baryshkov /************************************************************* 13734369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 13744369c93cSDmitry Baryshkov *************************************************************/ 13754369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 13764369c93cSDmitry Baryshkov {\ 13774369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 13784369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 13794369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 13804369c93cSDmitry Baryshkov .sblk = NULL \ 13814369c93cSDmitry Baryshkov } 13824369c93cSDmitry Baryshkov 13834369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 13844369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 13854369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 13864369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1387386fced3SJonathan Marek }; 1388386fced3SJonathan Marek 1389*100d7ef6SDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8450_merge_3d[] = { 1390*100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), 1391*100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), 1392*100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x50000), 1393*100d7ef6SDmitry Baryshkov MERGE_3D_BLK("merge_3d_3", MERGE_3D_3, 0x65f00), 1394*100d7ef6SDmitry Baryshkov }; 1395*100d7ef6SDmitry Baryshkov 13967c5ab05eSVinod Koul /************************************************************* 13977c5ab05eSVinod Koul * DSC sub blocks config 13987c5ab05eSVinod Koul *************************************************************/ 13997c5ab05eSVinod Koul #define DSC_BLK(_name, _id, _base) \ 14007c5ab05eSVinod Koul {\ 14017c5ab05eSVinod Koul .name = _name, .id = _id, \ 14027c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 14037c5ab05eSVinod Koul .features = 0, \ 14047c5ab05eSVinod Koul } 14057c5ab05eSVinod Koul 14067c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = { 14077c5ab05eSVinod Koul DSC_BLK("dsc_0", DSC_0, 0x80000), 14087c5ab05eSVinod Koul DSC_BLK("dsc_1", DSC_1, 0x80400), 14097c5ab05eSVinod Koul DSC_BLK("dsc_2", DSC_2, 0x80800), 14107c5ab05eSVinod Koul DSC_BLK("dsc_3", DSC_3, 0x80c00), 14117c5ab05eSVinod Koul }; 14127c5ab05eSVinod Koul 141325fdd593SJeykumar Sankaran /************************************************************* 141425fdd593SJeykumar Sankaran * INTF sub blocks config 141525fdd593SJeykumar Sankaran *************************************************************/ 1416667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 141725fdd593SJeykumar Sankaran {\ 141825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 141925fdd593SJeykumar Sankaran .base = _base, .len = 0x280, \ 1420cace3ac4SJonathan Marek .features = _features, \ 142125fdd593SJeykumar Sankaran .type = _type, \ 142225fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1423667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1424667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1425667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 142625fdd593SJeykumar Sankaran } 142725fdd593SJeykumar Sankaran 142894391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 142994391a14SAngeloGioacchino Del Regno INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 143094391a14SAngeloGioacchino Del Regno INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 143194391a14SAngeloGioacchino Del Regno INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 143294391a14SAngeloGioacchino Del Regno INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 143394391a14SAngeloGioacchino Del Regno }; 143494391a14SAngeloGioacchino Del Regno 1435abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 1436667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1437667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1438667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1439667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 144025fdd593SJeykumar Sankaran }; 144125fdd593SJeykumar Sankaran 14427bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 1443bb3de286SBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1444667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 14457bdc0c4bSKalyan Thota }; 14467bdc0c4bSKalyan Thota 1447386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 1448667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1449667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1450667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1451667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1452386fced3SJonathan Marek }; 1453386fced3SJonathan Marek 1454591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 1455ef7837ffSSankeerth Billakanti INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1456667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1457ef7837ffSSankeerth Billakanti INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1458591e34a0SKrishna Manikandan }; 1459591e34a0SKrishna Manikandan 1460f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 1461f3af2d6eSRob Clark INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1462f3af2d6eSRob Clark INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1463f3af2d6eSRob Clark INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1464f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 1465f3af2d6eSRob Clark INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1466f3af2d6eSRob Clark INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 1467f3af2d6eSRob Clark INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1468f3af2d6eSRob Clark }; 1469f3af2d6eSRob Clark 14705334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 14715334087eSLoic Poulain INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0), 14725334087eSLoic Poulain INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 14735334087eSLoic Poulain }; 14745334087eSLoic Poulain 1475*100d7ef6SDmitry Baryshkov static const struct dpu_intf_cfg sm8450_intf[] = { 1476*100d7ef6SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1477*100d7ef6SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1478*100d7ef6SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x36000, INTF_DSI, 1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1479*100d7ef6SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x37000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1480*100d7ef6SDmitry Baryshkov }; 1481*100d7ef6SDmitry Baryshkov 148225fdd593SJeykumar Sankaran /************************************************************* 148353324b99SAbhinav Kumar * Writeback blocks config 148453324b99SAbhinav Kumar *************************************************************/ 148553324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1486a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 148753324b99SAbhinav Kumar { \ 148853324b99SAbhinav Kumar .name = _name, .id = _id, \ 148953324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 149053324b99SAbhinav Kumar .features = _features, \ 149153324b99SAbhinav Kumar .format_list = wb2_formats, \ 149253324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 149353324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 149453324b99SAbhinav Kumar .xin_id = __xin_id, \ 149553324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1496a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 149753324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 149853324b99SAbhinav Kumar } 149953324b99SAbhinav Kumar 150053324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 150153324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1502a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 150353324b99SAbhinav Kumar }; 150453324b99SAbhinav Kumar 150553324b99SAbhinav Kumar /************************************************************* 150625fdd593SJeykumar Sankaran * VBIF sub blocks config 150725fdd593SJeykumar Sankaran *************************************************************/ 150825fdd593SJeykumar Sankaran /* VBIF QOS remap */ 150994391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 151094391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1511abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1512abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 151325fdd593SJeykumar Sankaran 151494391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 151594391a14SAngeloGioacchino Del Regno { 151694391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 151794391a14SAngeloGioacchino Del Regno .ot_limit = 2, 151894391a14SAngeloGioacchino Del Regno }, 151994391a14SAngeloGioacchino Del Regno { 152094391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 152194391a14SAngeloGioacchino Del Regno .ot_limit = 6, 152294391a14SAngeloGioacchino Del Regno }, 152394391a14SAngeloGioacchino Del Regno { 152494391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 152594391a14SAngeloGioacchino Del Regno .ot_limit = 16, 152694391a14SAngeloGioacchino Del Regno }, 152794391a14SAngeloGioacchino Del Regno }; 152894391a14SAngeloGioacchino Del Regno 152994391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 153094391a14SAngeloGioacchino Del Regno { 1531606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 153294391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 153394391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 153494391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 153594391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 153694391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 1537c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 153894391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 153994391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 154094391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 154194391a14SAngeloGioacchino Del Regno }, 154294391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 154394391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 154494391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 154594391a14SAngeloGioacchino Del Regno }, 154694391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 154794391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 154894391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 154994391a14SAngeloGioacchino Del Regno }, 155094391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 155194391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 155294391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 155394391a14SAngeloGioacchino Del Regno }, 155494391a14SAngeloGioacchino Del Regno .memtype_count = 14, 155594391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 155694391a14SAngeloGioacchino Del Regno }, 155794391a14SAngeloGioacchino Del Regno }; 155894391a14SAngeloGioacchino Del Regno 1559abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 156025fdd593SJeykumar Sankaran { 1561606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 156225fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 156325fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 156425fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 1565c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 156625fdd593SJeykumar Sankaran .qos_rt_tbl = { 156725fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 156825fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 156925fdd593SJeykumar Sankaran }, 157025fdd593SJeykumar Sankaran .qos_nrt_tbl = { 157125fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 157225fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 157325fdd593SJeykumar Sankaran }, 157425fdd593SJeykumar Sankaran .memtype_count = 14, 157525fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 157625fdd593SJeykumar Sankaran }, 157725fdd593SJeykumar Sankaran }; 157825fdd593SJeykumar Sankaran 1579abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 158025fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 158125fdd593SJeykumar Sankaran }; 158225fdd593SJeykumar Sankaran 1583386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 1584386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 1585386fced3SJonathan Marek }; 1586386fced3SJonathan Marek 1587af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 1588af776a3eSJonathan Marek .base = 0x0, 1589af776a3eSJonathan Marek .version = 0x00010002, 1590af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 1591af776a3eSJonathan Marek .xin_id = 7, 1592af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1593af776a3eSJonathan Marek }; 1594af776a3eSJonathan Marek 1595*100d7ef6SDmitry Baryshkov static const struct dpu_reg_dma_cfg sm8450_regdma = { 1596*100d7ef6SDmitry Baryshkov .base = 0x0, 1597*100d7ef6SDmitry Baryshkov .version = 0x00020000, 1598*100d7ef6SDmitry Baryshkov .trigger_sel_off = 0x119c, 1599*100d7ef6SDmitry Baryshkov .xin_id = 7, 1600*100d7ef6SDmitry Baryshkov .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1601*100d7ef6SDmitry Baryshkov }; 1602*100d7ef6SDmitry Baryshkov 160325fdd593SJeykumar Sankaran /************************************************************* 160425fdd593SJeykumar Sankaran * PERF data config 160525fdd593SJeykumar Sankaran *************************************************************/ 160625fdd593SJeykumar Sankaran 160725fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 160894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 160994391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 161094391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 161194391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 161294391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 161394391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 161494391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 161594391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 161694391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 161794391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 161894391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 161994391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 162094391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 162194391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 162294391a14SAngeloGioacchino Del Regno }; 162394391a14SAngeloGioacchino Del Regno 1624abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 162525fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 162625fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 162725fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 162825fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 162925fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 163025fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 163125fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 163225fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 163325fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 163425fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 163525fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 163625fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 163725fdd593SJeykumar Sankaran }; 163825fdd593SJeykumar Sankaran 163994391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 164094391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 164194391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 164294391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 164394391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 164494391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 164594391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 164694391a14SAngeloGioacchino Del Regno }; 164794391a14SAngeloGioacchino Del Regno 16487bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 16497bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 16507bdc0c4bSKalyan Thota }; 16517bdc0c4bSKalyan Thota 1652386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 1653386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 1654386fced3SJonathan Marek }; 1655386fced3SJonathan Marek 1656f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 1657f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 1658f3af2d6eSRob Clark }; 1659f3af2d6eSRob Clark 16605334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 16615334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 16625334087eSLoic Poulain }; 16635334087eSLoic Poulain 1664abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 166525fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 166625fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 166725fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 166825fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 166925fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 167025fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 167125fdd593SJeykumar Sankaran }; 167225fdd593SJeykumar Sankaran 16737bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 16747bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 16757bdc0c4bSKalyan Thota }; 16767bdc0c4bSKalyan Thota 1677f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 1678f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 1679f3af2d6eSRob Clark }; 1680f3af2d6eSRob Clark 168194391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 168294391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 168394391a14SAngeloGioacchino Del Regno }; 168494391a14SAngeloGioacchino Del Regno 1685abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 168625fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 168725fdd593SJeykumar Sankaran }; 168825fdd593SJeykumar Sankaran 16897bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 16907bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 16917bdc0c4bSKalyan Thota }; 16927bdc0c4bSKalyan Thota 169394391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 169494391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 169594391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 169694391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 169794391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 169894391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 169994391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 170094391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 170194391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 170294391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 170394391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 170494391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 170594391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 170694391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 170794391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 170894391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 170994391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 171094391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 171194391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 171294391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 171394391a14SAngeloGioacchino Del Regno }, 171494391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 171594391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 171694391a14SAngeloGioacchino Del Regno }, 171794391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 171894391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 171994391a14SAngeloGioacchino Del Regno }, 172094391a14SAngeloGioacchino Del Regno }, 172194391a14SAngeloGioacchino Del Regno .cdp_cfg = { 172294391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 172394391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 172494391a14SAngeloGioacchino Del Regno }, 172594391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 172694391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 172794391a14SAngeloGioacchino Del Regno }; 172894391a14SAngeloGioacchino Del Regno 1729abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 173025fdd593SJeykumar Sankaran .max_bw_low = 6800000, 173125fdd593SJeykumar Sankaran .max_bw_high = 6800000, 173225fdd593SJeykumar Sankaran .min_core_ib = 2400000, 173325fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 173425fdd593SJeykumar Sankaran .min_dram_ib = 800000, 173525fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 173625fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 173725fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 173825fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 173925fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 174025fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 174125fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 174225fdd593SJeykumar Sankaran .amortizable_threshold = 25, 174325fdd593SJeykumar Sankaran .min_prefill_lines = 24, 174425fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 17455bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 174625fdd593SJeykumar Sankaran .qos_lut_tbl = { 174725fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 174825fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 174925fdd593SJeykumar Sankaran }, 175025fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 175125fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 175225fdd593SJeykumar Sankaran }, 175325fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 175425fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 175525fdd593SJeykumar Sankaran }, 175625fdd593SJeykumar Sankaran }, 175725fdd593SJeykumar Sankaran .cdp_cfg = { 175825fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 175925fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 176025fdd593SJeykumar Sankaran }, 17614f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 17624f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 176325fdd593SJeykumar Sankaran }; 176425fdd593SJeykumar Sankaran 17657bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 176671dc6c08SKrishna Manikandan .max_bw_low = 6800000, 176771dc6c08SKrishna Manikandan .max_bw_high = 6800000, 17687bdc0c4bSKalyan Thota .min_core_ib = 2400000, 17697bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 1770c33b7c03SKalyan Thota .min_dram_ib = 1600000, 1771c33b7c03SKalyan Thota .min_prefill_lines = 24, 17727bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 17735bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 17747bdc0c4bSKalyan Thota .qos_lut_tbl = { 17757bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 17767bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 17777bdc0c4bSKalyan Thota }, 17787bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 17797bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 17807bdc0c4bSKalyan Thota }, 17817bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 17827bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 17837bdc0c4bSKalyan Thota }, 17847bdc0c4bSKalyan Thota }, 17857bdc0c4bSKalyan Thota .cdp_cfg = { 17867bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 17877bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 17887bdc0c4bSKalyan Thota }, 1789c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 1790c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 17917bdc0c4bSKalyan Thota }; 17927bdc0c4bSKalyan Thota 17933581b706SAdam Skladowski static const struct dpu_perf_cfg sm6115_perf_data = { 17943581b706SAdam Skladowski .max_bw_low = 3100000, 17953581b706SAdam Skladowski .max_bw_high = 4000000, 17963581b706SAdam Skladowski .min_core_ib = 2400000, 17973581b706SAdam Skladowski .min_llcc_ib = 800000, 17983581b706SAdam Skladowski .min_dram_ib = 800000, 17993581b706SAdam Skladowski .min_prefill_lines = 24, 18003581b706SAdam Skladowski .danger_lut_tbl = {0xff, 0xffff, 0x0}, 18013581b706SAdam Skladowski .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 18023581b706SAdam Skladowski .qos_lut_tbl = { 18033581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_linear), 18043581b706SAdam Skladowski .entries = sc7180_qos_linear 18053581b706SAdam Skladowski }, 18063581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 18073581b706SAdam Skladowski .entries = sc7180_qos_macrotile 18083581b706SAdam Skladowski }, 18093581b706SAdam Skladowski {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 18103581b706SAdam Skladowski .entries = sc7180_qos_nrt 18113581b706SAdam Skladowski }, 18123581b706SAdam Skladowski /* TODO: macrotile-qseed is different from macrotile */ 18133581b706SAdam Skladowski }, 18143581b706SAdam Skladowski .cdp_cfg = { 18153581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 1}, 18163581b706SAdam Skladowski {.rd_enable = 1, .wr_enable = 0} 18173581b706SAdam Skladowski }, 18183581b706SAdam Skladowski .clk_inefficiency_factor = 105, 18193581b706SAdam Skladowski .bw_inefficiency_factor = 120, 18203581b706SAdam Skladowski }; 18213581b706SAdam Skladowski 1822386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 1823386fced3SJonathan Marek .max_bw_low = 12800000, 1824386fced3SJonathan Marek .max_bw_high = 12800000, 1825386fced3SJonathan Marek .min_core_ib = 2400000, 1826386fced3SJonathan Marek .min_llcc_ib = 800000, 1827386fced3SJonathan Marek .min_dram_ib = 800000, 18284f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 1829386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 18305bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 1831386fced3SJonathan Marek .qos_lut_tbl = { 1832386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 1833386fced3SJonathan Marek .entries = sm8150_qos_linear 1834386fced3SJonathan Marek }, 1835386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1836386fced3SJonathan Marek .entries = sc7180_qos_macrotile 1837386fced3SJonathan Marek }, 1838386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1839386fced3SJonathan Marek .entries = sc7180_qos_nrt 1840386fced3SJonathan Marek }, 1841386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1842386fced3SJonathan Marek }, 1843386fced3SJonathan Marek .cdp_cfg = { 1844386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1845386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1846386fced3SJonathan Marek }, 18474f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 18484f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1849386fced3SJonathan Marek }; 1850386fced3SJonathan Marek 1851f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 1852f3af2d6eSRob Clark .max_bw_low = 9600000, 1853f3af2d6eSRob Clark .max_bw_high = 9600000, 1854f3af2d6eSRob Clark .min_core_ib = 2400000, 1855f3af2d6eSRob Clark .min_llcc_ib = 800000, 1856f3af2d6eSRob Clark .min_dram_ib = 800000, 1857f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 1858f3af2d6eSRob Clark .qos_lut_tbl = { 1859f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 1860f3af2d6eSRob Clark .entries = sc8180x_qos_linear 1861f3af2d6eSRob Clark }, 1862f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 1863f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 1864f3af2d6eSRob Clark }, 1865f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1866f3af2d6eSRob Clark .entries = sc7180_qos_nrt 1867f3af2d6eSRob Clark }, 1868f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 1869f3af2d6eSRob Clark }, 1870f3af2d6eSRob Clark .cdp_cfg = { 1871f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 1872f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 1873f3af2d6eSRob Clark }, 1874f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 1875f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 1876f3af2d6eSRob Clark }; 1877f3af2d6eSRob Clark 1878af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 1879af776a3eSJonathan Marek .max_bw_low = 13700000, 1880af776a3eSJonathan Marek .max_bw_high = 16600000, 1881af776a3eSJonathan Marek .min_core_ib = 4800000, 1882af776a3eSJonathan Marek .min_llcc_ib = 0, 1883af776a3eSJonathan Marek .min_dram_ib = 800000, 18844f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 1885af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 18865bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 1887af776a3eSJonathan Marek .qos_lut_tbl = { 1888af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 1889af776a3eSJonathan Marek .entries = sc7180_qos_linear 1890af776a3eSJonathan Marek }, 1891af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1892af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 1893af776a3eSJonathan Marek }, 1894af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1895af776a3eSJonathan Marek .entries = sc7180_qos_nrt 1896af776a3eSJonathan Marek }, 1897af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1898af776a3eSJonathan Marek }, 1899af776a3eSJonathan Marek .cdp_cfg = { 1900af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1901af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1902af776a3eSJonathan Marek }, 19034f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 19044f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1905af776a3eSJonathan Marek }; 1906af776a3eSJonathan Marek 1907*100d7ef6SDmitry Baryshkov static const struct dpu_perf_cfg sm8450_perf_data = { 1908*100d7ef6SDmitry Baryshkov .max_bw_low = 13600000, 1909*100d7ef6SDmitry Baryshkov .max_bw_high = 18200000, 1910*100d7ef6SDmitry Baryshkov .min_core_ib = 2500000, 1911*100d7ef6SDmitry Baryshkov .min_llcc_ib = 0, 1912*100d7ef6SDmitry Baryshkov .min_dram_ib = 800000, 1913*100d7ef6SDmitry Baryshkov .min_prefill_lines = 35, 1914*100d7ef6SDmitry Baryshkov /* FIXME: lut tables */ 1915*100d7ef6SDmitry Baryshkov .danger_lut_tbl = {0x3ffff, 0x3ffff, 0x0}, 1916*100d7ef6SDmitry Baryshkov .safe_lut_tbl = {0xfe00, 0xfe00, 0xffff}, 1917*100d7ef6SDmitry Baryshkov .qos_lut_tbl = { 1918*100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_linear), 1919*100d7ef6SDmitry Baryshkov .entries = sc7180_qos_linear 1920*100d7ef6SDmitry Baryshkov }, 1921*100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1922*100d7ef6SDmitry Baryshkov .entries = sc7180_qos_macrotile 1923*100d7ef6SDmitry Baryshkov }, 1924*100d7ef6SDmitry Baryshkov {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1925*100d7ef6SDmitry Baryshkov .entries = sc7180_qos_nrt 1926*100d7ef6SDmitry Baryshkov }, 1927*100d7ef6SDmitry Baryshkov /* TODO: macrotile-qseed is different from macrotile */ 1928*100d7ef6SDmitry Baryshkov }, 1929*100d7ef6SDmitry Baryshkov .cdp_cfg = { 1930*100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 1}, 1931*100d7ef6SDmitry Baryshkov {.rd_enable = 1, .wr_enable = 0} 1932*100d7ef6SDmitry Baryshkov }, 1933*100d7ef6SDmitry Baryshkov .clk_inefficiency_factor = 105, 1934*100d7ef6SDmitry Baryshkov .bw_inefficiency_factor = 120, 1935*100d7ef6SDmitry Baryshkov }; 1936*100d7ef6SDmitry Baryshkov 1937591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 1938591e34a0SKrishna Manikandan .max_bw_low = 4700000, 1939591e34a0SKrishna Manikandan .max_bw_high = 8800000, 1940591e34a0SKrishna Manikandan .min_core_ib = 2500000, 1941591e34a0SKrishna Manikandan .min_llcc_ib = 0, 1942591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 1943591e34a0SKrishna Manikandan .min_prefill_lines = 24, 1944591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 19455bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 1946591e34a0SKrishna Manikandan .qos_lut_tbl = { 1947591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1948591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 1949591e34a0SKrishna Manikandan }, 1950591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1951591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 1952591e34a0SKrishna Manikandan }, 1953591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1954591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 1955591e34a0SKrishna Manikandan }, 1956591e34a0SKrishna Manikandan }, 1957591e34a0SKrishna Manikandan .cdp_cfg = { 1958591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 1959591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 1960591e34a0SKrishna Manikandan }, 1961591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 1962591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 1963591e34a0SKrishna Manikandan }; 1964591e34a0SKrishna Manikandan 19655334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 19665334087eSLoic Poulain .max_bw_low = 2700000, 19675334087eSLoic Poulain .max_bw_high = 2700000, 19685334087eSLoic Poulain .min_core_ib = 1300000, 19695334087eSLoic Poulain .min_llcc_ib = 0, 19705334087eSLoic Poulain .min_dram_ib = 1600000, 19715334087eSLoic Poulain .min_prefill_lines = 24, 19725334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 19735334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 19745334087eSLoic Poulain .qos_lut_tbl = { 19755334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 19765334087eSLoic Poulain .entries = qcm2290_qos_linear 19775334087eSLoic Poulain }, 19785334087eSLoic Poulain }, 19795334087eSLoic Poulain .cdp_cfg = { 19805334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 19815334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 19825334087eSLoic Poulain }, 19835334087eSLoic Poulain .clk_inefficiency_factor = 105, 19845334087eSLoic Poulain .bw_inefficiency_factor = 120, 19855334087eSLoic Poulain }; 198625fdd593SJeykumar Sankaran /************************************************************* 1987de7d480fSDmitry Baryshkov * Hardware catalog 198825fdd593SJeykumar Sankaran *************************************************************/ 198925fdd593SJeykumar Sankaran 1990de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 199194391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 199294391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 199394391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 199494391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 199594391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 199694391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 199794391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 199894391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 199994391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 20006452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 20016452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 200294391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 200394391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 200494391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 200594391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 200694391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 200794391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 200894391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 2009477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 201094391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 201194391a14SAngeloGioacchino Del Regno }; 201294391a14SAngeloGioacchino Del Regno 2013de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 201425fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 201525fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 201625fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 201725fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 201825fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 201925fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 202025fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 202125fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 202225fdd593SJeykumar Sankaran .mixer = sdm845_lm, 202325fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 202425fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 20257c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 20267c5ab05eSVinod Koul .dsc = sdm845_dsc, 202725fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 202825fdd593SJeykumar Sankaran .intf = sdm845_intf, 202925fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 203025fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 203125fdd593SJeykumar Sankaran .reg_dma_count = 1, 2032481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2033477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 2034597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 203525fdd593SJeykumar Sankaran }; 203625fdd593SJeykumar Sankaran 2037de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 20387bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 20397bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 20407bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 20417bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 20427bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 20437bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 20447bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 20457bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 20467bdc0c4bSKalyan Thota .mixer = sc7180_lm, 2047e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2048e47616dfSKalyan Thota .dspp = sc7180_dspp, 20497bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 20507bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 20517bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 20527bdc0c4bSKalyan Thota .intf = sc7180_intf, 205351e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 205451e4d60eSAbhinav Kumar .wb = sm8250_wb, 20557bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 20567bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 20577bdc0c4bSKalyan Thota .reg_dma_count = 1, 2058481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2059477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 2060597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 20617bdc0c4bSKalyan Thota }; 20627bdc0c4bSKalyan Thota 20633581b706SAdam Skladowski static const struct dpu_mdss_cfg sm6115_dpu_cfg = { 20643581b706SAdam Skladowski .caps = &sm6115_dpu_caps, 20653581b706SAdam Skladowski .mdp_count = ARRAY_SIZE(sm6115_mdp), 20663581b706SAdam Skladowski .mdp = sm6115_mdp, 20673581b706SAdam Skladowski .ctl_count = ARRAY_SIZE(qcm2290_ctl), 20683581b706SAdam Skladowski .ctl = qcm2290_ctl, 20693581b706SAdam Skladowski .sspp_count = ARRAY_SIZE(sm6115_sspp), 20703581b706SAdam Skladowski .sspp = sm6115_sspp, 20713581b706SAdam Skladowski .mixer_count = ARRAY_SIZE(qcm2290_lm), 20723581b706SAdam Skladowski .mixer = qcm2290_lm, 20733581b706SAdam Skladowski .dspp_count = ARRAY_SIZE(qcm2290_dspp), 20743581b706SAdam Skladowski .dspp = qcm2290_dspp, 20753581b706SAdam Skladowski .pingpong_count = ARRAY_SIZE(qcm2290_pp), 20763581b706SAdam Skladowski .pingpong = qcm2290_pp, 20773581b706SAdam Skladowski .intf_count = ARRAY_SIZE(qcm2290_intf), 20783581b706SAdam Skladowski .intf = qcm2290_intf, 20793581b706SAdam Skladowski .vbif_count = ARRAY_SIZE(sdm845_vbif), 20803581b706SAdam Skladowski .vbif = sdm845_vbif, 20813581b706SAdam Skladowski .perf = &sm6115_perf_data, 20823581b706SAdam Skladowski .mdss_irqs = IRQ_SC7180_MASK, 20833581b706SAdam Skladowski }; 20843581b706SAdam Skladowski 2085de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 2086386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 2087386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 2088386fced3SJonathan Marek .mdp = sdm845_mdp, 2089386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2090386fced3SJonathan Marek .ctl = sm8150_ctl, 2091386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 2092386fced3SJonathan Marek .sspp = sdm845_sspp, 2093386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2094386fced3SJonathan Marek .mixer = sm8150_lm, 209505ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 209605ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 2097386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2098386fced3SJonathan Marek .pingpong = sm8150_pp, 20994369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 21004369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2101386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2102386fced3SJonathan Marek .intf = sm8150_intf, 2103386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2104386fced3SJonathan Marek .vbif = sdm845_vbif, 2105386fced3SJonathan Marek .reg_dma_count = 1, 2106481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2107477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 2108597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 2109386fced3SJonathan Marek }; 2110386fced3SJonathan Marek 2111de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 2112f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 2113f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 2114f3af2d6eSRob Clark .mdp = sc8180x_mdp, 2115f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 2116f3af2d6eSRob Clark .ctl = sm8150_ctl, 2117f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 2118f3af2d6eSRob Clark .sspp = sdm845_sspp, 2119f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 2120f3af2d6eSRob Clark .mixer = sm8150_lm, 2121f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 2122f3af2d6eSRob Clark .pingpong = sm8150_pp, 2123f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 2124f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 2125f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 2126f3af2d6eSRob Clark .intf = sc8180x_intf, 2127f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 2128f3af2d6eSRob Clark .vbif = sdm845_vbif, 2129f3af2d6eSRob Clark .reg_dma_count = 1, 2130481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 2131477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 2132f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 2133f3af2d6eSRob Clark }; 2134f3af2d6eSRob Clark 2135de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 2136af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 2137af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 2138af776a3eSJonathan Marek .mdp = sm8250_mdp, 2139af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 2140af776a3eSJonathan Marek .ctl = sm8150_ctl, 2141d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 2142d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 2143af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 2144af776a3eSJonathan Marek .mixer = sm8150_lm, 214505ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 214605ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 2147af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 2148af776a3eSJonathan Marek .pingpong = sm8150_pp, 21494369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 21504369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 2151af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 2152af776a3eSJonathan Marek .intf = sm8150_intf, 2153af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 2154af776a3eSJonathan Marek .vbif = sdm845_vbif, 215553324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 215653324b99SAbhinav Kumar .wb = sm8250_wb, 2157af776a3eSJonathan Marek .reg_dma_count = 1, 2158481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 2159477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 2160597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 2161af776a3eSJonathan Marek }; 2162af776a3eSJonathan Marek 2163*100d7ef6SDmitry Baryshkov static const struct dpu_mdss_cfg sm8450_dpu_cfg = { 2164*100d7ef6SDmitry Baryshkov .caps = &sm8450_dpu_caps, 2165*100d7ef6SDmitry Baryshkov .mdp_count = ARRAY_SIZE(sm8450_mdp), 2166*100d7ef6SDmitry Baryshkov .mdp = sm8450_mdp, 2167*100d7ef6SDmitry Baryshkov .ctl_count = ARRAY_SIZE(sm8450_ctl), 2168*100d7ef6SDmitry Baryshkov .ctl = sm8450_ctl, 2169*100d7ef6SDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8450_sspp), 2170*100d7ef6SDmitry Baryshkov .sspp = sm8450_sspp, 2171*100d7ef6SDmitry Baryshkov .mixer_count = ARRAY_SIZE(sm8150_lm), 2172*100d7ef6SDmitry Baryshkov .mixer = sm8150_lm, 2173*100d7ef6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 2174*100d7ef6SDmitry Baryshkov .dspp = sm8150_dspp, 2175*100d7ef6SDmitry Baryshkov .pingpong_count = ARRAY_SIZE(sm8450_pp), 2176*100d7ef6SDmitry Baryshkov .pingpong = sm8450_pp, 2177*100d7ef6SDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8450_merge_3d), 2178*100d7ef6SDmitry Baryshkov .merge_3d = sm8450_merge_3d, 2179*100d7ef6SDmitry Baryshkov .intf_count = ARRAY_SIZE(sm8450_intf), 2180*100d7ef6SDmitry Baryshkov .intf = sm8450_intf, 2181*100d7ef6SDmitry Baryshkov .vbif_count = ARRAY_SIZE(sdm845_vbif), 2182*100d7ef6SDmitry Baryshkov .vbif = sdm845_vbif, 2183*100d7ef6SDmitry Baryshkov .reg_dma_count = 1, 2184*100d7ef6SDmitry Baryshkov .dma_cfg = &sm8450_regdma, 2185*100d7ef6SDmitry Baryshkov .perf = &sm8450_perf_data, 2186*100d7ef6SDmitry Baryshkov .mdss_irqs = IRQ_SM8450_MASK, 2187*100d7ef6SDmitry Baryshkov }; 2188*100d7ef6SDmitry Baryshkov 2189de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 2190591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 2191591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 2192591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 2193591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 2194591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 2195591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 2196591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 2197fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 2198fca5ad26SKalyan Thota .dspp = sc7180_dspp, 2199591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 2200591e34a0SKrishna Manikandan .mixer = sc7280_lm, 2201591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 2202591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 2203591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 2204591e34a0SKrishna Manikandan .intf = sc7280_intf, 2205591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 2206591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 2207477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 2208597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 2209591e34a0SKrishna Manikandan }; 2210591e34a0SKrishna Manikandan 2211de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 22125334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 22135334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 22145334087eSLoic Poulain .mdp = qcm2290_mdp, 22155334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 22165334087eSLoic Poulain .ctl = qcm2290_ctl, 22175334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 22185334087eSLoic Poulain .sspp = qcm2290_sspp, 22195334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 22205334087eSLoic Poulain .mixer = qcm2290_lm, 22215334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 22225334087eSLoic Poulain .dspp = qcm2290_dspp, 22235334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 22245334087eSLoic Poulain .pingpong = qcm2290_pp, 22255334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 22265334087eSLoic Poulain .intf = qcm2290_intf, 22275334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 22285334087eSLoic Poulain .vbif = sdm845_vbif, 22295334087eSLoic Poulain .reg_dma_count = 1, 2230481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 2231477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 22325334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 22335334087eSLoic Poulain }; 22345334087eSLoic Poulain 2235abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 2236de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 2237de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 2238de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 2239de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 2240de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 2241de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 2242de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 2243de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 2244de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 22453581b706SAdam Skladowski { .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg}, 2246de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 2247de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 2248*100d7ef6SDmitry Baryshkov { .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg}, 224925fdd593SJeykumar Sankaran }; 225025fdd593SJeykumar Sankaran 2251de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 225225fdd593SJeykumar Sankaran { 225325fdd593SJeykumar Sankaran int i; 225425fdd593SJeykumar Sankaran 225525fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 2256de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 2257de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 225825fdd593SJeykumar Sankaran } 225925fdd593SJeykumar Sankaran 226025fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 226132084967SDmitry Baryshkov 226225fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 226325fdd593SJeykumar Sankaran } 226425fdd593SJeykumar Sankaran 2265