@@ -321,6 +321,18 @@ static const struct dpu_caps sc7180_dpu_caps = {
321
321
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE ,
322
322
};
323
323
324
+ static const struct dpu_caps sm6115_dpu_caps = {
325
+ .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH ,
326
+ .max_mixer_blendstages = 0x4 ,
327
+ .qseed_type = DPU_SSPP_SCALER_QSEED3LITE ,
328
+ .smart_dma_rev = DPU_SSPP_SMART_DMA_V2 , /* TODO: v2.5 */
329
+ .ubwc_version = DPU_HW_UBWC_VER_20 ,
330
+ .has_dim_layer = true,
331
+ .has_idle_pc = true,
332
+ .max_linewidth = 2160 ,
333
+ .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE ,
334
+ };
335
+
324
336
static const struct dpu_caps sm8150_dpu_caps = {
325
337
.max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH ,
326
338
.max_mixer_blendstages = 0xb ,
@@ -475,6 +487,19 @@ static const struct dpu_mdp_cfg sc8180x_mdp[] = {
475
487
},
476
488
};
477
489
490
+ static const struct dpu_mdp_cfg sm6115_mdp [] = {
491
+ {
492
+ .name = "top_0" , .id = MDP_TOP ,
493
+ .base = 0x0 , .len = 0x494 ,
494
+ .features = 0 ,
495
+ .highest_bank_bit = 0x1 ,
496
+ .clk_ctrls [DPU_CLK_CTRL_VIG0 ] = {
497
+ .reg_off = 0x2ac , .bit_off = 0 },
498
+ .clk_ctrls [DPU_CLK_CTRL_DMA0 ] = {
499
+ .reg_off = 0x2ac , .bit_off = 8 },
500
+ },
501
+ };
502
+
478
503
static const struct dpu_mdp_cfg sm8250_mdp [] = {
479
504
{
480
505
.name = "top_0" , .id = MDP_TOP ,
@@ -852,6 +877,16 @@ static const struct dpu_sspp_cfg sc7180_sspp[] = {
852
877
sdm845_dma_sblk_2 , 9 , SSPP_TYPE_DMA , DPU_CLK_CTRL_CURSOR1 ),
853
878
};
854
879
880
+ static const struct dpu_sspp_sub_blks sm6115_vig_sblk_0 =
881
+ _VIG_SBLK ("0" , 2 , DPU_SSPP_SCALER_QSEED3LITE );
882
+
883
+ static const struct dpu_sspp_cfg sm6115_sspp [] = {
884
+ SSPP_BLK ("sspp_0" , SSPP_VIG0 , 0x4000 , VIG_SM8250_MASK ,
885
+ sm6115_vig_sblk_0 , 0 , SSPP_TYPE_VIG , DPU_CLK_CTRL_VIG0 ),
886
+ SSPP_BLK ("sspp_8" , SSPP_DMA0 , 0x24000 , DMA_SDM845_MASK ,
887
+ sdm845_dma_sblk_0 , 1 , SSPP_TYPE_DMA , DPU_CLK_CTRL_DMA0 ),
888
+ };
889
+
855
890
static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 =
856
891
_VIG_SBLK ("0" , 5 , DPU_SSPP_SCALER_QSEED3LITE );
857
892
static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 =
@@ -1590,6 +1625,35 @@ static const struct dpu_perf_cfg sc7180_perf_data = {
1590
1625
.bw_inefficiency_factor = 120 ,
1591
1626
};
1592
1627
1628
+ static const struct dpu_perf_cfg sm6115_perf_data = {
1629
+ .max_bw_low = 3100000 ,
1630
+ .max_bw_high = 4000000 ,
1631
+ .min_core_ib = 2400000 ,
1632
+ .min_llcc_ib = 800000 ,
1633
+ .min_dram_ib = 800000 ,
1634
+ .min_prefill_lines = 24 ,
1635
+ .danger_lut_tbl = {0xff , 0xffff , 0x0 },
1636
+ .safe_lut_tbl = {0xfff0 , 0xff00 , 0xffff },
1637
+ .qos_lut_tbl = {
1638
+ {.nentry = ARRAY_SIZE (sc7180_qos_linear ),
1639
+ .entries = sc7180_qos_linear
1640
+ },
1641
+ {.nentry = ARRAY_SIZE (sc7180_qos_macrotile ),
1642
+ .entries = sc7180_qos_macrotile
1643
+ },
1644
+ {.nentry = ARRAY_SIZE (sc7180_qos_nrt ),
1645
+ .entries = sc7180_qos_nrt
1646
+ },
1647
+ /* TODO: macrotile-qseed is different from macrotile */
1648
+ },
1649
+ .cdp_cfg = {
1650
+ {.rd_enable = 1 , .wr_enable = 1 },
1651
+ {.rd_enable = 1 , .wr_enable = 0 }
1652
+ },
1653
+ .clk_inefficiency_factor = 105 ,
1654
+ .bw_inefficiency_factor = 120 ,
1655
+ };
1656
+
1593
1657
static const struct dpu_perf_cfg sm8150_perf_data = {
1594
1658
.max_bw_low = 12800000 ,
1595
1659
.max_bw_high = 12800000 ,
@@ -1801,6 +1865,28 @@ static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
1801
1865
.mdss_irqs = IRQ_SC7180_MASK ,
1802
1866
};
1803
1867
1868
+ static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
1869
+ .caps = & sm6115_dpu_caps ,
1870
+ .mdp_count = ARRAY_SIZE (sm6115_mdp ),
1871
+ .mdp = sm6115_mdp ,
1872
+ .ctl_count = ARRAY_SIZE (qcm2290_ctl ),
1873
+ .ctl = qcm2290_ctl ,
1874
+ .sspp_count = ARRAY_SIZE (sm6115_sspp ),
1875
+ .sspp = sm6115_sspp ,
1876
+ .mixer_count = ARRAY_SIZE (qcm2290_lm ),
1877
+ .mixer = qcm2290_lm ,
1878
+ .dspp_count = ARRAY_SIZE (qcm2290_dspp ),
1879
+ .dspp = qcm2290_dspp ,
1880
+ .pingpong_count = ARRAY_SIZE (qcm2290_pp ),
1881
+ .pingpong = qcm2290_pp ,
1882
+ .intf_count = ARRAY_SIZE (qcm2290_intf ),
1883
+ .intf = qcm2290_intf ,
1884
+ .vbif_count = ARRAY_SIZE (sdm845_vbif ),
1885
+ .vbif = sdm845_vbif ,
1886
+ .perf = & sm6115_perf_data ,
1887
+ .mdss_irqs = IRQ_SC7180_MASK ,
1888
+ };
1889
+
1804
1890
static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
1805
1891
.caps = & sm8150_dpu_caps ,
1806
1892
.mdp_count = ARRAY_SIZE (sdm845_mdp ),
@@ -1935,6 +2021,7 @@ static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
1935
2021
{ .hw_rev = DPU_HW_VER_510 , .dpu_cfg = & sc8180x_dpu_cfg },
1936
2022
{ .hw_rev = DPU_HW_VER_600 , .dpu_cfg = & sm8250_dpu_cfg },
1937
2023
{ .hw_rev = DPU_HW_VER_620 , .dpu_cfg = & sc7180_dpu_cfg },
2024
+ { .hw_rev = DPU_HW_VER_630 , .dpu_cfg = & sm6115_dpu_cfg },
1938
2025
{ .hw_rev = DPU_HW_VER_650 , .dpu_cfg = & qcm2290_dpu_cfg },
1939
2026
{ .hw_rev = DPU_HW_VER_720 , .dpu_cfg = & sc7280_dpu_cfg },
1940
2027
};
0 commit comments