.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
---|
1 | 2 | /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. |
---|
2 | | - * |
---|
3 | | - * This program is free software; you can redistribute it and/or modify |
---|
4 | | - * it under the terms of the GNU General Public License version 2 and |
---|
5 | | - * only version 2 as published by the Free Software Foundation. |
---|
6 | | - * |
---|
7 | | - * This program is distributed in the hope that it will be useful, |
---|
8 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
9 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
10 | | - * GNU General Public License for more details. |
---|
11 | 3 | */ |
---|
12 | 4 | |
---|
13 | 5 | #ifndef _DPU_HW_CATALOG_H |
---|
.. | .. |
---|
17 | 9 | #include <linux/bug.h> |
---|
18 | 10 | #include <linux/bitmap.h> |
---|
19 | 11 | #include <linux/err.h> |
---|
20 | | -#include <drm/drmP.h> |
---|
21 | 12 | |
---|
22 | 13 | /** |
---|
23 | 14 | * Max hardware block count: For ex: max 12 SSPP pipes or |
---|
.. | .. |
---|
46 | 37 | #define DPU_HW_VER_400 DPU_HW_VER(4, 0, 0) /* sdm845 v1.0 */ |
---|
47 | 38 | #define DPU_HW_VER_401 DPU_HW_VER(4, 0, 1) /* sdm845 v2.0 */ |
---|
48 | 39 | #define DPU_HW_VER_410 DPU_HW_VER(4, 1, 0) /* sdm670 v1.0 */ |
---|
49 | | -#define DPU_HW_VER_500 DPU_HW_VER(5, 0, 0) /* sdm855 v1.0 */ |
---|
| 40 | +#define DPU_HW_VER_500 DPU_HW_VER(5, 0, 0) /* sm8150 v1.0 */ |
---|
| 41 | +#define DPU_HW_VER_501 DPU_HW_VER(5, 0, 1) /* sm8150 v2.0 */ |
---|
| 42 | +#define DPU_HW_VER_600 DPU_HW_VER(6, 0, 0) /* sm8250 */ |
---|
| 43 | +#define DPU_HW_VER_620 DPU_HW_VER(6, 2, 0) /* sc7180 v1.0 */ |
---|
50 | 44 | |
---|
51 | 45 | |
---|
52 | 46 | #define IS_MSM8996_TARGET(rev) IS_DPU_MAJOR_MINOR_SAME((rev), DPU_HW_VER_170) |
---|
.. | .. |
---|
54 | 48 | #define IS_SDM845_TARGET(rev) IS_DPU_MAJOR_MINOR_SAME((rev), DPU_HW_VER_400) |
---|
55 | 49 | #define IS_SDM670_TARGET(rev) IS_DPU_MAJOR_MINOR_SAME((rev), DPU_HW_VER_410) |
---|
56 | 50 | #define IS_SDM855_TARGET(rev) IS_DPU_MAJOR_MINOR_SAME((rev), DPU_HW_VER_500) |
---|
| 51 | +#define IS_SC7180_TARGET(rev) IS_DPU_MAJOR_MINOR_SAME((rev), DPU_HW_VER_620) |
---|
57 | 52 | |
---|
58 | 53 | |
---|
59 | 54 | #define DPU_HW_BLK_NAME_LEN 16 |
---|
.. | .. |
---|
72 | 67 | DPU_HW_UBWC_VER_10 = 0x100, |
---|
73 | 68 | DPU_HW_UBWC_VER_20 = 0x200, |
---|
74 | 69 | DPU_HW_UBWC_VER_30 = 0x300, |
---|
| 70 | + DPU_HW_UBWC_VER_40 = 0x400, |
---|
75 | 71 | }; |
---|
76 | | - |
---|
77 | | -#define IS_UBWC_20_SUPPORTED(rev) ((rev) >= DPU_HW_UBWC_VER_20) |
---|
78 | 72 | |
---|
79 | 73 | /** |
---|
80 | 74 | * MDP TOP BLOCK features |
---|
.. | .. |
---|
101 | 95 | * @DPU_SSPP_SRC Src and fetch part of the pipes, |
---|
102 | 96 | * @DPU_SSPP_SCALER_QSEED2, QSEED2 algorithm support |
---|
103 | 97 | * @DPU_SSPP_SCALER_QSEED3, QSEED3 alogorithm support |
---|
| 98 | + * @DPU_SSPP_SCALER_QSEED4, QSEED4 algorithm support |
---|
104 | 99 | * @DPU_SSPP_SCALER_RGB, RGB Scaler, supported by RGB pipes |
---|
105 | 100 | * @DPU_SSPP_CSC, Support of Color space converion |
---|
106 | 101 | * @DPU_SSPP_CSC_10BIT, Support of 10-bit Color space conversion |
---|
.. | .. |
---|
119 | 114 | DPU_SSPP_SRC = 0x1, |
---|
120 | 115 | DPU_SSPP_SCALER_QSEED2, |
---|
121 | 116 | DPU_SSPP_SCALER_QSEED3, |
---|
| 117 | + DPU_SSPP_SCALER_QSEED4, |
---|
122 | 118 | DPU_SSPP_SCALER_RGB, |
---|
123 | 119 | DPU_SSPP_CSC, |
---|
124 | 120 | DPU_SSPP_CSC_10BIT, |
---|
.. | .. |
---|
151 | 147 | }; |
---|
152 | 148 | |
---|
153 | 149 | /** |
---|
| 150 | + * DSPP sub-blocks |
---|
| 151 | + * @DPU_DSPP_PCC Panel color correction block |
---|
| 152 | + * @DPU_DSPP_GC Gamma correction block |
---|
| 153 | + */ |
---|
| 154 | +enum { |
---|
| 155 | + DPU_DSPP_PCC = 0x1, |
---|
| 156 | + DPU_DSPP_GC, |
---|
| 157 | + DPU_DSPP_MAX |
---|
| 158 | +}; |
---|
| 159 | + |
---|
| 160 | +/** |
---|
154 | 161 | * PINGPONG sub-blocks |
---|
155 | 162 | * @DPU_PINGPONG_TE Tear check block |
---|
156 | 163 | * @DPU_PINGPONG_TE2 Additional tear check block for split pipes |
---|
.. | .. |
---|
175 | 182 | */ |
---|
176 | 183 | enum { |
---|
177 | 184 | DPU_CTL_SPLIT_DISPLAY = 0x1, |
---|
| 185 | + DPU_CTL_ACTIVE_CFG, |
---|
178 | 186 | DPU_CTL_MAX |
---|
| 187 | +}; |
---|
| 188 | + |
---|
| 189 | +/** |
---|
| 190 | + * INTF sub-blocks |
---|
| 191 | + * @DPU_INTF_INPUT_CTRL Supports the setting of pp block from which |
---|
| 192 | + * pixel data arrives to this INTF |
---|
| 193 | + * @DPU_INTF_TE INTF block has TE configuration support |
---|
| 194 | + * @DPU_INTF_MAX |
---|
| 195 | + */ |
---|
| 196 | +enum { |
---|
| 197 | + DPU_INTF_INPUT_CTRL = 0x1, |
---|
| 198 | + DPU_INTF_TE, |
---|
| 199 | + DPU_INTF_MAX |
---|
179 | 200 | }; |
---|
180 | 201 | |
---|
181 | 202 | /** |
---|
.. | .. |
---|
252 | 273 | }; |
---|
253 | 274 | |
---|
254 | 275 | /** |
---|
255 | | - * struct dpu_format_extended - define dpu specific pixel format+modifier |
---|
256 | | - * @fourcc_format: Base FOURCC pixel format code |
---|
257 | | - * @modifier: 64-bit drm format modifier, same modifier must be applied to all |
---|
258 | | - * framebuffer planes |
---|
259 | | - */ |
---|
260 | | -struct dpu_format_extended { |
---|
261 | | - uint32_t fourcc_format; |
---|
262 | | - uint64_t modifier; |
---|
263 | | -}; |
---|
264 | | - |
---|
265 | | -/** |
---|
266 | 276 | * enum dpu_qos_lut_usage - define QoS LUT use cases |
---|
267 | 277 | */ |
---|
268 | 278 | enum dpu_qos_lut_usage { |
---|
.. | .. |
---|
289 | 299 | */ |
---|
290 | 300 | struct dpu_qos_lut_tbl { |
---|
291 | 301 | u32 nentry; |
---|
292 | | - struct dpu_qos_lut_entry *entries; |
---|
| 302 | + const struct dpu_qos_lut_entry *entries; |
---|
293 | 303 | }; |
---|
294 | 304 | |
---|
295 | 305 | /** |
---|
.. | .. |
---|
303 | 313 | * @has_src_split source split feature status |
---|
304 | 314 | * @has_dim_layer dim layer feature status |
---|
305 | 315 | * @has_idle_pc indicate if idle power collapse feature is supported |
---|
| 316 | + * @has_3d_merge indicate if 3D merge is supported |
---|
| 317 | + * @max_linewidth max linewidth for sspp |
---|
| 318 | + * @pixel_ram_size size of latency hiding and de-tiling buffer in bytes |
---|
| 319 | + * @max_hdeci_exp max horizontal decimation supported (max is 2^value) |
---|
| 320 | + * @max_vdeci_exp max vertical decimation supported (max is 2^value) |
---|
306 | 321 | */ |
---|
307 | 322 | struct dpu_caps { |
---|
308 | 323 | u32 max_mixer_width; |
---|
.. | .. |
---|
313 | 328 | bool has_src_split; |
---|
314 | 329 | bool has_dim_layer; |
---|
315 | 330 | bool has_idle_pc; |
---|
316 | | -}; |
---|
317 | | - |
---|
318 | | -/** |
---|
319 | | - * struct dpu_sspp_blks_common : SSPP sub-blocks common configuration |
---|
320 | | - * @maxwidth: max pixelwidth supported by this pipe |
---|
321 | | - * @pixel_ram_size: size of latency hiding and de-tiling buffer in bytes |
---|
322 | | - * @maxhdeciexp: max horizontal decimation supported by this pipe |
---|
323 | | - * (max is 2^value) |
---|
324 | | - * @maxvdeciexp: max vertical decimation supported by this pipe |
---|
325 | | - * (max is 2^value) |
---|
326 | | - */ |
---|
327 | | -struct dpu_sspp_blks_common { |
---|
328 | | - u32 maxlinewidth; |
---|
| 331 | + bool has_3d_merge; |
---|
| 332 | + /* SSPP limits */ |
---|
| 333 | + u32 max_linewidth; |
---|
329 | 334 | u32 pixel_ram_size; |
---|
330 | | - u32 maxhdeciexp; |
---|
331 | | - u32 maxvdeciexp; |
---|
| 335 | + u32 max_hdeci_exp; |
---|
| 336 | + u32 max_vdeci_exp; |
---|
332 | 337 | }; |
---|
333 | 338 | |
---|
334 | 339 | /** |
---|
.. | .. |
---|
340 | 345 | * @maxupscale: maxupscale ratio supported |
---|
341 | 346 | * @smart_dma_priority: hw priority of rect1 of multirect pipe |
---|
342 | 347 | * @max_per_pipe_bw: maximum allowable bandwidth of this pipe in kBps |
---|
| 348 | + * @qseed_ver: qseed version |
---|
343 | 349 | * @src_blk: |
---|
344 | 350 | * @scaler_blk: |
---|
345 | 351 | * @csc_blk: |
---|
.. | .. |
---|
348 | 354 | * @pcc_blk: |
---|
349 | 355 | * @igc_blk: |
---|
350 | 356 | * @format_list: Pointer to list of supported formats |
---|
| 357 | + * @num_formats: Number of supported formats |
---|
351 | 358 | * @virt_format_list: Pointer to list of supported formats for virtual planes |
---|
| 359 | + * @virt_num_formats: Number of supported formats for virtual planes |
---|
352 | 360 | */ |
---|
353 | 361 | struct dpu_sspp_sub_blks { |
---|
354 | | - const struct dpu_sspp_blks_common *common; |
---|
355 | 362 | u32 creq_vblank; |
---|
356 | 363 | u32 danger_vblank; |
---|
357 | 364 | u32 maxdwnscale; |
---|
358 | 365 | u32 maxupscale; |
---|
359 | 366 | u32 smart_dma_priority; |
---|
360 | 367 | u32 max_per_pipe_bw; |
---|
| 368 | + u32 qseed_ver; |
---|
361 | 369 | struct dpu_src_blk src_blk; |
---|
362 | 370 | struct dpu_scaler_blk scaler_blk; |
---|
363 | 371 | struct dpu_pp_blk csc_blk; |
---|
.. | .. |
---|
366 | 374 | struct dpu_pp_blk pcc_blk; |
---|
367 | 375 | struct dpu_pp_blk igc_blk; |
---|
368 | 376 | |
---|
369 | | - const struct dpu_format_extended *format_list; |
---|
370 | | - const struct dpu_format_extended *virt_format_list; |
---|
| 377 | + const u32 *format_list; |
---|
| 378 | + u32 num_formats; |
---|
| 379 | + const u32 *virt_format_list; |
---|
| 380 | + u32 virt_num_formats; |
---|
371 | 381 | }; |
---|
372 | 382 | |
---|
373 | 383 | /** |
---|
.. | .. |
---|
382 | 392 | u32 maxblendstages; |
---|
383 | 393 | u32 blendstage_base[MAX_BLOCKS]; |
---|
384 | 394 | struct dpu_pp_blk gc; |
---|
| 395 | +}; |
---|
| 396 | + |
---|
| 397 | +/** |
---|
| 398 | + * struct dpu_dspp_sub_blks: Information of DSPP block |
---|
| 399 | + * @gc : gamma correction block |
---|
| 400 | + * @pcc: pixel color correction block |
---|
| 401 | + */ |
---|
| 402 | +struct dpu_dspp_sub_blks { |
---|
| 403 | + struct dpu_pp_blk gc; |
---|
| 404 | + struct dpu_pp_blk pcc; |
---|
385 | 405 | }; |
---|
386 | 406 | |
---|
387 | 407 | struct dpu_pingpong_sub_blks { |
---|
.. | .. |
---|
409 | 429 | DPU_CLK_CTRL_CURSOR0, |
---|
410 | 430 | DPU_CLK_CTRL_CURSOR1, |
---|
411 | 431 | DPU_CLK_CTRL_INLINE_ROT0_SSPP, |
---|
| 432 | + DPU_CLK_CTRL_REG_DMA, |
---|
412 | 433 | DPU_CLK_CTRL_MAX, |
---|
413 | 434 | }; |
---|
414 | 435 | |
---|
.. | .. |
---|
428 | 449 | * @highest_bank_bit: UBWC parameter |
---|
429 | 450 | * @ubwc_static: ubwc static configuration |
---|
430 | 451 | * @ubwc_swizzle: ubwc default swizzle setting |
---|
431 | | - * @has_dest_scaler: indicates support of destination scaler |
---|
432 | 452 | * @clk_ctrls clock control register definition |
---|
433 | 453 | */ |
---|
434 | 454 | struct dpu_mdp_cfg { |
---|
435 | 455 | DPU_HW_BLK_INFO; |
---|
436 | 456 | u32 highest_bank_bit; |
---|
437 | | - u32 ubwc_static; |
---|
438 | 457 | u32 ubwc_swizzle; |
---|
439 | | - bool has_dest_scaler; |
---|
440 | 458 | struct dpu_clk_ctrl_reg clk_ctrls[DPU_CLK_CTRL_MAX]; |
---|
441 | 459 | }; |
---|
442 | 460 | |
---|
.. | .. |
---|
474 | 492 | * @features bit mask identifying sub-blocks/features |
---|
475 | 493 | * @sblk: LM Sub-blocks information |
---|
476 | 494 | * @pingpong: ID of connected PingPong, PINGPONG_MAX if unsupported |
---|
477 | | - * @ds: ID of connected DS, DS_MAX if unsupported |
---|
478 | 495 | * @lm_pair_mask: Bitmask of LMs that can be controlled by same CTL |
---|
479 | 496 | */ |
---|
480 | 497 | struct dpu_lm_cfg { |
---|
481 | 498 | DPU_HW_BLK_INFO; |
---|
482 | 499 | const struct dpu_lm_sub_blks *sblk; |
---|
483 | 500 | u32 pingpong; |
---|
484 | | - u32 ds; |
---|
| 501 | + u32 dspp; |
---|
485 | 502 | unsigned long lm_pair_mask; |
---|
486 | 503 | }; |
---|
487 | 504 | |
---|
488 | 505 | /** |
---|
489 | | - * struct dpu_ds_top_cfg - information of dest scaler top |
---|
490 | | - * @id enum identifying this block |
---|
491 | | - * @base register offset of this block |
---|
492 | | - * @features bit mask identifying features |
---|
493 | | - * @version hw version of dest scaler |
---|
494 | | - * @maxinputwidth maximum input line width |
---|
495 | | - * @maxoutputwidth maximum output line width |
---|
496 | | - * @maxupscale maximum upscale ratio |
---|
| 506 | + * struct dpu_dspp_cfg - information of DSPP blocks |
---|
| 507 | + * @id enum identifying this block |
---|
| 508 | + * @base register offset of this block |
---|
| 509 | + * @features bit mask identifying sub-blocks/features |
---|
| 510 | + * supported by this block |
---|
| 511 | + * @sblk sub-blocks information |
---|
497 | 512 | */ |
---|
498 | | -struct dpu_ds_top_cfg { |
---|
| 513 | +struct dpu_dspp_cfg { |
---|
499 | 514 | DPU_HW_BLK_INFO; |
---|
500 | | - u32 version; |
---|
501 | | - u32 maxinputwidth; |
---|
502 | | - u32 maxoutputwidth; |
---|
503 | | - u32 maxupscale; |
---|
504 | | -}; |
---|
505 | | - |
---|
506 | | -/** |
---|
507 | | - * struct dpu_ds_cfg - information of dest scaler blocks |
---|
508 | | - * @id enum identifying this block |
---|
509 | | - * @base register offset wrt DS top offset |
---|
510 | | - * @features bit mask identifying features |
---|
511 | | - * @version hw version of the qseed block |
---|
512 | | - * @top DS top information |
---|
513 | | - */ |
---|
514 | | -struct dpu_ds_cfg { |
---|
515 | | - DPU_HW_BLK_INFO; |
---|
516 | | - u32 version; |
---|
517 | | - const struct dpu_ds_top_cfg *top; |
---|
| 515 | + const struct dpu_dspp_sub_blks *sblk; |
---|
518 | 516 | }; |
---|
519 | 517 | |
---|
520 | 518 | /** |
---|
.. | .. |
---|
527 | 525 | struct dpu_pingpong_cfg { |
---|
528 | 526 | DPU_HW_BLK_INFO; |
---|
529 | 527 | const struct dpu_pingpong_sub_blks *sblk; |
---|
530 | | -}; |
---|
531 | | - |
---|
532 | | -/** |
---|
533 | | - * struct dpu_cdm_cfg - information of chroma down blocks |
---|
534 | | - * @id enum identifying this block |
---|
535 | | - * @base register offset of this block |
---|
536 | | - * @features bit mask identifying sub-blocks/features |
---|
537 | | - * @intf_connect Bitmask of INTF IDs this CDM can connect to |
---|
538 | | - */ |
---|
539 | | -struct dpu_cdm_cfg { |
---|
540 | | - DPU_HW_BLK_INFO; |
---|
541 | | - unsigned long intf_connect; |
---|
542 | 528 | }; |
---|
543 | 529 | |
---|
544 | 530 | /** |
---|
.. | .. |
---|
575 | 561 | */ |
---|
576 | 562 | struct dpu_vbif_dynamic_ot_tbl { |
---|
577 | 563 | u32 count; |
---|
578 | | - struct dpu_vbif_dynamic_ot_cfg *cfg; |
---|
| 564 | + const struct dpu_vbif_dynamic_ot_cfg *cfg; |
---|
579 | 565 | }; |
---|
580 | 566 | |
---|
581 | 567 | /** |
---|
.. | .. |
---|
585 | 571 | */ |
---|
586 | 572 | struct dpu_vbif_qos_tbl { |
---|
587 | 573 | u32 npriority_lvl; |
---|
588 | | - u32 *priority_lvl; |
---|
| 574 | + const u32 *priority_lvl; |
---|
589 | 575 | }; |
---|
590 | 576 | |
---|
591 | 577 | /** |
---|
.. | .. |
---|
627 | 613 | DPU_HW_BLK_INFO; |
---|
628 | 614 | u32 version; |
---|
629 | 615 | u32 trigger_sel_off; |
---|
| 616 | + u32 xin_id; |
---|
| 617 | + enum dpu_clk_ctrl_type clk_ctrl; |
---|
630 | 618 | }; |
---|
631 | 619 | |
---|
632 | 620 | /** |
---|
.. | .. |
---|
671 | 659 | * @downscaling_prefill_lines downscaling latency in lines |
---|
672 | 660 | * @amortizable_theshold minimum y position for traffic shaping prefill |
---|
673 | 661 | * @min_prefill_lines minimum pipeline latency in lines |
---|
| 662 | + * @clk_inefficiency_factor DPU src clock inefficiency factor |
---|
| 663 | + * @bw_inefficiency_factor DPU axi bus bw inefficiency factor |
---|
674 | 664 | * @safe_lut_tbl: LUT tables for safe signals |
---|
675 | 665 | * @danger_lut_tbl: LUT tables for danger signals |
---|
676 | 666 | * @qos_lut_tbl: LUT tables for QoS signals |
---|
.. | .. |
---|
695 | 685 | u32 downscaling_prefill_lines; |
---|
696 | 686 | u32 amortizable_threshold; |
---|
697 | 687 | u32 min_prefill_lines; |
---|
| 688 | + u32 clk_inefficiency_factor; |
---|
| 689 | + u32 bw_inefficiency_factor; |
---|
698 | 690 | u32 safe_lut_tbl[DPU_QOS_LUT_USAGE_MAX]; |
---|
699 | 691 | u32 danger_lut_tbl[DPU_QOS_LUT_USAGE_MAX]; |
---|
700 | 692 | struct dpu_qos_lut_tbl qos_lut_tbl[DPU_QOS_LUT_USAGE_MAX]; |
---|
.. | .. |
---|
710 | 702 | * @dma_formats Supported formats for dma pipe |
---|
711 | 703 | * @cursor_formats Supported formats for cursor pipe |
---|
712 | 704 | * @vig_formats Supported formats for vig pipe |
---|
| 705 | + * @mdss_irqs: Bitmap with the irqs supported by the target |
---|
713 | 706 | */ |
---|
714 | 707 | struct dpu_mdss_cfg { |
---|
715 | 708 | u32 hwversion; |
---|
.. | .. |
---|
717 | 710 | const struct dpu_caps *caps; |
---|
718 | 711 | |
---|
719 | 712 | u32 mdp_count; |
---|
720 | | - struct dpu_mdp_cfg *mdp; |
---|
| 713 | + const struct dpu_mdp_cfg *mdp; |
---|
721 | 714 | |
---|
722 | 715 | u32 ctl_count; |
---|
723 | | - struct dpu_ctl_cfg *ctl; |
---|
| 716 | + const struct dpu_ctl_cfg *ctl; |
---|
724 | 717 | |
---|
725 | 718 | u32 sspp_count; |
---|
726 | | - struct dpu_sspp_cfg *sspp; |
---|
| 719 | + const struct dpu_sspp_cfg *sspp; |
---|
727 | 720 | |
---|
728 | 721 | u32 mixer_count; |
---|
729 | | - struct dpu_lm_cfg *mixer; |
---|
730 | | - |
---|
731 | | - u32 ds_count; |
---|
732 | | - struct dpu_ds_cfg *ds; |
---|
| 722 | + const struct dpu_lm_cfg *mixer; |
---|
733 | 723 | |
---|
734 | 724 | u32 pingpong_count; |
---|
735 | | - struct dpu_pingpong_cfg *pingpong; |
---|
736 | | - |
---|
737 | | - u32 cdm_count; |
---|
738 | | - struct dpu_cdm_cfg *cdm; |
---|
| 725 | + const struct dpu_pingpong_cfg *pingpong; |
---|
739 | 726 | |
---|
740 | 727 | u32 intf_count; |
---|
741 | | - struct dpu_intf_cfg *intf; |
---|
| 728 | + const struct dpu_intf_cfg *intf; |
---|
742 | 729 | |
---|
743 | 730 | u32 vbif_count; |
---|
744 | | - struct dpu_vbif_cfg *vbif; |
---|
| 731 | + const struct dpu_vbif_cfg *vbif; |
---|
745 | 732 | |
---|
746 | 733 | u32 reg_dma_count; |
---|
747 | 734 | struct dpu_reg_dma_cfg dma_cfg; |
---|
748 | 735 | |
---|
749 | 736 | u32 ad_count; |
---|
750 | 737 | |
---|
| 738 | + u32 dspp_count; |
---|
| 739 | + const struct dpu_dspp_cfg *dspp; |
---|
| 740 | + |
---|
751 | 741 | /* Add additional block data structures here */ |
---|
752 | 742 | |
---|
753 | 743 | struct dpu_perf_cfg perf; |
---|
754 | | - struct dpu_format_extended *dma_formats; |
---|
755 | | - struct dpu_format_extended *cursor_formats; |
---|
756 | | - struct dpu_format_extended *vig_formats; |
---|
| 744 | + const struct dpu_format_extended *dma_formats; |
---|
| 745 | + const struct dpu_format_extended *cursor_formats; |
---|
| 746 | + const struct dpu_format_extended *vig_formats; |
---|
| 747 | + |
---|
| 748 | + unsigned long mdss_irqs; |
---|
757 | 749 | }; |
---|
758 | 750 | |
---|
759 | 751 | struct dpu_mdss_hw_cfg_handler { |
---|
.. | .. |
---|
771 | 763 | #define BLK_DMA(s) ((s)->dma) |
---|
772 | 764 | #define BLK_CURSOR(s) ((s)->cursor) |
---|
773 | 765 | #define BLK_MIXER(s) ((s)->mixer) |
---|
774 | | -#define BLK_DS(s) ((s)->ds) |
---|
775 | 766 | #define BLK_PINGPONG(s) ((s)->pingpong) |
---|
776 | | -#define BLK_CDM(s) ((s)->cdm) |
---|
777 | 767 | #define BLK_INTF(s) ((s)->intf) |
---|
778 | 768 | #define BLK_AD(s) ((s)->ad) |
---|
| 769 | +#define BLK_DSPP(s) ((s)->dspp) |
---|
779 | 770 | |
---|
780 | 771 | /** |
---|
781 | 772 | * dpu_hw_catalog_init - dpu hardware catalog init API retrieves |
---|
.. | .. |
---|
792 | 783 | */ |
---|
793 | 784 | void dpu_hw_catalog_deinit(struct dpu_mdss_cfg *dpu_cfg); |
---|
794 | 785 | |
---|
795 | | -/** |
---|
796 | | - * dpu_hw_sspp_multirect_enabled - check multirect enabled for the sspp |
---|
797 | | - * @cfg: pointer to sspp cfg |
---|
798 | | - */ |
---|
799 | | -static inline bool dpu_hw_sspp_multirect_enabled(const struct dpu_sspp_cfg *cfg) |
---|
800 | | -{ |
---|
801 | | - return test_bit(DPU_SSPP_SMART_DMA_V1, &cfg->features) || |
---|
802 | | - test_bit(DPU_SSPP_SMART_DMA_V2, &cfg->features); |
---|
803 | | -} |
---|
804 | 786 | #endif /* _DPU_HW_CATALOG_H */ |
---|