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_INTF4_INTR) | \ 90597762d5SDmitry Baryshkov BIT(MDP_AD4_0_INTR) | \ 91597762d5SDmitry Baryshkov BIT(MDP_AD4_1_INTR)) 92597762d5SDmitry Baryshkov 93597762d5SDmitry Baryshkov #define IRQ_SC7180_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 94597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 95597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 96597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 97597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR)) 98597762d5SDmitry Baryshkov 99597762d5SDmitry Baryshkov #define IRQ_SC7280_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 100597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 101597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 102597762d5SDmitry Baryshkov BIT(MDP_INTF0_7xxx_INTR) | \ 103597762d5SDmitry Baryshkov BIT(MDP_INTF1_7xxx_INTR) | \ 104597762d5SDmitry Baryshkov BIT(MDP_INTF5_7xxx_INTR)) 105597762d5SDmitry Baryshkov 106597762d5SDmitry Baryshkov #define IRQ_SM8250_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 107597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_INTR2) | \ 108597762d5SDmitry Baryshkov BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 109597762d5SDmitry Baryshkov BIT(MDP_INTF0_INTR) | \ 110597762d5SDmitry Baryshkov BIT(MDP_INTF1_INTR) | \ 111597762d5SDmitry Baryshkov BIT(MDP_INTF2_INTR) | \ 112597762d5SDmitry Baryshkov BIT(MDP_INTF3_INTR) | \ 113597762d5SDmitry Baryshkov BIT(MDP_INTF4_INTR)) 114597762d5SDmitry Baryshkov 115f3af2d6eSRob Clark #define IRQ_SC8180X_MASK (BIT(MDP_SSPP_TOP0_INTR) | \ 116f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_INTR2) | \ 117f3af2d6eSRob Clark BIT(MDP_SSPP_TOP0_HIST_INTR) | \ 118f3af2d6eSRob Clark BIT(MDP_INTF0_INTR) | \ 119f3af2d6eSRob Clark BIT(MDP_INTF1_INTR) | \ 120f3af2d6eSRob Clark BIT(MDP_INTF2_INTR) | \ 121f3af2d6eSRob Clark BIT(MDP_INTF3_INTR) | \ 122f3af2d6eSRob Clark BIT(MDP_INTF4_INTR) | \ 123f3af2d6eSRob Clark BIT(MDP_INTF5_INTR) | \ 124f3af2d6eSRob Clark BIT(MDP_AD4_0_INTR) | \ 125f3af2d6eSRob Clark BIT(MDP_AD4_1_INTR)) 126597762d5SDmitry Baryshkov 12753324b99SAbhinav Kumar #define WB_SM8250_MASK (BIT(DPU_WB_LINE_MODE) | \ 12853324b99SAbhinav Kumar BIT(DPU_WB_UBWC) | \ 12953324b99SAbhinav Kumar BIT(DPU_WB_YUV_CONFIG) | \ 13053324b99SAbhinav Kumar BIT(DPU_WB_PIPE_ALPHA) | \ 13153324b99SAbhinav Kumar BIT(DPU_WB_XY_ROI_OFFSET) | \ 13253324b99SAbhinav Kumar BIT(DPU_WB_QOS) | \ 13353324b99SAbhinav Kumar BIT(DPU_WB_QOS_8LVL) | \ 13453324b99SAbhinav Kumar BIT(DPU_WB_CDP) | \ 13553324b99SAbhinav Kumar BIT(DPU_WB_INPUT_CTRL)) 13653324b99SAbhinav Kumar 13725fdd593SJeykumar Sankaran #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) 13825fdd593SJeykumar Sankaran #define DEFAULT_DPU_LINE_WIDTH 2048 13925fdd593SJeykumar Sankaran #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 14025fdd593SJeykumar Sankaran 14125fdd593SJeykumar Sankaran #define MAX_HORZ_DECIMATION 4 14225fdd593SJeykumar Sankaran #define MAX_VERT_DECIMATION 4 14325fdd593SJeykumar Sankaran 14425fdd593SJeykumar Sankaran #define MAX_UPSCALE_RATIO 20 14525fdd593SJeykumar Sankaran #define MAX_DOWNSCALE_RATIO 4 14625fdd593SJeykumar Sankaran #define SSPP_UNITY_SCALE 1 14725fdd593SJeykumar Sankaran 14825fdd593SJeykumar Sankaran #define STRCAT(X, Y) (X Y) 14925fdd593SJeykumar Sankaran 15009c7e370SLee Jones static const uint32_t plane_formats[] = { 15109c7e370SLee Jones DRM_FORMAT_ARGB8888, 15209c7e370SLee Jones DRM_FORMAT_ABGR8888, 15309c7e370SLee Jones DRM_FORMAT_RGBA8888, 15409c7e370SLee Jones DRM_FORMAT_BGRA8888, 15509c7e370SLee Jones DRM_FORMAT_XRGB8888, 15609c7e370SLee Jones DRM_FORMAT_RGBX8888, 15709c7e370SLee Jones DRM_FORMAT_BGRX8888, 15809c7e370SLee Jones DRM_FORMAT_XBGR8888, 15909c7e370SLee Jones DRM_FORMAT_RGB888, 16009c7e370SLee Jones DRM_FORMAT_BGR888, 16109c7e370SLee Jones DRM_FORMAT_RGB565, 16209c7e370SLee Jones DRM_FORMAT_BGR565, 16309c7e370SLee Jones DRM_FORMAT_ARGB1555, 16409c7e370SLee Jones DRM_FORMAT_ABGR1555, 16509c7e370SLee Jones DRM_FORMAT_RGBA5551, 16609c7e370SLee Jones DRM_FORMAT_BGRA5551, 16709c7e370SLee Jones DRM_FORMAT_XRGB1555, 16809c7e370SLee Jones DRM_FORMAT_XBGR1555, 16909c7e370SLee Jones DRM_FORMAT_RGBX5551, 17009c7e370SLee Jones DRM_FORMAT_BGRX5551, 17109c7e370SLee Jones DRM_FORMAT_ARGB4444, 17209c7e370SLee Jones DRM_FORMAT_ABGR4444, 17309c7e370SLee Jones DRM_FORMAT_RGBA4444, 17409c7e370SLee Jones DRM_FORMAT_BGRA4444, 17509c7e370SLee Jones DRM_FORMAT_XRGB4444, 17609c7e370SLee Jones DRM_FORMAT_XBGR4444, 17709c7e370SLee Jones DRM_FORMAT_RGBX4444, 17809c7e370SLee Jones DRM_FORMAT_BGRX4444, 17909c7e370SLee Jones }; 18009c7e370SLee Jones 18109c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 18209c7e370SLee Jones DRM_FORMAT_ARGB8888, 18309c7e370SLee Jones DRM_FORMAT_ABGR8888, 18409c7e370SLee Jones DRM_FORMAT_RGBA8888, 18509c7e370SLee Jones DRM_FORMAT_BGRX8888, 18609c7e370SLee Jones DRM_FORMAT_BGRA8888, 18709c7e370SLee Jones DRM_FORMAT_XRGB8888, 18809c7e370SLee Jones DRM_FORMAT_XBGR8888, 18909c7e370SLee Jones DRM_FORMAT_RGBX8888, 19009c7e370SLee Jones DRM_FORMAT_RGB888, 19109c7e370SLee Jones DRM_FORMAT_BGR888, 19209c7e370SLee Jones DRM_FORMAT_RGB565, 19309c7e370SLee Jones DRM_FORMAT_BGR565, 19409c7e370SLee Jones DRM_FORMAT_ARGB1555, 19509c7e370SLee Jones DRM_FORMAT_ABGR1555, 19609c7e370SLee Jones DRM_FORMAT_RGBA5551, 19709c7e370SLee Jones DRM_FORMAT_BGRA5551, 19809c7e370SLee Jones DRM_FORMAT_XRGB1555, 19909c7e370SLee Jones DRM_FORMAT_XBGR1555, 20009c7e370SLee Jones DRM_FORMAT_RGBX5551, 20109c7e370SLee Jones DRM_FORMAT_BGRX5551, 20209c7e370SLee Jones DRM_FORMAT_ARGB4444, 20309c7e370SLee Jones DRM_FORMAT_ABGR4444, 20409c7e370SLee Jones DRM_FORMAT_RGBA4444, 20509c7e370SLee Jones DRM_FORMAT_BGRA4444, 20609c7e370SLee Jones DRM_FORMAT_XRGB4444, 20709c7e370SLee Jones DRM_FORMAT_XBGR4444, 20809c7e370SLee Jones DRM_FORMAT_RGBX4444, 20909c7e370SLee Jones DRM_FORMAT_BGRX4444, 21009c7e370SLee Jones 21109c7e370SLee Jones DRM_FORMAT_NV12, 21209c7e370SLee Jones DRM_FORMAT_NV21, 21309c7e370SLee Jones DRM_FORMAT_NV16, 21409c7e370SLee Jones DRM_FORMAT_NV61, 21509c7e370SLee Jones DRM_FORMAT_VYUY, 21609c7e370SLee Jones DRM_FORMAT_UYVY, 21709c7e370SLee Jones DRM_FORMAT_YUYV, 21809c7e370SLee Jones DRM_FORMAT_YVYU, 21909c7e370SLee Jones DRM_FORMAT_YUV420, 22009c7e370SLee Jones DRM_FORMAT_YVU420, 22109c7e370SLee Jones }; 22209c7e370SLee Jones 223dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 224dabfdd89SVinod Polimera DRM_FORMAT_NV12, 225dabfdd89SVinod Polimera /* TODO add formats after validation */ 226dabfdd89SVinod Polimera }; 227dabfdd89SVinod Polimera 22853324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 22953324b99SAbhinav Kumar DRM_FORMAT_RGB565, 23053324b99SAbhinav Kumar DRM_FORMAT_BGR565, 23153324b99SAbhinav Kumar DRM_FORMAT_RGB888, 23253324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 23353324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 23453324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 23553324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 23653324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 23753324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 23853324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 23953324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 24053324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 24153324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 24253324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 24353324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 24453324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 24553324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 24653324b99SAbhinav Kumar DRM_FORMAT_BGR565, 24753324b99SAbhinav Kumar DRM_FORMAT_BGR888, 24853324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 24953324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 25053324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 25153324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 25253324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 25353324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 25453324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 25553324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 25653324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 25753324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 25853324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 25953324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 26053324b99SAbhinav Kumar }; 26153324b99SAbhinav Kumar 26225fdd593SJeykumar Sankaran /************************************************************* 26325fdd593SJeykumar Sankaran * DPU sub blocks config 26425fdd593SJeykumar Sankaran *************************************************************/ 26525fdd593SJeykumar Sankaran /* DPU top level caps */ 26694391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 26794391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 26894391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 26994391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 27094391a14SAngeloGioacchino Del Regno .smart_dma_rev = DPU_SSPP_SMART_DMA_V1, 27194391a14SAngeloGioacchino Del Regno .ubwc_version = DPU_HW_UBWC_VER_10, 27294391a14SAngeloGioacchino Del Regno .has_src_split = true, 27394391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 27494391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 27594391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 27694391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 27794391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 27894391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 27994391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 28094391a14SAngeloGioacchino Del Regno }; 28194391a14SAngeloGioacchino Del Regno 282c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 283c162352eSKonrad Dybcio .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 284c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 285c162352eSKonrad Dybcio .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 286c162352eSKonrad Dybcio .ubwc_version = DPU_HW_UBWC_VER_20, 287c162352eSKonrad Dybcio .has_dim_layer = true, 288c162352eSKonrad Dybcio .has_idle_pc = true, 289c162352eSKonrad Dybcio .max_linewidth = 2160, 290c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 291c162352eSKonrad Dybcio }; 292c162352eSKonrad Dybcio 29325fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 29425fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 29525fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 29625fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 29725fdd593SJeykumar Sankaran .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 29825fdd593SJeykumar Sankaran .ubwc_version = DPU_HW_UBWC_VER_20, 29925fdd593SJeykumar Sankaran .has_src_split = true, 30025fdd593SJeykumar Sankaran .has_dim_layer = true, 30125fdd593SJeykumar Sankaran .has_idle_pc = true, 30242a558b7SKalyan Thota .has_3d_merge = true, 3037e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3047e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3057e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3067e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 30725fdd593SJeykumar Sankaran }; 30825fdd593SJeykumar Sankaran 3097bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3107bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3117bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3127bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3137bdc0c4bSKalyan Thota .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 3147bdc0c4bSKalyan Thota .ubwc_version = DPU_HW_UBWC_VER_20, 3157bdc0c4bSKalyan Thota .has_dim_layer = true, 3167bdc0c4bSKalyan Thota .has_idle_pc = true, 3177e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3187e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3197bdc0c4bSKalyan Thota }; 3207bdc0c4bSKalyan Thota 321386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 322386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 323386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 324386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 325386fced3SJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 326386fced3SJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_30, 327386fced3SJonathan Marek .has_src_split = true, 328386fced3SJonathan Marek .has_dim_layer = true, 329386fced3SJonathan Marek .has_idle_pc = true, 330386fced3SJonathan Marek .has_3d_merge = true, 331386fced3SJonathan Marek .max_linewidth = 4096, 332386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 333386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 334386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 335386fced3SJonathan Marek }; 336386fced3SJonathan Marek 337f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 338f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 339f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 340f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 341f3af2d6eSRob Clark .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 342f3af2d6eSRob Clark .ubwc_version = DPU_HW_UBWC_VER_30, 343f3af2d6eSRob Clark .has_src_split = true, 344f3af2d6eSRob Clark .has_dim_layer = true, 345f3af2d6eSRob Clark .has_idle_pc = true, 346f3af2d6eSRob Clark .has_3d_merge = true, 347f3af2d6eSRob Clark .max_linewidth = 4096, 348f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 349f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 350f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 351f3af2d6eSRob Clark }; 352f3af2d6eSRob Clark 353af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 354af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 355af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 356d21fc5dfSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 357af776a3eSJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 358af776a3eSJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_40, 359af776a3eSJonathan Marek .has_src_split = true, 360af776a3eSJonathan Marek .has_dim_layer = true, 361af776a3eSJonathan Marek .has_idle_pc = true, 362af776a3eSJonathan Marek .has_3d_merge = true, 363af776a3eSJonathan Marek .max_linewidth = 4096, 364af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 365af776a3eSJonathan Marek }; 366af776a3eSJonathan Marek 367591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 368591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 369591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 370591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 371591e34a0SKrishna Manikandan .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 372591e34a0SKrishna Manikandan .ubwc_version = DPU_HW_UBWC_VER_30, 373591e34a0SKrishna Manikandan .has_dim_layer = true, 374591e34a0SKrishna Manikandan .has_idle_pc = true, 375591e34a0SKrishna Manikandan .max_linewidth = 2400, 376591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 377591e34a0SKrishna Manikandan }; 378591e34a0SKrishna Manikandan 37994391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 38094391a14SAngeloGioacchino Del Regno { 38194391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 38294391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 38394391a14SAngeloGioacchino Del Regno .features = 0, 38494391a14SAngeloGioacchino Del Regno .highest_bank_bit = 0x2, 38594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 38694391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 38794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 38894391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 38994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 39094391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 39194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 39294391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 39394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 39494391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 39594391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 39694391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 39794391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 39894391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 39994391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 40094391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 40194391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 40294391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 40394391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 40494391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 40594391a14SAngeloGioacchino Del Regno }, 40694391a14SAngeloGioacchino Del Regno }; 40794391a14SAngeloGioacchino Del Regno 408abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 40925fdd593SJeykumar Sankaran { 41025fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 41125fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 41203490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 41325fdd593SJeykumar Sankaran .highest_bank_bit = 0x2, 41425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 41525fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 41625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 41725fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 41825fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 41925fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 42025fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 42125fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 42225fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 42325fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 42425fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 42525fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 42625fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 42725fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 42825fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 42925fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 43025fdd593SJeykumar Sankaran }, 43125fdd593SJeykumar Sankaran }; 43225fdd593SJeykumar Sankaran 4337bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 4347bdc0c4bSKalyan Thota { 4357bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 4367bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 4377bdc0c4bSKalyan Thota .features = 0, 4387bdc0c4bSKalyan Thota .highest_bank_bit = 0x3, 4397bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 4407bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 4417bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 4427bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 4437bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 4447b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 4457b149f2bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 4467b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 4477bdc0c4bSKalyan Thota }, 4487bdc0c4bSKalyan Thota }; 4497bdc0c4bSKalyan Thota 450f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 451f3af2d6eSRob Clark { 452f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 453f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 454f3af2d6eSRob Clark .features = 0, 455f3af2d6eSRob Clark .highest_bank_bit = 0x3, 456f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 457f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 458f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 459f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 460f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 461f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 462f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 463f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 464f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 465f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 466f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 467f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 468f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 469f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 470f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 471f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 472f3af2d6eSRob Clark }, 473f3af2d6eSRob Clark }; 474f3af2d6eSRob Clark 475af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 476af776a3eSJonathan Marek { 477af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 478b910a020SRobert Foss .base = 0x0, .len = 0x494, 479af776a3eSJonathan Marek .features = 0, 480af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 481af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 482af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 483af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 484af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 485af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 486af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 487af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 488af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 489af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 490af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 491af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 492af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 493af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 494af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 495af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 496af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 497af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 498af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 49953324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 50053324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 501af776a3eSJonathan Marek }, 502af776a3eSJonathan Marek }; 503af776a3eSJonathan Marek 504591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 505591e34a0SKrishna Manikandan { 506591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 507591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 508591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 509591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 510591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 511591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 512591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 513591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 514591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 515591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 516591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 517591e34a0SKrishna Manikandan }, 518591e34a0SKrishna Manikandan }; 519591e34a0SKrishna Manikandan 5205334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 5215334087eSLoic Poulain { 5225334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 5235334087eSLoic Poulain .base = 0x0, .len = 0x494, 5245334087eSLoic Poulain .features = 0, 5255334087eSLoic Poulain .highest_bank_bit = 0x2, 5265334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5275334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 5285334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5295334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 5305334087eSLoic Poulain }, 5315334087eSLoic Poulain }; 5325334087eSLoic Poulain 53325fdd593SJeykumar Sankaran /************************************************************* 53425fdd593SJeykumar Sankaran * CTL sub blocks config 53525fdd593SJeykumar Sankaran *************************************************************/ 53694391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 53794391a14SAngeloGioacchino Del Regno { 53894391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 53994391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 54094391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 54194391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 54294391a14SAngeloGioacchino Del Regno }, 54394391a14SAngeloGioacchino Del Regno { 54494391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 54594391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 54694391a14SAngeloGioacchino Del Regno .features = 0, 54794391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 54894391a14SAngeloGioacchino Del Regno }, 54994391a14SAngeloGioacchino Del Regno { 55094391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 55194391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 55294391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 55394391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 55494391a14SAngeloGioacchino Del Regno }, 55594391a14SAngeloGioacchino Del Regno { 55694391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 55794391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 55894391a14SAngeloGioacchino Del Regno .features = 0, 55994391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 56094391a14SAngeloGioacchino Del Regno }, 56194391a14SAngeloGioacchino Del Regno { 56294391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 56394391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 56494391a14SAngeloGioacchino Del Regno .features = 0, 56594391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 56694391a14SAngeloGioacchino Del Regno }, 56794391a14SAngeloGioacchino Del Regno }; 56894391a14SAngeloGioacchino Del Regno 569abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 57025fdd593SJeykumar Sankaran { 57125fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 57225fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 573667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 574667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 57525fdd593SJeykumar Sankaran }, 57625fdd593SJeykumar Sankaran { 57725fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 57825fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 579667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 580667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 58125fdd593SJeykumar Sankaran }, 58225fdd593SJeykumar Sankaran { 58325fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 58425fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 585667e9985SDmitry Baryshkov .features = 0, 586667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 58725fdd593SJeykumar Sankaran }, 58825fdd593SJeykumar Sankaran { 58925fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 59025fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 591667e9985SDmitry Baryshkov .features = 0, 592667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 59325fdd593SJeykumar Sankaran }, 59425fdd593SJeykumar Sankaran { 59525fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 59625fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 597667e9985SDmitry Baryshkov .features = 0, 598667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 59925fdd593SJeykumar Sankaran }, 60025fdd593SJeykumar Sankaran }; 60125fdd593SJeykumar Sankaran 6027bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 6037bdc0c4bSKalyan Thota { 6047bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 6057bdc0c4bSKalyan Thota .base = 0x1000, .len = 0xE4, 606667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 607667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 6087bdc0c4bSKalyan Thota }, 6097bdc0c4bSKalyan Thota { 6107bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 6117bdc0c4bSKalyan Thota .base = 0x1200, .len = 0xE4, 612667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 613667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 6147bdc0c4bSKalyan Thota }, 6157bdc0c4bSKalyan Thota { 6167bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 6177bdc0c4bSKalyan Thota .base = 0x1400, .len = 0xE4, 618667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 619667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 6207bdc0c4bSKalyan Thota }, 6217bdc0c4bSKalyan Thota }; 6227bdc0c4bSKalyan Thota 623386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 624386fced3SJonathan Marek { 625386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 626386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 627667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 628667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 629386fced3SJonathan Marek }, 630386fced3SJonathan Marek { 631386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 632386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 633667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 634667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 635386fced3SJonathan Marek }, 636386fced3SJonathan Marek { 637386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 638386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 639667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 640667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 641386fced3SJonathan Marek }, 642386fced3SJonathan Marek { 643386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 644386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 645667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 646667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 647386fced3SJonathan Marek }, 648386fced3SJonathan Marek { 649386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 650386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 651667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 652667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 653386fced3SJonathan Marek }, 654386fced3SJonathan Marek { 655386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 656386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 657667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 658667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 659386fced3SJonathan Marek }, 660386fced3SJonathan Marek }; 661386fced3SJonathan Marek 662591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 663591e34a0SKrishna Manikandan { 664591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 665591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 666667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 667667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 668591e34a0SKrishna Manikandan }, 669591e34a0SKrishna Manikandan { 670591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 671591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 672667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 673667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 674591e34a0SKrishna Manikandan }, 675591e34a0SKrishna Manikandan { 676591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 677591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 678667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 679667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 680591e34a0SKrishna Manikandan }, 681591e34a0SKrishna Manikandan { 682591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 683591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 684667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 685667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 686591e34a0SKrishna Manikandan }, 687591e34a0SKrishna Manikandan }; 688591e34a0SKrishna Manikandan 6895334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 6905334087eSLoic Poulain { 6915334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 6925334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 6935334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 6945334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 6955334087eSLoic Poulain }, 6965334087eSLoic Poulain }; 6975334087eSLoic Poulain 69825fdd593SJeykumar Sankaran /************************************************************* 69925fdd593SJeykumar Sankaran * SSPP sub blocks config 70025fdd593SJeykumar Sankaran *************************************************************/ 70125fdd593SJeykumar Sankaran 70225fdd593SJeykumar Sankaran /* SSPP common configuration */ 703b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 70425fdd593SJeykumar Sankaran { \ 70525fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 70625fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 70725fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 70825fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 70925fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 71025fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 711b75ab05aSShubhashree Dhar .id = qseed_ver, \ 71225fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 71325fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 71425fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 71525fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 71625fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 717e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 71825fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 719e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 720dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 721dabfdd89SVinod Polimera } 722dabfdd89SVinod Polimera 723dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 724dabfdd89SVinod Polimera { \ 725dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 726dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 727dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 728dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 729dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 730dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 731dabfdd89SVinod Polimera .id = qseed_ver, \ 732dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 733dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 734dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 735dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 736dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 737dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 738dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 739dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 740dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 74125fdd593SJeykumar Sankaran } 74225fdd593SJeykumar Sankaran 74325fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 74425fdd593SJeykumar Sankaran { \ 74525fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 74625fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 74725fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 74825fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 74925fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 75025fdd593SJeykumar Sankaran .format_list = plane_formats, \ 751e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 75225fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 753e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 75425fdd593SJeykumar Sankaran } 75525fdd593SJeykumar Sankaran 75694391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 75794391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 75894391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 75994391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 76094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 76194391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 76294391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 76394391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 76494391a14SAngeloGioacchino Del Regno 765dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 766dabfdd89SVinod Polimera .rot_maxheight = 1088, 767dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 768dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 769dabfdd89SVinod Polimera }; 770dabfdd89SVinod Polimera 771b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 772b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 773b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 774b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 775b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 776b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 777b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 778b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 77925fdd593SJeykumar Sankaran 78025fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 78125fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 78225fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 78325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 78425fdd593SJeykumar Sankaran 78507ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \ 78607ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 78725fdd593SJeykumar Sankaran { \ 78825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 78925fdd593SJeykumar Sankaran .base = _base, .len = 0x1c8, \ 79007ca1fc0SSravanthi Kollukuduru .features = _features, \ 79125fdd593SJeykumar Sankaran .sblk = &_sblk, \ 79225fdd593SJeykumar Sankaran .xin_id = _xinid, \ 79307ca1fc0SSravanthi Kollukuduru .type = _type, \ 79425fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 79525fdd593SJeykumar Sankaran } 79625fdd593SJeykumar Sankaran 79794391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 79894391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK, 79994391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 80094391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK, 80194391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 80294391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK, 80394391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 80494391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK, 80594391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 80694391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_MSM8998_MASK, 80794391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 80894391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_MSM8998_MASK, 80994391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 81094391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_MSM8998_MASK, 81194391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 81294391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_MSM8998_MASK, 81394391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 81494391a14SAngeloGioacchino Del Regno }; 81594391a14SAngeloGioacchino Del Regno 816abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 81707ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK, 81807ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 81907ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK, 82007ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 82107ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK, 82207ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 82307ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK, 82407ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 82507ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 82607ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 82707ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 82807ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 82907ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 83007ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 83107ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 83207ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 83325fdd593SJeykumar Sankaran }; 83425fdd593SJeykumar Sankaran 835b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 836b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 837b75ab05aSShubhashree Dhar 838dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 839dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 840dabfdd89SVinod Polimera 8417bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 8427bdc0c4bSKalyan Thota SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 843b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 8447bdc0c4bSKalyan Thota SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 8457bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 8467b149f2bSKalyan Thota SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 8477b149f2bSKalyan Thota sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 8487bdc0c4bSKalyan Thota SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 8497b149f2bSKalyan Thota sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 8507bdc0c4bSKalyan Thota }; 8517bdc0c4bSKalyan Thota 852d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 853d21fc5dfSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 854d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 855d21fc5dfSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 856d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 857d21fc5dfSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 858d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 859d21fc5dfSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 860d21fc5dfSDmitry Baryshkov 861d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 862d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 863d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 864d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 865d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 866d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 867d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 868d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 869d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 870d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 871d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 872d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 873d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 874d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 875d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 876d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 877d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 878d21fc5dfSDmitry Baryshkov }; 879d21fc5dfSDmitry Baryshkov 880591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 881dabfdd89SVinod Polimera SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK, 882dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 883591e34a0SKrishna Manikandan SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 884591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 885591e34a0SKrishna Manikandan SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 886591e34a0SKrishna Manikandan sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 887591e34a0SKrishna Manikandan SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 888591e34a0SKrishna Manikandan sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 889591e34a0SKrishna Manikandan }; 890591e34a0SKrishna Manikandan 8915334087eSLoic Poulain 8925334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 8935334087eSLoic Poulain { \ 8945334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 8955334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 8965334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 8975334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 8985334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 8995334087eSLoic Poulain .format_list = plane_formats_yuv, \ 9005334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 9015334087eSLoic Poulain .virt_format_list = plane_formats, \ 9025334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 9035334087eSLoic Poulain } 9045334087eSLoic Poulain 9055334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 9065334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 9075334087eSLoic Poulain 9085334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 9095334087eSLoic Poulain SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK, 9105334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 9115334087eSLoic Poulain SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 9125334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 9135334087eSLoic Poulain }; 9145334087eSLoic Poulain 91525fdd593SJeykumar Sankaran /************************************************************* 91625fdd593SJeykumar Sankaran * MIXER sub blocks config 91725fdd593SJeykumar Sankaran *************************************************************/ 9187bdc0c4bSKalyan Thota 919e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 92025fdd593SJeykumar Sankaran { \ 92125fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 92225fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 9237bdc0c4bSKalyan Thota .features = _fmask, \ 9247bdc0c4bSKalyan Thota .sblk = _sblk, \ 92525fdd593SJeykumar Sankaran .pingpong = _pp, \ 926e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 927e47616dfSKalyan Thota .dspp = _dspp \ 92825fdd593SJeykumar Sankaran } 92925fdd593SJeykumar Sankaran 93094391a14SAngeloGioacchino Del Regno /* MSM8998 */ 93194391a14SAngeloGioacchino Del Regno 93294391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 93394391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 93494391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 93594391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 93694391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 93794391a14SAngeloGioacchino Del Regno 0x260, 0x290 93894391a14SAngeloGioacchino Del Regno }, 93994391a14SAngeloGioacchino Del Regno }; 94094391a14SAngeloGioacchino Del Regno 94194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 9422d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 94394391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 9442d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 94594391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 9462d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 94794391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 9482d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 94994391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 9502d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 95194391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 9522d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 95394391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 95494391a14SAngeloGioacchino Del Regno }; 95594391a14SAngeloGioacchino Del Regno 95694391a14SAngeloGioacchino Del Regno /* SDM845 */ 95794391a14SAngeloGioacchino Del Regno 95894391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 95994391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 96094391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 96194391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 96294391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 96394391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 96494391a14SAngeloGioacchino Del Regno }, 96594391a14SAngeloGioacchino Del Regno }; 96694391a14SAngeloGioacchino Del Regno 967abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 9687bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 969e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 9707bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 971e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 9727bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 973e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 9747bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 975e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 9767bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 977e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 9787bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 979e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 9807bdc0c4bSKalyan Thota }; 9817bdc0c4bSKalyan Thota 9827bdc0c4bSKalyan Thota /* SC7180 */ 9837bdc0c4bSKalyan Thota 9847bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 9857bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 9867bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 9877bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 9887bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 9897bdc0c4bSKalyan Thota }, 9907bdc0c4bSKalyan Thota }; 9917bdc0c4bSKalyan Thota 9927bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 9937bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 994e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 9957bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SC7180_MASK, 996e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 99725fdd593SJeykumar Sankaran }; 99825fdd593SJeykumar Sankaran 999386fced3SJonathan Marek /* SM8150 */ 1000386fced3SJonathan Marek 1001386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1002386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 100305ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1004386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 100505ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1006386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1007386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1008386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1009386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1010386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1011386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1012386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1013386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1014386fced3SJonathan Marek }; 1015386fced3SJonathan Marek 1016591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 1017591e34a0SKrishna Manikandan LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 1018fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 1019591e34a0SKrishna Manikandan LM_BLK("lm_2", LM_2, 0x46000, MIXER_SC7180_MASK, 1020591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 1021591e34a0SKrishna Manikandan LM_BLK("lm_3", LM_3, 0x47000, MIXER_SC7180_MASK, 1022591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1023591e34a0SKrishna Manikandan }; 1024591e34a0SKrishna Manikandan 10255334087eSLoic Poulain /* QCM2290 */ 10265334087eSLoic Poulain 10275334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 10285334087eSLoic Poulain .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 10295334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 10305334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 10315334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 10325334087eSLoic Poulain }, 10335334087eSLoic Poulain }; 10345334087eSLoic Poulain 10355334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 10365334087eSLoic Poulain LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 10375334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 10385334087eSLoic Poulain }; 10395334087eSLoic Poulain 104025fdd593SJeykumar Sankaran /************************************************************* 1041e47616dfSKalyan Thota * DSPP sub blocks config 1042e47616dfSKalyan Thota *************************************************************/ 104394391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 104494391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 104594391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 104694391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 104794391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 104894391a14SAngeloGioacchino Del Regno }; 104994391a14SAngeloGioacchino Del Regno 10504259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 10514259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 10524259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 10534259ff7aSKalyan Thota }; 10544259ff7aSKalyan Thota 105505ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 105605ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 105705ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 105805ae91d9SDmitry Baryshkov }; 105905ae91d9SDmitry Baryshkov 1060862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1061e47616dfSKalyan Thota {\ 1062e47616dfSKalyan Thota .name = _name, .id = _id, \ 1063e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1064862314bcSAngeloGioacchino Del Regno .features = _mask, \ 106505ae91d9SDmitry Baryshkov .sblk = _sblk \ 1066e47616dfSKalyan Thota } 1067e47616dfSKalyan Thota 106894391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 106994391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 107094391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 107194391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 107294391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 107394391a14SAngeloGioacchino Del Regno }; 107494391a14SAngeloGioacchino Del Regno 1075e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1076862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1077862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 107805ae91d9SDmitry Baryshkov }; 107905ae91d9SDmitry Baryshkov 108005ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1081862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1082862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1083862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1084862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1085862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1086862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1087862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1088862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1089e47616dfSKalyan Thota }; 1090386fced3SJonathan Marek 10915334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 10925334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 10935334087eSLoic Poulain &sm8150_dspp_sblk), 10945334087eSLoic Poulain }; 10955334087eSLoic Poulain 1096e47616dfSKalyan Thota /************************************************************* 109725fdd593SJeykumar Sankaran * PINGPONG sub blocks config 109825fdd593SJeykumar Sankaran *************************************************************/ 109925fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 110025fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 110125fdd593SJeykumar Sankaran .version = 0x1}, 110225fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 110325fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 110425fdd593SJeykumar Sankaran }; 110525fdd593SJeykumar Sankaran 110625fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 110725fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 110825fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 110925fdd593SJeykumar Sankaran }; 111025fdd593SJeykumar Sankaran 1111591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1112591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1113591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1114591e34a0SKrishna Manikandan }; 1115591e34a0SKrishna Manikandan 1116667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 111725fdd593SJeykumar Sankaran {\ 111825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 111925fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 112025fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 11214369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1122667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1123667e9985SDmitry Baryshkov .intr_done = _done, \ 1124667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 112525fdd593SJeykumar Sankaran } 1126667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 112725fdd593SJeykumar Sankaran {\ 112825fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 112925fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 113025fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 11314369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1132667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1133667e9985SDmitry Baryshkov .intr_done = _done, \ 1134667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 113525fdd593SJeykumar Sankaran } 113625fdd593SJeykumar Sankaran 1137abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1138667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1139667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1140667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1141667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1142667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1143667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1144667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1145667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1146667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1147667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1148667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1149667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 115025fdd593SJeykumar Sankaran }; 115125fdd593SJeykumar Sankaran 11527bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = { 1153667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1154667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 11557bdc0c4bSKalyan Thota }; 11567bdc0c4bSKalyan Thota 1157386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1158667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1159667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1160667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1161667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1162667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1163667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1164667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1165667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1166667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1167667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1168667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1169667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1170667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1171667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1172667e9985SDmitry Baryshkov -1), 1173667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 11743431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1175667e9985SDmitry Baryshkov -1), 11764369c93cSDmitry Baryshkov }; 11774369c93cSDmitry Baryshkov 11785334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = { 11795334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 11805334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 11815334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 11825334087eSLoic Poulain }; 11835334087eSLoic Poulain 11844369c93cSDmitry Baryshkov /************************************************************* 11854369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 11864369c93cSDmitry Baryshkov *************************************************************/ 11874369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 11884369c93cSDmitry Baryshkov {\ 11894369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 11904369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 11914369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 11924369c93cSDmitry Baryshkov .sblk = NULL \ 11934369c93cSDmitry Baryshkov } 11944369c93cSDmitry Baryshkov 11954369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 11964369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 11974369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 11984369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1199386fced3SJonathan Marek }; 1200386fced3SJonathan Marek 1201591e34a0SKrishna Manikandan static const struct dpu_pingpong_cfg sc7280_pp[] = { 1202667e9985SDmitry Baryshkov PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), 1203667e9985SDmitry Baryshkov PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 1204667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 1205667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 1206591e34a0SKrishna Manikandan }; 12077c5ab05eSVinod Koul 12087c5ab05eSVinod Koul /************************************************************* 12097c5ab05eSVinod Koul * DSC sub blocks config 12107c5ab05eSVinod Koul *************************************************************/ 12117c5ab05eSVinod Koul #define DSC_BLK(_name, _id, _base) \ 12127c5ab05eSVinod Koul {\ 12137c5ab05eSVinod Koul .name = _name, .id = _id, \ 12147c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 12157c5ab05eSVinod Koul .features = 0, \ 12167c5ab05eSVinod Koul } 12177c5ab05eSVinod Koul 12187c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = { 12197c5ab05eSVinod Koul DSC_BLK("dsc_0", DSC_0, 0x80000), 12207c5ab05eSVinod Koul DSC_BLK("dsc_1", DSC_1, 0x80400), 12217c5ab05eSVinod Koul DSC_BLK("dsc_2", DSC_2, 0x80800), 12227c5ab05eSVinod Koul DSC_BLK("dsc_3", DSC_3, 0x80c00), 12237c5ab05eSVinod Koul }; 12247c5ab05eSVinod Koul 122525fdd593SJeykumar Sankaran /************************************************************* 122625fdd593SJeykumar Sankaran * INTF sub blocks config 122725fdd593SJeykumar Sankaran *************************************************************/ 1228667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 122925fdd593SJeykumar Sankaran {\ 123025fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 123125fdd593SJeykumar Sankaran .base = _base, .len = 0x280, \ 1232cace3ac4SJonathan Marek .features = _features, \ 123325fdd593SJeykumar Sankaran .type = _type, \ 123425fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1235667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1236667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1237667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 123825fdd593SJeykumar Sankaran } 123925fdd593SJeykumar Sankaran 124094391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 124194391a14SAngeloGioacchino Del Regno INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 124294391a14SAngeloGioacchino Del Regno INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 124394391a14SAngeloGioacchino Del Regno INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 124494391a14SAngeloGioacchino Del Regno INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 124594391a14SAngeloGioacchino Del Regno }; 124694391a14SAngeloGioacchino Del Regno 1247abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 1248667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1249667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1250667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1251667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 125225fdd593SJeykumar Sankaran }; 125325fdd593SJeykumar Sankaran 12547bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 1255bb3de286SBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1256667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 12577bdc0c4bSKalyan Thota }; 12587bdc0c4bSKalyan Thota 1259386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 1260667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1261667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1262667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1263667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1264386fced3SJonathan Marek }; 1265386fced3SJonathan Marek 1266591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 1267ef7837ffSSankeerth Billakanti INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1268667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1269ef7837ffSSankeerth Billakanti INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1270591e34a0SKrishna Manikandan }; 1271591e34a0SKrishna Manikandan 1272f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 1273f3af2d6eSRob Clark INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1274f3af2d6eSRob Clark INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1275f3af2d6eSRob Clark INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1276f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 1277f3af2d6eSRob Clark INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1278f3af2d6eSRob Clark INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 1279f3af2d6eSRob Clark INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1280f3af2d6eSRob Clark }; 1281f3af2d6eSRob Clark 12825334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 12835334087eSLoic Poulain INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0), 12845334087eSLoic Poulain INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 12855334087eSLoic Poulain }; 12865334087eSLoic Poulain 128725fdd593SJeykumar Sankaran /************************************************************* 128853324b99SAbhinav Kumar * Writeback blocks config 128953324b99SAbhinav Kumar *************************************************************/ 129053324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1291a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 129253324b99SAbhinav Kumar { \ 129353324b99SAbhinav Kumar .name = _name, .id = _id, \ 129453324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 129553324b99SAbhinav Kumar .features = _features, \ 129653324b99SAbhinav Kumar .format_list = wb2_formats, \ 129753324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 129853324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 129953324b99SAbhinav Kumar .xin_id = __xin_id, \ 130053324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1301a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 130253324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 130353324b99SAbhinav Kumar } 130453324b99SAbhinav Kumar 130553324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 130653324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1307a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 130853324b99SAbhinav Kumar }; 130953324b99SAbhinav Kumar 131053324b99SAbhinav Kumar /************************************************************* 131125fdd593SJeykumar Sankaran * VBIF sub blocks config 131225fdd593SJeykumar Sankaran *************************************************************/ 131325fdd593SJeykumar Sankaran /* VBIF QOS remap */ 131494391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 131594391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1316abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1317abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 131825fdd593SJeykumar Sankaran 131994391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 132094391a14SAngeloGioacchino Del Regno { 132194391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 132294391a14SAngeloGioacchino Del Regno .ot_limit = 2, 132394391a14SAngeloGioacchino Del Regno }, 132494391a14SAngeloGioacchino Del Regno { 132594391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 132694391a14SAngeloGioacchino Del Regno .ot_limit = 6, 132794391a14SAngeloGioacchino Del Regno }, 132894391a14SAngeloGioacchino Del Regno { 132994391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 133094391a14SAngeloGioacchino Del Regno .ot_limit = 16, 133194391a14SAngeloGioacchino Del Regno }, 133294391a14SAngeloGioacchino Del Regno }; 133394391a14SAngeloGioacchino Del Regno 133494391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 133594391a14SAngeloGioacchino Del Regno { 1336*606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 133794391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 133894391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 133994391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 134094391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 134194391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 1342c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 134394391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 134494391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 134594391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 134694391a14SAngeloGioacchino Del Regno }, 134794391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 134894391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 134994391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 135094391a14SAngeloGioacchino Del Regno }, 135194391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 135294391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 135394391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 135494391a14SAngeloGioacchino Del Regno }, 135594391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 135694391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 135794391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 135894391a14SAngeloGioacchino Del Regno }, 135994391a14SAngeloGioacchino Del Regno .memtype_count = 14, 136094391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 136194391a14SAngeloGioacchino Del Regno }, 136294391a14SAngeloGioacchino Del Regno }; 136394391a14SAngeloGioacchino Del Regno 1364abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 136525fdd593SJeykumar Sankaran { 1366*606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 136725fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 136825fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 136925fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 1370c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 137125fdd593SJeykumar Sankaran .qos_rt_tbl = { 137225fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 137325fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 137425fdd593SJeykumar Sankaran }, 137525fdd593SJeykumar Sankaran .qos_nrt_tbl = { 137625fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 137725fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 137825fdd593SJeykumar Sankaran }, 137925fdd593SJeykumar Sankaran .memtype_count = 14, 138025fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 138125fdd593SJeykumar Sankaran }, 138225fdd593SJeykumar Sankaran }; 138325fdd593SJeykumar Sankaran 1384abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 138525fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 138625fdd593SJeykumar Sankaran }; 138725fdd593SJeykumar Sankaran 1388386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 1389386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 1390386fced3SJonathan Marek }; 1391386fced3SJonathan Marek 1392af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 1393af776a3eSJonathan Marek .base = 0x0, 1394af776a3eSJonathan Marek .version = 0x00010002, 1395af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 1396af776a3eSJonathan Marek .xin_id = 7, 1397af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1398af776a3eSJonathan Marek }; 1399af776a3eSJonathan Marek 140025fdd593SJeykumar Sankaran /************************************************************* 140125fdd593SJeykumar Sankaran * PERF data config 140225fdd593SJeykumar Sankaran *************************************************************/ 140325fdd593SJeykumar Sankaran 140425fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 140594391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 140694391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 140794391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 140894391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 140994391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 141094391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 141194391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 141294391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 141394391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 141494391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 141594391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 141694391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 141794391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 141894391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 141994391a14SAngeloGioacchino Del Regno }; 142094391a14SAngeloGioacchino Del Regno 1421abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 142225fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 142325fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 142425fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 142525fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 142625fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 142725fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 142825fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 142925fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 143025fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 143125fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 143225fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 143325fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 143425fdd593SJeykumar Sankaran }; 143525fdd593SJeykumar Sankaran 143694391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 143794391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 143894391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 143994391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 144094391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 144194391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 144294391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 144394391a14SAngeloGioacchino Del Regno }; 144494391a14SAngeloGioacchino Del Regno 14457bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 14467bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 14477bdc0c4bSKalyan Thota }; 14487bdc0c4bSKalyan Thota 1449386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 1450386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 1451386fced3SJonathan Marek }; 1452386fced3SJonathan Marek 1453f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 1454f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 1455f3af2d6eSRob Clark }; 1456f3af2d6eSRob Clark 14575334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 14585334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 14595334087eSLoic Poulain }; 14605334087eSLoic Poulain 1461abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 146225fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 146325fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 146425fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 146525fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 146625fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 146725fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 146825fdd593SJeykumar Sankaran }; 146925fdd593SJeykumar Sankaran 14707bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 14717bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 14727bdc0c4bSKalyan Thota }; 14737bdc0c4bSKalyan Thota 1474f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 1475f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 1476f3af2d6eSRob Clark }; 1477f3af2d6eSRob Clark 147894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 147994391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 148094391a14SAngeloGioacchino Del Regno }; 148194391a14SAngeloGioacchino Del Regno 1482abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 148325fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 148425fdd593SJeykumar Sankaran }; 148525fdd593SJeykumar Sankaran 14867bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 14877bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 14887bdc0c4bSKalyan Thota }; 14897bdc0c4bSKalyan Thota 149094391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 149194391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 149294391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 149394391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 149494391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 149594391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 149694391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 149794391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 149894391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 149994391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 150094391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 150194391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 150294391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 150394391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 150494391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 150594391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 150694391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 150794391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 150894391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 150994391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 151094391a14SAngeloGioacchino Del Regno }, 151194391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 151294391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 151394391a14SAngeloGioacchino Del Regno }, 151494391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 151594391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 151694391a14SAngeloGioacchino Del Regno }, 151794391a14SAngeloGioacchino Del Regno }, 151894391a14SAngeloGioacchino Del Regno .cdp_cfg = { 151994391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 152094391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 152194391a14SAngeloGioacchino Del Regno }, 152294391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 152394391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 152494391a14SAngeloGioacchino Del Regno }; 152594391a14SAngeloGioacchino Del Regno 1526abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 152725fdd593SJeykumar Sankaran .max_bw_low = 6800000, 152825fdd593SJeykumar Sankaran .max_bw_high = 6800000, 152925fdd593SJeykumar Sankaran .min_core_ib = 2400000, 153025fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 153125fdd593SJeykumar Sankaran .min_dram_ib = 800000, 153225fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 153325fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 153425fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 153525fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 153625fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 153725fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 153825fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 153925fdd593SJeykumar Sankaran .amortizable_threshold = 25, 154025fdd593SJeykumar Sankaran .min_prefill_lines = 24, 154125fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 15425bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 154325fdd593SJeykumar Sankaran .qos_lut_tbl = { 154425fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 154525fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 154625fdd593SJeykumar Sankaran }, 154725fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 154825fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 154925fdd593SJeykumar Sankaran }, 155025fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 155125fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 155225fdd593SJeykumar Sankaran }, 155325fdd593SJeykumar Sankaran }, 155425fdd593SJeykumar Sankaran .cdp_cfg = { 155525fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 155625fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 155725fdd593SJeykumar Sankaran }, 15584f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 15594f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 156025fdd593SJeykumar Sankaran }; 156125fdd593SJeykumar Sankaran 15627bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 156371dc6c08SKrishna Manikandan .max_bw_low = 6800000, 156471dc6c08SKrishna Manikandan .max_bw_high = 6800000, 15657bdc0c4bSKalyan Thota .min_core_ib = 2400000, 15667bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 1567c33b7c03SKalyan Thota .min_dram_ib = 1600000, 1568c33b7c03SKalyan Thota .min_prefill_lines = 24, 15697bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 15705bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 15717bdc0c4bSKalyan Thota .qos_lut_tbl = { 15727bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 15737bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 15747bdc0c4bSKalyan Thota }, 15757bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 15767bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 15777bdc0c4bSKalyan Thota }, 15787bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 15797bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 15807bdc0c4bSKalyan Thota }, 15817bdc0c4bSKalyan Thota }, 15827bdc0c4bSKalyan Thota .cdp_cfg = { 15837bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 15847bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 15857bdc0c4bSKalyan Thota }, 1586c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 1587c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 15887bdc0c4bSKalyan Thota }; 15897bdc0c4bSKalyan Thota 1590386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 1591386fced3SJonathan Marek .max_bw_low = 12800000, 1592386fced3SJonathan Marek .max_bw_high = 12800000, 1593386fced3SJonathan Marek .min_core_ib = 2400000, 1594386fced3SJonathan Marek .min_llcc_ib = 800000, 1595386fced3SJonathan Marek .min_dram_ib = 800000, 15964f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 1597386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 15985bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 1599386fced3SJonathan Marek .qos_lut_tbl = { 1600386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 1601386fced3SJonathan Marek .entries = sm8150_qos_linear 1602386fced3SJonathan Marek }, 1603386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1604386fced3SJonathan Marek .entries = sc7180_qos_macrotile 1605386fced3SJonathan Marek }, 1606386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1607386fced3SJonathan Marek .entries = sc7180_qos_nrt 1608386fced3SJonathan Marek }, 1609386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1610386fced3SJonathan Marek }, 1611386fced3SJonathan Marek .cdp_cfg = { 1612386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1613386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1614386fced3SJonathan Marek }, 16154f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 16164f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1617386fced3SJonathan Marek }; 1618386fced3SJonathan Marek 1619f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 1620f3af2d6eSRob Clark .max_bw_low = 9600000, 1621f3af2d6eSRob Clark .max_bw_high = 9600000, 1622f3af2d6eSRob Clark .min_core_ib = 2400000, 1623f3af2d6eSRob Clark .min_llcc_ib = 800000, 1624f3af2d6eSRob Clark .min_dram_ib = 800000, 1625f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 1626f3af2d6eSRob Clark .qos_lut_tbl = { 1627f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 1628f3af2d6eSRob Clark .entries = sc8180x_qos_linear 1629f3af2d6eSRob Clark }, 1630f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 1631f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 1632f3af2d6eSRob Clark }, 1633f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1634f3af2d6eSRob Clark .entries = sc7180_qos_nrt 1635f3af2d6eSRob Clark }, 1636f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 1637f3af2d6eSRob Clark }, 1638f3af2d6eSRob Clark .cdp_cfg = { 1639f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 1640f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 1641f3af2d6eSRob Clark }, 1642f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 1643f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 1644f3af2d6eSRob Clark }; 1645f3af2d6eSRob Clark 1646af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 1647af776a3eSJonathan Marek .max_bw_low = 13700000, 1648af776a3eSJonathan Marek .max_bw_high = 16600000, 1649af776a3eSJonathan Marek .min_core_ib = 4800000, 1650af776a3eSJonathan Marek .min_llcc_ib = 0, 1651af776a3eSJonathan Marek .min_dram_ib = 800000, 16524f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 1653af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 16545bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 1655af776a3eSJonathan Marek .qos_lut_tbl = { 1656af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 1657af776a3eSJonathan Marek .entries = sc7180_qos_linear 1658af776a3eSJonathan Marek }, 1659af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1660af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 1661af776a3eSJonathan Marek }, 1662af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1663af776a3eSJonathan Marek .entries = sc7180_qos_nrt 1664af776a3eSJonathan Marek }, 1665af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1666af776a3eSJonathan Marek }, 1667af776a3eSJonathan Marek .cdp_cfg = { 1668af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1669af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1670af776a3eSJonathan Marek }, 16714f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 16724f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1673af776a3eSJonathan Marek }; 1674af776a3eSJonathan Marek 1675591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 1676591e34a0SKrishna Manikandan .max_bw_low = 4700000, 1677591e34a0SKrishna Manikandan .max_bw_high = 8800000, 1678591e34a0SKrishna Manikandan .min_core_ib = 2500000, 1679591e34a0SKrishna Manikandan .min_llcc_ib = 0, 1680591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 1681591e34a0SKrishna Manikandan .min_prefill_lines = 24, 1682591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 16835bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 1684591e34a0SKrishna Manikandan .qos_lut_tbl = { 1685591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1686591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 1687591e34a0SKrishna Manikandan }, 1688591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1689591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 1690591e34a0SKrishna Manikandan }, 1691591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1692591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 1693591e34a0SKrishna Manikandan }, 1694591e34a0SKrishna Manikandan }, 1695591e34a0SKrishna Manikandan .cdp_cfg = { 1696591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 1697591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 1698591e34a0SKrishna Manikandan }, 1699591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 1700591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 1701591e34a0SKrishna Manikandan }; 1702591e34a0SKrishna Manikandan 17035334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 17045334087eSLoic Poulain .max_bw_low = 2700000, 17055334087eSLoic Poulain .max_bw_high = 2700000, 17065334087eSLoic Poulain .min_core_ib = 1300000, 17075334087eSLoic Poulain .min_llcc_ib = 0, 17085334087eSLoic Poulain .min_dram_ib = 1600000, 17095334087eSLoic Poulain .min_prefill_lines = 24, 17105334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 17115334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 17125334087eSLoic Poulain .qos_lut_tbl = { 17135334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 17145334087eSLoic Poulain .entries = qcm2290_qos_linear 17155334087eSLoic Poulain }, 17165334087eSLoic Poulain }, 17175334087eSLoic Poulain .cdp_cfg = { 17185334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 17195334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 17205334087eSLoic Poulain }, 17215334087eSLoic Poulain .clk_inefficiency_factor = 105, 17225334087eSLoic Poulain .bw_inefficiency_factor = 120, 17235334087eSLoic Poulain }; 172425fdd593SJeykumar Sankaran /************************************************************* 1725de7d480fSDmitry Baryshkov * Hardware catalog 172625fdd593SJeykumar Sankaran *************************************************************/ 172725fdd593SJeykumar Sankaran 1728de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 172994391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 173094391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 173194391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 173294391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 173394391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 173494391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 173594391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 173694391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 173794391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 17386452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 17396452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 174094391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 174194391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 174294391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 174394391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 174494391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 174594391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 174694391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 1747477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 174894391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 174994391a14SAngeloGioacchino Del Regno }; 175094391a14SAngeloGioacchino Del Regno 1751de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 175225fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 175325fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 175425fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 175525fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 175625fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 175725fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 175825fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 175925fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 176025fdd593SJeykumar Sankaran .mixer = sdm845_lm, 176125fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 176225fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 17637c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 17647c5ab05eSVinod Koul .dsc = sdm845_dsc, 176525fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 176625fdd593SJeykumar Sankaran .intf = sdm845_intf, 176725fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 176825fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 176925fdd593SJeykumar Sankaran .reg_dma_count = 1, 1770481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1771477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 1772597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 177325fdd593SJeykumar Sankaran }; 177425fdd593SJeykumar Sankaran 1775de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 17767bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 17777bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 17787bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 17797bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 17807bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 17817bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 17827bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 17837bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 17847bdc0c4bSKalyan Thota .mixer = sc7180_lm, 1785e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 1786e47616dfSKalyan Thota .dspp = sc7180_dspp, 17877bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 17887bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 17897bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 17907bdc0c4bSKalyan Thota .intf = sc7180_intf, 179151e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 179251e4d60eSAbhinav Kumar .wb = sm8250_wb, 17937bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 17947bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 17957bdc0c4bSKalyan Thota .reg_dma_count = 1, 1796481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1797477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 1798597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 17997bdc0c4bSKalyan Thota }; 18007bdc0c4bSKalyan Thota 1801de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 1802386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 1803386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 1804386fced3SJonathan Marek .mdp = sdm845_mdp, 1805386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 1806386fced3SJonathan Marek .ctl = sm8150_ctl, 1807386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 1808386fced3SJonathan Marek .sspp = sdm845_sspp, 1809386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 1810386fced3SJonathan Marek .mixer = sm8150_lm, 181105ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 181205ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 1813386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 1814386fced3SJonathan Marek .pingpong = sm8150_pp, 18154369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 18164369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 1817386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 1818386fced3SJonathan Marek .intf = sm8150_intf, 1819386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 1820386fced3SJonathan Marek .vbif = sdm845_vbif, 1821386fced3SJonathan Marek .reg_dma_count = 1, 1822481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 1823477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 1824597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 1825386fced3SJonathan Marek }; 1826386fced3SJonathan Marek 1827de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 1828f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 1829f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 1830f3af2d6eSRob Clark .mdp = sc8180x_mdp, 1831f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 1832f3af2d6eSRob Clark .ctl = sm8150_ctl, 1833f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 1834f3af2d6eSRob Clark .sspp = sdm845_sspp, 1835f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 1836f3af2d6eSRob Clark .mixer = sm8150_lm, 1837f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 1838f3af2d6eSRob Clark .pingpong = sm8150_pp, 1839f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 1840f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 1841f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 1842f3af2d6eSRob Clark .intf = sc8180x_intf, 1843f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 1844f3af2d6eSRob Clark .vbif = sdm845_vbif, 1845f3af2d6eSRob Clark .reg_dma_count = 1, 1846481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 1847477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 1848f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 1849f3af2d6eSRob Clark }; 1850f3af2d6eSRob Clark 1851de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 1852af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 1853af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 1854af776a3eSJonathan Marek .mdp = sm8250_mdp, 1855af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 1856af776a3eSJonathan Marek .ctl = sm8150_ctl, 1857d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 1858d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 1859af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 1860af776a3eSJonathan Marek .mixer = sm8150_lm, 186105ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 186205ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 1863af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 1864af776a3eSJonathan Marek .pingpong = sm8150_pp, 18654369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 18664369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 1867af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 1868af776a3eSJonathan Marek .intf = sm8150_intf, 1869af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 1870af776a3eSJonathan Marek .vbif = sdm845_vbif, 187153324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 187253324b99SAbhinav Kumar .wb = sm8250_wb, 1873af776a3eSJonathan Marek .reg_dma_count = 1, 1874481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 1875477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 1876597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 1877af776a3eSJonathan Marek }; 1878af776a3eSJonathan Marek 1879de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 1880591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 1881591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 1882591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 1883591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 1884591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 1885591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 1886591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 1887fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 1888fca5ad26SKalyan Thota .dspp = sc7180_dspp, 1889591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 1890591e34a0SKrishna Manikandan .mixer = sc7280_lm, 1891591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 1892591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 1893591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 1894591e34a0SKrishna Manikandan .intf = sc7280_intf, 1895591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 1896591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 1897477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 1898597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 1899591e34a0SKrishna Manikandan }; 1900591e34a0SKrishna Manikandan 1901de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 19025334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 19035334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 19045334087eSLoic Poulain .mdp = qcm2290_mdp, 19055334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 19065334087eSLoic Poulain .ctl = qcm2290_ctl, 19075334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 19085334087eSLoic Poulain .sspp = qcm2290_sspp, 19095334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 19105334087eSLoic Poulain .mixer = qcm2290_lm, 19115334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 19125334087eSLoic Poulain .dspp = qcm2290_dspp, 19135334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 19145334087eSLoic Poulain .pingpong = qcm2290_pp, 19155334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 19165334087eSLoic Poulain .intf = qcm2290_intf, 19175334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 19185334087eSLoic Poulain .vbif = sdm845_vbif, 19195334087eSLoic Poulain .reg_dma_count = 1, 1920481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1921477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 19225334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 19235334087eSLoic Poulain }; 19245334087eSLoic Poulain 1925abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 1926de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 1927de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 1928de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 1929de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 1930de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 1931de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 1932de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 1933de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 1934de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 1935de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 1936de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 193725fdd593SJeykumar Sankaran }; 193825fdd593SJeykumar Sankaran 1939de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 194025fdd593SJeykumar Sankaran { 194125fdd593SJeykumar Sankaran int i; 194225fdd593SJeykumar Sankaran struct dpu_mdss_cfg *dpu_cfg; 194325fdd593SJeykumar Sankaran 1944de7d480fSDmitry Baryshkov dpu_cfg = kzalloc(sizeof(*dpu_cfg), GFP_KERNEL); 194525fdd593SJeykumar Sankaran if (!dpu_cfg) 194625fdd593SJeykumar Sankaran return ERR_PTR(-ENOMEM); 194725fdd593SJeykumar Sankaran 194825fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 1949de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 1950de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 195125fdd593SJeykumar Sankaran } 195225fdd593SJeykumar Sankaran 195325fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 195432084967SDmitry Baryshkov 195525fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 195625fdd593SJeykumar Sankaran } 195725fdd593SJeykumar Sankaran 1958