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, 159da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 16009c7e370SLee Jones DRM_FORMAT_RGB888, 16109c7e370SLee Jones DRM_FORMAT_BGR888, 16209c7e370SLee Jones DRM_FORMAT_RGB565, 16309c7e370SLee Jones DRM_FORMAT_BGR565, 16409c7e370SLee Jones DRM_FORMAT_ARGB1555, 16509c7e370SLee Jones DRM_FORMAT_ABGR1555, 16609c7e370SLee Jones DRM_FORMAT_RGBA5551, 16709c7e370SLee Jones DRM_FORMAT_BGRA5551, 16809c7e370SLee Jones DRM_FORMAT_XRGB1555, 16909c7e370SLee Jones DRM_FORMAT_XBGR1555, 17009c7e370SLee Jones DRM_FORMAT_RGBX5551, 17109c7e370SLee Jones DRM_FORMAT_BGRX5551, 17209c7e370SLee Jones DRM_FORMAT_ARGB4444, 17309c7e370SLee Jones DRM_FORMAT_ABGR4444, 17409c7e370SLee Jones DRM_FORMAT_RGBA4444, 17509c7e370SLee Jones DRM_FORMAT_BGRA4444, 17609c7e370SLee Jones DRM_FORMAT_XRGB4444, 17709c7e370SLee Jones DRM_FORMAT_XBGR4444, 17809c7e370SLee Jones DRM_FORMAT_RGBX4444, 17909c7e370SLee Jones DRM_FORMAT_BGRX4444, 18009c7e370SLee Jones }; 18109c7e370SLee Jones 18209c7e370SLee Jones static const uint32_t plane_formats_yuv[] = { 18309c7e370SLee Jones DRM_FORMAT_ARGB8888, 18409c7e370SLee Jones DRM_FORMAT_ABGR8888, 18509c7e370SLee Jones DRM_FORMAT_RGBA8888, 18609c7e370SLee Jones DRM_FORMAT_BGRX8888, 18709c7e370SLee Jones DRM_FORMAT_BGRA8888, 188da7716a2SJessica Zhang DRM_FORMAT_XRGB2101010, 18909c7e370SLee Jones DRM_FORMAT_XRGB8888, 19009c7e370SLee Jones DRM_FORMAT_XBGR8888, 19109c7e370SLee Jones DRM_FORMAT_RGBX8888, 19209c7e370SLee Jones DRM_FORMAT_RGB888, 19309c7e370SLee Jones DRM_FORMAT_BGR888, 19409c7e370SLee Jones DRM_FORMAT_RGB565, 19509c7e370SLee Jones DRM_FORMAT_BGR565, 19609c7e370SLee Jones DRM_FORMAT_ARGB1555, 19709c7e370SLee Jones DRM_FORMAT_ABGR1555, 19809c7e370SLee Jones DRM_FORMAT_RGBA5551, 19909c7e370SLee Jones DRM_FORMAT_BGRA5551, 20009c7e370SLee Jones DRM_FORMAT_XRGB1555, 20109c7e370SLee Jones DRM_FORMAT_XBGR1555, 20209c7e370SLee Jones DRM_FORMAT_RGBX5551, 20309c7e370SLee Jones DRM_FORMAT_BGRX5551, 20409c7e370SLee Jones DRM_FORMAT_ARGB4444, 20509c7e370SLee Jones DRM_FORMAT_ABGR4444, 20609c7e370SLee Jones DRM_FORMAT_RGBA4444, 20709c7e370SLee Jones DRM_FORMAT_BGRA4444, 20809c7e370SLee Jones DRM_FORMAT_XRGB4444, 20909c7e370SLee Jones DRM_FORMAT_XBGR4444, 21009c7e370SLee Jones DRM_FORMAT_RGBX4444, 21109c7e370SLee Jones DRM_FORMAT_BGRX4444, 21209c7e370SLee Jones 213*f07c9946SJessica Zhang DRM_FORMAT_P010, 21409c7e370SLee Jones DRM_FORMAT_NV12, 21509c7e370SLee Jones DRM_FORMAT_NV21, 21609c7e370SLee Jones DRM_FORMAT_NV16, 21709c7e370SLee Jones DRM_FORMAT_NV61, 21809c7e370SLee Jones DRM_FORMAT_VYUY, 21909c7e370SLee Jones DRM_FORMAT_UYVY, 22009c7e370SLee Jones DRM_FORMAT_YUYV, 22109c7e370SLee Jones DRM_FORMAT_YVYU, 22209c7e370SLee Jones DRM_FORMAT_YUV420, 22309c7e370SLee Jones DRM_FORMAT_YVU420, 22409c7e370SLee Jones }; 22509c7e370SLee Jones 226dabfdd89SVinod Polimera static const u32 rotation_v2_formats[] = { 227dabfdd89SVinod Polimera DRM_FORMAT_NV12, 228dabfdd89SVinod Polimera /* TODO add formats after validation */ 229dabfdd89SVinod Polimera }; 230dabfdd89SVinod Polimera 23153324b99SAbhinav Kumar static const uint32_t wb2_formats[] = { 23253324b99SAbhinav Kumar DRM_FORMAT_RGB565, 23353324b99SAbhinav Kumar DRM_FORMAT_BGR565, 23453324b99SAbhinav Kumar DRM_FORMAT_RGB888, 23553324b99SAbhinav Kumar DRM_FORMAT_ARGB8888, 23653324b99SAbhinav Kumar DRM_FORMAT_RGBA8888, 23753324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 23853324b99SAbhinav Kumar DRM_FORMAT_XRGB8888, 23953324b99SAbhinav Kumar DRM_FORMAT_RGBX8888, 24053324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 24153324b99SAbhinav Kumar DRM_FORMAT_ARGB1555, 24253324b99SAbhinav Kumar DRM_FORMAT_RGBA5551, 24353324b99SAbhinav Kumar DRM_FORMAT_XRGB1555, 24453324b99SAbhinav Kumar DRM_FORMAT_RGBX5551, 24553324b99SAbhinav Kumar DRM_FORMAT_ARGB4444, 24653324b99SAbhinav Kumar DRM_FORMAT_RGBA4444, 24753324b99SAbhinav Kumar DRM_FORMAT_RGBX4444, 24853324b99SAbhinav Kumar DRM_FORMAT_XRGB4444, 24953324b99SAbhinav Kumar DRM_FORMAT_BGR565, 25053324b99SAbhinav Kumar DRM_FORMAT_BGR888, 25153324b99SAbhinav Kumar DRM_FORMAT_ABGR8888, 25253324b99SAbhinav Kumar DRM_FORMAT_BGRA8888, 25353324b99SAbhinav Kumar DRM_FORMAT_BGRX8888, 25453324b99SAbhinav Kumar DRM_FORMAT_XBGR8888, 25553324b99SAbhinav Kumar DRM_FORMAT_ABGR1555, 25653324b99SAbhinav Kumar DRM_FORMAT_BGRA5551, 25753324b99SAbhinav Kumar DRM_FORMAT_XBGR1555, 25853324b99SAbhinav Kumar DRM_FORMAT_BGRX5551, 25953324b99SAbhinav Kumar DRM_FORMAT_ABGR4444, 26053324b99SAbhinav Kumar DRM_FORMAT_BGRA4444, 26153324b99SAbhinav Kumar DRM_FORMAT_BGRX4444, 26253324b99SAbhinav Kumar DRM_FORMAT_XBGR4444, 26353324b99SAbhinav Kumar }; 26453324b99SAbhinav Kumar 26525fdd593SJeykumar Sankaran /************************************************************* 26625fdd593SJeykumar Sankaran * DPU sub blocks config 26725fdd593SJeykumar Sankaran *************************************************************/ 26825fdd593SJeykumar Sankaran /* DPU top level caps */ 26994391a14SAngeloGioacchino Del Regno static const struct dpu_caps msm8998_dpu_caps = { 27094391a14SAngeloGioacchino Del Regno .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 27194391a14SAngeloGioacchino Del Regno .max_mixer_blendstages = 0x7, 27294391a14SAngeloGioacchino Del Regno .qseed_type = DPU_SSPP_SCALER_QSEED3, 27394391a14SAngeloGioacchino Del Regno .smart_dma_rev = DPU_SSPP_SMART_DMA_V1, 27494391a14SAngeloGioacchino Del Regno .ubwc_version = DPU_HW_UBWC_VER_10, 27594391a14SAngeloGioacchino Del Regno .has_src_split = true, 27694391a14SAngeloGioacchino Del Regno .has_dim_layer = true, 27794391a14SAngeloGioacchino Del Regno .has_idle_pc = true, 27894391a14SAngeloGioacchino Del Regno .has_3d_merge = true, 27994391a14SAngeloGioacchino Del Regno .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 28094391a14SAngeloGioacchino Del Regno .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 28194391a14SAngeloGioacchino Del Regno .max_hdeci_exp = MAX_HORZ_DECIMATION, 28294391a14SAngeloGioacchino Del Regno .max_vdeci_exp = MAX_VERT_DECIMATION, 28394391a14SAngeloGioacchino Del Regno }; 28494391a14SAngeloGioacchino Del Regno 285c162352eSKonrad Dybcio static const struct dpu_caps qcm2290_dpu_caps = { 286c162352eSKonrad Dybcio .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 287c162352eSKonrad Dybcio .max_mixer_blendstages = 0x4, 288c162352eSKonrad Dybcio .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 289c162352eSKonrad Dybcio .ubwc_version = DPU_HW_UBWC_VER_20, 290c162352eSKonrad Dybcio .has_dim_layer = true, 291c162352eSKonrad Dybcio .has_idle_pc = true, 292c162352eSKonrad Dybcio .max_linewidth = 2160, 293c162352eSKonrad Dybcio .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 294c162352eSKonrad Dybcio }; 295c162352eSKonrad Dybcio 29625fdd593SJeykumar Sankaran static const struct dpu_caps sdm845_dpu_caps = { 29725fdd593SJeykumar Sankaran .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 29825fdd593SJeykumar Sankaran .max_mixer_blendstages = 0xb, 29925fdd593SJeykumar Sankaran .qseed_type = DPU_SSPP_SCALER_QSEED3, 30025fdd593SJeykumar Sankaran .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 30125fdd593SJeykumar Sankaran .ubwc_version = DPU_HW_UBWC_VER_20, 30225fdd593SJeykumar Sankaran .has_src_split = true, 30325fdd593SJeykumar Sankaran .has_dim_layer = true, 30425fdd593SJeykumar Sankaran .has_idle_pc = true, 30542a558b7SKalyan Thota .has_3d_merge = true, 3067e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3077e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3087e9d4cddSJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 3097e9d4cddSJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 31025fdd593SJeykumar Sankaran }; 31125fdd593SJeykumar Sankaran 3127bdc0c4bSKalyan Thota static const struct dpu_caps sc7180_dpu_caps = { 3137bdc0c4bSKalyan Thota .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3147bdc0c4bSKalyan Thota .max_mixer_blendstages = 0x9, 3157bdc0c4bSKalyan Thota .qseed_type = DPU_SSPP_SCALER_QSEED4, 3167bdc0c4bSKalyan Thota .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 3177bdc0c4bSKalyan Thota .ubwc_version = DPU_HW_UBWC_VER_20, 3187bdc0c4bSKalyan Thota .has_dim_layer = true, 3197bdc0c4bSKalyan Thota .has_idle_pc = true, 3207e9d4cddSJonathan Marek .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 3217e9d4cddSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 3227bdc0c4bSKalyan Thota }; 3237bdc0c4bSKalyan Thota 324386fced3SJonathan Marek static const struct dpu_caps sm8150_dpu_caps = { 325386fced3SJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 326386fced3SJonathan Marek .max_mixer_blendstages = 0xb, 327386fced3SJonathan Marek .qseed_type = DPU_SSPP_SCALER_QSEED3, 328386fced3SJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 329386fced3SJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_30, 330386fced3SJonathan Marek .has_src_split = true, 331386fced3SJonathan Marek .has_dim_layer = true, 332386fced3SJonathan Marek .has_idle_pc = true, 333386fced3SJonathan Marek .has_3d_merge = true, 334386fced3SJonathan Marek .max_linewidth = 4096, 335386fced3SJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 336386fced3SJonathan Marek .max_hdeci_exp = MAX_HORZ_DECIMATION, 337386fced3SJonathan Marek .max_vdeci_exp = MAX_VERT_DECIMATION, 338386fced3SJonathan Marek }; 339386fced3SJonathan Marek 340f3af2d6eSRob Clark static const struct dpu_caps sc8180x_dpu_caps = { 341f3af2d6eSRob Clark .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 342f3af2d6eSRob Clark .max_mixer_blendstages = 0xb, 343f3af2d6eSRob Clark .qseed_type = DPU_SSPP_SCALER_QSEED3, 344f3af2d6eSRob Clark .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 345f3af2d6eSRob Clark .ubwc_version = DPU_HW_UBWC_VER_30, 346f3af2d6eSRob Clark .has_src_split = true, 347f3af2d6eSRob Clark .has_dim_layer = true, 348f3af2d6eSRob Clark .has_idle_pc = true, 349f3af2d6eSRob Clark .has_3d_merge = true, 350f3af2d6eSRob Clark .max_linewidth = 4096, 351f3af2d6eSRob Clark .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 352f3af2d6eSRob Clark .max_hdeci_exp = MAX_HORZ_DECIMATION, 353f3af2d6eSRob Clark .max_vdeci_exp = MAX_VERT_DECIMATION, 354f3af2d6eSRob Clark }; 355f3af2d6eSRob Clark 356af776a3eSJonathan Marek static const struct dpu_caps sm8250_dpu_caps = { 357af776a3eSJonathan Marek .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 358af776a3eSJonathan Marek .max_mixer_blendstages = 0xb, 359d21fc5dfSDmitry Baryshkov .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, 360af776a3eSJonathan Marek .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ 361af776a3eSJonathan Marek .ubwc_version = DPU_HW_UBWC_VER_40, 362af776a3eSJonathan Marek .has_src_split = true, 363af776a3eSJonathan Marek .has_dim_layer = true, 364af776a3eSJonathan Marek .has_idle_pc = true, 365af776a3eSJonathan Marek .has_3d_merge = true, 366af776a3eSJonathan Marek .max_linewidth = 4096, 367af776a3eSJonathan Marek .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 368af776a3eSJonathan Marek }; 369af776a3eSJonathan Marek 370591e34a0SKrishna Manikandan static const struct dpu_caps sc7280_dpu_caps = { 371591e34a0SKrishna Manikandan .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 372591e34a0SKrishna Manikandan .max_mixer_blendstages = 0x7, 373591e34a0SKrishna Manikandan .qseed_type = DPU_SSPP_SCALER_QSEED4, 374591e34a0SKrishna Manikandan .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, 375591e34a0SKrishna Manikandan .ubwc_version = DPU_HW_UBWC_VER_30, 376591e34a0SKrishna Manikandan .has_dim_layer = true, 377591e34a0SKrishna Manikandan .has_idle_pc = true, 378591e34a0SKrishna Manikandan .max_linewidth = 2400, 379591e34a0SKrishna Manikandan .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 380591e34a0SKrishna Manikandan }; 381591e34a0SKrishna Manikandan 38294391a14SAngeloGioacchino Del Regno static const struct dpu_mdp_cfg msm8998_mdp[] = { 38394391a14SAngeloGioacchino Del Regno { 38494391a14SAngeloGioacchino Del Regno .name = "top_0", .id = MDP_TOP, 38594391a14SAngeloGioacchino Del Regno .base = 0x0, .len = 0x458, 38694391a14SAngeloGioacchino Del Regno .features = 0, 38794391a14SAngeloGioacchino Del Regno .highest_bank_bit = 0x2, 38894391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 38994391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 0}, 39094391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 39194391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 0}, 39294391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 39394391a14SAngeloGioacchino Del Regno .reg_off = 0x2BC, .bit_off = 0}, 39494391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 39594391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 0}, 39694391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 39794391a14SAngeloGioacchino Del Regno .reg_off = 0x2AC, .bit_off = 8}, 39894391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 39994391a14SAngeloGioacchino Del Regno .reg_off = 0x2B4, .bit_off = 8}, 40094391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA2] = { 40194391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 8}, 40294391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_DMA3] = { 40394391a14SAngeloGioacchino Del Regno .reg_off = 0x2C4, .bit_off = 12}, 40494391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 40594391a14SAngeloGioacchino Del Regno .reg_off = 0x3A8, .bit_off = 15}, 40694391a14SAngeloGioacchino Del Regno .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 40794391a14SAngeloGioacchino Del Regno .reg_off = 0x3B0, .bit_off = 15}, 40894391a14SAngeloGioacchino Del Regno }, 40994391a14SAngeloGioacchino Del Regno }; 41094391a14SAngeloGioacchino Del Regno 411abda0d92SStephen Boyd static const struct dpu_mdp_cfg sdm845_mdp[] = { 41225fdd593SJeykumar Sankaran { 41325fdd593SJeykumar Sankaran .name = "top_0", .id = MDP_TOP, 41425fdd593SJeykumar Sankaran .base = 0x0, .len = 0x45C, 41503490e11SKuogee Hsieh .features = BIT(DPU_MDP_AUDIO_SELECT), 41625fdd593SJeykumar Sankaran .highest_bank_bit = 0x2, 41725fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 41825fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 0}, 41925fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 42025fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 0}, 42125fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 42225fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 0}, 42325fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 42425fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 0}, 42525fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 42625fdd593SJeykumar Sankaran .reg_off = 0x2AC, .bit_off = 8}, 42725fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 42825fdd593SJeykumar Sankaran .reg_off = 0x2B4, .bit_off = 8}, 42925fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 43025fdd593SJeykumar Sankaran .reg_off = 0x2BC, .bit_off = 8}, 43125fdd593SJeykumar Sankaran .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 43225fdd593SJeykumar Sankaran .reg_off = 0x2C4, .bit_off = 8}, 43325fdd593SJeykumar Sankaran }, 43425fdd593SJeykumar Sankaran }; 43525fdd593SJeykumar Sankaran 4367bdc0c4bSKalyan Thota static const struct dpu_mdp_cfg sc7180_mdp[] = { 4377bdc0c4bSKalyan Thota { 4387bdc0c4bSKalyan Thota .name = "top_0", .id = MDP_TOP, 4397bdc0c4bSKalyan Thota .base = 0x0, .len = 0x494, 4407bdc0c4bSKalyan Thota .features = 0, 4417bdc0c4bSKalyan Thota .highest_bank_bit = 0x3, 4427bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 4437bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 0}, 4447bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 4457bdc0c4bSKalyan Thota .reg_off = 0x2AC, .bit_off = 8}, 4467bdc0c4bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 4477b149f2bSKalyan Thota .reg_off = 0x2B4, .bit_off = 8}, 4487b149f2bSKalyan Thota .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 4497b149f2bSKalyan Thota .reg_off = 0x2C4, .bit_off = 8}, 4507bdc0c4bSKalyan Thota }, 4517bdc0c4bSKalyan Thota }; 4527bdc0c4bSKalyan Thota 453f3af2d6eSRob Clark static const struct dpu_mdp_cfg sc8180x_mdp[] = { 454f3af2d6eSRob Clark { 455f3af2d6eSRob Clark .name = "top_0", .id = MDP_TOP, 456f3af2d6eSRob Clark .base = 0x0, .len = 0x45C, 457f3af2d6eSRob Clark .features = 0, 458f3af2d6eSRob Clark .highest_bank_bit = 0x3, 459f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 460f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 0}, 461f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 462f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 0}, 463f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 464f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 0}, 465f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 466f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 0}, 467f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 468f3af2d6eSRob Clark .reg_off = 0x2AC, .bit_off = 8}, 469f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 470f3af2d6eSRob Clark .reg_off = 0x2B4, .bit_off = 8}, 471f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 472f3af2d6eSRob Clark .reg_off = 0x2BC, .bit_off = 8}, 473f3af2d6eSRob Clark .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 474f3af2d6eSRob Clark .reg_off = 0x2C4, .bit_off = 8}, 475f3af2d6eSRob Clark }, 476f3af2d6eSRob Clark }; 477f3af2d6eSRob Clark 478af776a3eSJonathan Marek static const struct dpu_mdp_cfg sm8250_mdp[] = { 479af776a3eSJonathan Marek { 480af776a3eSJonathan Marek .name = "top_0", .id = MDP_TOP, 481b910a020SRobert Foss .base = 0x0, .len = 0x494, 482af776a3eSJonathan Marek .features = 0, 483af776a3eSJonathan Marek .highest_bank_bit = 0x3, /* TODO: 2 for LP_DDR4 */ 484af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 485af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 0}, 486af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG1] = { 487af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 0}, 488af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG2] = { 489af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 0}, 490af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_VIG3] = { 491af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 0}, 492af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 493af776a3eSJonathan Marek .reg_off = 0x2AC, .bit_off = 8}, 494af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_DMA1] = { 495af776a3eSJonathan Marek .reg_off = 0x2B4, .bit_off = 8}, 496af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 497af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 8}, 498af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 499af776a3eSJonathan Marek .reg_off = 0x2C4, .bit_off = 8}, 500af776a3eSJonathan Marek .clk_ctrls[DPU_CLK_CTRL_REG_DMA] = { 501af776a3eSJonathan Marek .reg_off = 0x2BC, .bit_off = 20}, 50253324b99SAbhinav Kumar .clk_ctrls[DPU_CLK_CTRL_WB2] = { 50353324b99SAbhinav Kumar .reg_off = 0x3B8, .bit_off = 24}, 504af776a3eSJonathan Marek }, 505af776a3eSJonathan Marek }; 506af776a3eSJonathan Marek 507591e34a0SKrishna Manikandan static const struct dpu_mdp_cfg sc7280_mdp[] = { 508591e34a0SKrishna Manikandan { 509591e34a0SKrishna Manikandan .name = "top_0", .id = MDP_TOP, 510591e34a0SKrishna Manikandan .base = 0x0, .len = 0x2014, 511591e34a0SKrishna Manikandan .highest_bank_bit = 0x1, 512591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 513591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 0}, 514591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 515591e34a0SKrishna Manikandan .reg_off = 0x2AC, .bit_off = 8}, 516591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { 517591e34a0SKrishna Manikandan .reg_off = 0x2B4, .bit_off = 8}, 518591e34a0SKrishna Manikandan .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { 519591e34a0SKrishna Manikandan .reg_off = 0x2C4, .bit_off = 8}, 520591e34a0SKrishna Manikandan }, 521591e34a0SKrishna Manikandan }; 522591e34a0SKrishna Manikandan 5235334087eSLoic Poulain static const struct dpu_mdp_cfg qcm2290_mdp[] = { 5245334087eSLoic Poulain { 5255334087eSLoic Poulain .name = "top_0", .id = MDP_TOP, 5265334087eSLoic Poulain .base = 0x0, .len = 0x494, 5275334087eSLoic Poulain .features = 0, 5285334087eSLoic Poulain .highest_bank_bit = 0x2, 5295334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_VIG0] = { 5305334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 0}, 5315334087eSLoic Poulain .clk_ctrls[DPU_CLK_CTRL_DMA0] = { 5325334087eSLoic Poulain .reg_off = 0x2AC, .bit_off = 8}, 5335334087eSLoic Poulain }, 5345334087eSLoic Poulain }; 5355334087eSLoic Poulain 53625fdd593SJeykumar Sankaran /************************************************************* 53725fdd593SJeykumar Sankaran * CTL sub blocks config 53825fdd593SJeykumar Sankaran *************************************************************/ 53994391a14SAngeloGioacchino Del Regno static const struct dpu_ctl_cfg msm8998_ctl[] = { 54094391a14SAngeloGioacchino Del Regno { 54194391a14SAngeloGioacchino Del Regno .name = "ctl_0", .id = CTL_0, 54294391a14SAngeloGioacchino Del Regno .base = 0x1000, .len = 0x94, 54394391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 54494391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 54594391a14SAngeloGioacchino Del Regno }, 54694391a14SAngeloGioacchino Del Regno { 54794391a14SAngeloGioacchino Del Regno .name = "ctl_1", .id = CTL_1, 54894391a14SAngeloGioacchino Del Regno .base = 0x1200, .len = 0x94, 54994391a14SAngeloGioacchino Del Regno .features = 0, 55094391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 55194391a14SAngeloGioacchino Del Regno }, 55294391a14SAngeloGioacchino Del Regno { 55394391a14SAngeloGioacchino Del Regno .name = "ctl_2", .id = CTL_2, 55494391a14SAngeloGioacchino Del Regno .base = 0x1400, .len = 0x94, 55594391a14SAngeloGioacchino Del Regno .features = BIT(DPU_CTL_SPLIT_DISPLAY), 55694391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 55794391a14SAngeloGioacchino Del Regno }, 55894391a14SAngeloGioacchino Del Regno { 55994391a14SAngeloGioacchino Del Regno .name = "ctl_3", .id = CTL_3, 56094391a14SAngeloGioacchino Del Regno .base = 0x1600, .len = 0x94, 56194391a14SAngeloGioacchino Del Regno .features = 0, 56294391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 56394391a14SAngeloGioacchino Del Regno }, 56494391a14SAngeloGioacchino Del Regno { 56594391a14SAngeloGioacchino Del Regno .name = "ctl_4", .id = CTL_4, 56694391a14SAngeloGioacchino Del Regno .base = 0x1800, .len = 0x94, 56794391a14SAngeloGioacchino Del Regno .features = 0, 56894391a14SAngeloGioacchino Del Regno .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 56994391a14SAngeloGioacchino Del Regno }, 57094391a14SAngeloGioacchino Del Regno }; 57194391a14SAngeloGioacchino Del Regno 572abda0d92SStephen Boyd static const struct dpu_ctl_cfg sdm845_ctl[] = { 57325fdd593SJeykumar Sankaran { 57425fdd593SJeykumar Sankaran .name = "ctl_0", .id = CTL_0, 57525fdd593SJeykumar Sankaran .base = 0x1000, .len = 0xE4, 576667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 577667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 57825fdd593SJeykumar Sankaran }, 57925fdd593SJeykumar Sankaran { 58025fdd593SJeykumar Sankaran .name = "ctl_1", .id = CTL_1, 58125fdd593SJeykumar Sankaran .base = 0x1200, .len = 0xE4, 582667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_SPLIT_DISPLAY), 583667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 58425fdd593SJeykumar Sankaran }, 58525fdd593SJeykumar Sankaran { 58625fdd593SJeykumar Sankaran .name = "ctl_2", .id = CTL_2, 58725fdd593SJeykumar Sankaran .base = 0x1400, .len = 0xE4, 588667e9985SDmitry Baryshkov .features = 0, 589667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 59025fdd593SJeykumar Sankaran }, 59125fdd593SJeykumar Sankaran { 59225fdd593SJeykumar Sankaran .name = "ctl_3", .id = CTL_3, 59325fdd593SJeykumar Sankaran .base = 0x1600, .len = 0xE4, 594667e9985SDmitry Baryshkov .features = 0, 595667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 59625fdd593SJeykumar Sankaran }, 59725fdd593SJeykumar Sankaran { 59825fdd593SJeykumar Sankaran .name = "ctl_4", .id = CTL_4, 59925fdd593SJeykumar Sankaran .base = 0x1800, .len = 0xE4, 600667e9985SDmitry Baryshkov .features = 0, 601667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 60225fdd593SJeykumar Sankaran }, 60325fdd593SJeykumar Sankaran }; 60425fdd593SJeykumar Sankaran 6057bdc0c4bSKalyan Thota static const struct dpu_ctl_cfg sc7180_ctl[] = { 6067bdc0c4bSKalyan Thota { 6077bdc0c4bSKalyan Thota .name = "ctl_0", .id = CTL_0, 6087bdc0c4bSKalyan Thota .base = 0x1000, .len = 0xE4, 609667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 610667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 6117bdc0c4bSKalyan Thota }, 6127bdc0c4bSKalyan Thota { 6137bdc0c4bSKalyan Thota .name = "ctl_1", .id = CTL_1, 6147bdc0c4bSKalyan Thota .base = 0x1200, .len = 0xE4, 615667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 616667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 6177bdc0c4bSKalyan Thota }, 6187bdc0c4bSKalyan Thota { 6197bdc0c4bSKalyan Thota .name = "ctl_2", .id = CTL_2, 6207bdc0c4bSKalyan Thota .base = 0x1400, .len = 0xE4, 621667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 622667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 6237bdc0c4bSKalyan Thota }, 6247bdc0c4bSKalyan Thota }; 6257bdc0c4bSKalyan Thota 626386fced3SJonathan Marek static const struct dpu_ctl_cfg sm8150_ctl[] = { 627386fced3SJonathan Marek { 628386fced3SJonathan Marek .name = "ctl_0", .id = CTL_0, 629386fced3SJonathan Marek .base = 0x1000, .len = 0x1e0, 630667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 631667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 632386fced3SJonathan Marek }, 633386fced3SJonathan Marek { 634386fced3SJonathan Marek .name = "ctl_1", .id = CTL_1, 635386fced3SJonathan Marek .base = 0x1200, .len = 0x1e0, 636667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG) | BIT(DPU_CTL_SPLIT_DISPLAY), 637667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 638386fced3SJonathan Marek }, 639386fced3SJonathan Marek { 640386fced3SJonathan Marek .name = "ctl_2", .id = CTL_2, 641386fced3SJonathan Marek .base = 0x1400, .len = 0x1e0, 642667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 643667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 644386fced3SJonathan Marek }, 645386fced3SJonathan Marek { 646386fced3SJonathan Marek .name = "ctl_3", .id = CTL_3, 647386fced3SJonathan Marek .base = 0x1600, .len = 0x1e0, 648667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 649667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 650386fced3SJonathan Marek }, 651386fced3SJonathan Marek { 652386fced3SJonathan Marek .name = "ctl_4", .id = CTL_4, 653386fced3SJonathan Marek .base = 0x1800, .len = 0x1e0, 654667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 655667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), 656386fced3SJonathan Marek }, 657386fced3SJonathan Marek { 658386fced3SJonathan Marek .name = "ctl_5", .id = CTL_5, 659386fced3SJonathan Marek .base = 0x1a00, .len = 0x1e0, 660667e9985SDmitry Baryshkov .features = BIT(DPU_CTL_ACTIVE_CFG), 661667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 23), 662386fced3SJonathan Marek }, 663386fced3SJonathan Marek }; 664386fced3SJonathan Marek 665591e34a0SKrishna Manikandan static const struct dpu_ctl_cfg sc7280_ctl[] = { 666591e34a0SKrishna Manikandan { 667591e34a0SKrishna Manikandan .name = "ctl_0", .id = CTL_0, 668591e34a0SKrishna Manikandan .base = 0x15000, .len = 0x1E8, 669667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 670667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 671591e34a0SKrishna Manikandan }, 672591e34a0SKrishna Manikandan { 673591e34a0SKrishna Manikandan .name = "ctl_1", .id = CTL_1, 674591e34a0SKrishna Manikandan .base = 0x16000, .len = 0x1E8, 675667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 676667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), 677591e34a0SKrishna Manikandan }, 678591e34a0SKrishna Manikandan { 679591e34a0SKrishna Manikandan .name = "ctl_2", .id = CTL_2, 680591e34a0SKrishna Manikandan .base = 0x17000, .len = 0x1E8, 681667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 682667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), 683591e34a0SKrishna Manikandan }, 684591e34a0SKrishna Manikandan { 685591e34a0SKrishna Manikandan .name = "ctl_3", .id = CTL_3, 686591e34a0SKrishna Manikandan .base = 0x18000, .len = 0x1E8, 687667e9985SDmitry Baryshkov .features = CTL_SC7280_MASK, 688667e9985SDmitry Baryshkov .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), 689591e34a0SKrishna Manikandan }, 690591e34a0SKrishna Manikandan }; 691591e34a0SKrishna Manikandan 6925334087eSLoic Poulain static const struct dpu_ctl_cfg qcm2290_ctl[] = { 6935334087eSLoic Poulain { 6945334087eSLoic Poulain .name = "ctl_0", .id = CTL_0, 6955334087eSLoic Poulain .base = 0x1000, .len = 0x1dc, 6965334087eSLoic Poulain .features = BIT(DPU_CTL_ACTIVE_CFG), 6975334087eSLoic Poulain .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), 6985334087eSLoic Poulain }, 6995334087eSLoic Poulain }; 7005334087eSLoic Poulain 70125fdd593SJeykumar Sankaran /************************************************************* 70225fdd593SJeykumar Sankaran * SSPP sub blocks config 70325fdd593SJeykumar Sankaran *************************************************************/ 70425fdd593SJeykumar Sankaran 70525fdd593SJeykumar Sankaran /* SSPP common configuration */ 706b75ab05aSShubhashree Dhar #define _VIG_SBLK(num, sdma_pri, qseed_ver) \ 70725fdd593SJeykumar Sankaran { \ 70825fdd593SJeykumar Sankaran .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 70925fdd593SJeykumar Sankaran .maxupscale = MAX_UPSCALE_RATIO, \ 71025fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 71125fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 71225fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 71325fdd593SJeykumar Sankaran .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 714b75ab05aSShubhashree Dhar .id = qseed_ver, \ 71525fdd593SJeykumar Sankaran .base = 0xa00, .len = 0xa0,}, \ 71625fdd593SJeykumar Sankaran .csc_blk = {.name = STRCAT("sspp_csc", num), \ 71725fdd593SJeykumar Sankaran .id = DPU_SSPP_CSC_10BIT, \ 71825fdd593SJeykumar Sankaran .base = 0x1a00, .len = 0x100,}, \ 71925fdd593SJeykumar Sankaran .format_list = plane_formats_yuv, \ 720e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 72125fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 722e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 723dabfdd89SVinod Polimera .rotation_cfg = NULL, \ 724dabfdd89SVinod Polimera } 725dabfdd89SVinod Polimera 726dabfdd89SVinod Polimera #define _VIG_SBLK_ROT(num, sdma_pri, qseed_ver, rot_cfg) \ 727dabfdd89SVinod Polimera { \ 728dabfdd89SVinod Polimera .maxdwnscale = MAX_DOWNSCALE_RATIO, \ 729dabfdd89SVinod Polimera .maxupscale = MAX_UPSCALE_RATIO, \ 730dabfdd89SVinod Polimera .smart_dma_priority = sdma_pri, \ 731dabfdd89SVinod Polimera .src_blk = {.name = STRCAT("sspp_src_", num), \ 732dabfdd89SVinod Polimera .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 733dabfdd89SVinod Polimera .scaler_blk = {.name = STRCAT("sspp_scaler", num), \ 734dabfdd89SVinod Polimera .id = qseed_ver, \ 735dabfdd89SVinod Polimera .base = 0xa00, .len = 0xa0,}, \ 736dabfdd89SVinod Polimera .csc_blk = {.name = STRCAT("sspp_csc", num), \ 737dabfdd89SVinod Polimera .id = DPU_SSPP_CSC_10BIT, \ 738dabfdd89SVinod Polimera .base = 0x1a00, .len = 0x100,}, \ 739dabfdd89SVinod Polimera .format_list = plane_formats_yuv, \ 740dabfdd89SVinod Polimera .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 741dabfdd89SVinod Polimera .virt_format_list = plane_formats, \ 742dabfdd89SVinod Polimera .virt_num_formats = ARRAY_SIZE(plane_formats), \ 743dabfdd89SVinod Polimera .rotation_cfg = rot_cfg, \ 74425fdd593SJeykumar Sankaran } 74525fdd593SJeykumar Sankaran 74625fdd593SJeykumar Sankaran #define _DMA_SBLK(num, sdma_pri) \ 74725fdd593SJeykumar Sankaran { \ 74825fdd593SJeykumar Sankaran .maxdwnscale = SSPP_UNITY_SCALE, \ 74925fdd593SJeykumar Sankaran .maxupscale = SSPP_UNITY_SCALE, \ 75025fdd593SJeykumar Sankaran .smart_dma_priority = sdma_pri, \ 75125fdd593SJeykumar Sankaran .src_blk = {.name = STRCAT("sspp_src_", num), \ 75225fdd593SJeykumar Sankaran .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 75325fdd593SJeykumar Sankaran .format_list = plane_formats, \ 754e6b63a7bSFritz Koenig .num_formats = ARRAY_SIZE(plane_formats), \ 75525fdd593SJeykumar Sankaran .virt_format_list = plane_formats, \ 756e6b63a7bSFritz Koenig .virt_num_formats = ARRAY_SIZE(plane_formats), \ 75725fdd593SJeykumar Sankaran } 75825fdd593SJeykumar Sankaran 75994391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_0 = 76094391a14SAngeloGioacchino Del Regno _VIG_SBLK("0", 0, DPU_SSPP_SCALER_QSEED3); 76194391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_1 = 76294391a14SAngeloGioacchino Del Regno _VIG_SBLK("1", 0, DPU_SSPP_SCALER_QSEED3); 76394391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_2 = 76494391a14SAngeloGioacchino Del Regno _VIG_SBLK("2", 0, DPU_SSPP_SCALER_QSEED3); 76594391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_sub_blks msm8998_vig_sblk_3 = 76694391a14SAngeloGioacchino Del Regno _VIG_SBLK("3", 0, DPU_SSPP_SCALER_QSEED3); 76794391a14SAngeloGioacchino Del Regno 768dabfdd89SVinod Polimera static const struct dpu_rotation_cfg dpu_rot_sc7280_cfg_v2 = { 769dabfdd89SVinod Polimera .rot_maxheight = 1088, 770dabfdd89SVinod Polimera .rot_num_formats = ARRAY_SIZE(rotation_v2_formats), 771dabfdd89SVinod Polimera .rot_format_list = rotation_v2_formats, 772dabfdd89SVinod Polimera }; 773dabfdd89SVinod Polimera 774b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_0 = 775b75ab05aSShubhashree Dhar _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3); 776b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_1 = 777b75ab05aSShubhashree Dhar _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3); 778b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_2 = 779b75ab05aSShubhashree Dhar _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3); 780b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sdm845_vig_sblk_3 = 781b75ab05aSShubhashree Dhar _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3); 78225fdd593SJeykumar Sankaran 78325fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_0 = _DMA_SBLK("8", 1); 78425fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_1 = _DMA_SBLK("9", 2); 78525fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 = _DMA_SBLK("10", 3); 78625fdd593SJeykumar Sankaran static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 = _DMA_SBLK("11", 4); 78725fdd593SJeykumar Sankaran 78807ca1fc0SSravanthi Kollukuduru #define SSPP_BLK(_name, _id, _base, _features, \ 78907ca1fc0SSravanthi Kollukuduru _sblk, _xinid, _type, _clkctrl) \ 79025fdd593SJeykumar Sankaran { \ 79125fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 79225fdd593SJeykumar Sankaran .base = _base, .len = 0x1c8, \ 79307ca1fc0SSravanthi Kollukuduru .features = _features, \ 79425fdd593SJeykumar Sankaran .sblk = &_sblk, \ 79525fdd593SJeykumar Sankaran .xin_id = _xinid, \ 79607ca1fc0SSravanthi Kollukuduru .type = _type, \ 79725fdd593SJeykumar Sankaran .clk_ctrl = _clkctrl \ 79825fdd593SJeykumar Sankaran } 79925fdd593SJeykumar Sankaran 80094391a14SAngeloGioacchino Del Regno static const struct dpu_sspp_cfg msm8998_sspp[] = { 80194391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_MSM8998_MASK, 80294391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 80394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_MSM8998_MASK, 80494391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 80594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_MSM8998_MASK, 80694391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 80794391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_MSM8998_MASK, 80894391a14SAngeloGioacchino Del Regno msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 80994391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_MSM8998_MASK, 81094391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 81194391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_MSM8998_MASK, 81294391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 81394391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_MSM8998_MASK, 81494391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 81594391a14SAngeloGioacchino Del Regno SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_MSM8998_MASK, 81694391a14SAngeloGioacchino Del Regno sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 81794391a14SAngeloGioacchino Del Regno }; 81894391a14SAngeloGioacchino Del Regno 819abda0d92SStephen Boyd static const struct dpu_sspp_cfg sdm845_sspp[] = { 82007ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK, 82107ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 82207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK, 82307ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 82407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK, 82507ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 82607ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK, 82707ca1fc0SSravanthi Kollukuduru sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 82807ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 82907ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 83007ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 83107ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 83207ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 83307ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 83407ca1fc0SSravanthi Kollukuduru SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 83507ca1fc0SSravanthi Kollukuduru sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 83625fdd593SJeykumar Sankaran }; 83725fdd593SJeykumar Sankaran 838b75ab05aSShubhashree Dhar static const struct dpu_sspp_sub_blks sc7180_vig_sblk_0 = 839b75ab05aSShubhashree Dhar _VIG_SBLK("0", 4, DPU_SSPP_SCALER_QSEED4); 840b75ab05aSShubhashree Dhar 841dabfdd89SVinod Polimera static const struct dpu_sspp_sub_blks sc7280_vig_sblk_0 = 842dabfdd89SVinod Polimera _VIG_SBLK_ROT("0", 4, DPU_SSPP_SCALER_QSEED4, &dpu_rot_sc7280_cfg_v2); 843dabfdd89SVinod Polimera 8447bdc0c4bSKalyan Thota static const struct dpu_sspp_cfg sc7180_sspp[] = { 8457bdc0c4bSKalyan Thota SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, 846b75ab05aSShubhashree Dhar sc7180_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 8477bdc0c4bSKalyan Thota SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 8487bdc0c4bSKalyan Thota sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 8497b149f2bSKalyan Thota SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 8507b149f2bSKalyan Thota sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 8517bdc0c4bSKalyan Thota SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 8527b149f2bSKalyan Thota sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 8537bdc0c4bSKalyan Thota }; 8547bdc0c4bSKalyan Thota 855d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = 856d21fc5dfSDmitry Baryshkov _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); 857d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = 858d21fc5dfSDmitry Baryshkov _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); 859d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = 860d21fc5dfSDmitry Baryshkov _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); 861d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = 862d21fc5dfSDmitry Baryshkov _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); 863d21fc5dfSDmitry Baryshkov 864d21fc5dfSDmitry Baryshkov static const struct dpu_sspp_cfg sm8250_sspp[] = { 865d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, 866d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 867d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, 868d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), 869d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, 870d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), 871d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, 872d21fc5dfSDmitry Baryshkov sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), 873d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 874d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 875d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK, 876d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), 877d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 878d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 879d21fc5dfSDmitry Baryshkov SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, DMA_CURSOR_SDM845_MASK, 880d21fc5dfSDmitry Baryshkov sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 881d21fc5dfSDmitry Baryshkov }; 882d21fc5dfSDmitry Baryshkov 883591e34a0SKrishna Manikandan static const struct dpu_sspp_cfg sc7280_sspp[] = { 884dabfdd89SVinod Polimera SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7280_MASK, 885dabfdd89SVinod Polimera sc7280_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 886591e34a0SKrishna Manikandan SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 887591e34a0SKrishna Manikandan sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 888591e34a0SKrishna Manikandan SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_CURSOR_SDM845_MASK, 889591e34a0SKrishna Manikandan sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR0), 890591e34a0SKrishna Manikandan SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_CURSOR_SDM845_MASK, 891591e34a0SKrishna Manikandan sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_CURSOR1), 892591e34a0SKrishna Manikandan }; 893591e34a0SKrishna Manikandan 8945334087eSLoic Poulain 8955334087eSLoic Poulain #define _VIG_SBLK_NOSCALE(num, sdma_pri) \ 8965334087eSLoic Poulain { \ 8975334087eSLoic Poulain .maxdwnscale = SSPP_UNITY_SCALE, \ 8985334087eSLoic Poulain .maxupscale = SSPP_UNITY_SCALE, \ 8995334087eSLoic Poulain .smart_dma_priority = sdma_pri, \ 9005334087eSLoic Poulain .src_blk = {.name = STRCAT("sspp_src_", num), \ 9015334087eSLoic Poulain .id = DPU_SSPP_SRC, .base = 0x00, .len = 0x150,}, \ 9025334087eSLoic Poulain .format_list = plane_formats_yuv, \ 9035334087eSLoic Poulain .num_formats = ARRAY_SIZE(plane_formats_yuv), \ 9045334087eSLoic Poulain .virt_format_list = plane_formats, \ 9055334087eSLoic Poulain .virt_num_formats = ARRAY_SIZE(plane_formats), \ 9065334087eSLoic Poulain } 9075334087eSLoic Poulain 9085334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_vig_sblk_0 = _VIG_SBLK_NOSCALE("0", 2); 9095334087eSLoic Poulain static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); 9105334087eSLoic Poulain 9115334087eSLoic Poulain static const struct dpu_sspp_cfg qcm2290_sspp[] = { 9125334087eSLoic Poulain SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_QCM2290_MASK, 9135334087eSLoic Poulain qcm2290_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), 9145334087eSLoic Poulain SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, 9155334087eSLoic Poulain qcm2290_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), 9165334087eSLoic Poulain }; 9175334087eSLoic Poulain 91825fdd593SJeykumar Sankaran /************************************************************* 91925fdd593SJeykumar Sankaran * MIXER sub blocks config 92025fdd593SJeykumar Sankaran *************************************************************/ 9217bdc0c4bSKalyan Thota 922e47616dfSKalyan Thota #define LM_BLK(_name, _id, _base, _fmask, _sblk, _pp, _lmpair, _dspp) \ 92325fdd593SJeykumar Sankaran { \ 92425fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 92525fdd593SJeykumar Sankaran .base = _base, .len = 0x320, \ 9267bdc0c4bSKalyan Thota .features = _fmask, \ 9277bdc0c4bSKalyan Thota .sblk = _sblk, \ 92825fdd593SJeykumar Sankaran .pingpong = _pp, \ 929e47616dfSKalyan Thota .lm_pair_mask = (1 << _lmpair), \ 930e47616dfSKalyan Thota .dspp = _dspp \ 93125fdd593SJeykumar Sankaran } 93225fdd593SJeykumar Sankaran 93394391a14SAngeloGioacchino Del Regno /* MSM8998 */ 93494391a14SAngeloGioacchino Del Regno 93594391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks msm8998_lm_sblk = { 93694391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 93794391a14SAngeloGioacchino Del Regno .maxblendstages = 7, /* excluding base layer */ 93894391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 93994391a14SAngeloGioacchino Del Regno 0x20, 0x50, 0x80, 0xb0, 0x230, 94094391a14SAngeloGioacchino Del Regno 0x260, 0x290 94194391a14SAngeloGioacchino Del Regno }, 94294391a14SAngeloGioacchino Del Regno }; 94394391a14SAngeloGioacchino Del Regno 94494391a14SAngeloGioacchino Del Regno static const struct dpu_lm_cfg msm8998_lm[] = { 9452d8a4edbSDmitry Baryshkov LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, 94694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_0, LM_2, DSPP_0), 9472d8a4edbSDmitry Baryshkov LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, 94894391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_1, LM_5, DSPP_1), 9492d8a4edbSDmitry Baryshkov LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, 95094391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_2, LM_0, 0), 9512d8a4edbSDmitry Baryshkov LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, 95294391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 9532d8a4edbSDmitry Baryshkov LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, 95494391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_MAX, 0, 0), 9552d8a4edbSDmitry Baryshkov LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, 95694391a14SAngeloGioacchino Del Regno &msm8998_lm_sblk, PINGPONG_3, LM_1, 0), 95794391a14SAngeloGioacchino Del Regno }; 95894391a14SAngeloGioacchino Del Regno 95994391a14SAngeloGioacchino Del Regno /* SDM845 */ 96094391a14SAngeloGioacchino Del Regno 96194391a14SAngeloGioacchino Del Regno static const struct dpu_lm_sub_blks sdm845_lm_sblk = { 96294391a14SAngeloGioacchino Del Regno .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 96394391a14SAngeloGioacchino Del Regno .maxblendstages = 11, /* excluding base layer */ 96494391a14SAngeloGioacchino Del Regno .blendstage_base = { /* offsets relative to mixer base */ 96594391a14SAngeloGioacchino Del Regno 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 96694391a14SAngeloGioacchino Del Regno 0xb0, 0xc8, 0xe0, 0xf8, 0x110 96794391a14SAngeloGioacchino Del Regno }, 96894391a14SAngeloGioacchino Del Regno }; 96994391a14SAngeloGioacchino Del Regno 970abda0d92SStephen Boyd static const struct dpu_lm_cfg sdm845_lm[] = { 9717bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 972e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_0, LM_1, 0), 9737bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 974e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_1, LM_0, 0), 9757bdc0c4bSKalyan Thota LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 976e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_2, LM_5, 0), 9777bdc0c4bSKalyan Thota LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, 978e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 9797bdc0c4bSKalyan Thota LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, 980e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_MAX, 0, 0), 9817bdc0c4bSKalyan Thota LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 982e47616dfSKalyan Thota &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 9837bdc0c4bSKalyan Thota }; 9847bdc0c4bSKalyan Thota 9857bdc0c4bSKalyan Thota /* SC7180 */ 9867bdc0c4bSKalyan Thota 9877bdc0c4bSKalyan Thota static const struct dpu_lm_sub_blks sc7180_lm_sblk = { 9887bdc0c4bSKalyan Thota .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 9897bdc0c4bSKalyan Thota .maxblendstages = 7, /* excluding base layer */ 9907bdc0c4bSKalyan Thota .blendstage_base = { /* offsets relative to mixer base */ 9917bdc0c4bSKalyan Thota 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 9927bdc0c4bSKalyan Thota }, 9937bdc0c4bSKalyan Thota }; 9947bdc0c4bSKalyan Thota 9957bdc0c4bSKalyan Thota static const struct dpu_lm_cfg sc7180_lm[] = { 9967bdc0c4bSKalyan Thota LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 997e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 9987bdc0c4bSKalyan Thota LM_BLK("lm_1", LM_1, 0x45000, MIXER_SC7180_MASK, 999e47616dfSKalyan Thota &sc7180_lm_sblk, PINGPONG_1, LM_0, 0), 100025fdd593SJeykumar Sankaran }; 100125fdd593SJeykumar Sankaran 1002386fced3SJonathan Marek /* SM8150 */ 1003386fced3SJonathan Marek 1004386fced3SJonathan Marek static const struct dpu_lm_cfg sm8150_lm[] = { 1005386fced3SJonathan Marek LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, 100605ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_0, LM_1, DSPP_0), 1007386fced3SJonathan Marek LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, 100805ae91d9SDmitry Baryshkov &sdm845_lm_sblk, PINGPONG_1, LM_0, DSPP_1), 1009386fced3SJonathan Marek LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, 1010386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_2, LM_3, 0), 1011386fced3SJonathan Marek LM_BLK("lm_3", LM_3, 0x47000, MIXER_SDM845_MASK, 1012386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_3, LM_2, 0), 1013386fced3SJonathan Marek LM_BLK("lm_4", LM_4, 0x48000, MIXER_SDM845_MASK, 1014386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_4, LM_5, 0), 1015386fced3SJonathan Marek LM_BLK("lm_5", LM_5, 0x49000, MIXER_SDM845_MASK, 1016386fced3SJonathan Marek &sdm845_lm_sblk, PINGPONG_5, LM_4, 0), 1017386fced3SJonathan Marek }; 1018386fced3SJonathan Marek 1019591e34a0SKrishna Manikandan static const struct dpu_lm_cfg sc7280_lm[] = { 1020591e34a0SKrishna Manikandan LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 1021fca5ad26SKalyan Thota &sc7180_lm_sblk, PINGPONG_0, 0, DSPP_0), 1022591e34a0SKrishna Manikandan LM_BLK("lm_2", LM_2, 0x46000, MIXER_SC7180_MASK, 1023591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_2, LM_3, 0), 1024591e34a0SKrishna Manikandan LM_BLK("lm_3", LM_3, 0x47000, MIXER_SC7180_MASK, 1025591e34a0SKrishna Manikandan &sc7180_lm_sblk, PINGPONG_3, LM_2, 0), 1026591e34a0SKrishna Manikandan }; 1027591e34a0SKrishna Manikandan 10285334087eSLoic Poulain /* QCM2290 */ 10295334087eSLoic Poulain 10305334087eSLoic Poulain static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { 10315334087eSLoic Poulain .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, 10325334087eSLoic Poulain .maxblendstages = 4, /* excluding base layer */ 10335334087eSLoic Poulain .blendstage_base = { /* offsets relative to mixer base */ 10345334087eSLoic Poulain 0x20, 0x38, 0x50, 0x68 10355334087eSLoic Poulain }, 10365334087eSLoic Poulain }; 10375334087eSLoic Poulain 10385334087eSLoic Poulain static const struct dpu_lm_cfg qcm2290_lm[] = { 10395334087eSLoic Poulain LM_BLK("lm_0", LM_0, 0x44000, MIXER_SC7180_MASK, 10405334087eSLoic Poulain &qcm2290_lm_sblk, PINGPONG_0, 0, DSPP_0), 10415334087eSLoic Poulain }; 10425334087eSLoic Poulain 104325fdd593SJeykumar Sankaran /************************************************************* 1044e47616dfSKalyan Thota * DSPP sub blocks config 1045e47616dfSKalyan Thota *************************************************************/ 104694391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_sub_blks msm8998_dspp_sblk = { 104794391a14SAngeloGioacchino Del Regno .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 104894391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 104994391a14SAngeloGioacchino Del Regno .gc = { .id = DPU_DSPP_GC, .base = 0x17c0, 105094391a14SAngeloGioacchino Del Regno .len = 0x90, .version = 0x10007}, 105194391a14SAngeloGioacchino Del Regno }; 105294391a14SAngeloGioacchino Del Regno 10534259ff7aSKalyan Thota static const struct dpu_dspp_sub_blks sc7180_dspp_sblk = { 10544259ff7aSKalyan Thota .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 10554259ff7aSKalyan Thota .len = 0x90, .version = 0x10000}, 10564259ff7aSKalyan Thota }; 10574259ff7aSKalyan Thota 105805ae91d9SDmitry Baryshkov static const struct dpu_dspp_sub_blks sm8150_dspp_sblk = { 105905ae91d9SDmitry Baryshkov .pcc = {.id = DPU_DSPP_PCC, .base = 0x1700, 106005ae91d9SDmitry Baryshkov .len = 0x90, .version = 0x40000}, 106105ae91d9SDmitry Baryshkov }; 106205ae91d9SDmitry Baryshkov 1063862314bcSAngeloGioacchino Del Regno #define DSPP_BLK(_name, _id, _base, _mask, _sblk) \ 1064e47616dfSKalyan Thota {\ 1065e47616dfSKalyan Thota .name = _name, .id = _id, \ 1066e47616dfSKalyan Thota .base = _base, .len = 0x1800, \ 1067862314bcSAngeloGioacchino Del Regno .features = _mask, \ 106805ae91d9SDmitry Baryshkov .sblk = _sblk \ 1069e47616dfSKalyan Thota } 1070e47616dfSKalyan Thota 107194391a14SAngeloGioacchino Del Regno static const struct dpu_dspp_cfg msm8998_dspp[] = { 107294391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_MSM8998_MASK, 107394391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 107494391a14SAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_MSM8998_MASK, 107594391a14SAngeloGioacchino Del Regno &msm8998_dspp_sblk), 107694391a14SAngeloGioacchino Del Regno }; 107794391a14SAngeloGioacchino Del Regno 1078e47616dfSKalyan Thota static const struct dpu_dspp_cfg sc7180_dspp[] = { 1079862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1080862314bcSAngeloGioacchino Del Regno &sc7180_dspp_sblk), 108105ae91d9SDmitry Baryshkov }; 108205ae91d9SDmitry Baryshkov 108305ae91d9SDmitry Baryshkov static const struct dpu_dspp_cfg sm8150_dspp[] = { 1084862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 1085862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1086862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, 1087862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1088862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, 1089862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1090862314bcSAngeloGioacchino Del Regno DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, 1091862314bcSAngeloGioacchino Del Regno &sm8150_dspp_sblk), 1092e47616dfSKalyan Thota }; 1093386fced3SJonathan Marek 10945334087eSLoic Poulain static const struct dpu_dspp_cfg qcm2290_dspp[] = { 10955334087eSLoic Poulain DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, 10965334087eSLoic Poulain &sm8150_dspp_sblk), 10975334087eSLoic Poulain }; 10985334087eSLoic Poulain 1099e47616dfSKalyan Thota /************************************************************* 110025fdd593SJeykumar Sankaran * PINGPONG sub blocks config 110125fdd593SJeykumar Sankaran *************************************************************/ 110225fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk_te = { 110325fdd593SJeykumar Sankaran .te2 = {.id = DPU_PINGPONG_TE2, .base = 0x2000, .len = 0x0, 110425fdd593SJeykumar Sankaran .version = 0x1}, 110525fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 110625fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 110725fdd593SJeykumar Sankaran }; 110825fdd593SJeykumar Sankaran 110925fdd593SJeykumar Sankaran static const struct dpu_pingpong_sub_blks sdm845_pp_sblk = { 111025fdd593SJeykumar Sankaran .dither = {.id = DPU_PINGPONG_DITHER, .base = 0x30e0, 111125fdd593SJeykumar Sankaran .len = 0x20, .version = 0x10000}, 111225fdd593SJeykumar Sankaran }; 111325fdd593SJeykumar Sankaran 1114591e34a0SKrishna Manikandan static const struct dpu_pingpong_sub_blks sc7280_pp_sblk = { 1115591e34a0SKrishna Manikandan .dither = {.id = DPU_PINGPONG_DITHER, .base = 0xe0, 1116591e34a0SKrishna Manikandan .len = 0x20, .version = 0x20000}, 1117591e34a0SKrishna Manikandan }; 1118591e34a0SKrishna Manikandan 1119667e9985SDmitry Baryshkov #define PP_BLK_TE(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 112025fdd593SJeykumar Sankaran {\ 112125fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 112225fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 112325fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_SPLIT_MASK, \ 11244369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1125667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1126667e9985SDmitry Baryshkov .intr_done = _done, \ 1127667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 112825fdd593SJeykumar Sankaran } 1129667e9985SDmitry Baryshkov #define PP_BLK(_name, _id, _base, _merge_3d, _sblk, _done, _rdptr) \ 113025fdd593SJeykumar Sankaran {\ 113125fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 113225fdd593SJeykumar Sankaran .base = _base, .len = 0xd4, \ 113325fdd593SJeykumar Sankaran .features = PINGPONG_SDM845_MASK, \ 11344369c93cSDmitry Baryshkov .merge_3d = _merge_3d, \ 1135667e9985SDmitry Baryshkov .sblk = &_sblk, \ 1136667e9985SDmitry Baryshkov .intr_done = _done, \ 1137667e9985SDmitry Baryshkov .intr_rdptr = _rdptr, \ 113825fdd593SJeykumar Sankaran } 113925fdd593SJeykumar Sankaran 1140abda0d92SStephen Boyd static const struct dpu_pingpong_cfg sdm845_pp[] = { 1141667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, 1142667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1143667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1144667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, 1145667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1146667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1147667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, 0, sdm845_pp_sblk, 1148667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1149667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1150667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, 0, sdm845_pp_sblk, 1151667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1152667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 115325fdd593SJeykumar Sankaran }; 115425fdd593SJeykumar Sankaran 11557bdc0c4bSKalyan Thota static struct dpu_pingpong_cfg sc7180_pp[] = { 1156667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk_te, -1, -1), 1157667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, 0, sdm845_pp_sblk_te, -1, -1), 11587bdc0c4bSKalyan Thota }; 11597bdc0c4bSKalyan Thota 1160386fced3SJonathan Marek static const struct dpu_pingpong_cfg sm8150_pp[] = { 1161667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_0", PINGPONG_0, 0x70000, MERGE_3D_0, sdm845_pp_sblk_te, 1162667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 1163667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 1164667e9985SDmitry Baryshkov PP_BLK_TE("pingpong_1", PINGPONG_1, 0x70800, MERGE_3D_0, sdm845_pp_sblk_te, 1165667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), 1166667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), 1167667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x71000, MERGE_3D_1, sdm845_pp_sblk, 1168667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 1169667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), 1170667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x71800, MERGE_3D_1, sdm845_pp_sblk, 1171667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 1172667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), 1173667e9985SDmitry Baryshkov PP_BLK("pingpong_4", PINGPONG_4, 0x72000, MERGE_3D_2, sdm845_pp_sblk, 1174667e9985SDmitry Baryshkov DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 30), 1175667e9985SDmitry Baryshkov -1), 1176667e9985SDmitry Baryshkov PP_BLK("pingpong_5", PINGPONG_5, 0x72800, MERGE_3D_2, sdm845_pp_sblk, 11773431c17bSRobert Foss DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 31), 1178667e9985SDmitry Baryshkov -1), 11794369c93cSDmitry Baryshkov }; 11804369c93cSDmitry Baryshkov 11815334087eSLoic Poulain static struct dpu_pingpong_cfg qcm2290_pp[] = { 11825334087eSLoic Poulain PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, 11835334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), 11845334087eSLoic Poulain DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), 11855334087eSLoic Poulain }; 11865334087eSLoic Poulain 11874369c93cSDmitry Baryshkov /************************************************************* 11884369c93cSDmitry Baryshkov * MERGE_3D sub blocks config 11894369c93cSDmitry Baryshkov *************************************************************/ 11904369c93cSDmitry Baryshkov #define MERGE_3D_BLK(_name, _id, _base) \ 11914369c93cSDmitry Baryshkov {\ 11924369c93cSDmitry Baryshkov .name = _name, .id = _id, \ 11934369c93cSDmitry Baryshkov .base = _base, .len = 0x100, \ 11944369c93cSDmitry Baryshkov .features = MERGE_3D_SM8150_MASK, \ 11954369c93cSDmitry Baryshkov .sblk = NULL \ 11964369c93cSDmitry Baryshkov } 11974369c93cSDmitry Baryshkov 11984369c93cSDmitry Baryshkov static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { 11994369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), 12004369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), 12014369c93cSDmitry Baryshkov MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), 1202386fced3SJonathan Marek }; 1203386fced3SJonathan Marek 1204591e34a0SKrishna Manikandan static const struct dpu_pingpong_cfg sc7280_pp[] = { 1205667e9985SDmitry Baryshkov PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), 1206667e9985SDmitry Baryshkov PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), 1207667e9985SDmitry Baryshkov PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), 1208667e9985SDmitry Baryshkov PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), 1209591e34a0SKrishna Manikandan }; 12107c5ab05eSVinod Koul 12117c5ab05eSVinod Koul /************************************************************* 12127c5ab05eSVinod Koul * DSC sub blocks config 12137c5ab05eSVinod Koul *************************************************************/ 12147c5ab05eSVinod Koul #define DSC_BLK(_name, _id, _base) \ 12157c5ab05eSVinod Koul {\ 12167c5ab05eSVinod Koul .name = _name, .id = _id, \ 12177c5ab05eSVinod Koul .base = _base, .len = 0x140, \ 12187c5ab05eSVinod Koul .features = 0, \ 12197c5ab05eSVinod Koul } 12207c5ab05eSVinod Koul 12217c5ab05eSVinod Koul static struct dpu_dsc_cfg sdm845_dsc[] = { 12227c5ab05eSVinod Koul DSC_BLK("dsc_0", DSC_0, 0x80000), 12237c5ab05eSVinod Koul DSC_BLK("dsc_1", DSC_1, 0x80400), 12247c5ab05eSVinod Koul DSC_BLK("dsc_2", DSC_2, 0x80800), 12257c5ab05eSVinod Koul DSC_BLK("dsc_3", DSC_3, 0x80c00), 12267c5ab05eSVinod Koul }; 12277c5ab05eSVinod Koul 122825fdd593SJeykumar Sankaran /************************************************************* 122925fdd593SJeykumar Sankaran * INTF sub blocks config 123025fdd593SJeykumar Sankaran *************************************************************/ 1231667e9985SDmitry Baryshkov #define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _progfetch, _features, _reg, _underrun_bit, _vsync_bit) \ 123225fdd593SJeykumar Sankaran {\ 123325fdd593SJeykumar Sankaran .name = _name, .id = _id, \ 123425fdd593SJeykumar Sankaran .base = _base, .len = 0x280, \ 1235cace3ac4SJonathan Marek .features = _features, \ 123625fdd593SJeykumar Sankaran .type = _type, \ 123725fdd593SJeykumar Sankaran .controller_id = _ctrl_id, \ 1238667e9985SDmitry Baryshkov .prog_fetch_lines_worst_case = _progfetch, \ 1239667e9985SDmitry Baryshkov .intr_underrun = DPU_IRQ_IDX(_reg, _underrun_bit), \ 1240667e9985SDmitry Baryshkov .intr_vsync = DPU_IRQ_IDX(_reg, _vsync_bit), \ 124125fdd593SJeykumar Sankaran } 124225fdd593SJeykumar Sankaran 124394391a14SAngeloGioacchino Del Regno static const struct dpu_intf_cfg msm8998_intf[] = { 124494391a14SAngeloGioacchino Del Regno INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 124594391a14SAngeloGioacchino Del Regno INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 124694391a14SAngeloGioacchino Del Regno INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 124794391a14SAngeloGioacchino Del Regno INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_HDMI, 0, 25, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 124894391a14SAngeloGioacchino Del Regno }; 124994391a14SAngeloGioacchino Del Regno 1250abda0d92SStephen Boyd static const struct dpu_intf_cfg sdm845_intf[] = { 1251667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1252667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1253667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1254667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SDM845_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 125525fdd593SJeykumar Sankaran }; 125625fdd593SJeykumar Sankaran 12577bdc0c4bSKalyan Thota static const struct dpu_intf_cfg sc7180_intf[] = { 1258bb3de286SBjorn Andersson INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1259667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 12607bdc0c4bSKalyan Thota }; 12617bdc0c4bSKalyan Thota 1262386fced3SJonathan Marek static const struct dpu_intf_cfg sm8150_intf[] = { 1263667e9985SDmitry Baryshkov INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1264667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1265667e9985SDmitry Baryshkov INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1266667e9985SDmitry Baryshkov INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1267386fced3SJonathan Marek }; 1268386fced3SJonathan Marek 1269591e34a0SKrishna Manikandan static const struct dpu_intf_cfg sc7280_intf[] = { 1270ef7837ffSSankeerth Billakanti INTF_BLK("intf_0", INTF_0, 0x34000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1271667e9985SDmitry Baryshkov INTF_BLK("intf_1", INTF_1, 0x35000, INTF_DSI, 0, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1272ef7837ffSSankeerth Billakanti INTF_BLK("intf_5", INTF_5, 0x39000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7280_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1273591e34a0SKrishna Manikandan }; 1274591e34a0SKrishna Manikandan 1275f3af2d6eSRob Clark static const struct dpu_intf_cfg sc8180x_intf[] = { 1276f3af2d6eSRob Clark INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 24, 25), 1277f3af2d6eSRob Clark INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 1278f3af2d6eSRob Clark INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 28, 29), 1279f3af2d6eSRob Clark /* INTF_3 is for MST, wired to INTF_DP 0 and 1, use dummy index until this is supported */ 1280f3af2d6eSRob Clark INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 999, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 30, 31), 1281f3af2d6eSRob Clark INTF_BLK("intf_4", INTF_4, 0x6C000, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 20, 21), 1282f3af2d6eSRob Clark INTF_BLK("intf_5", INTF_5, 0x6C800, INTF_DP, MSM_DP_CONTROLLER_2, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 22, 23), 1283f3af2d6eSRob Clark }; 1284f3af2d6eSRob Clark 12855334087eSLoic Poulain static const struct dpu_intf_cfg qcm2290_intf[] = { 12865334087eSLoic Poulain INTF_BLK("intf_0", INTF_0, 0x00000, INTF_NONE, 0, 0, 0, 0, 0, 0), 12875334087eSLoic Poulain INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, 24, INTF_SC7180_MASK, MDP_SSPP_TOP0_INTR, 26, 27), 12885334087eSLoic Poulain }; 12895334087eSLoic Poulain 129025fdd593SJeykumar Sankaran /************************************************************* 129153324b99SAbhinav Kumar * Writeback blocks config 129253324b99SAbhinav Kumar *************************************************************/ 129353324b99SAbhinav Kumar #define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ 1294a370cc39SAbhinav Kumar __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ 129553324b99SAbhinav Kumar { \ 129653324b99SAbhinav Kumar .name = _name, .id = _id, \ 129753324b99SAbhinav Kumar .base = _base, .len = 0x2c8, \ 129853324b99SAbhinav Kumar .features = _features, \ 129953324b99SAbhinav Kumar .format_list = wb2_formats, \ 130053324b99SAbhinav Kumar .num_formats = ARRAY_SIZE(wb2_formats), \ 130153324b99SAbhinav Kumar .clk_ctrl = _clk_ctrl, \ 130253324b99SAbhinav Kumar .xin_id = __xin_id, \ 130353324b99SAbhinav Kumar .vbif_idx = vbif_id, \ 1304a370cc39SAbhinav Kumar .maxlinewidth = _max_linewidth, \ 130553324b99SAbhinav Kumar .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ 130653324b99SAbhinav Kumar } 130753324b99SAbhinav Kumar 130853324b99SAbhinav Kumar static const struct dpu_wb_cfg sm8250_wb[] = { 130953324b99SAbhinav Kumar WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, 1310a370cc39SAbhinav Kumar VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), 131153324b99SAbhinav Kumar }; 131253324b99SAbhinav Kumar 131353324b99SAbhinav Kumar /************************************************************* 131425fdd593SJeykumar Sankaran * VBIF sub blocks config 131525fdd593SJeykumar Sankaran *************************************************************/ 131625fdd593SJeykumar Sankaran /* VBIF QOS remap */ 131794391a14SAngeloGioacchino Del Regno static const u32 msm8998_rt_pri_lvl[] = {1, 2, 2, 2}; 131894391a14SAngeloGioacchino Del Regno static const u32 msm8998_nrt_pri_lvl[] = {1, 1, 1, 1}; 1319abda0d92SStephen Boyd static const u32 sdm845_rt_pri_lvl[] = {3, 3, 4, 4, 5, 5, 6, 6}; 1320abda0d92SStephen Boyd static const u32 sdm845_nrt_pri_lvl[] = {3, 3, 3, 3, 3, 3, 3, 3}; 132125fdd593SJeykumar Sankaran 132294391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_dynamic_ot_cfg msm8998_ot_rdwr_cfg[] = { 132394391a14SAngeloGioacchino Del Regno { 132494391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 30, 132594391a14SAngeloGioacchino Del Regno .ot_limit = 2, 132694391a14SAngeloGioacchino Del Regno }, 132794391a14SAngeloGioacchino Del Regno { 132894391a14SAngeloGioacchino Del Regno .pps = 1088 * 1920 * 60, 132994391a14SAngeloGioacchino Del Regno .ot_limit = 6, 133094391a14SAngeloGioacchino Del Regno }, 133194391a14SAngeloGioacchino Del Regno { 133294391a14SAngeloGioacchino Del Regno .pps = 3840 * 2160 * 30, 133394391a14SAngeloGioacchino Del Regno .ot_limit = 16, 133494391a14SAngeloGioacchino Del Regno }, 133594391a14SAngeloGioacchino Del Regno }; 133694391a14SAngeloGioacchino Del Regno 133794391a14SAngeloGioacchino Del Regno static const struct dpu_vbif_cfg msm8998_vbif[] = { 133894391a14SAngeloGioacchino Del Regno { 1339606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 134094391a14SAngeloGioacchino Del Regno .base = 0, .len = 0x1040, 134194391a14SAngeloGioacchino Del Regno .default_ot_rd_limit = 32, 134294391a14SAngeloGioacchino Del Regno .default_ot_wr_limit = 32, 134394391a14SAngeloGioacchino Del Regno .features = BIT(DPU_VBIF_QOS_REMAP) | BIT(DPU_VBIF_QOS_OTLIM), 134494391a14SAngeloGioacchino Del Regno .xin_halt_timeout = 0x4000, 1345c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x20, 134694391a14SAngeloGioacchino Del Regno .dynamic_ot_rd_tbl = { 134794391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 134894391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 134994391a14SAngeloGioacchino Del Regno }, 135094391a14SAngeloGioacchino Del Regno .dynamic_ot_wr_tbl = { 135194391a14SAngeloGioacchino Del Regno .count = ARRAY_SIZE(msm8998_ot_rdwr_cfg), 135294391a14SAngeloGioacchino Del Regno .cfg = msm8998_ot_rdwr_cfg, 135394391a14SAngeloGioacchino Del Regno }, 135494391a14SAngeloGioacchino Del Regno .qos_rt_tbl = { 135594391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_rt_pri_lvl), 135694391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_rt_pri_lvl, 135794391a14SAngeloGioacchino Del Regno }, 135894391a14SAngeloGioacchino Del Regno .qos_nrt_tbl = { 135994391a14SAngeloGioacchino Del Regno .npriority_lvl = ARRAY_SIZE(msm8998_nrt_pri_lvl), 136094391a14SAngeloGioacchino Del Regno .priority_lvl = msm8998_nrt_pri_lvl, 136194391a14SAngeloGioacchino Del Regno }, 136294391a14SAngeloGioacchino Del Regno .memtype_count = 14, 136394391a14SAngeloGioacchino Del Regno .memtype = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, 136494391a14SAngeloGioacchino Del Regno }, 136594391a14SAngeloGioacchino Del Regno }; 136694391a14SAngeloGioacchino Del Regno 1367abda0d92SStephen Boyd static const struct dpu_vbif_cfg sdm845_vbif[] = { 136825fdd593SJeykumar Sankaran { 1369606f015bSDmitry Baryshkov .name = "vbif_rt", .id = VBIF_RT, 137025fdd593SJeykumar Sankaran .base = 0, .len = 0x1040, 137125fdd593SJeykumar Sankaran .features = BIT(DPU_VBIF_QOS_REMAP), 137225fdd593SJeykumar Sankaran .xin_halt_timeout = 0x4000, 1373c8744315SDmitry Baryshkov .qos_rp_remap_size = 0x40, 137425fdd593SJeykumar Sankaran .qos_rt_tbl = { 137525fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_rt_pri_lvl), 137625fdd593SJeykumar Sankaran .priority_lvl = sdm845_rt_pri_lvl, 137725fdd593SJeykumar Sankaran }, 137825fdd593SJeykumar Sankaran .qos_nrt_tbl = { 137925fdd593SJeykumar Sankaran .npriority_lvl = ARRAY_SIZE(sdm845_nrt_pri_lvl), 138025fdd593SJeykumar Sankaran .priority_lvl = sdm845_nrt_pri_lvl, 138125fdd593SJeykumar Sankaran }, 138225fdd593SJeykumar Sankaran .memtype_count = 14, 138325fdd593SJeykumar Sankaran .memtype = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, 138425fdd593SJeykumar Sankaran }, 138525fdd593SJeykumar Sankaran }; 138625fdd593SJeykumar Sankaran 1387abda0d92SStephen Boyd static const struct dpu_reg_dma_cfg sdm845_regdma = { 138825fdd593SJeykumar Sankaran .base = 0x0, .version = 0x1, .trigger_sel_off = 0x119c 138925fdd593SJeykumar Sankaran }; 139025fdd593SJeykumar Sankaran 1391386fced3SJonathan Marek static const struct dpu_reg_dma_cfg sm8150_regdma = { 1392386fced3SJonathan Marek .base = 0x0, .version = 0x00010001, .trigger_sel_off = 0x119c 1393386fced3SJonathan Marek }; 1394386fced3SJonathan Marek 1395af776a3eSJonathan Marek static const struct dpu_reg_dma_cfg sm8250_regdma = { 1396af776a3eSJonathan Marek .base = 0x0, 1397af776a3eSJonathan Marek .version = 0x00010002, 1398af776a3eSJonathan Marek .trigger_sel_off = 0x119c, 1399af776a3eSJonathan Marek .xin_id = 7, 1400af776a3eSJonathan Marek .clk_ctrl = DPU_CLK_CTRL_REG_DMA, 1401af776a3eSJonathan Marek }; 1402af776a3eSJonathan Marek 140325fdd593SJeykumar Sankaran /************************************************************* 140425fdd593SJeykumar Sankaran * PERF data config 140525fdd593SJeykumar Sankaran *************************************************************/ 140625fdd593SJeykumar Sankaran 140725fdd593SJeykumar Sankaran /* SSPP QOS LUTs */ 140894391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_linear[] = { 140994391a14SAngeloGioacchino Del Regno {.fl = 4, .lut = 0x1b}, 141094391a14SAngeloGioacchino Del Regno {.fl = 5, .lut = 0x5b}, 141194391a14SAngeloGioacchino Del Regno {.fl = 6, .lut = 0x15b}, 141294391a14SAngeloGioacchino Del Regno {.fl = 7, .lut = 0x55b}, 141394391a14SAngeloGioacchino Del Regno {.fl = 8, .lut = 0x155b}, 141494391a14SAngeloGioacchino Del Regno {.fl = 9, .lut = 0x555b}, 141594391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1555b}, 141694391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5555b}, 141794391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15555b}, 141894391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55555b}, 141994391a14SAngeloGioacchino Del Regno {.fl = 14, .lut = 0}, 142094391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1b}, 142194391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0} 142294391a14SAngeloGioacchino Del Regno }; 142394391a14SAngeloGioacchino Del Regno 1424abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_linear[] = { 142525fdd593SJeykumar Sankaran {.fl = 4, .lut = 0x357}, 142625fdd593SJeykumar Sankaran {.fl = 5, .lut = 0x3357}, 142725fdd593SJeykumar Sankaran {.fl = 6, .lut = 0x23357}, 142825fdd593SJeykumar Sankaran {.fl = 7, .lut = 0x223357}, 142925fdd593SJeykumar Sankaran {.fl = 8, .lut = 0x2223357}, 143025fdd593SJeykumar Sankaran {.fl = 9, .lut = 0x22223357}, 143125fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x222223357}, 143225fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x2222223357}, 143325fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x22222223357}, 143425fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x222222223357}, 143525fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1222222223357}, 143625fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x11222222223357} 143725fdd593SJeykumar Sankaran }; 143825fdd593SJeykumar Sankaran 143994391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_macrotile[] = { 144094391a14SAngeloGioacchino Del Regno {.fl = 10, .lut = 0x1aaff}, 144194391a14SAngeloGioacchino Del Regno {.fl = 11, .lut = 0x5aaff}, 144294391a14SAngeloGioacchino Del Regno {.fl = 12, .lut = 0x15aaff}, 144394391a14SAngeloGioacchino Del Regno {.fl = 13, .lut = 0x55aaff}, 144494391a14SAngeloGioacchino Del Regno {.fl = 1, .lut = 0x1aaff}, 144594391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0}, 144694391a14SAngeloGioacchino Del Regno }; 144794391a14SAngeloGioacchino Del Regno 14487bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_linear[] = { 14497bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011222222335777}, 14507bdc0c4bSKalyan Thota }; 14517bdc0c4bSKalyan Thota 1452386fced3SJonathan Marek static const struct dpu_qos_lut_entry sm8150_qos_linear[] = { 1453386fced3SJonathan Marek {.fl = 0, .lut = 0x0011222222223357 }, 1454386fced3SJonathan Marek }; 1455386fced3SJonathan Marek 1456f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_linear[] = { 1457f3af2d6eSRob Clark {.fl = 4, .lut = 0x0000000000000357 }, 1458f3af2d6eSRob Clark }; 1459f3af2d6eSRob Clark 14605334087eSLoic Poulain static const struct dpu_qos_lut_entry qcm2290_qos_linear[] = { 14615334087eSLoic Poulain {.fl = 0, .lut = 0x0011222222335777}, 14625334087eSLoic Poulain }; 14635334087eSLoic Poulain 1464abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_macrotile[] = { 146525fdd593SJeykumar Sankaran {.fl = 10, .lut = 0x344556677}, 146625fdd593SJeykumar Sankaran {.fl = 11, .lut = 0x3344556677}, 146725fdd593SJeykumar Sankaran {.fl = 12, .lut = 0x23344556677}, 146825fdd593SJeykumar Sankaran {.fl = 13, .lut = 0x223344556677}, 146925fdd593SJeykumar Sankaran {.fl = 14, .lut = 0x1223344556677}, 147025fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x112233344556677}, 147125fdd593SJeykumar Sankaran }; 147225fdd593SJeykumar Sankaran 14737bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_macrotile[] = { 14747bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0011223344556677}, 14757bdc0c4bSKalyan Thota }; 14767bdc0c4bSKalyan Thota 1477f3af2d6eSRob Clark static const struct dpu_qos_lut_entry sc8180x_qos_macrotile[] = { 1478f3af2d6eSRob Clark {.fl = 10, .lut = 0x0000000344556677}, 1479f3af2d6eSRob Clark }; 1480f3af2d6eSRob Clark 148194391a14SAngeloGioacchino Del Regno static const struct dpu_qos_lut_entry msm8998_qos_nrt[] = { 148294391a14SAngeloGioacchino Del Regno {.fl = 0, .lut = 0x0}, 148394391a14SAngeloGioacchino Del Regno }; 148494391a14SAngeloGioacchino Del Regno 1485abda0d92SStephen Boyd static const struct dpu_qos_lut_entry sdm845_qos_nrt[] = { 148625fdd593SJeykumar Sankaran {.fl = 0, .lut = 0x0}, 148725fdd593SJeykumar Sankaran }; 148825fdd593SJeykumar Sankaran 14897bdc0c4bSKalyan Thota static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = { 14907bdc0c4bSKalyan Thota {.fl = 0, .lut = 0x0}, 14917bdc0c4bSKalyan Thota }; 14927bdc0c4bSKalyan Thota 149394391a14SAngeloGioacchino Del Regno static const struct dpu_perf_cfg msm8998_perf_data = { 149494391a14SAngeloGioacchino Del Regno .max_bw_low = 6700000, 149594391a14SAngeloGioacchino Del Regno .max_bw_high = 6700000, 149694391a14SAngeloGioacchino Del Regno .min_core_ib = 2400000, 149794391a14SAngeloGioacchino Del Regno .min_llcc_ib = 800000, 149894391a14SAngeloGioacchino Del Regno .min_dram_ib = 800000, 149994391a14SAngeloGioacchino Del Regno .undersized_prefill_lines = 2, 150094391a14SAngeloGioacchino Del Regno .xtra_prefill_lines = 2, 150194391a14SAngeloGioacchino Del Regno .dest_scale_prefill_lines = 3, 150294391a14SAngeloGioacchino Del Regno .macrotile_prefill_lines = 4, 150394391a14SAngeloGioacchino Del Regno .yuv_nv12_prefill_lines = 8, 150494391a14SAngeloGioacchino Del Regno .linear_prefill_lines = 1, 150594391a14SAngeloGioacchino Del Regno .downscaling_prefill_lines = 1, 150694391a14SAngeloGioacchino Del Regno .amortizable_threshold = 25, 150794391a14SAngeloGioacchino Del Regno .min_prefill_lines = 25, 150894391a14SAngeloGioacchino Del Regno .danger_lut_tbl = {0xf, 0xffff, 0x0}, 150994391a14SAngeloGioacchino Del Regno .safe_lut_tbl = {0xfffc, 0xff00, 0xffff}, 151094391a14SAngeloGioacchino Del Regno .qos_lut_tbl = { 151194391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_linear), 151294391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_linear 151394391a14SAngeloGioacchino Del Regno }, 151494391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_macrotile), 151594391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_macrotile 151694391a14SAngeloGioacchino Del Regno }, 151794391a14SAngeloGioacchino Del Regno {.nentry = ARRAY_SIZE(msm8998_qos_nrt), 151894391a14SAngeloGioacchino Del Regno .entries = msm8998_qos_nrt 151994391a14SAngeloGioacchino Del Regno }, 152094391a14SAngeloGioacchino Del Regno }, 152194391a14SAngeloGioacchino Del Regno .cdp_cfg = { 152294391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 1}, 152394391a14SAngeloGioacchino Del Regno {.rd_enable = 1, .wr_enable = 0} 152494391a14SAngeloGioacchino Del Regno }, 152594391a14SAngeloGioacchino Del Regno .clk_inefficiency_factor = 200, 152694391a14SAngeloGioacchino Del Regno .bw_inefficiency_factor = 120, 152794391a14SAngeloGioacchino Del Regno }; 152894391a14SAngeloGioacchino Del Regno 1529abda0d92SStephen Boyd static const struct dpu_perf_cfg sdm845_perf_data = { 153025fdd593SJeykumar Sankaran .max_bw_low = 6800000, 153125fdd593SJeykumar Sankaran .max_bw_high = 6800000, 153225fdd593SJeykumar Sankaran .min_core_ib = 2400000, 153325fdd593SJeykumar Sankaran .min_llcc_ib = 800000, 153425fdd593SJeykumar Sankaran .min_dram_ib = 800000, 153525fdd593SJeykumar Sankaran .undersized_prefill_lines = 2, 153625fdd593SJeykumar Sankaran .xtra_prefill_lines = 2, 153725fdd593SJeykumar Sankaran .dest_scale_prefill_lines = 3, 153825fdd593SJeykumar Sankaran .macrotile_prefill_lines = 4, 153925fdd593SJeykumar Sankaran .yuv_nv12_prefill_lines = 8, 154025fdd593SJeykumar Sankaran .linear_prefill_lines = 1, 154125fdd593SJeykumar Sankaran .downscaling_prefill_lines = 1, 154225fdd593SJeykumar Sankaran .amortizable_threshold = 25, 154325fdd593SJeykumar Sankaran .min_prefill_lines = 24, 154425fdd593SJeykumar Sankaran .danger_lut_tbl = {0xf, 0xffff, 0x0}, 15455bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xf000, 0xffff}, 154625fdd593SJeykumar Sankaran .qos_lut_tbl = { 154725fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_linear), 154825fdd593SJeykumar Sankaran .entries = sdm845_qos_linear 154925fdd593SJeykumar Sankaran }, 155025fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_macrotile), 155125fdd593SJeykumar Sankaran .entries = sdm845_qos_macrotile 155225fdd593SJeykumar Sankaran }, 155325fdd593SJeykumar Sankaran {.nentry = ARRAY_SIZE(sdm845_qos_nrt), 155425fdd593SJeykumar Sankaran .entries = sdm845_qos_nrt 155525fdd593SJeykumar Sankaran }, 155625fdd593SJeykumar Sankaran }, 155725fdd593SJeykumar Sankaran .cdp_cfg = { 155825fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 1}, 155925fdd593SJeykumar Sankaran {.rd_enable = 1, .wr_enable = 0} 156025fdd593SJeykumar Sankaran }, 15614f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 15624f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 156325fdd593SJeykumar Sankaran }; 156425fdd593SJeykumar Sankaran 15657bdc0c4bSKalyan Thota static const struct dpu_perf_cfg sc7180_perf_data = { 156671dc6c08SKrishna Manikandan .max_bw_low = 6800000, 156771dc6c08SKrishna Manikandan .max_bw_high = 6800000, 15687bdc0c4bSKalyan Thota .min_core_ib = 2400000, 15697bdc0c4bSKalyan Thota .min_llcc_ib = 800000, 1570c33b7c03SKalyan Thota .min_dram_ib = 1600000, 1571c33b7c03SKalyan Thota .min_prefill_lines = 24, 15727bdc0c4bSKalyan Thota .danger_lut_tbl = {0xff, 0xffff, 0x0}, 15735bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 15747bdc0c4bSKalyan Thota .qos_lut_tbl = { 15757bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_linear), 15767bdc0c4bSKalyan Thota .entries = sc7180_qos_linear 15777bdc0c4bSKalyan Thota }, 15787bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 15797bdc0c4bSKalyan Thota .entries = sc7180_qos_macrotile 15807bdc0c4bSKalyan Thota }, 15817bdc0c4bSKalyan Thota {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 15827bdc0c4bSKalyan Thota .entries = sc7180_qos_nrt 15837bdc0c4bSKalyan Thota }, 15847bdc0c4bSKalyan Thota }, 15857bdc0c4bSKalyan Thota .cdp_cfg = { 15867bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 1}, 15877bdc0c4bSKalyan Thota {.rd_enable = 1, .wr_enable = 0} 15887bdc0c4bSKalyan Thota }, 1589c33b7c03SKalyan Thota .clk_inefficiency_factor = 105, 1590c33b7c03SKalyan Thota .bw_inefficiency_factor = 120, 15917bdc0c4bSKalyan Thota }; 15927bdc0c4bSKalyan Thota 1593386fced3SJonathan Marek static const struct dpu_perf_cfg sm8150_perf_data = { 1594386fced3SJonathan Marek .max_bw_low = 12800000, 1595386fced3SJonathan Marek .max_bw_high = 12800000, 1596386fced3SJonathan Marek .min_core_ib = 2400000, 1597386fced3SJonathan Marek .min_llcc_ib = 800000, 1598386fced3SJonathan Marek .min_dram_ib = 800000, 15994f2c9838SDmitry Baryshkov .min_prefill_lines = 24, 1600386fced3SJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 16015bccb945SKalyan Thota .safe_lut_tbl = {0xfff8, 0xf000, 0xffff}, 1602386fced3SJonathan Marek .qos_lut_tbl = { 1603386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sm8150_qos_linear), 1604386fced3SJonathan Marek .entries = sm8150_qos_linear 1605386fced3SJonathan Marek }, 1606386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1607386fced3SJonathan Marek .entries = sc7180_qos_macrotile 1608386fced3SJonathan Marek }, 1609386fced3SJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1610386fced3SJonathan Marek .entries = sc7180_qos_nrt 1611386fced3SJonathan Marek }, 1612386fced3SJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1613386fced3SJonathan Marek }, 1614386fced3SJonathan Marek .cdp_cfg = { 1615386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1616386fced3SJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1617386fced3SJonathan Marek }, 16184f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 16194f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1620386fced3SJonathan Marek }; 1621386fced3SJonathan Marek 1622f3af2d6eSRob Clark static const struct dpu_perf_cfg sc8180x_perf_data = { 1623f3af2d6eSRob Clark .max_bw_low = 9600000, 1624f3af2d6eSRob Clark .max_bw_high = 9600000, 1625f3af2d6eSRob Clark .min_core_ib = 2400000, 1626f3af2d6eSRob Clark .min_llcc_ib = 800000, 1627f3af2d6eSRob Clark .min_dram_ib = 800000, 1628f3af2d6eSRob Clark .danger_lut_tbl = {0xf, 0xffff, 0x0}, 1629f3af2d6eSRob Clark .qos_lut_tbl = { 1630f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_linear), 1631f3af2d6eSRob Clark .entries = sc8180x_qos_linear 1632f3af2d6eSRob Clark }, 1633f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc8180x_qos_macrotile), 1634f3af2d6eSRob Clark .entries = sc8180x_qos_macrotile 1635f3af2d6eSRob Clark }, 1636f3af2d6eSRob Clark {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1637f3af2d6eSRob Clark .entries = sc7180_qos_nrt 1638f3af2d6eSRob Clark }, 1639f3af2d6eSRob Clark /* TODO: macrotile-qseed is different from macrotile */ 1640f3af2d6eSRob Clark }, 1641f3af2d6eSRob Clark .cdp_cfg = { 1642f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 1}, 1643f3af2d6eSRob Clark {.rd_enable = 1, .wr_enable = 0} 1644f3af2d6eSRob Clark }, 1645f3af2d6eSRob Clark .clk_inefficiency_factor = 105, 1646f3af2d6eSRob Clark .bw_inefficiency_factor = 120, 1647f3af2d6eSRob Clark }; 1648f3af2d6eSRob Clark 1649af776a3eSJonathan Marek static const struct dpu_perf_cfg sm8250_perf_data = { 1650af776a3eSJonathan Marek .max_bw_low = 13700000, 1651af776a3eSJonathan Marek .max_bw_high = 16600000, 1652af776a3eSJonathan Marek .min_core_ib = 4800000, 1653af776a3eSJonathan Marek .min_llcc_ib = 0, 1654af776a3eSJonathan Marek .min_dram_ib = 800000, 16554f2c9838SDmitry Baryshkov .min_prefill_lines = 35, 1656af776a3eSJonathan Marek .danger_lut_tbl = {0xf, 0xffff, 0x0}, 16575bccb945SKalyan Thota .safe_lut_tbl = {0xfff0, 0xff00, 0xffff}, 1658af776a3eSJonathan Marek .qos_lut_tbl = { 1659af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_linear), 1660af776a3eSJonathan Marek .entries = sc7180_qos_linear 1661af776a3eSJonathan Marek }, 1662af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1663af776a3eSJonathan Marek .entries = sc7180_qos_macrotile 1664af776a3eSJonathan Marek }, 1665af776a3eSJonathan Marek {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1666af776a3eSJonathan Marek .entries = sc7180_qos_nrt 1667af776a3eSJonathan Marek }, 1668af776a3eSJonathan Marek /* TODO: macrotile-qseed is different from macrotile */ 1669af776a3eSJonathan Marek }, 1670af776a3eSJonathan Marek .cdp_cfg = { 1671af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 1}, 1672af776a3eSJonathan Marek {.rd_enable = 1, .wr_enable = 0} 1673af776a3eSJonathan Marek }, 16744f2c9838SDmitry Baryshkov .clk_inefficiency_factor = 105, 16754f2c9838SDmitry Baryshkov .bw_inefficiency_factor = 120, 1676af776a3eSJonathan Marek }; 1677af776a3eSJonathan Marek 1678591e34a0SKrishna Manikandan static const struct dpu_perf_cfg sc7280_perf_data = { 1679591e34a0SKrishna Manikandan .max_bw_low = 4700000, 1680591e34a0SKrishna Manikandan .max_bw_high = 8800000, 1681591e34a0SKrishna Manikandan .min_core_ib = 2500000, 1682591e34a0SKrishna Manikandan .min_llcc_ib = 0, 1683591e34a0SKrishna Manikandan .min_dram_ib = 1600000, 1684591e34a0SKrishna Manikandan .min_prefill_lines = 24, 1685591e34a0SKrishna Manikandan .danger_lut_tbl = {0xffff, 0xffff, 0x0}, 16865bccb945SKalyan Thota .safe_lut_tbl = {0xff00, 0xff00, 0xffff}, 1687591e34a0SKrishna Manikandan .qos_lut_tbl = { 1688591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1689591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 1690591e34a0SKrishna Manikandan }, 1691591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_macrotile), 1692591e34a0SKrishna Manikandan .entries = sc7180_qos_macrotile 1693591e34a0SKrishna Manikandan }, 1694591e34a0SKrishna Manikandan {.nentry = ARRAY_SIZE(sc7180_qos_nrt), 1695591e34a0SKrishna Manikandan .entries = sc7180_qos_nrt 1696591e34a0SKrishna Manikandan }, 1697591e34a0SKrishna Manikandan }, 1698591e34a0SKrishna Manikandan .cdp_cfg = { 1699591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 1}, 1700591e34a0SKrishna Manikandan {.rd_enable = 1, .wr_enable = 0} 1701591e34a0SKrishna Manikandan }, 1702591e34a0SKrishna Manikandan .clk_inefficiency_factor = 105, 1703591e34a0SKrishna Manikandan .bw_inefficiency_factor = 120, 1704591e34a0SKrishna Manikandan }; 1705591e34a0SKrishna Manikandan 17065334087eSLoic Poulain static const struct dpu_perf_cfg qcm2290_perf_data = { 17075334087eSLoic Poulain .max_bw_low = 2700000, 17085334087eSLoic Poulain .max_bw_high = 2700000, 17095334087eSLoic Poulain .min_core_ib = 1300000, 17105334087eSLoic Poulain .min_llcc_ib = 0, 17115334087eSLoic Poulain .min_dram_ib = 1600000, 17125334087eSLoic Poulain .min_prefill_lines = 24, 17135334087eSLoic Poulain .danger_lut_tbl = {0xff, 0x0, 0x0}, 17145334087eSLoic Poulain .safe_lut_tbl = {0xfff0, 0x0, 0x0}, 17155334087eSLoic Poulain .qos_lut_tbl = { 17165334087eSLoic Poulain {.nentry = ARRAY_SIZE(qcm2290_qos_linear), 17175334087eSLoic Poulain .entries = qcm2290_qos_linear 17185334087eSLoic Poulain }, 17195334087eSLoic Poulain }, 17205334087eSLoic Poulain .cdp_cfg = { 17215334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 1}, 17225334087eSLoic Poulain {.rd_enable = 1, .wr_enable = 0} 17235334087eSLoic Poulain }, 17245334087eSLoic Poulain .clk_inefficiency_factor = 105, 17255334087eSLoic Poulain .bw_inefficiency_factor = 120, 17265334087eSLoic Poulain }; 172725fdd593SJeykumar Sankaran /************************************************************* 1728de7d480fSDmitry Baryshkov * Hardware catalog 172925fdd593SJeykumar Sankaran *************************************************************/ 173025fdd593SJeykumar Sankaran 1731de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg msm8998_dpu_cfg = { 173294391a14SAngeloGioacchino Del Regno .caps = &msm8998_dpu_caps, 173394391a14SAngeloGioacchino Del Regno .mdp_count = ARRAY_SIZE(msm8998_mdp), 173494391a14SAngeloGioacchino Del Regno .mdp = msm8998_mdp, 173594391a14SAngeloGioacchino Del Regno .ctl_count = ARRAY_SIZE(msm8998_ctl), 173694391a14SAngeloGioacchino Del Regno .ctl = msm8998_ctl, 173794391a14SAngeloGioacchino Del Regno .sspp_count = ARRAY_SIZE(msm8998_sspp), 173894391a14SAngeloGioacchino Del Regno .sspp = msm8998_sspp, 173994391a14SAngeloGioacchino Del Regno .mixer_count = ARRAY_SIZE(msm8998_lm), 174094391a14SAngeloGioacchino Del Regno .mixer = msm8998_lm, 17416452cbd6SDmitry Baryshkov .dspp_count = ARRAY_SIZE(msm8998_dspp), 17426452cbd6SDmitry Baryshkov .dspp = msm8998_dspp, 174394391a14SAngeloGioacchino Del Regno .pingpong_count = ARRAY_SIZE(sdm845_pp), 174494391a14SAngeloGioacchino Del Regno .pingpong = sdm845_pp, 174594391a14SAngeloGioacchino Del Regno .intf_count = ARRAY_SIZE(msm8998_intf), 174694391a14SAngeloGioacchino Del Regno .intf = msm8998_intf, 174794391a14SAngeloGioacchino Del Regno .vbif_count = ARRAY_SIZE(msm8998_vbif), 174894391a14SAngeloGioacchino Del Regno .vbif = msm8998_vbif, 174994391a14SAngeloGioacchino Del Regno .reg_dma_count = 0, 1750477db4feSDmitry Baryshkov .perf = &msm8998_perf_data, 175194391a14SAngeloGioacchino Del Regno .mdss_irqs = IRQ_SM8250_MASK, 175294391a14SAngeloGioacchino Del Regno }; 175394391a14SAngeloGioacchino Del Regno 1754de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sdm845_dpu_cfg = { 175525fdd593SJeykumar Sankaran .caps = &sdm845_dpu_caps, 175625fdd593SJeykumar Sankaran .mdp_count = ARRAY_SIZE(sdm845_mdp), 175725fdd593SJeykumar Sankaran .mdp = sdm845_mdp, 175825fdd593SJeykumar Sankaran .ctl_count = ARRAY_SIZE(sdm845_ctl), 175925fdd593SJeykumar Sankaran .ctl = sdm845_ctl, 176025fdd593SJeykumar Sankaran .sspp_count = ARRAY_SIZE(sdm845_sspp), 176125fdd593SJeykumar Sankaran .sspp = sdm845_sspp, 176225fdd593SJeykumar Sankaran .mixer_count = ARRAY_SIZE(sdm845_lm), 176325fdd593SJeykumar Sankaran .mixer = sdm845_lm, 176425fdd593SJeykumar Sankaran .pingpong_count = ARRAY_SIZE(sdm845_pp), 176525fdd593SJeykumar Sankaran .pingpong = sdm845_pp, 17667c5ab05eSVinod Koul .dsc_count = ARRAY_SIZE(sdm845_dsc), 17677c5ab05eSVinod Koul .dsc = sdm845_dsc, 176825fdd593SJeykumar Sankaran .intf_count = ARRAY_SIZE(sdm845_intf), 176925fdd593SJeykumar Sankaran .intf = sdm845_intf, 177025fdd593SJeykumar Sankaran .vbif_count = ARRAY_SIZE(sdm845_vbif), 177125fdd593SJeykumar Sankaran .vbif = sdm845_vbif, 177225fdd593SJeykumar Sankaran .reg_dma_count = 1, 1773481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1774477db4feSDmitry Baryshkov .perf = &sdm845_perf_data, 1775597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 177625fdd593SJeykumar Sankaran }; 177725fdd593SJeykumar Sankaran 1778de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7180_dpu_cfg = { 17797bdc0c4bSKalyan Thota .caps = &sc7180_dpu_caps, 17807bdc0c4bSKalyan Thota .mdp_count = ARRAY_SIZE(sc7180_mdp), 17817bdc0c4bSKalyan Thota .mdp = sc7180_mdp, 17827bdc0c4bSKalyan Thota .ctl_count = ARRAY_SIZE(sc7180_ctl), 17837bdc0c4bSKalyan Thota .ctl = sc7180_ctl, 17847bdc0c4bSKalyan Thota .sspp_count = ARRAY_SIZE(sc7180_sspp), 17857bdc0c4bSKalyan Thota .sspp = sc7180_sspp, 17867bdc0c4bSKalyan Thota .mixer_count = ARRAY_SIZE(sc7180_lm), 17877bdc0c4bSKalyan Thota .mixer = sc7180_lm, 1788e47616dfSKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 1789e47616dfSKalyan Thota .dspp = sc7180_dspp, 17907bdc0c4bSKalyan Thota .pingpong_count = ARRAY_SIZE(sc7180_pp), 17917bdc0c4bSKalyan Thota .pingpong = sc7180_pp, 17927bdc0c4bSKalyan Thota .intf_count = ARRAY_SIZE(sc7180_intf), 17937bdc0c4bSKalyan Thota .intf = sc7180_intf, 179451e4d60eSAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 179551e4d60eSAbhinav Kumar .wb = sm8250_wb, 17967bdc0c4bSKalyan Thota .vbif_count = ARRAY_SIZE(sdm845_vbif), 17977bdc0c4bSKalyan Thota .vbif = sdm845_vbif, 17987bdc0c4bSKalyan Thota .reg_dma_count = 1, 1799481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1800477db4feSDmitry Baryshkov .perf = &sc7180_perf_data, 1801597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7180_MASK, 18027bdc0c4bSKalyan Thota }; 18037bdc0c4bSKalyan Thota 1804de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8150_dpu_cfg = { 1805386fced3SJonathan Marek .caps = &sm8150_dpu_caps, 1806386fced3SJonathan Marek .mdp_count = ARRAY_SIZE(sdm845_mdp), 1807386fced3SJonathan Marek .mdp = sdm845_mdp, 1808386fced3SJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 1809386fced3SJonathan Marek .ctl = sm8150_ctl, 1810386fced3SJonathan Marek .sspp_count = ARRAY_SIZE(sdm845_sspp), 1811386fced3SJonathan Marek .sspp = sdm845_sspp, 1812386fced3SJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 1813386fced3SJonathan Marek .mixer = sm8150_lm, 181405ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 181505ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 1816386fced3SJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 1817386fced3SJonathan Marek .pingpong = sm8150_pp, 18184369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 18194369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 1820386fced3SJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 1821386fced3SJonathan Marek .intf = sm8150_intf, 1822386fced3SJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 1823386fced3SJonathan Marek .vbif = sdm845_vbif, 1824386fced3SJonathan Marek .reg_dma_count = 1, 1825481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 1826477db4feSDmitry Baryshkov .perf = &sm8150_perf_data, 1827597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SDM845_MASK, 1828386fced3SJonathan Marek }; 1829386fced3SJonathan Marek 1830de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc8180x_dpu_cfg = { 1831f3af2d6eSRob Clark .caps = &sc8180x_dpu_caps, 1832f3af2d6eSRob Clark .mdp_count = ARRAY_SIZE(sc8180x_mdp), 1833f3af2d6eSRob Clark .mdp = sc8180x_mdp, 1834f3af2d6eSRob Clark .ctl_count = ARRAY_SIZE(sm8150_ctl), 1835f3af2d6eSRob Clark .ctl = sm8150_ctl, 1836f3af2d6eSRob Clark .sspp_count = ARRAY_SIZE(sdm845_sspp), 1837f3af2d6eSRob Clark .sspp = sdm845_sspp, 1838f3af2d6eSRob Clark .mixer_count = ARRAY_SIZE(sm8150_lm), 1839f3af2d6eSRob Clark .mixer = sm8150_lm, 1840f3af2d6eSRob Clark .pingpong_count = ARRAY_SIZE(sm8150_pp), 1841f3af2d6eSRob Clark .pingpong = sm8150_pp, 1842f3af2d6eSRob Clark .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 1843f3af2d6eSRob Clark .merge_3d = sm8150_merge_3d, 1844f3af2d6eSRob Clark .intf_count = ARRAY_SIZE(sc8180x_intf), 1845f3af2d6eSRob Clark .intf = sc8180x_intf, 1846f3af2d6eSRob Clark .vbif_count = ARRAY_SIZE(sdm845_vbif), 1847f3af2d6eSRob Clark .vbif = sdm845_vbif, 1848f3af2d6eSRob Clark .reg_dma_count = 1, 1849481d5dbbSDmitry Baryshkov .dma_cfg = &sm8150_regdma, 1850477db4feSDmitry Baryshkov .perf = &sc8180x_perf_data, 1851f3af2d6eSRob Clark .mdss_irqs = IRQ_SC8180X_MASK, 1852f3af2d6eSRob Clark }; 1853f3af2d6eSRob Clark 1854de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sm8250_dpu_cfg = { 1855af776a3eSJonathan Marek .caps = &sm8250_dpu_caps, 1856af776a3eSJonathan Marek .mdp_count = ARRAY_SIZE(sm8250_mdp), 1857af776a3eSJonathan Marek .mdp = sm8250_mdp, 1858af776a3eSJonathan Marek .ctl_count = ARRAY_SIZE(sm8150_ctl), 1859af776a3eSJonathan Marek .ctl = sm8150_ctl, 1860d21fc5dfSDmitry Baryshkov .sspp_count = ARRAY_SIZE(sm8250_sspp), 1861d21fc5dfSDmitry Baryshkov .sspp = sm8250_sspp, 1862af776a3eSJonathan Marek .mixer_count = ARRAY_SIZE(sm8150_lm), 1863af776a3eSJonathan Marek .mixer = sm8150_lm, 186405ae91d9SDmitry Baryshkov .dspp_count = ARRAY_SIZE(sm8150_dspp), 186505ae91d9SDmitry Baryshkov .dspp = sm8150_dspp, 1866af776a3eSJonathan Marek .pingpong_count = ARRAY_SIZE(sm8150_pp), 1867af776a3eSJonathan Marek .pingpong = sm8150_pp, 18684369c93cSDmitry Baryshkov .merge_3d_count = ARRAY_SIZE(sm8150_merge_3d), 18694369c93cSDmitry Baryshkov .merge_3d = sm8150_merge_3d, 1870af776a3eSJonathan Marek .intf_count = ARRAY_SIZE(sm8150_intf), 1871af776a3eSJonathan Marek .intf = sm8150_intf, 1872af776a3eSJonathan Marek .vbif_count = ARRAY_SIZE(sdm845_vbif), 1873af776a3eSJonathan Marek .vbif = sdm845_vbif, 187453324b99SAbhinav Kumar .wb_count = ARRAY_SIZE(sm8250_wb), 187553324b99SAbhinav Kumar .wb = sm8250_wb, 1876af776a3eSJonathan Marek .reg_dma_count = 1, 1877481d5dbbSDmitry Baryshkov .dma_cfg = &sm8250_regdma, 1878477db4feSDmitry Baryshkov .perf = &sm8250_perf_data, 1879597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SM8250_MASK, 1880af776a3eSJonathan Marek }; 1881af776a3eSJonathan Marek 1882de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg sc7280_dpu_cfg = { 1883591e34a0SKrishna Manikandan .caps = &sc7280_dpu_caps, 1884591e34a0SKrishna Manikandan .mdp_count = ARRAY_SIZE(sc7280_mdp), 1885591e34a0SKrishna Manikandan .mdp = sc7280_mdp, 1886591e34a0SKrishna Manikandan .ctl_count = ARRAY_SIZE(sc7280_ctl), 1887591e34a0SKrishna Manikandan .ctl = sc7280_ctl, 1888591e34a0SKrishna Manikandan .sspp_count = ARRAY_SIZE(sc7280_sspp), 1889591e34a0SKrishna Manikandan .sspp = sc7280_sspp, 1890fca5ad26SKalyan Thota .dspp_count = ARRAY_SIZE(sc7180_dspp), 1891fca5ad26SKalyan Thota .dspp = sc7180_dspp, 1892591e34a0SKrishna Manikandan .mixer_count = ARRAY_SIZE(sc7280_lm), 1893591e34a0SKrishna Manikandan .mixer = sc7280_lm, 1894591e34a0SKrishna Manikandan .pingpong_count = ARRAY_SIZE(sc7280_pp), 1895591e34a0SKrishna Manikandan .pingpong = sc7280_pp, 1896591e34a0SKrishna Manikandan .intf_count = ARRAY_SIZE(sc7280_intf), 1897591e34a0SKrishna Manikandan .intf = sc7280_intf, 1898591e34a0SKrishna Manikandan .vbif_count = ARRAY_SIZE(sdm845_vbif), 1899591e34a0SKrishna Manikandan .vbif = sdm845_vbif, 1900477db4feSDmitry Baryshkov .perf = &sc7280_perf_data, 1901597762d5SDmitry Baryshkov .mdss_irqs = IRQ_SC7280_MASK, 1902591e34a0SKrishna Manikandan }; 1903591e34a0SKrishna Manikandan 1904de7d480fSDmitry Baryshkov static const struct dpu_mdss_cfg qcm2290_dpu_cfg = { 19055334087eSLoic Poulain .caps = &qcm2290_dpu_caps, 19065334087eSLoic Poulain .mdp_count = ARRAY_SIZE(qcm2290_mdp), 19075334087eSLoic Poulain .mdp = qcm2290_mdp, 19085334087eSLoic Poulain .ctl_count = ARRAY_SIZE(qcm2290_ctl), 19095334087eSLoic Poulain .ctl = qcm2290_ctl, 19105334087eSLoic Poulain .sspp_count = ARRAY_SIZE(qcm2290_sspp), 19115334087eSLoic Poulain .sspp = qcm2290_sspp, 19125334087eSLoic Poulain .mixer_count = ARRAY_SIZE(qcm2290_lm), 19135334087eSLoic Poulain .mixer = qcm2290_lm, 19145334087eSLoic Poulain .dspp_count = ARRAY_SIZE(qcm2290_dspp), 19155334087eSLoic Poulain .dspp = qcm2290_dspp, 19165334087eSLoic Poulain .pingpong_count = ARRAY_SIZE(qcm2290_pp), 19175334087eSLoic Poulain .pingpong = qcm2290_pp, 19185334087eSLoic Poulain .intf_count = ARRAY_SIZE(qcm2290_intf), 19195334087eSLoic Poulain .intf = qcm2290_intf, 19205334087eSLoic Poulain .vbif_count = ARRAY_SIZE(sdm845_vbif), 19215334087eSLoic Poulain .vbif = sdm845_vbif, 19225334087eSLoic Poulain .reg_dma_count = 1, 1923481d5dbbSDmitry Baryshkov .dma_cfg = &sdm845_regdma, 1924477db4feSDmitry Baryshkov .perf = &qcm2290_perf_data, 19255334087eSLoic Poulain .mdss_irqs = IRQ_SC7180_MASK, 19265334087eSLoic Poulain }; 19275334087eSLoic Poulain 1928abda0d92SStephen Boyd static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = { 1929de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg}, 1930de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg}, 1931de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg}, 1932de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg}, 1933de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg}, 1934de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg}, 1935de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg}, 1936de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg}, 1937de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg}, 1938de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg}, 1939de7d480fSDmitry Baryshkov { .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg}, 194025fdd593SJeykumar Sankaran }; 194125fdd593SJeykumar Sankaran 1942de7d480fSDmitry Baryshkov const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev) 194325fdd593SJeykumar Sankaran { 194425fdd593SJeykumar Sankaran int i; 194525fdd593SJeykumar Sankaran 194625fdd593SJeykumar Sankaran for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) { 1947de7d480fSDmitry Baryshkov if (cfg_handler[i].hw_rev == hw_rev) 1948de7d480fSDmitry Baryshkov return cfg_handler[i].dpu_cfg; 194925fdd593SJeykumar Sankaran } 195025fdd593SJeykumar Sankaran 195125fdd593SJeykumar Sankaran DPU_ERROR("unsupported chipset id:%X\n", hw_rev); 195232084967SDmitry Baryshkov 195325fdd593SJeykumar Sankaran return ERR_PTR(-ENODEV); 195425fdd593SJeykumar Sankaran } 195525fdd593SJeykumar Sankaran 1956