diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx83112a.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx83112a.yaml new file mode 100644 index 000000000000..174661d13811 --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/himax,hx83112a.yaml @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/himax,hx83112a.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Himax HX83112A-based DSI display panels + +maintainers: + - Luca Weiss + +description: + The Himax HX83112A is a generic DSI Panel IC used to control + LCD panels. + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + contains: + const: djn,9a-3r063-1102b + + vdd1-supply: + description: Digital voltage rail + + vsn-supply: + description: Positive source voltage rail + + vsp-supply: + description: Negative source voltage rail + + reg: true + port: true + +required: + - compatible + - reg + - reset-gpios + - vdd1-supply + - vsn-supply + - vsp-supply + - port + +unevaluatedProperties: false + +examples: + - | + #include + + dsi { + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "djn,9a-3r063-1102b"; + reg = <0>; + + backlight = <&pm6150l_wled>; + reset-gpios = <&pm6150l_gpios 9 GPIO_ACTIVE_LOW>; + + vdd1-supply = <&vreg_l1e>; + vsn-supply = <&pm6150l_lcdb_ncp>; + vsp-supply = <&pm6150l_lcdb_ldo>; + + port { + panel_in_0: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + }; + }; + +... diff --git a/Documentation/devicetree/bindings/display/panel/leadtek,ltk500hd1829.yaml b/Documentation/devicetree/bindings/display/panel/leadtek,ltk500hd1829.yaml index c5944b4d636c..d589f1677214 100644 --- a/Documentation/devicetree/bindings/display/panel/leadtek,ltk500hd1829.yaml +++ b/Documentation/devicetree/bindings/display/panel/leadtek,ltk500hd1829.yaml @@ -14,7 +14,9 @@ allOf: properties: compatible: - const: leadtek,ltk500hd1829 + enum: + - leadtek,ltk101b4029w + - leadtek,ltk500hd1829 reg: true backlight: true reset-gpios: true diff --git a/Documentation/devicetree/bindings/display/panel/panel-lvds.yaml b/Documentation/devicetree/bindings/display/panel/panel-lvds.yaml index 3fb24393529c..155d8ffa8f6e 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-lvds.yaml +++ b/Documentation/devicetree/bindings/display/panel/panel-lvds.yaml @@ -39,6 +39,8 @@ properties: compatible: items: - enum: + # Admatec 9904379 10.1" 1024x600 LVDS panel + - admatec,9904379 - auo,b101ew05 # Chunghwa Picture Tubes Ltd. 7" WXGA (800x1280) TFT LCD LVDS panel - chunghwa,claa070wp03xg diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml index 233c620722dd..a95445f40870 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml +++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml @@ -73,6 +73,8 @@ properties: - auo,t215hvn01 # Shanghai AVIC Optoelectronics 7" 1024x600 color TFT-LCD panel - avic,tm070ddh03 + # BOE BP082WX1-100 8.2" WXGA (1280x800) LVDS panel + - boe,bp082wx1-100 # BOE BP101WX1-100 10.1" WXGA (1280x800) LVDS panel - boe,bp101wx1-100 # BOE EV121WXM-N10-1850 12.1" WXGA (1280x800) TFT LCD panel diff --git a/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml b/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml new file mode 100644 index 000000000000..08e5b9478051 --- /dev/null +++ b/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/renesas,rzg2l-du.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Renesas RZ/G2L Display Unit (DU) + +maintainers: + - Biju Das + - Laurent Pinchart + +description: | + These DT bindings describe the Display Unit embedded in the Renesas RZ/G2L + and RZ/V2L SoCs. + +properties: + compatible: + oneOf: + - enum: + - renesas,r9a07g044-du # RZ/G2{L,LC} + - items: + - enum: + - renesas,r9a07g054-du # RZ/V2L + - const: renesas,r9a07g044-du # RZ/G2L fallback + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + items: + - description: Main clock + - description: Register access clock + - description: Video clock + + clock-names: + items: + - const: aclk + - const: pclk + - const: vclk + + resets: + maxItems: 1 + + power-domains: + maxItems: 1 + + ports: + $ref: /schemas/graph.yaml#/properties/ports + description: | + The connections to the DU output video ports are modeled using the OF + graph bindings. The number of ports and their assignment are + model-dependent. Each port shall have a single endpoint. + + patternProperties: + "^port@[0-1]$": + $ref: /schemas/graph.yaml#/properties/port + unevaluatedProperties: false + + required: + - port@0 + + unevaluatedProperties: false + + renesas,vsps: + $ref: /schemas/types.yaml#/definitions/phandle-array + items: + items: + - description: phandle to VSP instance that serves the DU channel + - description: Channel index identifying the LIF instance in that VSP + description: + A list of phandle and channel index tuples to the VSPs that handle the + memory interfaces for the DU channels. + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + - resets + - power-domains + - ports + - renesas,vsps + +additionalProperties: false + +examples: + # RZ/G2L DU + - | + #include + #include + + display@10890000 { + compatible = "renesas,r9a07g044-du"; + reg = <0x10890000 0x10000>; + interrupts = ; + clocks = <&cpg CPG_MOD R9A07G044_LCDC_CLK_A>, + <&cpg CPG_MOD R9A07G044_LCDC_CLK_P>, + <&cpg CPG_MOD R9A07G044_LCDC_CLK_D>; + clock-names = "aclk", "pclk", "vclk"; + resets = <&cpg R9A07G044_LCDC_RESET_N>; + power-domains = <&cpg>; + + renesas,vsps = <&vspd0 0>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + endpoint { + remote-endpoint = <&dsi0_in>; + }; + }; + port@1 { + reg = <1>; + }; + }; + }; + +... diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml index b6767ef0d24d..55e3e490d0e6 100644 --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml @@ -37,6 +37,7 @@ properties: - description: OVR2 overlay manager for vp2 - description: VP1 video port 1 - description: VP2 video port 2 + - description: common1 DSS register area reg-names: items: @@ -47,6 +48,7 @@ properties: - const: ovr2 - const: vp1 - const: vp2 + - const: common1 clocks: items: @@ -147,9 +149,10 @@ examples: <0x04a07000 0x1000>, /* ovr1 */ <0x04a08000 0x1000>, /* ovr2 */ <0x04a0a000 0x1000>, /* vp1 */ - <0x04a0b000 0x1000>; /* vp2 */ + <0x04a0b000 0x1000>, /* vp2 */ + <0x04a01000 0x1000>; /* common1 */ reg-names = "common", "vidl1", "vid", - "ovr1", "ovr2", "vp1", "vp2"; + "ovr1", "ovr2", "vp1", "vp2", "common1"; ti,am65x-oldi-io-ctrl = <&dss_oldi_io_ctrl>; power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 67 1>, diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 1a0dc04f1db4..fef2e12b504e 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -61,6 +61,8 @@ patternProperties: description: Analog Devices, Inc. "^adieng,.*": description: ADI Engineering, Inc. + "^admatec,.*": + description: admatec GmbH "^advantech,.*": description: Advantech Corporation "^aeroflexgaisler,.*": diff --git a/Documentation/gpu/drm-usage-stats.rst b/Documentation/gpu/drm-usage-stats.rst index 7aca5c7a7b1d..6dc299343b48 100644 --- a/Documentation/gpu/drm-usage-stats.rst +++ b/Documentation/gpu/drm-usage-stats.rst @@ -138,7 +138,7 @@ indicating kibi- or mebi-bytes. - drm-shared-: [KiB|MiB] -The total size of buffers that are shared with another file (ie. have more +The total size of buffers that are shared with another file (e.g., have more than a single handle). - drm-total-: [KiB|MiB] diff --git a/MAINTAINERS b/MAINTAINERS index 3bc7e122a094..3527a2ece6cd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7025,7 +7025,7 @@ X: drivers/gpu/drm/mediatek/ X: drivers/gpu/drm/msm/ X: drivers/gpu/drm/nouveau/ X: drivers/gpu/drm/radeon/ -X: drivers/gpu/drm/renesas/ +X: drivers/gpu/drm/renesas/rcar-du/ X: drivers/gpu/drm/tegra/ DRM DRIVERS FOR ALLWINNER A10 @@ -7193,12 +7193,22 @@ F: Documentation/devicetree/bindings/display/bridge/renesas,lvds.yaml F: Documentation/devicetree/bindings/display/renesas,du.yaml F: drivers/gpu/drm/renesas/rcar-du/ +DRM DRIVERS FOR RENESAS RZ +M: Biju Das +L: dri-devel@lists.freedesktop.org +L: linux-renesas-soc@vger.kernel.org +S: Maintained +T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml +F: drivers/gpu/drm/renesas/rz-du/ + DRM DRIVERS FOR RENESAS SHMOBILE M: Laurent Pinchart M: Geert Uytterhoeven L: dri-devel@lists.freedesktop.org L: linux-renesas-soc@vger.kernel.org S: Supported +T: git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/renesas,shmobile-lcdc.yaml F: drivers/gpu/drm/renesas/shmobile/ F: include/linux/platform_data/shmob_drm.h diff --git a/drivers/accel/ivpu/ivpu_debugfs.c b/drivers/accel/ivpu/ivpu_debugfs.c index 7cb962e21453..d09d29775b3f 100644 --- a/drivers/accel/ivpu/ivpu_debugfs.c +++ b/drivers/accel/ivpu/ivpu_debugfs.c @@ -286,22 +286,6 @@ static const struct file_operations fw_trace_level_fops = { .write = fw_trace_level_fops_write, }; -static ssize_t -ivpu_reset_engine_fn(struct file *file, const char __user *user_buf, size_t size, loff_t *pos) -{ - struct ivpu_device *vdev = file->private_data; - - if (!size) - return -EINVAL; - - if (ivpu_jsm_reset_engine(vdev, DRM_IVPU_ENGINE_COMPUTE)) - return -ENODEV; - if (ivpu_jsm_reset_engine(vdev, DRM_IVPU_ENGINE_COPY)) - return -ENODEV; - - return size; -} - static ssize_t ivpu_force_recovery_fn(struct file *file, const char __user *user_buf, size_t size, loff_t *pos) { @@ -327,6 +311,22 @@ static const struct file_operations ivpu_force_recovery_fops = { .write = ivpu_force_recovery_fn, }; +static ssize_t +ivpu_reset_engine_fn(struct file *file, const char __user *user_buf, size_t size, loff_t *pos) +{ + struct ivpu_device *vdev = file->private_data; + + if (!size) + return -EINVAL; + + if (ivpu_jsm_reset_engine(vdev, DRM_IVPU_ENGINE_COMPUTE)) + return -ENODEV; + if (ivpu_jsm_reset_engine(vdev, DRM_IVPU_ENGINE_COPY)) + return -ENODEV; + + return size; +} + static const struct file_operations ivpu_reset_engine_fops = { .owner = THIS_MODULE, .open = simple_open, diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c index 9418c73ee8ef..3f2439117582 100644 --- a/drivers/accel/ivpu/ivpu_drv.c +++ b/drivers/accel/ivpu/ivpu_drv.c @@ -45,11 +45,11 @@ MODULE_PARM_DESC(test_mode, "Test mode mask. See IVPU_TEST_MODE_* macros."); u8 ivpu_pll_min_ratio; module_param_named(pll_min_ratio, ivpu_pll_min_ratio, byte, 0644); -MODULE_PARM_DESC(pll_min_ratio, "Minimum PLL ratio used to set VPU frequency"); +MODULE_PARM_DESC(pll_min_ratio, "Minimum PLL ratio used to set NPU frequency"); u8 ivpu_pll_max_ratio = U8_MAX; module_param_named(pll_max_ratio, ivpu_pll_max_ratio, byte, 0644); -MODULE_PARM_DESC(pll_max_ratio, "Maximum PLL ratio used to set VPU frequency"); +MODULE_PARM_DESC(pll_max_ratio, "Maximum PLL ratio used to set NPU frequency"); bool ivpu_disable_mmu_cont_pages; module_param_named(disable_mmu_cont_pages, ivpu_disable_mmu_cont_pages, bool, 0644); @@ -328,13 +328,13 @@ static int ivpu_wait_for_ready(struct ivpu_device *vdev) ivpu_ipc_consumer_del(vdev, &cons); if (!ret && ipc_hdr.data_addr != IVPU_IPC_BOOT_MSG_DATA_ADDR) { - ivpu_err(vdev, "Invalid VPU ready message: 0x%x\n", + ivpu_err(vdev, "Invalid NPU ready message: 0x%x\n", ipc_hdr.data_addr); return -EIO; } if (!ret) - ivpu_dbg(vdev, PM, "VPU ready message received successfully\n"); + ivpu_dbg(vdev, PM, "NPU ready message received successfully\n"); return ret; } @@ -533,6 +533,7 @@ static int ivpu_dev_init(struct ivpu_device *vdev) atomic64_set(&vdev->unique_id_counter, 0); xa_init_flags(&vdev->context_xa, XA_FLAGS_ALLOC); xa_init_flags(&vdev->submitted_jobs_xa, XA_FLAGS_ALLOC1); + xa_init_flags(&vdev->db_xa, XA_FLAGS_ALLOC1); lockdep_set_class(&vdev->submitted_jobs_xa.xa_lock, &submitted_jobs_xa_lock_class_key); INIT_LIST_HEAD(&vdev->bo_list); @@ -606,6 +607,7 @@ err_power_down: if (IVPU_WA(d3hot_after_power_off)) pci_set_power_state(to_pci_dev(vdev->drm.dev), PCI_D3hot); err_xa_destroy: + xa_destroy(&vdev->db_xa); xa_destroy(&vdev->submitted_jobs_xa); xa_destroy(&vdev->context_xa); return ret; @@ -641,6 +643,8 @@ static void ivpu_dev_fini(struct ivpu_device *vdev) ivpu_mmu_reserved_context_fini(vdev); ivpu_mmu_global_context_fini(vdev); + drm_WARN_ON(&vdev->drm, !xa_empty(&vdev->db_xa)); + xa_destroy(&vdev->db_xa); drm_WARN_ON(&vdev->drm, !xa_empty(&vdev->submitted_jobs_xa)); xa_destroy(&vdev->submitted_jobs_xa); drm_WARN_ON(&vdev->drm, !xa_empty(&vdev->context_xa)); diff --git a/drivers/accel/ivpu/ivpu_drv.h b/drivers/accel/ivpu/ivpu_drv.h index 069ace4adb2d..7be0500d9bb8 100644 --- a/drivers/accel/ivpu/ivpu_drv.h +++ b/drivers/accel/ivpu/ivpu_drv.h @@ -36,6 +36,9 @@ #define IVPU_USER_CONTEXT_MIN_SSID 2 #define IVPU_USER_CONTEXT_MAX_SSID (IVPU_USER_CONTEXT_MIN_SSID + 63) +#define IVPU_MIN_DB 1 +#define IVPU_MAX_DB 255 + #define IVPU_NUM_ENGINES 2 #define IVPU_PLATFORM_SILICON 0 @@ -119,6 +122,8 @@ struct ivpu_device { struct xarray context_xa; struct xa_limit context_xa_limit; + struct xarray db_xa; + struct mutex bo_list_lock; /* Protects bo_list */ struct list_head bo_list; @@ -189,7 +194,7 @@ static inline int ivpu_hw_gen(struct ivpu_device *vdev) case PCI_DEVICE_ID_LNL: return IVPU_HW_40XX; default: - ivpu_err(vdev, "Unknown VPU device\n"); + ivpu_err(vdev, "Unknown NPU device\n"); return 0; } } diff --git a/drivers/accel/ivpu/ivpu_fw.c b/drivers/accel/ivpu/ivpu_fw.c index 6576232f3e67..dfa91d48f901 100644 --- a/drivers/accel/ivpu/ivpu_fw.c +++ b/drivers/accel/ivpu/ivpu_fw.c @@ -46,15 +46,13 @@ static char *ivpu_firmware; module_param_named_unsafe(firmware, ivpu_firmware, charp, 0644); -MODULE_PARM_DESC(firmware, "VPU firmware binary in /lib/firmware/.."); +MODULE_PARM_DESC(firmware, "NPU firmware binary in /lib/firmware/.."); -/* TODO: Remove mtl_vpu.bin from names after transition to generation based FW names */ static struct { int gen; const char *name; } fw_names[] = { { IVPU_HW_37XX, "vpu_37xx.bin" }, - { IVPU_HW_37XX, "mtl_vpu.bin" }, { IVPU_HW_37XX, "intel/vpu/vpu_37xx_v0.0.bin" }, { IVPU_HW_40XX, "vpu_40xx.bin" }, { IVPU_HW_40XX, "intel/vpu/vpu_40xx_v0.0.bin" }, @@ -251,6 +249,7 @@ static int ivpu_fw_update_global_range(struct ivpu_device *vdev) static int ivpu_fw_mem_init(struct ivpu_device *vdev) { struct ivpu_fw_info *fw = vdev->fw; + struct ivpu_addr_range fw_range; int log_verb_size; int ret; @@ -258,16 +257,19 @@ static int ivpu_fw_mem_init(struct ivpu_device *vdev) if (ret) return ret; - fw->mem = ivpu_bo_alloc_internal(vdev, fw->runtime_addr, fw->runtime_size, DRM_IVPU_BO_WC); + fw_range.start = fw->runtime_addr; + fw_range.end = fw->runtime_addr + fw->runtime_size; + fw->mem = ivpu_bo_create(vdev, &vdev->gctx, &fw_range, fw->runtime_size, + DRM_IVPU_BO_WC | DRM_IVPU_BO_MAPPABLE); if (!fw->mem) { - ivpu_err(vdev, "Failed to allocate firmware runtime memory\n"); + ivpu_err(vdev, "Failed to create firmware runtime memory buffer\n"); return -ENOMEM; } - fw->mem_log_crit = ivpu_bo_alloc_internal(vdev, 0, IVPU_FW_CRITICAL_BUFFER_SIZE, - DRM_IVPU_BO_CACHED); + fw->mem_log_crit = ivpu_bo_create_global(vdev, IVPU_FW_CRITICAL_BUFFER_SIZE, + DRM_IVPU_BO_CACHED | DRM_IVPU_BO_MAPPABLE); if (!fw->mem_log_crit) { - ivpu_err(vdev, "Failed to allocate critical log buffer\n"); + ivpu_err(vdev, "Failed to create critical log buffer\n"); ret = -ENOMEM; goto err_free_fw_mem; } @@ -277,18 +279,19 @@ static int ivpu_fw_mem_init(struct ivpu_device *vdev) else log_verb_size = IVPU_FW_VERBOSE_BUFFER_SMALL_SIZE; - fw->mem_log_verb = ivpu_bo_alloc_internal(vdev, 0, log_verb_size, DRM_IVPU_BO_CACHED); + fw->mem_log_verb = ivpu_bo_create_global(vdev, log_verb_size, + DRM_IVPU_BO_CACHED | DRM_IVPU_BO_MAPPABLE); if (!fw->mem_log_verb) { - ivpu_err(vdev, "Failed to allocate verbose log buffer\n"); + ivpu_err(vdev, "Failed to create verbose log buffer\n"); ret = -ENOMEM; goto err_free_log_crit; } if (fw->shave_nn_size) { - fw->mem_shave_nn = ivpu_bo_alloc_internal(vdev, vdev->hw->ranges.shave.start, - fw->shave_nn_size, DRM_IVPU_BO_WC); + fw->mem_shave_nn = ivpu_bo_create(vdev, &vdev->gctx, &vdev->hw->ranges.shave, + fw->shave_nn_size, DRM_IVPU_BO_WC); if (!fw->mem_shave_nn) { - ivpu_err(vdev, "Failed to allocate shavenn buffer\n"); + ivpu_err(vdev, "Failed to create shavenn buffer\n"); ret = -ENOMEM; goto err_free_log_verb; } @@ -297,11 +300,11 @@ static int ivpu_fw_mem_init(struct ivpu_device *vdev) return 0; err_free_log_verb: - ivpu_bo_free_internal(fw->mem_log_verb); + ivpu_bo_free(fw->mem_log_verb); err_free_log_crit: - ivpu_bo_free_internal(fw->mem_log_crit); + ivpu_bo_free(fw->mem_log_crit); err_free_fw_mem: - ivpu_bo_free_internal(fw->mem); + ivpu_bo_free(fw->mem); return ret; } @@ -310,13 +313,13 @@ static void ivpu_fw_mem_fini(struct ivpu_device *vdev) struct ivpu_fw_info *fw = vdev->fw; if (fw->mem_shave_nn) { - ivpu_bo_free_internal(fw->mem_shave_nn); + ivpu_bo_free(fw->mem_shave_nn); fw->mem_shave_nn = NULL; } - ivpu_bo_free_internal(fw->mem_log_verb); - ivpu_bo_free_internal(fw->mem_log_crit); - ivpu_bo_free_internal(fw->mem); + ivpu_bo_free(fw->mem_log_verb); + ivpu_bo_free(fw->mem_log_crit); + ivpu_bo_free(fw->mem); fw->mem_log_verb = NULL; fw->mem_log_crit = NULL; @@ -470,6 +473,8 @@ static void ivpu_fw_boot_params_print(struct ivpu_device *vdev, struct vpu_boot_ boot_params->d0i3_residency_time_us); ivpu_dbg(vdev, FW_BOOT, "boot_params.d0i3_entry_vpu_ts = %llu\n", boot_params->d0i3_entry_vpu_ts); + ivpu_dbg(vdev, FW_BOOT, "boot_params.system_time_us = %llu\n", + boot_params->system_time_us); } void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params *boot_params) @@ -481,11 +486,14 @@ void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params boot_params->d0i3_residency_time_us = ktime_us_delta(ktime_get_boottime(), vdev->hw->d0i3_entry_host_ts); boot_params->d0i3_entry_vpu_ts = vdev->hw->d0i3_entry_vpu_ts; + boot_params->system_time_us = ktime_to_us(ktime_get_real()); ivpu_dbg(vdev, FW_BOOT, "boot_params.d0i3_residency_time_us = %lld\n", boot_params->d0i3_residency_time_us); ivpu_dbg(vdev, FW_BOOT, "boot_params.d0i3_entry_vpu_ts = %llu\n", boot_params->d0i3_entry_vpu_ts); + ivpu_dbg(vdev, FW_BOOT, "boot_params.system_time_us = %llu\n", + boot_params->system_time_us); boot_params->save_restore_ret_address = 0; vdev->pm->is_warmboot = true; @@ -563,6 +571,7 @@ void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params boot_params->d0i3_residency_time_us = 0; boot_params->d0i3_entry_vpu_ts = 0; + boot_params->system_time_us = ktime_to_us(ktime_get_real()); wmb(); /* Flush WC buffers after writing bootparams */ ivpu_fw_boot_params_print(vdev, boot_params); diff --git a/drivers/accel/ivpu/ivpu_fw_log.c b/drivers/accel/ivpu/ivpu_fw_log.c index f6770f5e82a2..ef0adb5e0fbe 100644 --- a/drivers/accel/ivpu/ivpu_fw_log.c +++ b/drivers/accel/ivpu/ivpu_fw_log.c @@ -20,7 +20,7 @@ unsigned int ivpu_log_level = IVPU_FW_LOG_ERROR; module_param(ivpu_log_level, uint, 0444); MODULE_PARM_DESC(ivpu_log_level, - "VPU firmware default trace level: debug=" __stringify(IVPU_FW_LOG_DEBUG) + "NPU firmware default trace level: debug=" __stringify(IVPU_FW_LOG_DEBUG) " info=" __stringify(IVPU_FW_LOG_INFO) " warn=" __stringify(IVPU_FW_LOG_WARN) " error=" __stringify(IVPU_FW_LOG_ERROR) @@ -121,11 +121,11 @@ void ivpu_fw_log_print(struct ivpu_device *vdev, bool only_new_msgs, struct drm_ u32 next = 0; while (fw_log_ptr(vdev, vdev->fw->mem_log_crit, &next, &log_header) == 0) - fw_log_print_buffer(vdev, log_header, "VPU critical", only_new_msgs, p); + fw_log_print_buffer(vdev, log_header, "NPU critical", only_new_msgs, p); next = 0; while (fw_log_ptr(vdev, vdev->fw->mem_log_verb, &next, &log_header) == 0) - fw_log_print_buffer(vdev, log_header, "VPU verbose", only_new_msgs, p); + fw_log_print_buffer(vdev, log_header, "NPU verbose", only_new_msgs, p); } void ivpu_fw_log_clear(struct ivpu_device *vdev) diff --git a/drivers/accel/ivpu/ivpu_gem.c b/drivers/accel/ivpu/ivpu_gem.c index e9ddbe9f50eb..1b409dbd332d 100644 --- a/drivers/accel/ivpu/ivpu_gem.c +++ b/drivers/accel/ivpu/ivpu_gem.c @@ -172,8 +172,7 @@ struct drm_gem_object *ivpu_gem_create_object(struct drm_device *dev, size_t siz return &bo->base.base; } -static struct ivpu_bo * -ivpu_bo_create(struct ivpu_device *vdev, u64 size, u32 flags) +static struct ivpu_bo *ivpu_bo_alloc(struct ivpu_device *vdev, u64 size, u32 flags) { struct drm_gem_shmem_object *shmem; struct ivpu_bo *bo; @@ -201,7 +200,7 @@ ivpu_bo_create(struct ivpu_device *vdev, u64 size, u32 flags) return bo; } -static int ivpu_bo_open(struct drm_gem_object *obj, struct drm_file *file) +static int ivpu_gem_bo_open(struct drm_gem_object *obj, struct drm_file *file) { struct ivpu_file_priv *file_priv = file->driver_priv; struct ivpu_device *vdev = file_priv->vdev; @@ -224,7 +223,7 @@ static int ivpu_bo_open(struct drm_gem_object *obj, struct drm_file *file) return ivpu_bo_alloc_vpu_addr(bo, &file_priv->ctx, range); } -static void ivpu_bo_free(struct drm_gem_object *obj) +static void ivpu_gem_bo_free(struct drm_gem_object *obj) { struct ivpu_device *vdev = to_ivpu_device(obj->dev); struct ivpu_bo *bo = to_ivpu_bo(obj); @@ -245,8 +244,8 @@ static void ivpu_bo_free(struct drm_gem_object *obj) } static const struct drm_gem_object_funcs ivpu_gem_funcs = { - .free = ivpu_bo_free, - .open = ivpu_bo_open, + .free = ivpu_gem_bo_free, + .open = ivpu_gem_bo_open, .print_info = drm_gem_shmem_object_print_info, .pin = drm_gem_shmem_object_pin, .unpin = drm_gem_shmem_object_unpin, @@ -272,9 +271,9 @@ int ivpu_bo_create_ioctl(struct drm_device *dev, void *data, struct drm_file *fi if (size == 0) return -EINVAL; - bo = ivpu_bo_create(vdev, size, args->flags); + bo = ivpu_bo_alloc(vdev, size, args->flags); if (IS_ERR(bo)) { - ivpu_err(vdev, "Failed to create BO: %pe (ctx %u size %llu flags 0x%x)", + ivpu_err(vdev, "Failed to allocate BO: %pe (ctx %u size %llu flags 0x%x)", bo, file_priv->ctx.id, args->size, args->flags); return PTR_ERR(bo); } @@ -289,33 +288,28 @@ int ivpu_bo_create_ioctl(struct drm_device *dev, void *data, struct drm_file *fi } struct ivpu_bo * -ivpu_bo_alloc_internal(struct ivpu_device *vdev, u64 vpu_addr, u64 size, u32 flags) +ivpu_bo_create(struct ivpu_device *vdev, struct ivpu_mmu_context *ctx, + struct ivpu_addr_range *range, u64 size, u32 flags) { - const struct ivpu_addr_range *range; - struct ivpu_addr_range fixed_range; struct iosys_map map; struct ivpu_bo *bo; int ret; - drm_WARN_ON(&vdev->drm, !PAGE_ALIGNED(vpu_addr)); + if (drm_WARN_ON(&vdev->drm, !range)) + return NULL; + + drm_WARN_ON(&vdev->drm, !PAGE_ALIGNED(range->start)); + drm_WARN_ON(&vdev->drm, !PAGE_ALIGNED(range->end)); drm_WARN_ON(&vdev->drm, !PAGE_ALIGNED(size)); - if (vpu_addr) { - fixed_range.start = vpu_addr; - fixed_range.end = vpu_addr + size; - range = &fixed_range; - } else { - range = &vdev->hw->ranges.global; - } - - bo = ivpu_bo_create(vdev, size, flags); + bo = ivpu_bo_alloc(vdev, size, flags); if (IS_ERR(bo)) { - ivpu_err(vdev, "Failed to create BO: %pe (vpu_addr 0x%llx size %llu flags 0x%x)", - bo, vpu_addr, size, flags); + ivpu_err(vdev, "Failed to allocate BO: %pe (vpu_addr 0x%llx size %llu flags 0x%x)", + bo, range->start, size, flags); return NULL; } - ret = ivpu_bo_alloc_vpu_addr(bo, &vdev->gctx, range); + ret = ivpu_bo_alloc_vpu_addr(bo, ctx, range); if (ret) goto err_put; @@ -323,11 +317,14 @@ ivpu_bo_alloc_internal(struct ivpu_device *vdev, u64 vpu_addr, u64 size, u32 fla if (ret) goto err_put; - dma_resv_lock(bo->base.base.resv, NULL); - ret = drm_gem_shmem_vmap(&bo->base, &map); - dma_resv_unlock(bo->base.base.resv); - if (ret) - goto err_put; + if (flags & DRM_IVPU_BO_MAPPABLE) { + dma_resv_lock(bo->base.base.resv, NULL); + ret = drm_gem_shmem_vmap(&bo->base, &map); + dma_resv_unlock(bo->base.base.resv); + + if (ret) + goto err_put; + } return bo; @@ -336,13 +333,20 @@ err_put: return NULL; } -void ivpu_bo_free_internal(struct ivpu_bo *bo) +struct ivpu_bo *ivpu_bo_create_global(struct ivpu_device *vdev, u64 size, u32 flags) +{ + return ivpu_bo_create(vdev, &vdev->gctx, &vdev->hw->ranges.global, size, flags); +} + +void ivpu_bo_free(struct ivpu_bo *bo) { struct iosys_map map = IOSYS_MAP_INIT_VADDR(bo->base.vaddr); - dma_resv_lock(bo->base.base.resv, NULL); - drm_gem_shmem_vunmap(&bo->base, &map); - dma_resv_unlock(bo->base.base.resv); + if (bo->flags & DRM_IVPU_BO_MAPPABLE) { + dma_resv_lock(bo->base.base.resv, NULL); + drm_gem_shmem_vunmap(&bo->base, &map); + dma_resv_unlock(bo->base.base.resv); + } drm_gem_object_put(&bo->base.base); } diff --git a/drivers/accel/ivpu/ivpu_gem.h b/drivers/accel/ivpu/ivpu_gem.h index a8559211c70d..fb7117c13eec 100644 --- a/drivers/accel/ivpu/ivpu_gem.h +++ b/drivers/accel/ivpu/ivpu_gem.h @@ -28,8 +28,10 @@ int ivpu_bo_pin(struct ivpu_bo *bo); void ivpu_bo_unbind_all_bos_from_context(struct ivpu_device *vdev, struct ivpu_mmu_context *ctx); struct drm_gem_object *ivpu_gem_create_object(struct drm_device *dev, size_t size); -struct ivpu_bo *ivpu_bo_alloc_internal(struct ivpu_device *vdev, u64 vpu_addr, u64 size, u32 flags); -void ivpu_bo_free_internal(struct ivpu_bo *bo); +struct ivpu_bo *ivpu_bo_create(struct ivpu_device *vdev, struct ivpu_mmu_context *ctx, + struct ivpu_addr_range *range, u64 size, u32 flags); +struct ivpu_bo *ivpu_bo_create_global(struct ivpu_device *vdev, u64 size, u32 flags); +void ivpu_bo_free(struct ivpu_bo *bo); int ivpu_bo_create_ioctl(struct drm_device *dev, void *data, struct drm_file *file); int ivpu_bo_info_ioctl(struct drm_device *dev, void *data, struct drm_file *file); diff --git a/drivers/accel/ivpu/ivpu_hw_37xx.c b/drivers/accel/ivpu/ivpu_hw_37xx.c index f15a93d83057..be91c6744b12 100644 --- a/drivers/accel/ivpu/ivpu_hw_37xx.c +++ b/drivers/accel/ivpu/ivpu_hw_37xx.c @@ -13,7 +13,7 @@ #include "ivpu_pm.h" #define TILE_FUSE_ENABLE_BOTH 0x0 -#define TILE_SKU_BOTH_MTL 0x3630 +#define TILE_SKU_BOTH 0x3630 /* Work point configuration values */ #define CONFIG_1_TILE 0x01 @@ -228,7 +228,7 @@ static int ivpu_pll_drive(struct ivpu_device *vdev, bool enable) ret = ivpu_hw_37xx_wait_for_vpuip_bar(vdev); if (ret) { - ivpu_err(vdev, "Timed out waiting for VPUIP bar\n"); + ivpu_err(vdev, "Timed out waiting for NPU IP bar\n"); return ret; } } @@ -599,7 +599,7 @@ static int ivpu_hw_37xx_info_init(struct ivpu_device *vdev) struct ivpu_hw_info *hw = vdev->hw; hw->tile_fuse = TILE_FUSE_ENABLE_BOTH; - hw->sku = TILE_SKU_BOTH_MTL; + hw->sku = TILE_SKU_BOTH; hw->config = WP_CONFIG_2_TILE_4_3_RATIO; ivpu_pll_init_frequency_ratios(vdev); @@ -742,10 +742,10 @@ static int ivpu_hw_37xx_power_down(struct ivpu_device *vdev) ivpu_hw_37xx_save_d0i3_entry_timestamp(vdev); if (!ivpu_hw_37xx_is_idle(vdev)) - ivpu_warn(vdev, "VPU not idle during power down\n"); + ivpu_warn(vdev, "NPU not idle during power down\n"); if (ivpu_hw_37xx_reset(vdev)) { - ivpu_err(vdev, "Failed to reset VPU\n"); + ivpu_err(vdev, "Failed to reset NPU\n"); ret = -EIO; } diff --git a/drivers/accel/ivpu/ivpu_hw_40xx.c b/drivers/accel/ivpu/ivpu_hw_40xx.c index 704288084f37..d4663a42416b 100644 --- a/drivers/accel/ivpu/ivpu_hw_40xx.c +++ b/drivers/accel/ivpu/ivpu_hw_40xx.c @@ -80,11 +80,11 @@ static char *ivpu_platform_to_str(u32 platform) { switch (platform) { case IVPU_PLATFORM_SILICON: - return "IVPU_PLATFORM_SILICON"; + return "SILICON"; case IVPU_PLATFORM_SIMICS: - return "IVPU_PLATFORM_SIMICS"; + return "SIMICS"; case IVPU_PLATFORM_FPGA: - return "IVPU_PLATFORM_FPGA"; + return "FPGA"; default: return "Invalid platform"; } @@ -773,7 +773,7 @@ static int ivpu_hw_40xx_reset(struct ivpu_device *vdev) int ret = 0; if (ivpu_hw_40xx_ip_reset(vdev)) { - ivpu_err(vdev, "Failed to reset VPU IP\n"); + ivpu_err(vdev, "Failed to reset NPU IP\n"); ret = -EIO; } @@ -931,7 +931,7 @@ static int ivpu_hw_40xx_power_down(struct ivpu_device *vdev) ivpu_hw_40xx_save_d0i3_entry_timestamp(vdev); if (!ivpu_hw_40xx_is_idle(vdev) && ivpu_hw_40xx_ip_reset(vdev)) - ivpu_warn(vdev, "Failed to reset the VPU\n"); + ivpu_warn(vdev, "Failed to reset the NPU\n"); if (ivpu_pll_disable(vdev)) { ivpu_err(vdev, "Failed to disable PLL\n"); diff --git a/drivers/accel/ivpu/ivpu_ipc.c b/drivers/accel/ivpu/ivpu_ipc.c index fa66c39b57ec..04ac4b9840fb 100644 --- a/drivers/accel/ivpu/ivpu_ipc.c +++ b/drivers/accel/ivpu/ivpu_ipc.c @@ -58,8 +58,8 @@ static void ivpu_ipc_mem_fini(struct ivpu_device *vdev) { struct ivpu_ipc_info *ipc = vdev->ipc; - ivpu_bo_free_internal(ipc->mem_rx); - ivpu_bo_free_internal(ipc->mem_tx); + ivpu_bo_free(ipc->mem_rx); + ivpu_bo_free(ipc->mem_tx); } static int @@ -471,13 +471,13 @@ int ivpu_ipc_init(struct ivpu_device *vdev) struct ivpu_ipc_info *ipc = vdev->ipc; int ret; - ipc->mem_tx = ivpu_bo_alloc_internal(vdev, 0, SZ_16K, DRM_IVPU_BO_WC); + ipc->mem_tx = ivpu_bo_create_global(vdev, SZ_16K, DRM_IVPU_BO_WC | DRM_IVPU_BO_MAPPABLE); if (!ipc->mem_tx) { ivpu_err(vdev, "Failed to allocate mem_tx\n"); return -ENOMEM; } - ipc->mem_rx = ivpu_bo_alloc_internal(vdev, 0, SZ_16K, DRM_IVPU_BO_WC); + ipc->mem_rx = ivpu_bo_create_global(vdev, SZ_16K, DRM_IVPU_BO_WC | DRM_IVPU_BO_MAPPABLE); if (!ipc->mem_rx) { ivpu_err(vdev, "Failed to allocate mem_rx\n"); ret = -ENOMEM; @@ -506,9 +506,9 @@ int ivpu_ipc_init(struct ivpu_device *vdev) return 0; err_free_rx: - ivpu_bo_free_internal(ipc->mem_rx); + ivpu_bo_free(ipc->mem_rx); err_free_tx: - ivpu_bo_free_internal(ipc->mem_tx); + ivpu_bo_free(ipc->mem_tx); return ret; } diff --git a/drivers/accel/ivpu/ivpu_job.c b/drivers/accel/ivpu/ivpu_job.c index 0440bee3ecaf..a9f2fe1bddea 100644 --- a/drivers/accel/ivpu/ivpu_job.c +++ b/drivers/accel/ivpu/ivpu_job.c @@ -30,19 +30,26 @@ static void ivpu_cmdq_ring_db(struct ivpu_device *vdev, struct ivpu_cmdq *cmdq) static struct ivpu_cmdq *ivpu_cmdq_alloc(struct ivpu_file_priv *file_priv, u16 engine) { + struct xa_limit db_xa_limit = {.max = IVPU_MAX_DB, .min = IVPU_MIN_DB}; struct ivpu_device *vdev = file_priv->vdev; struct vpu_job_queue_header *jobq_header; struct ivpu_cmdq *cmdq; + int ret; cmdq = kzalloc(sizeof(*cmdq), GFP_KERNEL); if (!cmdq) return NULL; - cmdq->mem = ivpu_bo_alloc_internal(vdev, 0, SZ_4K, DRM_IVPU_BO_WC); - if (!cmdq->mem) - goto cmdq_free; + ret = xa_alloc(&vdev->db_xa, &cmdq->db_id, NULL, db_xa_limit, GFP_KERNEL); + if (ret) { + ivpu_err(vdev, "Failed to allocate doorbell id: %d\n", ret); + goto err_free_cmdq; + } + + cmdq->mem = ivpu_bo_create_global(vdev, SZ_4K, DRM_IVPU_BO_WC | DRM_IVPU_BO_MAPPABLE); + if (!cmdq->mem) + goto err_erase_xa; - cmdq->db_id = file_priv->ctx.id + engine * ivpu_get_context_count(vdev); cmdq->entry_count = (u32)((ivpu_bo_size(cmdq->mem) - sizeof(struct vpu_job_queue_header)) / sizeof(struct vpu_job_queue_entry)); @@ -55,7 +62,9 @@ static struct ivpu_cmdq *ivpu_cmdq_alloc(struct ivpu_file_priv *file_priv, u16 e return cmdq; -cmdq_free: +err_erase_xa: + xa_erase(&vdev->db_xa, cmdq->db_id); +err_free_cmdq: kfree(cmdq); return NULL; } @@ -65,7 +74,8 @@ static void ivpu_cmdq_free(struct ivpu_file_priv *file_priv, struct ivpu_cmdq *c if (!cmdq) return; - ivpu_bo_free_internal(cmdq->mem); + ivpu_bo_free(cmdq->mem); + xa_erase(&file_priv->vdev->db_xa, cmdq->db_id); kfree(cmdq); } diff --git a/drivers/accel/ivpu/ivpu_pm.c b/drivers/accel/ivpu/ivpu_pm.c index f501f27ebafd..280fd3936f60 100644 --- a/drivers/accel/ivpu/ivpu_pm.c +++ b/drivers/accel/ivpu/ivpu_pm.c @@ -22,7 +22,7 @@ static bool ivpu_disable_recovery; module_param_named_unsafe(disable_recovery, ivpu_disable_recovery, bool, 0644); -MODULE_PARM_DESC(disable_recovery, "Disables recovery when VPU hang is detected"); +MODULE_PARM_DESC(disable_recovery, "Disables recovery when NPU hang is detected"); static unsigned long ivpu_tdr_timeout_ms; module_param_named(tdr_timeout_ms, ivpu_tdr_timeout_ms, ulong, 0644); @@ -112,11 +112,11 @@ static void ivpu_pm_recovery_work(struct work_struct *work) char *evt[2] = {"IVPU_PM_EVENT=IVPU_RECOVER", NULL}; int ret; - ivpu_err(vdev, "Recovering the VPU (reset #%d)\n", atomic_read(&vdev->pm->reset_counter)); + ivpu_err(vdev, "Recovering the NPU (reset #%d)\n", atomic_read(&vdev->pm->reset_counter)); ret = pm_runtime_resume_and_get(vdev->drm.dev); if (ret) - ivpu_err(vdev, "Failed to resume VPU: %d\n", ret); + ivpu_err(vdev, "Failed to resume NPU: %d\n", ret); ivpu_fw_log_dump(vdev); @@ -255,10 +255,10 @@ int ivpu_pm_runtime_suspend_cb(struct device *dev) ret = ivpu_suspend(vdev); if (ret) - ivpu_err(vdev, "Failed to set suspend VPU: %d\n", ret); + ivpu_err(vdev, "Failed to suspend NPU: %d\n", ret); if (!hw_is_idle) { - ivpu_err(vdev, "VPU failed to enter idle, force suspended.\n"); + ivpu_err(vdev, "NPU failed to enter idle, force suspended.\n"); ivpu_fw_log_dump(vdev); ivpu_pm_prepare_cold_boot(vdev); } else { diff --git a/drivers/accel/ivpu/vpu_boot_api.h b/drivers/accel/ivpu/vpu_boot_api.h index 04c954258563..87cac7bc730a 100644 --- a/drivers/accel/ivpu/vpu_boot_api.h +++ b/drivers/accel/ivpu/vpu_boot_api.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: MIT */ /* - * Copyright (C) 2020-2023 Intel Corporation + * Copyright (c) 2020-2023, Intel Corporation. */ #ifndef VPU_BOOT_API_H @@ -27,12 +27,12 @@ * Minor version changes when API backward compatibility is preserved. * Resets to 0 if Major version is incremented. */ -#define VPU_BOOT_API_VER_MINOR 20 +#define VPU_BOOT_API_VER_MINOR 22 /* * API header changed (field names, documentation, formatting) but API itself has not been changed */ -#define VPU_BOOT_API_VER_PATCH 4 +#define VPU_BOOT_API_VER_PATCH 0 /* * Index in the API version table @@ -41,7 +41,7 @@ #define VPU_BOOT_API_VER_INDEX 0 /* ------------ FW API version information end ---------------------*/ -#pragma pack(push, 1) +#pragma pack(push, 4) /* * Firmware image header format @@ -66,9 +66,17 @@ struct vpu_firmware_header { /* Size of memory require for firmware execution */ u32 runtime_size; u32 shave_nn_fw_size; - /* Size of primary preemption buffer. */ + /* + * Size of primary preemption buffer, assuming a 2-job submission queue. + * NOTE: host driver is expected to adapt size accordingly to actual + * submission queue size and device capabilities. + */ u32 preemption_buffer_1_size; - /* Size of secondary preemption buffer. */ + /* + * Size of secondary preemption buffer, assuming a 2-job submission queue. + * NOTE: host driver is expected to adapt size accordingly to actual + * submission queue size and device capabilities. + */ u32 preemption_buffer_2_size; /* Space reserved for future preemption-related fields. */ u32 preemption_reserved[6]; @@ -181,10 +189,10 @@ struct vpu_warm_boot_section { #define VPU_PRESENT_CALL_PERIOD_MS_MAX 10000 /** - * Macros to enable various operation modes within the VPU. + * Macros to enable various power profiles within the NPU. * To be defined as part of 32 bit mask. */ -#define VPU_OP_MODE_SURVIVABILITY 0x1 +#define POWER_PROFILE_SURVIVABILITY 0x1 struct vpu_boot_params { u32 magic; @@ -317,7 +325,15 @@ struct vpu_boot_params { u64 d0i3_residency_time_us; /* Value of VPU perf counter at the time of entering D0i3 state . */ u64 d0i3_entry_vpu_ts; - u32 pad4[20]; + /* + * The system time of the host operating system in microseconds. + * E.g the number of microseconds since 1st of January 1970, or whatever date the + * host operating system uses to maintain system time. + * This value will be used to track system time on the VPU. + * The KMD is required to update this value on every VPU reset. + */ + u64 system_time_us; + u32 pad4[18]; /* Warm boot information: 0x400 - 0x43F */ u32 warm_boot_sections_count; u32 warm_boot_start_address_reference; @@ -344,10 +360,14 @@ struct vpu_boot_params { u32 vpu_focus_present_timer_ms; /* VPU ECC Signaling */ u32 vpu_uses_ecc_mca_signal; - /* Values defined by VPU_OP_MODE* macros */ - u32 vpu_operation_mode; - /* Unused/reserved: 0x480 - 0xFFF */ - u32 pad6[736]; + /* Values defined by POWER_PROFILE* macros */ + u32 power_profile; + /* Microsecond value for DCT active cycle */ + u32 dct_active_us; + /* Microsecond value for DCT inactive cycle */ + u32 dct_inactive_us; + /* Unused/reserved: 0x488 - 0xFFF */ + u32 pad6[734]; }; /* diff --git a/drivers/accel/ivpu/vpu_jsm_api.h b/drivers/accel/ivpu/vpu_jsm_api.h index 7da7622742be..e46f3531211a 100644 --- a/drivers/accel/ivpu/vpu_jsm_api.h +++ b/drivers/accel/ivpu/vpu_jsm_api.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: MIT */ /* - * Copyright (C) 2020-2023 Intel Corporation + * Copyright (c) 2020-2023, Intel Corporation. */ /** @@ -27,7 +27,7 @@ /* * API header changed (field names, documentation, formatting) but API itself has not been changed */ -#define VPU_JSM_API_VER_PATCH 0 +#define VPU_JSM_API_VER_PATCH 6 /* * Index in the API version table @@ -43,8 +43,11 @@ /* Max number of impacted contexts that can be dealt with the engine reset command */ #define VPU_MAX_ENGINE_RESET_IMPACTED_CONTEXTS 3 -/** Pack the API structures for now, once alignment issues are fixed this can be removed */ -#pragma pack(push, 1) +/* + * Pack the API structures to enforce binary compatibility + * Align to 8 bytes for optimal performance + */ +#pragma pack(push, 8) /* * Engine indexes. @@ -124,6 +127,19 @@ */ #define VPU_HWS_MAX_REALTIME_PRIORITY_LEVEL 31U +/* + * vpu_jsm_engine_reset_context flag definitions + */ +#define VPU_ENGINE_RESET_CONTEXT_FLAG_COLLATERAL_DAMAGE_MASK BIT(0) +#define VPU_ENGINE_RESET_CONTEXT_HANG_PRIMARY_CAUSE 0 +#define VPU_ENGINE_RESET_CONTEXT_COLLATERAL_DAMAGE 1 + +/* + * Invalid command queue handle identifier. Applies to cmdq_id and cmdq_group + * in this API. + */ +#define VPU_HWS_INVALID_CMDQ_HANDLE 0ULL + /* * Job format. */ @@ -613,7 +629,7 @@ struct vpu_jsm_engine_reset_context { u32 reserved_0; /* Command queue id */ u64 cmdq_id; - /* Flags: 0: cause of hang; 1: collateral damage of reset */ + /* See VPU_ENGINE_RESET_CONTEXT_* defines */ u64 flags; }; @@ -730,11 +746,7 @@ struct vpu_ipc_msg_payload_hws_create_cmdq { u32 host_ssid; /* Engine for which queue is being created */ u32 engine_idx; - /* - * Cmdq group may be set to 0 or equal to - * cmdq_id while each priority band contains - * only single engine instances. - */ + /* Cmdq group: only used for HWS logging of state changes */ u64 cmdq_group; /* Command queue id */ u64 cmdq_id; diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h index 5c36ab85f80b..67d7be800a7c 100644 --- a/drivers/char/agp/agp.h +++ b/drivers/char/agp/agp.h @@ -138,7 +138,6 @@ struct agp_bridge_data { unsigned long gart_bus_addr; unsigned long gatt_bus_addr; u32 mode; - enum chipset_type type; unsigned long *key_list; atomic_t current_memory_agp; atomic_t agp_in_use; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c index 5706b282a0c7..c7df7fa3459f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c @@ -97,6 +97,10 @@ void amdgpu_show_fdinfo(struct drm_printer *p, struct drm_file *file) stats.requested_visible_vram/1024UL); drm_printf(p, "amd-requested-gtt:\t%llu KiB\n", stats.requested_gtt/1024UL); + drm_printf(p, "drm-shared-vram:\t%llu KiB\n", stats.vram_shared/1024UL); + drm_printf(p, "drm-shared-gtt:\t%llu KiB\n", stats.gtt_shared/1024UL); + drm_printf(p, "drm-shared-cpu:\t%llu KiB\n", stats.cpu_shared/1024UL); + for (hw_ip = 0; hw_ip < AMDGPU_HW_IP_NUM; ++hw_ip) { if (!usage[hw_ip]) continue; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index b671b0665492..010b0cb7693c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -1273,25 +1273,36 @@ void amdgpu_bo_get_memory(struct amdgpu_bo *bo, struct amdgpu_mem_stats *stats) { uint64_t size = amdgpu_bo_size(bo); + struct drm_gem_object *obj; unsigned int domain; + bool shared; /* Abort if the BO doesn't currently have a backing store */ if (!bo->tbo.resource) return; + obj = &bo->tbo.base; + shared = drm_gem_object_is_shared_for_memory_stats(obj); + domain = amdgpu_mem_type_to_domain(bo->tbo.resource->mem_type); switch (domain) { case AMDGPU_GEM_DOMAIN_VRAM: stats->vram += size; if (amdgpu_bo_in_cpu_visible_vram(bo)) stats->visible_vram += size; + if (shared) + stats->vram_shared += size; break; case AMDGPU_GEM_DOMAIN_GTT: stats->gtt += size; + if (shared) + stats->gtt_shared += size; break; case AMDGPU_GEM_DOMAIN_CPU: default: stats->cpu += size; + if (shared) + stats->cpu_shared += size; break; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h index a3ea8a82db23..be679c42b0b8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h @@ -138,12 +138,18 @@ struct amdgpu_bo_vm { struct amdgpu_mem_stats { /* current VRAM usage, includes visible VRAM */ uint64_t vram; + /* current shared VRAM usage, includes visible VRAM */ + uint64_t vram_shared; /* current visible VRAM usage */ uint64_t visible_vram; /* current GTT usage */ uint64_t gtt; + /* current shared GTT usage */ + uint64_t gtt_shared; /* current system memory usage */ uint64_t cpu; + /* current shared system memory usage */ + uint64_t cpu_shared; /* sum of evicted buffers, includes visible VRAM */ uint64_t evicted_vram; /* sum of evicted buffers due to CPU access */ diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c index 1e40d451ce8c..b5518ff97165 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c @@ -1290,17 +1290,6 @@ static int adv7511_probe(struct i2c_client *i2c) INIT_WORK(&adv7511->hpd_work, adv7511_hpd_work); - if (i2c->irq) { - init_waitqueue_head(&adv7511->wq); - - ret = devm_request_threaded_irq(dev, i2c->irq, NULL, - adv7511_irq_handler, - IRQF_ONESHOT, dev_name(dev), - adv7511); - if (ret) - goto err_unregister_cec; - } - adv7511_power_off(adv7511); i2c_set_clientdata(i2c, adv7511); @@ -1324,6 +1313,17 @@ static int adv7511_probe(struct i2c_client *i2c) adv7511_audio_init(dev, adv7511); + if (i2c->irq) { + init_waitqueue_head(&adv7511->wq); + + ret = devm_request_threaded_irq(dev, i2c->irq, NULL, + adv7511_irq_handler, + IRQF_ONESHOT, dev_name(dev), + adv7511); + if (ret) + goto err_unregister_audio; + } + if (adv7511->info->has_dsi) { ret = adv7533_attach_dsi(adv7511); if (ret) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index 0e59b30d5227..cceb5aab6c83 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -3549,6 +3549,7 @@ struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev, hdmi->bridge.interlace_allowed = true; hdmi->bridge.ddc = hdmi->ddc; hdmi->bridge.of_node = pdev->dev.of_node; + hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA; memset(&pdevinfo, 0, sizeof(pdevinfo)); pdevinfo.parent = dev; diff --git a/drivers/gpu/drm/ci/testlist.txt b/drivers/gpu/drm/ci/testlist.txt index eaeb751bb0ad..3377f002f8c5 100644 --- a/drivers/gpu/drm/ci/testlist.txt +++ b/drivers/gpu/drm/ci/testlist.txt @@ -100,7 +100,7 @@ kms_atomic@plane-invalid-params-fence kms_atomic@crtc-invalid-params kms_atomic@crtc-invalid-params-fence kms_atomic@atomic-invalid-params -kms_atomic@atomic_plane_damage +kms_atomic@atomic-plane-damage kms_atomic_interruptible@legacy-setmode kms_atomic_interruptible@atomic-setmode kms_atomic_interruptible@legacy-dpms @@ -321,726 +321,726 @@ kms_bw@linear-tiling-7-displays-3840x2160p kms_bw@linear-tiling-8-displays-1920x1080p kms_bw@linear-tiling-8-displays-2560x1440p kms_bw@linear-tiling-8-displays-3840x2160p -kms_ccs@pipe-A-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-A-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-A-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-A-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-A-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-A-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-A-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-A-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-A-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-A-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-A-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-A-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-A-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-A-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-A-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-A-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-A-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-A-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-A-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-A-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-A-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-A-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-B-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-B-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-B-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-B-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-B-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-B-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-B-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-B-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-B-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-B-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-B-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-B-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-B-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-B-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-B-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-B-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-B-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-B-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-B-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-B-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-B-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-C-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-C-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-C-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-C-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-C-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-C-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-C-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-C-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-C-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-C-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-C-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-C-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-C-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-C-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-C-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-C-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-C-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-C-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-C-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-C-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-C-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-D-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-D-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-D-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-D-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-D-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-D-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-D-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-D-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-D-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-D-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-D-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-D-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-D-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-D-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-D-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-D-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-D-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-D-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-D-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-D-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-D-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-E-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-E-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-E-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-E-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-E-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-E-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-E-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-E-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-E-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-E-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-E-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-E-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-E-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-E-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-E-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-E-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-E-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-E-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-E-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-E-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-E-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-F-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-F-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-F-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-F-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-F-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-F-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-F-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-F-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-F-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-F-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-F-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-F-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-F-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-F-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-F-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-F-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-F-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-F-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-F-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-F-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-F-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-G-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-G-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-G-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-G-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-G-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-G-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-G-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-G-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-G-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-G-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-G-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-G-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-G-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-G-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-G-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-G-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-G-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-G-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-G-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-G-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-G-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-G-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-G-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-G-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-G-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-G-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-G-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-G-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-G-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-G-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-bad-pixel-format-y_tiled_ccs -kms_ccs@pipe-H-bad-pixel-format-yf_tiled_ccs -kms_ccs@pipe-H-bad-pixel-format-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-bad-pixel-format-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-bad-pixel-format-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-bad-pixel-format-4_tiled_dg2_rc_ccs -kms_ccs@pipe-H-bad-pixel-format-4_tiled_dg2_mc_ccs -kms_ccs@pipe-H-bad-pixel-format-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-H-bad-pixel-format-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-bad-pixel-format-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-bad-pixel-format-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-bad-rotation-90-y_tiled_ccs -kms_ccs@pipe-H-bad-rotation-90-yf_tiled_ccs -kms_ccs@pipe-H-bad-rotation-90-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-bad-rotation-90-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-bad-rotation-90-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-bad-rotation-90-4_tiled_dg2_rc_ccs -kms_ccs@pipe-H-bad-rotation-90-4_tiled_dg2_mc_ccs -kms_ccs@pipe-H-bad-rotation-90-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-H-bad-rotation-90-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-bad-rotation-90-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-bad-rotation-90-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-crc-primary-basic-y_tiled_ccs -kms_ccs@pipe-H-crc-primary-basic-yf_tiled_ccs -kms_ccs@pipe-H-crc-primary-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-crc-primary-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-crc-primary-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-crc-primary-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-H-crc-primary-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-H-crc-primary-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-H-crc-primary-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-crc-primary-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-crc-primary-basic-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-crc-primary-rotation-180-y_tiled_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-yf_tiled_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-crc-primary-rotation-180-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4_tiled_dg2_rc_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4_tiled_dg2_mc_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-H-crc-primary-rotation-180-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-random-ccs-data-y_tiled_ccs -kms_ccs@pipe-H-random-ccs-data-yf_tiled_ccs -kms_ccs@pipe-H-random-ccs-data-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-random-ccs-data-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-random-ccs-data-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-random-ccs-data-4_tiled_dg2_rc_ccs -kms_ccs@pipe-H-random-ccs-data-4_tiled_dg2_mc_ccs -kms_ccs@pipe-H-random-ccs-data-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-H-random-ccs-data-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-random-ccs-data-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-random-ccs-data-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-missing-ccs-buffer-y_tiled_ccs -kms_ccs@pipe-H-missing-ccs-buffer-yf_tiled_ccs -kms_ccs@pipe-H-missing-ccs-buffer-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-missing-ccs-buffer-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-missing-ccs-buffer-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-missing-ccs-buffer-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-ccs-on-another-bo-y_tiled_ccs -kms_ccs@pipe-H-ccs-on-another-bo-yf_tiled_ccs -kms_ccs@pipe-H-ccs-on-another-bo-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-ccs-on-another-bo-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-ccs-on-another-bo-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-ccs-on-another-bo-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-bad-aux-stride-y_tiled_ccs -kms_ccs@pipe-H-bad-aux-stride-yf_tiled_ccs -kms_ccs@pipe-H-bad-aux-stride-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-bad-aux-stride-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-bad-aux-stride-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-bad-aux-stride-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-bad-aux-stride-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-bad-aux-stride-4_tiled_mtl_rc_ccs_cc -kms_ccs@pipe-H-crc-sprite-planes-basic-y_tiled_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-yf_tiled_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc -kms_ccs@pipe-H-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs_cc -kms_ccs@pipe-H-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc +kms_ccs@pipe-A-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-A-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-A-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-A-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-A-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-A-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-A-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-A-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-A-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-A-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-A-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-A-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-A-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-A-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-A-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-A-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-A-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-A-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-A-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-A-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-A-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-A-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-A-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-A-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-A-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-A-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-A-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-A-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-A-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-B-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-B-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-B-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-B-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-B-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-B-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-B-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-B-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-B-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-B-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-B-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-B-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-B-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-B-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-B-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-B-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-B-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-B-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-B-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-B-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-B-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-B-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-B-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-B-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-B-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-B-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-B-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-B-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-C-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-C-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-C-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-C-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-C-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-C-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-C-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-C-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-C-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-C-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-C-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-C-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-C-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-C-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-C-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-C-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-C-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-C-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-C-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-C-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-C-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-C-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-C-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-C-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-C-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-C-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-C-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-C-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-D-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-D-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-D-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-D-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-D-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-D-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-D-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-D-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-D-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-D-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-D-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-D-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-D-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-D-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-D-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-D-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-D-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-D-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-D-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-D-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-D-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-D-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-D-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-D-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-D-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-D-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-D-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-D-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-E-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-E-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-E-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-E-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-E-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-E-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-E-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-E-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-E-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-E-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-E-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-E-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-E-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-E-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-E-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-E-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-E-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-E-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-E-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-E-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-E-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-E-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-E-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-E-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-E-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-E-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-E-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-E-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-F-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-F-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-F-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-F-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-F-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-F-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-F-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-F-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-F-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-F-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-F-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-F-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-F-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-F-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-F-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-F-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-F-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-F-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-F-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-F-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-F-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-F-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-F-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-F-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-F-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-F-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-F-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-F-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-G-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-G-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-G-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-G-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-G-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-G-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-G-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-G-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-G-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-G-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-G-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-G-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-G-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-G-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-G-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-G-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-G-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-G-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-G-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-G-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-G-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-G-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-G-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-G-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-bad-pixel-format-y-tiled-ccs +kms_ccs@pipe-H-bad-pixel-format-yf-tiled-ccs +kms_ccs@pipe-H-bad-pixel-format-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-bad-pixel-format-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-bad-pixel-format-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-bad-pixel-format-4-tiled-dg2-rc-ccs +kms_ccs@pipe-H-bad-pixel-format-4-tiled-dg2-mc-ccs +kms_ccs@pipe-H-bad-pixel-format-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-H-bad-pixel-format-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-bad-pixel-format-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-bad-pixel-format-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-bad-rotation-90-y-tiled-ccs +kms_ccs@pipe-H-bad-rotation-90-yf-tiled-ccs +kms_ccs@pipe-H-bad-rotation-90-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-bad-rotation-90-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-bad-rotation-90-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-bad-rotation-90-4-tiled-dg2-rc-ccs +kms_ccs@pipe-H-bad-rotation-90-4-tiled-dg2-mc-ccs +kms_ccs@pipe-H-bad-rotation-90-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-H-bad-rotation-90-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-bad-rotation-90-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-bad-rotation-90-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-crc-primary-basic-y-tiled-ccs +kms_ccs@pipe-H-crc-primary-basic-yf-tiled-ccs +kms_ccs@pipe-H-crc-primary-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-crc-primary-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-crc-primary-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-crc-primary-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-H-crc-primary-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-H-crc-primary-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-H-crc-primary-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-crc-primary-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-crc-primary-basic-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-yf-tiled-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-dg2-rc-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-dg2-mc-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-random-ccs-data-y-tiled-ccs +kms_ccs@pipe-H-random-ccs-data-yf-tiled-ccs +kms_ccs@pipe-H-random-ccs-data-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-random-ccs-data-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-random-ccs-data-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-random-ccs-data-4-tiled-dg2-rc-ccs +kms_ccs@pipe-H-random-ccs-data-4-tiled-dg2-mc-ccs +kms_ccs@pipe-H-random-ccs-data-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-H-random-ccs-data-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-random-ccs-data-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-random-ccs-data-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-ccs +kms_ccs@pipe-H-missing-ccs-buffer-yf-tiled-ccs +kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-missing-ccs-buffer-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-missing-ccs-buffer-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-ccs +kms_ccs@pipe-H-ccs-on-another-bo-yf-tiled-ccs +kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-ccs-on-another-bo-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-ccs-on-another-bo-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-bad-aux-stride-y-tiled-ccs +kms_ccs@pipe-H-bad-aux-stride-yf-tiled-ccs +kms_ccs@pipe-H-bad-aux-stride-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-bad-aux-stride-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-bad-aux-stride-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-bad-aux-stride-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-bad-aux-stride-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-bad-aux-stride-4-tiled-mtl-rc-ccs-cc +kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-yf-tiled-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc +kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc +kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs +kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc kms_cdclk@plane-scaling kms_cdclk@mode-transition kms_cdclk@mode-transition-all-outputs @@ -1061,21 +1061,14 @@ kms_color@deep-color kms_color@invalid-gamma-lut-sizes kms_color@invalid-degamma-lut-sizes kms_color@invalid-ctm-matrix-sizes -kms_concurrent@pipe-A -kms_concurrent@pipe-B -kms_concurrent@pipe-C -kms_concurrent@pipe-D -kms_concurrent@pipe-E -kms_concurrent@pipe-F -kms_concurrent@pipe-G -kms_concurrent@pipe-H +kms_concurrent@multi-plane-atomic-lowres kms_content_protection@legacy kms_content_protection@atomic kms_content_protection@atomic-dpms -kms_content_protection@LIC +kms_content_protection@lic kms_content_protection@type1 -kms_content_protection@mei_interface -kms_content_protection@content_type_change +kms_content_protection@mei-interface +kms_content_protection@content-type-change kms_content_protection@uevent kms_content_protection@srm kms_content_protection@dp-mst-type-0 @@ -1218,8 +1211,8 @@ kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions-varying-size kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions-varying-size kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions-varying-size kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions-varying-size -kms_dither@FB-8BPC-Vs-Panel-6BPC -kms_dither@FB-8BPC-Vs-Panel-8BPC +kms_dither@fb-8bpc-vs-panel-6bpc +kms_dither@fb-8bpc-vs-panel-8bpc kms_dp_aux_dev kms_tiled_display@basic-test-pattern kms_tiled_display@basic-test-pattern-with-chamelium @@ -2351,7 +2344,6 @@ kms_frontbuffer_tracking@psrdrrs-shrfb-scaledprimary kms_frontbuffer_tracking@fbcpsrdrrs-indfb-scaledprimary kms_frontbuffer_tracking@fbcpsrdrrs-shrfb-scaledprimary kms_frontbuffer_tracking@fbc-modesetfrombusy -kms_frontbuffer_tracking@fbc-badstride kms_frontbuffer_tracking@fbc-stridechange kms_frontbuffer_tracking@fbc-tiling-linear kms_frontbuffer_tracking@fbc-tiling-y @@ -2361,7 +2353,6 @@ kms_frontbuffer_tracking@psr-modesetfrombusy kms_frontbuffer_tracking@psr-slowdraw kms_frontbuffer_tracking@psr-suspend kms_frontbuffer_tracking@fbcpsr-modesetfrombusy -kms_frontbuffer_tracking@fbcpsr-badstride kms_frontbuffer_tracking@fbcpsr-stridechange kms_frontbuffer_tracking@fbcpsr-tiling-linear kms_frontbuffer_tracking@fbcpsr-tiling-y @@ -2372,7 +2363,6 @@ kms_frontbuffer_tracking@drrs-modesetfrombusy kms_frontbuffer_tracking@drrs-slowdraw kms_frontbuffer_tracking@drrs-suspend kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy -kms_frontbuffer_tracking@fbcdrrs-badstride kms_frontbuffer_tracking@fbcdrrs-stridechange kms_frontbuffer_tracking@fbcdrrs-tiling-linear kms_frontbuffer_tracking@fbcdrrs-tiling-y @@ -2383,7 +2373,6 @@ kms_frontbuffer_tracking@psrdrrs-modesetfrombusy kms_frontbuffer_tracking@psrdrrs-slowdraw kms_frontbuffer_tracking@psrdrrs-suspend kms_frontbuffer_tracking@fbcpsrdrrs-modesetfrombusy -kms_frontbuffer_tracking@fbcpsrdrrs-badstride kms_frontbuffer_tracking@fbcpsrdrrs-stridechange kms_frontbuffer_tracking@fbcpsrdrrs-tiling-linear kms_frontbuffer_tracking@fbcpsrdrrs-tiling-y @@ -2456,7 +2445,7 @@ kms_plane@plane-position-hole-dpms kms_plane@plane-panning-top-left kms_plane@plane-panning-bottom-right kms_plane@plane-panning-bottom-right-suspend -kms_plane@invalid-pixel-format-settings +kms_plane@planar-pixel-format-settings kms_plane_alpha_blend@alpha-basic kms_plane_alpha_blend@alpha-7efc kms_plane_alpha_blend@coverage-7efc @@ -2479,24 +2468,24 @@ kms_plane_multiple@tiling-x kms_plane_multiple@tiling-y kms_plane_multiple@tiling-yf kms_plane_multiple@tiling-4 -kms_plane_scaling@plane-upscale-with-pixel-format-20x20 -kms_plane_scaling@plane-upscale-with-pixel-format-factor-0-25 -kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-25 -kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-5 -kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-75 -kms_plane_scaling@plane-scaler-with-pixel-format-unity-scaling -kms_plane_scaling@plane-upscale-with-rotation-20x20 -kms_plane_scaling@plane-upscale-with-rotation-factor-0-25 -kms_plane_scaling@plane-downscale-with-rotation-factor-0-25 -kms_plane_scaling@plane-downscale-with-rotation-factor-0-5 -kms_plane_scaling@plane-downscale-with-rotation-factor-0-75 -kms_plane_scaling@plane-scaler-with-rotation-unity-scaling -kms_plane_scaling@plane-upscale-with-modifiers-20x20 -kms_plane_scaling@plane-upscale-with-modifiers-factor-0-25 -kms_plane_scaling@plane-downscale-with-modifiers-factor-0-25 -kms_plane_scaling@plane-downscale-with-modifiers-factor-0-5 -kms_plane_scaling@plane-downscale-with-modifiers-factor-0-75 -kms_plane_scaling@plane-scaler-with-modifiers-unity-scaling +kms_plane_scaling@plane-upscale-20x20-with-pixel-format +kms_plane_scaling@plane-upscale-factor-0-25-with-pixel-format +kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format +kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format +kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format +kms_plane_scaling@plane-scaler-unity-scaling-with-pixel-format +kms_plane_scaling@plane-upscale-20x20-with-rotation +kms_plane_scaling@plane-upscale-factor-0-25-with-rotation +kms_plane_scaling@plane-downscale-factor-0-25-with-rotation +kms_plane_scaling@plane-downscale-factor-0-5-with-rotation +kms_plane_scaling@plane-downscale-factor-0-75-with-rotation +kms_plane_scaling@plane-scaler-unity-scaling-with-rotation +kms_plane_scaling@plane-upscale-20x20-with-modifiers +kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers +kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers +kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers +kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers +kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers @@ -2551,48 +2540,69 @@ kms_properties@invalid-properties-legacy kms_properties@invalid-properties-atomic kms_properties@get_properties-sanity-atomic kms_properties@get_properties-sanity-non-atomic -kms_psr@basic -kms_psr@no_drrs -kms_psr@primary_page_flip -kms_psr@primary_mmap_gtt -kms_psr@primary_mmap_cpu -kms_psr@primary_blt -kms_psr@primary_render -kms_psr@sprite_mmap_gtt -kms_psr@cursor_mmap_gtt -kms_psr@sprite_mmap_cpu -kms_psr@cursor_mmap_cpu -kms_psr@sprite_blt -kms_psr@cursor_blt -kms_psr@sprite_render -kms_psr@cursor_render -kms_psr@sprite_plane_move -kms_psr@cursor_plane_move -kms_psr@sprite_plane_onoff -kms_psr@cursor_plane_onoff -kms_psr@dpms -kms_psr@suspend -kms_psr@psr2_basic -kms_psr@psr2_no_drrs -kms_psr@psr2_primary_page_flip -kms_psr@psr2_primary_mmap_gtt -kms_psr@psr2_primary_mmap_cpu -kms_psr@psr2_primary_blt -kms_psr@psr2_primary_render -kms_psr@psr2_sprite_mmap_gtt -kms_psr@psr2_cursor_mmap_gtt -kms_psr@psr2_sprite_mmap_cpu -kms_psr@psr2_cursor_mmap_cpu -kms_psr@psr2_sprite_blt -kms_psr@psr2_cursor_blt -kms_psr@psr2_sprite_render -kms_psr@psr2_cursor_render -kms_psr@psr2_sprite_plane_move -kms_psr@psr2_cursor_plane_move -kms_psr@psr2_sprite_plane_onoff -kms_psr@psr2_cursor_plane_onoff -kms_psr@psr2_dpms -kms_psr@psr2_suspend +kms_psr@pr-basic +kms_psr@pr-no-drrs +kms_psr@pr-primary-page-flip +kms_psr@pr-primary-mmap-gtt +kms_psr@pr-primary-mmap-cpu +kms_psr@pr-primary-blt +kms_psr@pr-primary-render +kms_psr@pr-sprite-mmap-gtt +kms_psr@pr-cursor-mmap-gtt +kms_psr@pr-sprite-mmap-cpu +kms_psr@pr-cursor-mmap-cpu +kms_psr@pr-sprite-blt +kms_psr@pr-cursor-blt +kms_psr@pr-sprite-render +kms_psr@pr-cursor-render +kms_psr@pr-sprite-plane-move +kms_psr@pr-cursor-plane-move +kms_psr@pr-sprite-plane-onoff +kms_psr@pr-cursor-plane-onoff +kms_psr@pr-dpms +kms_psr@pr-suspend +kms_psr@psr-basic +kms_psr@psr-no-drrs +kms_psr@psr-primary-page-flip +kms_psr@psr-primary-mmap-gtt +kms_psr@psr-primary-mmap-cpu +kms_psr@psr-primary-blt +kms_psr@psr-primary-render +kms_psr@psr-sprite-mmap-gtt +kms_psr@psr-cursor-mmap-gtt +kms_psr@psr-sprite-mmap-cpu +kms_psr@psr-cursor-mmap-cpu +kms_psr@psr-sprite-blt +kms_psr@psr-cursor-blt +kms_psr@psr-sprite-render +kms_psr@psr-cursor-render +kms_psr@psr-sprite-plane-move +kms_psr@psr-cursor-plane-move +kms_psr@psr-sprite-plane-onoff +kms_psr@psr-cursor-plane-onoff +kms_psr@psr-dpms +kms_psr@psr-suspend +kms_psr@psr2-basic +kms_psr@psr2-no-drrs +kms_psr@psr2-primary-page-flip +kms_psr@psr2-primary-mmap-gtt +kms_psr@psr2-primary-mmap-cpu +kms_psr@psr2-primary-blt +kms_psr@psr2-primary-render +kms_psr@psr2-sprite-mmap-gtt +kms_psr@psr2-cursor-mmap-gtt +kms_psr@psr2-sprite-mmap-cpu +kms_psr@psr2-cursor-mmap-cpu +kms_psr@psr2-sprite-blt +kms_psr@psr2-cursor-blt +kms_psr@psr2-sprite-render +kms_psr@psr2-cursor-render +kms_psr@psr2-sprite-plane-move +kms_psr@psr2-cursor-plane-move +kms_psr@psr2-sprite-plane-onoff +kms_psr@psr2-cursor-plane-onoff +kms_psr@psr2-dpms +kms_psr@psr2-suspend kms_psr2_sf@primary-plane-update-sf-dmg-area kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb kms_psr2_sf@overlay-plane-update-sf-dmg-area @@ -2643,13 +2653,13 @@ kms_scaling_modes@scaling-mode-full kms_scaling_modes@scaling-mode-center kms_scaling_modes@scaling-mode-full-aspect kms_scaling_modes@scaling-mode-none -kms_selftest@drm_cmdline -kms_selftest@drm_damage -kms_selftest@drm_dp_mst +kms_selftest@drm_cmdline_parser +kms_selftest@drm_damage_helper +kms_selftest@drm_dp_mst_helper kms_selftest@drm_format_helper kms_selftest@drm_format -kms_selftest@framebuffer -kms_selftest@drm_plane +kms_selftest@drm_framebuffer +kms_selftest@drm_plane_helper kms_setmode@basic kms_setmode@basic-clone-single-crtc kms_setmode@invalid-clone-single-crtc @@ -2658,248 +2668,38 @@ kms_setmode@clone-exclusive-crtc kms_setmode@invalid-clone-single-crtc-stealing kms_sysfs_edid_timing kms_tv_load_detect@load-detect -kms_universal_plane@universal-plane-pipe-A-functional -kms_universal_plane@universal-plane-pipe-A-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-A -kms_universal_plane@cursor-fb-leak-pipe-A -kms_universal_plane@universal-plane-pageflip-windowed-pipe-A -kms_universal_plane@universal-plane-pipe-B-functional -kms_universal_plane@universal-plane-pipe-B-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-B -kms_universal_plane@cursor-fb-leak-pipe-B -kms_universal_plane@universal-plane-pageflip-windowed-pipe-B -kms_universal_plane@universal-plane-pipe-C-functional -kms_universal_plane@universal-plane-pipe-C-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-C -kms_universal_plane@cursor-fb-leak-pipe-C -kms_universal_plane@universal-plane-pageflip-windowed-pipe-C -kms_universal_plane@universal-plane-pipe-D-functional -kms_universal_plane@universal-plane-pipe-D-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-D -kms_universal_plane@cursor-fb-leak-pipe-D -kms_universal_plane@universal-plane-pageflip-windowed-pipe-D -kms_universal_plane@universal-plane-pipe-E-functional -kms_universal_plane@universal-plane-pipe-E-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-E -kms_universal_plane@cursor-fb-leak-pipe-E -kms_universal_plane@universal-plane-pageflip-windowed-pipe-E -kms_universal_plane@universal-plane-pipe-F-functional -kms_universal_plane@universal-plane-pipe-F-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-F -kms_universal_plane@cursor-fb-leak-pipe-F -kms_universal_plane@universal-plane-pageflip-windowed-pipe-F -kms_universal_plane@universal-plane-pipe-G-functional -kms_universal_plane@universal-plane-pipe-G-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-G -kms_universal_plane@cursor-fb-leak-pipe-G -kms_universal_plane@universal-plane-pageflip-windowed-pipe-G -kms_universal_plane@universal-plane-pipe-H-functional -kms_universal_plane@universal-plane-pipe-H-sanity -kms_universal_plane@disable-primary-vs-flip-pipe-H -kms_universal_plane@cursor-fb-leak-pipe-H -kms_universal_plane@universal-plane-pageflip-windowed-pipe-H +kms_universal_plane@universal-plane-functional +kms_universal_plane@universal-plane-sanity +kms_universal_plane@disable-primary-vs-flip +kms_universal_plane@cursor-fb-leak +kms_universal_plane@universal-plane-pageflip-windowed kms_vblank@invalid kms_vblank@crtc-id -kms_vblank@pipe-A-accuracy-idle -kms_vblank@pipe-A-query-idle -kms_vblank@pipe-A-query-idle-hang -kms_vblank@pipe-A-query-forked -kms_vblank@pipe-A-query-forked-hang -kms_vblank@pipe-A-query-busy -kms_vblank@pipe-A-query-busy-hang -kms_vblank@pipe-A-query-forked-busy -kms_vblank@pipe-A-query-forked-busy-hang -kms_vblank@pipe-A-wait-idle -kms_vblank@pipe-A-wait-idle-hang -kms_vblank@pipe-A-wait-forked -kms_vblank@pipe-A-wait-forked-hang -kms_vblank@pipe-A-wait-busy -kms_vblank@pipe-A-wait-busy-hang -kms_vblank@pipe-A-wait-forked-busy -kms_vblank@pipe-A-wait-forked-busy-hang -kms_vblank@pipe-A-ts-continuation-idle -kms_vblank@pipe-A-ts-continuation-idle-hang -kms_vblank@pipe-A-ts-continuation-dpms-rpm -kms_vblank@pipe-A-ts-continuation-dpms-suspend -kms_vblank@pipe-A-ts-continuation-suspend -kms_vblank@pipe-A-ts-continuation-modeset -kms_vblank@pipe-A-ts-continuation-modeset-hang -kms_vblank@pipe-A-ts-continuation-modeset-rpm -kms_vblank@pipe-B-accuracy-idle -kms_vblank@pipe-B-query-idle -kms_vblank@pipe-B-query-idle-hang -kms_vblank@pipe-B-query-forked -kms_vblank@pipe-B-query-forked-hang -kms_vblank@pipe-B-query-busy -kms_vblank@pipe-B-query-busy-hang -kms_vblank@pipe-B-query-forked-busy -kms_vblank@pipe-B-query-forked-busy-hang -kms_vblank@pipe-B-wait-idle -kms_vblank@pipe-B-wait-idle-hang -kms_vblank@pipe-B-wait-forked -kms_vblank@pipe-B-wait-forked-hang -kms_vblank@pipe-B-wait-busy -kms_vblank@pipe-B-wait-busy-hang -kms_vblank@pipe-B-wait-forked-busy -kms_vblank@pipe-B-wait-forked-busy-hang -kms_vblank@pipe-B-ts-continuation-idle -kms_vblank@pipe-B-ts-continuation-idle-hang -kms_vblank@pipe-B-ts-continuation-dpms-rpm -kms_vblank@pipe-B-ts-continuation-dpms-suspend -kms_vblank@pipe-B-ts-continuation-suspend -kms_vblank@pipe-B-ts-continuation-modeset -kms_vblank@pipe-B-ts-continuation-modeset-hang -kms_vblank@pipe-B-ts-continuation-modeset-rpm -kms_vblank@pipe-C-accuracy-idle -kms_vblank@pipe-C-query-idle -kms_vblank@pipe-C-query-idle-hang -kms_vblank@pipe-C-query-forked -kms_vblank@pipe-C-query-forked-hang -kms_vblank@pipe-C-query-busy -kms_vblank@pipe-C-query-busy-hang -kms_vblank@pipe-C-query-forked-busy -kms_vblank@pipe-C-query-forked-busy-hang -kms_vblank@pipe-C-wait-idle -kms_vblank@pipe-C-wait-idle-hang -kms_vblank@pipe-C-wait-forked -kms_vblank@pipe-C-wait-forked-hang -kms_vblank@pipe-C-wait-busy -kms_vblank@pipe-C-wait-busy-hang -kms_vblank@pipe-C-wait-forked-busy -kms_vblank@pipe-C-wait-forked-busy-hang -kms_vblank@pipe-C-ts-continuation-idle -kms_vblank@pipe-C-ts-continuation-idle-hang -kms_vblank@pipe-C-ts-continuation-dpms-rpm -kms_vblank@pipe-C-ts-continuation-dpms-suspend -kms_vblank@pipe-C-ts-continuation-suspend -kms_vblank@pipe-C-ts-continuation-modeset -kms_vblank@pipe-C-ts-continuation-modeset-hang -kms_vblank@pipe-C-ts-continuation-modeset-rpm -kms_vblank@pipe-D-accuracy-idle -kms_vblank@pipe-D-query-idle -kms_vblank@pipe-D-query-idle-hang -kms_vblank@pipe-D-query-forked -kms_vblank@pipe-D-query-forked-hang -kms_vblank@pipe-D-query-busy -kms_vblank@pipe-D-query-busy-hang -kms_vblank@pipe-D-query-forked-busy -kms_vblank@pipe-D-query-forked-busy-hang -kms_vblank@pipe-D-wait-idle -kms_vblank@pipe-D-wait-idle-hang -kms_vblank@pipe-D-wait-forked -kms_vblank@pipe-D-wait-forked-hang -kms_vblank@pipe-D-wait-busy -kms_vblank@pipe-D-wait-busy-hang -kms_vblank@pipe-D-wait-forked-busy -kms_vblank@pipe-D-wait-forked-busy-hang -kms_vblank@pipe-D-ts-continuation-idle -kms_vblank@pipe-D-ts-continuation-idle-hang -kms_vblank@pipe-D-ts-continuation-dpms-rpm -kms_vblank@pipe-D-ts-continuation-dpms-suspend -kms_vblank@pipe-D-ts-continuation-suspend -kms_vblank@pipe-D-ts-continuation-modeset -kms_vblank@pipe-D-ts-continuation-modeset-hang -kms_vblank@pipe-D-ts-continuation-modeset-rpm -kms_vblank@pipe-E-accuracy-idle -kms_vblank@pipe-E-query-idle -kms_vblank@pipe-E-query-idle-hang -kms_vblank@pipe-E-query-forked -kms_vblank@pipe-E-query-forked-hang -kms_vblank@pipe-E-query-busy -kms_vblank@pipe-E-query-busy-hang -kms_vblank@pipe-E-query-forked-busy -kms_vblank@pipe-E-query-forked-busy-hang -kms_vblank@pipe-E-wait-idle -kms_vblank@pipe-E-wait-idle-hang -kms_vblank@pipe-E-wait-forked -kms_vblank@pipe-E-wait-forked-hang -kms_vblank@pipe-E-wait-busy -kms_vblank@pipe-E-wait-busy-hang -kms_vblank@pipe-E-wait-forked-busy -kms_vblank@pipe-E-wait-forked-busy-hang -kms_vblank@pipe-E-ts-continuation-idle -kms_vblank@pipe-E-ts-continuation-idle-hang -kms_vblank@pipe-E-ts-continuation-dpms-rpm -kms_vblank@pipe-E-ts-continuation-dpms-suspend -kms_vblank@pipe-E-ts-continuation-suspend -kms_vblank@pipe-E-ts-continuation-modeset -kms_vblank@pipe-E-ts-continuation-modeset-hang -kms_vblank@pipe-E-ts-continuation-modeset-rpm -kms_vblank@pipe-F-accuracy-idle -kms_vblank@pipe-F-query-idle -kms_vblank@pipe-F-query-idle-hang -kms_vblank@pipe-F-query-forked -kms_vblank@pipe-F-query-forked-hang -kms_vblank@pipe-F-query-busy -kms_vblank@pipe-F-query-busy-hang -kms_vblank@pipe-F-query-forked-busy -kms_vblank@pipe-F-query-forked-busy-hang -kms_vblank@pipe-F-wait-idle -kms_vblank@pipe-F-wait-idle-hang -kms_vblank@pipe-F-wait-forked -kms_vblank@pipe-F-wait-forked-hang -kms_vblank@pipe-F-wait-busy -kms_vblank@pipe-F-wait-busy-hang -kms_vblank@pipe-F-wait-forked-busy -kms_vblank@pipe-F-wait-forked-busy-hang -kms_vblank@pipe-F-ts-continuation-idle -kms_vblank@pipe-F-ts-continuation-idle-hang -kms_vblank@pipe-F-ts-continuation-dpms-rpm -kms_vblank@pipe-F-ts-continuation-dpms-suspend -kms_vblank@pipe-F-ts-continuation-suspend -kms_vblank@pipe-F-ts-continuation-modeset -kms_vblank@pipe-F-ts-continuation-modeset-hang -kms_vblank@pipe-F-ts-continuation-modeset-rpm -kms_vblank@pipe-G-accuracy-idle -kms_vblank@pipe-G-query-idle -kms_vblank@pipe-G-query-idle-hang -kms_vblank@pipe-G-query-forked -kms_vblank@pipe-G-query-forked-hang -kms_vblank@pipe-G-query-busy -kms_vblank@pipe-G-query-busy-hang -kms_vblank@pipe-G-query-forked-busy -kms_vblank@pipe-G-query-forked-busy-hang -kms_vblank@pipe-G-wait-idle -kms_vblank@pipe-G-wait-idle-hang -kms_vblank@pipe-G-wait-forked -kms_vblank@pipe-G-wait-forked-hang -kms_vblank@pipe-G-wait-busy -kms_vblank@pipe-G-wait-busy-hang -kms_vblank@pipe-G-wait-forked-busy -kms_vblank@pipe-G-wait-forked-busy-hang -kms_vblank@pipe-G-ts-continuation-idle -kms_vblank@pipe-G-ts-continuation-idle-hang -kms_vblank@pipe-G-ts-continuation-dpms-rpm -kms_vblank@pipe-G-ts-continuation-dpms-suspend -kms_vblank@pipe-G-ts-continuation-suspend -kms_vblank@pipe-G-ts-continuation-modeset -kms_vblank@pipe-G-ts-continuation-modeset-hang -kms_vblank@pipe-G-ts-continuation-modeset-rpm -kms_vblank@pipe-H-accuracy-idle -kms_vblank@pipe-H-query-idle -kms_vblank@pipe-H-query-idle-hang -kms_vblank@pipe-H-query-forked -kms_vblank@pipe-H-query-forked-hang -kms_vblank@pipe-H-query-busy -kms_vblank@pipe-H-query-busy-hang -kms_vblank@pipe-H-query-forked-busy -kms_vblank@pipe-H-query-forked-busy-hang -kms_vblank@pipe-H-wait-idle -kms_vblank@pipe-H-wait-idle-hang -kms_vblank@pipe-H-wait-forked -kms_vblank@pipe-H-wait-forked-hang -kms_vblank@pipe-H-wait-busy -kms_vblank@pipe-H-wait-busy-hang -kms_vblank@pipe-H-wait-forked-busy -kms_vblank@pipe-H-wait-forked-busy-hang -kms_vblank@pipe-H-ts-continuation-idle -kms_vblank@pipe-H-ts-continuation-idle-hang -kms_vblank@pipe-H-ts-continuation-dpms-rpm -kms_vblank@pipe-H-ts-continuation-dpms-suspend -kms_vblank@pipe-H-ts-continuation-suspend -kms_vblank@pipe-H-ts-continuation-modeset -kms_vblank@pipe-H-ts-continuation-modeset-hang -kms_vblank@pipe-H-ts-continuation-modeset-rpm +kms_vblank@accuracy-idle +kms_vblank@query-idle +kms_vblank@query-idle-hang +kms_vblank@query-forked +kms_vblank@query-forked-hang +kms_vblank@query-busy +kms_vblank@query-busy-hang +kms_vblank@query-forked-busy +kms_vblank@query-forked-busy-hang +kms_vblank@wait-idle +kms_vblank@wait-idle-hang +kms_vblank@wait-forked +kms_vblank@wait-forked-hang +kms_vblank@wait-busy +kms_vblank@wait-busy-hang +kms_vblank@wait-forked-busy +kms_vblank@wait-forked-busy-hang +kms_vblank@ts-continuation-idle +kms_vblank@ts-continuation-idle-hang +kms_vblank@ts-continuation-dpms-rpm +kms_vblank@ts-continuation-dpms-suspend +kms_vblank@ts-continuation-suspend +kms_vblank@ts-continuation-modeset +kms_vblank@ts-continuation-modeset-hang +kms_vblank@ts-continuation-modeset-rpm kms_vrr@flip-basic kms_vrr@flip-dpms kms_vrr@flip-suspend diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt index 2cd49e8ee47f..88a1fc0a3b0d 100644 --- a/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt @@ -1,4 +1,2 @@ kms_3d,Fail kms_addfb_basic@addfb25-bad-modifier,Fail -kms_force_connector_basic@force-edid,Fail -kms_hdmi_inject@inject-4k,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt index 7e4d8744fcc6..f0576aa629e8 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt @@ -15,3 +15,4 @@ kms_plane_alpha_blend@alpha-7efc,Fail kms_plane_alpha_blend@coverage-7efc,Fail kms_plane_alpha_blend@coverage-vs-premult-vs-constant,Fail kms_rmfb@close-fd,Fail +kms_universal_plane@universal-plane-sanity,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt new file mode 100644 index 000000000000..327039f70252 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt @@ -0,0 +1,2 @@ +# Suspend to RAM seems to be broken on this machine +.*suspend.* diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt index 7e4d8744fcc6..f0576aa629e8 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt @@ -15,3 +15,4 @@ kms_plane_alpha_blend@alpha-7efc,Fail kms_plane_alpha_blend@coverage-7efc,Fail kms_plane_alpha_blend@coverage-vs-premult-vs-constant,Fail kms_rmfb@close-fd,Fail +kms_universal_plane@universal-plane-sanity,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt new file mode 100644 index 000000000000..327039f70252 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt @@ -0,0 +1,2 @@ +# Suspend to RAM seems to be broken on this machine +.*suspend.* diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c index 8c87287c3e16..638ffa4444f5 100644 --- a/drivers/gpu/drm/drm_file.c +++ b/drivers/gpu/drm/drm_file.c @@ -913,7 +913,7 @@ void drm_show_memory_stats(struct drm_printer *p, struct drm_file *file) DRM_GEM_OBJECT_PURGEABLE; } - if (obj->handle_count > 1) { + if (drm_gem_object_is_shared_for_memory_stats(obj)) { status.shared += obj->size; } else { status.private += obj->size; diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 84101baeecc6..4dd790367765 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -441,6 +441,9 @@ int drm_syncobj_find_fence(struct drm_file *file_private, u64 timeout = nsecs_to_jiffies64(DRM_SYNCOBJ_WAIT_FOR_SUBMIT_TIMEOUT); int ret; + if (flags & ~DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) + return -EINVAL; + if (!syncobj) return -ENOENT; @@ -1040,8 +1043,11 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, uint64_t *points; uint32_t signaled_count, i; - if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) + if (flags & (DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | + DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE)) { + might_sleep(); lockdep_assert_none_held_once(); + } points = kmalloc_array(count, sizeof(*points), GFP_KERNEL); if (points == NULL) @@ -1109,7 +1115,8 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, * fallthough and try a 0 timeout wait! */ - if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) { + if (flags & (DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | + DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE)) { for (i = 0; i < count; ++i) drm_syncobj_fence_add_wait(syncobjs[i], &entries[i]); } diff --git a/drivers/gpu/drm/i915/i915_drm_client.c b/drivers/gpu/drm/i915/i915_drm_client.c index fa6852713bee..f58682505491 100644 --- a/drivers/gpu/drm/i915/i915_drm_client.c +++ b/drivers/gpu/drm/i915/i915_drm_client.c @@ -53,7 +53,7 @@ obj_meminfo(struct drm_i915_gem_object *obj, obj->mm.region->id : INTEL_REGION_SMEM; const u64 sz = obj->base.size; - if (obj->base.handle_count > 1) + if (drm_gem_object_is_shared_for_memory_stats(&obj->base)) stats[id].shared += sz; else stats[id].private += sz; diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index cb674966e9ac..17a5cca007e2 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -312,7 +312,7 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) /* Encoder Initialization */ - ret = meson_encoder_cvbs_init(priv); + ret = meson_encoder_cvbs_probe(priv); if (ret) goto exit_afbcd; @@ -326,12 +326,12 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) } } - ret = meson_encoder_hdmi_init(priv); + ret = meson_encoder_hdmi_probe(priv); if (ret) goto exit_afbcd; if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) { - ret = meson_encoder_dsi_init(priv); + ret = meson_encoder_dsi_probe(priv); if (ret) goto exit_afbcd; } diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/meson/meson_encoder_cvbs.c index 3f73b211fa8e..17c7b00a18c9 100644 --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c @@ -219,7 +219,7 @@ static const struct drm_bridge_funcs meson_encoder_cvbs_bridge_funcs = { .atomic_reset = drm_atomic_helper_bridge_reset, }; -int meson_encoder_cvbs_init(struct meson_drm *priv) +int meson_encoder_cvbs_probe(struct meson_drm *priv) { struct drm_device *drm = priv->drm; struct meson_encoder_cvbs *meson_encoder_cvbs; @@ -240,10 +240,9 @@ int meson_encoder_cvbs_init(struct meson_drm *priv) meson_encoder_cvbs->next_bridge = of_drm_find_bridge(remote); of_node_put(remote); - if (!meson_encoder_cvbs->next_bridge) { - dev_err(priv->dev, "Failed to find CVBS Connector bridge\n"); - return -EPROBE_DEFER; - } + if (!meson_encoder_cvbs->next_bridge) + return dev_err_probe(priv->dev, -EPROBE_DEFER, + "Failed to find CVBS Connector bridge\n"); /* CVBS Encoder Bridge */ meson_encoder_cvbs->bridge.funcs = &meson_encoder_cvbs_bridge_funcs; @@ -259,10 +258,9 @@ int meson_encoder_cvbs_init(struct meson_drm *priv) /* Encoder */ ret = drm_simple_encoder_init(priv->drm, &meson_encoder_cvbs->encoder, DRM_MODE_ENCODER_TVDAC); - if (ret) { - dev_err(priv->dev, "Failed to init CVBS encoder: %d\n", ret); - return ret; - } + if (ret) + return dev_err_probe(priv->dev, ret, + "Failed to init CVBS encoder\n"); meson_encoder_cvbs->encoder.possible_crtcs = BIT(0); @@ -276,10 +274,10 @@ int meson_encoder_cvbs_init(struct meson_drm *priv) /* Initialize & attach Bridge Connector */ connector = drm_bridge_connector_init(priv->drm, &meson_encoder_cvbs->encoder); - if (IS_ERR(connector)) { - dev_err(priv->dev, "Unable to create CVBS bridge connector\n"); - return PTR_ERR(connector); - } + if (IS_ERR(connector)) + return dev_err_probe(priv->dev, PTR_ERR(connector), + "Unable to create CVBS bridge connector\n"); + drm_connector_attach_encoder(connector, &meson_encoder_cvbs->encoder); priv->encoders[MESON_ENC_CVBS] = meson_encoder_cvbs; diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.h b/drivers/gpu/drm/meson/meson_encoder_cvbs.h index 09710fec3c66..7b7bc85c03f7 100644 --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.h +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.h @@ -24,7 +24,7 @@ struct meson_cvbs_mode { /* Modes supported by the CVBS output */ extern struct meson_cvbs_mode meson_cvbs_modes[MESON_CVBS_MODES_COUNT]; -int meson_encoder_cvbs_init(struct meson_drm *priv); +int meson_encoder_cvbs_probe(struct meson_drm *priv); void meson_encoder_cvbs_remove(struct meson_drm *priv); #endif /* __MESON_VENC_CVBS_H */ diff --git a/drivers/gpu/drm/meson/meson_encoder_dsi.c b/drivers/gpu/drm/meson/meson_encoder_dsi.c index 3f93c70488ca..79c7ee31677f 100644 --- a/drivers/gpu/drm/meson/meson_encoder_dsi.c +++ b/drivers/gpu/drm/meson/meson_encoder_dsi.c @@ -100,7 +100,7 @@ static const struct drm_bridge_funcs meson_encoder_dsi_bridge_funcs = { .atomic_reset = drm_atomic_helper_bridge_reset, }; -int meson_encoder_dsi_init(struct meson_drm *priv) +int meson_encoder_dsi_probe(struct meson_drm *priv) { struct meson_encoder_dsi *meson_encoder_dsi; struct device_node *remote; @@ -118,10 +118,9 @@ int meson_encoder_dsi_init(struct meson_drm *priv) } meson_encoder_dsi->next_bridge = of_drm_find_bridge(remote); - if (!meson_encoder_dsi->next_bridge) { - dev_dbg(priv->dev, "Failed to find DSI transceiver bridge\n"); - return -EPROBE_DEFER; - } + if (!meson_encoder_dsi->next_bridge) + return dev_err_probe(priv->dev, -EPROBE_DEFER, + "Failed to find DSI transceiver bridge\n"); /* DSI Encoder Bridge */ meson_encoder_dsi->bridge.funcs = &meson_encoder_dsi_bridge_funcs; @@ -135,19 +134,17 @@ int meson_encoder_dsi_init(struct meson_drm *priv) /* Encoder */ ret = drm_simple_encoder_init(priv->drm, &meson_encoder_dsi->encoder, DRM_MODE_ENCODER_DSI); - if (ret) { - dev_err(priv->dev, "Failed to init DSI encoder: %d\n", ret); - return ret; - } + if (ret) + return dev_err_probe(priv->dev, ret, + "Failed to init DSI encoder\n"); meson_encoder_dsi->encoder.possible_crtcs = BIT(0); /* Attach DSI Encoder Bridge to Encoder */ ret = drm_bridge_attach(&meson_encoder_dsi->encoder, &meson_encoder_dsi->bridge, NULL, 0); - if (ret) { - dev_err(priv->dev, "Failed to attach bridge: %d\n", ret); - return ret; - } + if (ret) + return dev_err_probe(priv->dev, ret, + "Failed to attach bridge\n"); /* * We should have now in place: diff --git a/drivers/gpu/drm/meson/meson_encoder_dsi.h b/drivers/gpu/drm/meson/meson_encoder_dsi.h index 9277d7015193..85d5b61805f2 100644 --- a/drivers/gpu/drm/meson/meson_encoder_dsi.h +++ b/drivers/gpu/drm/meson/meson_encoder_dsi.h @@ -7,7 +7,7 @@ #ifndef __MESON_ENCODER_DSI_H #define __MESON_ENCODER_DSI_H -int meson_encoder_dsi_init(struct meson_drm *priv); +int meson_encoder_dsi_probe(struct meson_drm *priv); void meson_encoder_dsi_remove(struct meson_drm *priv); #endif /* __MESON_ENCODER_DSI_H */ diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index fff6ce394f98..c2b4a1e336d1 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -366,7 +366,7 @@ static const struct drm_bridge_funcs meson_encoder_hdmi_bridge_funcs = { .atomic_reset = drm_atomic_helper_bridge_reset, }; -int meson_encoder_hdmi_init(struct meson_drm *priv) +int meson_encoder_hdmi_probe(struct meson_drm *priv) { struct meson_encoder_hdmi *meson_encoder_hdmi; struct platform_device *pdev; @@ -386,8 +386,8 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) meson_encoder_hdmi->next_bridge = of_drm_find_bridge(remote); if (!meson_encoder_hdmi->next_bridge) { - dev_err(priv->dev, "Failed to find HDMI transceiver bridge\n"); - ret = -EPROBE_DEFER; + ret = dev_err_probe(priv->dev, -EPROBE_DEFER, + "Failed to find HDMI transceiver bridge\n"); goto err_put_node; } @@ -405,7 +405,7 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) ret = drm_simple_encoder_init(priv->drm, &meson_encoder_hdmi->encoder, DRM_MODE_ENCODER_TMDS); if (ret) { - dev_err(priv->dev, "Failed to init HDMI encoder: %d\n", ret); + dev_err_probe(priv->dev, ret, "Failed to init HDMI encoder\n"); goto err_put_node; } @@ -415,7 +415,7 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) ret = drm_bridge_attach(&meson_encoder_hdmi->encoder, &meson_encoder_hdmi->bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret) { - dev_err(priv->dev, "Failed to attach bridge: %d\n", ret); + dev_err_probe(priv->dev, ret, "Failed to attach bridge\n"); goto err_put_node; } @@ -423,8 +423,9 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) meson_encoder_hdmi->connector = drm_bridge_connector_init(priv->drm, &meson_encoder_hdmi->encoder); if (IS_ERR(meson_encoder_hdmi->connector)) { - dev_err(priv->dev, "Unable to create HDMI bridge connector\n"); - ret = PTR_ERR(meson_encoder_hdmi->connector); + ret = dev_err_probe(priv->dev, + PTR_ERR(meson_encoder_hdmi->connector), + "Unable to create HDMI bridge connector\n"); goto err_put_node; } drm_connector_attach_encoder(meson_encoder_hdmi->connector, diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.h b/drivers/gpu/drm/meson/meson_encoder_hdmi.h index a6cd38eb5f71..fd5485875db8 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.h +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.h @@ -7,7 +7,7 @@ #ifndef __MESON_ENCODER_HDMI_H #define __MESON_ENCODER_HDMI_H -int meson_encoder_hdmi_init(struct meson_drm *priv); +int meson_encoder_hdmi_probe(struct meson_drm *priv); void meson_encoder_hdmi_remove(struct meson_drm *priv); #endif /* __MESON_ENCODER_HDMI_H */ diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index b61abacd1b22..d037b3b8b999 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -145,6 +145,16 @@ config DRM_PANEL_LVDS handling of power supplies or control signals. It implements automatic backlight handling if the panel is attached to a backlight controller. +config DRM_PANEL_HIMAX_HX83112A + tristate "Himax HX83112A-based DSI panel" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + select DRM_KMS_HELPER + help + Say Y here if you want to enable support for Himax HX83112A-based + display panels, such as the one found in the Fairphone 4 smartphone. + config DRM_PANEL_HIMAX_HX8394 tristate "HIMAX HX8394 MIPI-DSI LCD panels" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 1c4f4e7f25bb..f156d7fa0bcc 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -15,6 +15,7 @@ obj-$(CONFIG_DRM_PANEL_EBBG_FT8719) += panel-ebbg-ft8719.o obj-$(CONFIG_DRM_PANEL_ELIDA_KD35T133) += panel-elida-kd35t133.o obj-$(CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02) += panel-feixin-k101-im2ba02.o obj-$(CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D) += panel-feiyang-fy07024di26a30d.o +obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112A) += panel-himax-hx83112a.o obj-$(CONFIG_DRM_PANEL_HIMAX_HX8394) += panel-himax-hx8394.o obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o diff --git a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c index c4c0f08e9202..bc08814954f9 100644 --- a/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c +++ b/drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c @@ -1871,6 +1871,8 @@ static int boe_panel_add(struct boe_panel *boe) gpiod_set_value(boe->enable_gpio, 0); + boe->base.prepare_prev_first = true; + drm_panel_init(&boe->base, dev, &boe_panel_funcs, DRM_MODE_CONNECTOR_DSI); err = of_drm_get_panel_orientation(dev->of_node, &boe->orientation); diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c index 7d556b1bfa82..bd71d239272a 100644 --- a/drivers/gpu/drm/panel/panel-edp.c +++ b/drivers/gpu/drm/panel/panel-edp.c @@ -1002,19 +1002,6 @@ static const struct panel_desc auo_b101ean01 = { }, }; -static const struct drm_display_mode auo_b116xa3_mode = { - .clock = 70589, - .hdisplay = 1366, - .hsync_start = 1366 + 40, - .hsync_end = 1366 + 40 + 40, - .htotal = 1366 + 40 + 40 + 32, - .vdisplay = 768, - .vsync_start = 768 + 10, - .vsync_end = 768 + 10 + 12, - .vtotal = 768 + 10 + 12 + 6, - .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, -}; - static const struct drm_display_mode auo_b116xak01_mode = { .clock = 69300, .hdisplay = 1366, @@ -1963,12 +1950,10 @@ static const struct edp_panel_entry edp_panels[] = { EDP_PANEL_ENTRY('A', 'U', 'O', 0x239b, &delay_200_500_e50, "B116XAN06.1"), EDP_PANEL_ENTRY('A', 'U', 'O', 0x255c, &delay_200_500_e50, "B116XTN02.5"), EDP_PANEL_ENTRY('A', 'U', 'O', 0x403d, &delay_200_500_e50, "B140HAN04.0"), - EDP_PANEL_ENTRY2('A', 'U', 'O', 0x405c, &auo_b116xak01.delay, "B116XAK01.0", - &auo_b116xa3_mode), + EDP_PANEL_ENTRY('A', 'U', 'O', 0x405c, &auo_b116xak01.delay, "B116XAK01.0"), EDP_PANEL_ENTRY('A', 'U', 'O', 0x435c, &delay_200_500_e50, "Unknown"), EDP_PANEL_ENTRY('A', 'U', 'O', 0x582d, &delay_200_500_e50, "B133UAN01.0"), - EDP_PANEL_ENTRY2('A', 'U', 'O', 0x615c, &delay_200_500_e50, "B116XAN06.1", - &auo_b116xa3_mode), + EDP_PANEL_ENTRY('A', 'U', 'O', 0x615c, &delay_200_500_e50, "B116XAN06.1"), EDP_PANEL_ENTRY('A', 'U', 'O', 0x635c, &delay_200_500_e50, "B116XAN06.3"), EDP_PANEL_ENTRY('A', 'U', 'O', 0x639c, &delay_200_500_e50, "B140HAK02.7"), EDP_PANEL_ENTRY('A', 'U', 'O', 0x723c, &delay_200_500_e50, "B140XTN07.2"), diff --git a/drivers/gpu/drm/panel/panel-himax-hx83112a.c b/drivers/gpu/drm/panel/panel-himax-hx83112a.c new file mode 100644 index 000000000000..466c27012abf --- /dev/null +++ b/drivers/gpu/drm/panel/panel-himax-hx83112a.c @@ -0,0 +1,372 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree. + * Copyright (c) 2024 Luca Weiss + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +/* Manufacturer specific DSI commands */ +#define HX83112A_SETPOWER1 0xb1 +#define HX83112A_SETDISP 0xb2 +#define HX83112A_SETDRV 0xb4 +#define HX83112A_SETEXTC 0xb9 +#define HX83112A_SETBANK 0xbd +#define HX83112A_SETPTBA 0xbf +#define HX83112A_SETDGCLUT 0xc1 +#define HX83112A_SETTCON 0xc7 +#define HX83112A_SETCLOCK 0xcb +#define HX83112A_SETPANEL 0xcc +#define HX83112A_SETPOWER2 0xd2 +#define HX83112A_SETGIP0 0xd3 +#define HX83112A_SETGIP1 0xd5 +#define HX83112A_SETGIP2 0xd6 +#define HX83112A_SETGIP3 0xd8 +#define HX83112A_SETTP1 0xe7 +#define HX83112A_UNKNOWN1 0xe9 + +struct hx83112a_panel { + struct drm_panel panel; + struct mipi_dsi_device *dsi; + struct regulator_bulk_data supplies[3]; + struct gpio_desc *reset_gpio; +}; + +static inline struct hx83112a_panel *to_hx83112a_panel(struct drm_panel *panel) +{ + return container_of(panel, struct hx83112a_panel, panel); +} + +static void hx83112a_reset(struct hx83112a_panel *ctx) +{ + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + msleep(20); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + msleep(20); + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + msleep(50); +} + +static int hx83112a_on(struct hx83112a_panel *ctx) +{ + struct mipi_dsi_device *dsi = ctx->dsi; + struct device *dev = &dsi->dev; + int ret; + + dsi->mode_flags |= MIPI_DSI_MODE_LPM; + + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETEXTC, 0x83, 0x11, 0x2a); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETPOWER1, + 0x08, 0x28, 0x28, 0x83, 0x83, 0x4c, 0x4f, 0x33); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETDISP, + 0x00, 0x02, 0x00, 0x90, 0x24, 0x00, 0x08, 0x19, + 0xea, 0x11, 0x11, 0x00, 0x11, 0xa3); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETDRV, + 0x58, 0x68, 0x58, 0x68, 0x0f, 0xef, 0x0b, 0xc0, + 0x0b, 0xc0, 0x0b, 0xc0, 0x00, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x14, 0x15, 0x00, 0x29, 0x11, 0x07, + 0x12, 0x00, 0x29); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x02); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETDRV, + 0x00, 0x12, 0x12, 0x11, 0x88, 0x12, 0x12, 0x00, + 0x53); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x00); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x03); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETDGCLUT, + 0xff, 0xfe, 0xfb, 0xf8, 0xf4, 0xf1, 0xed, 0xe6, + 0xe2, 0xde, 0xdb, 0xd6, 0xd3, 0xcf, 0xca, 0xc6, + 0xc2, 0xbe, 0xb9, 0xb0, 0xa7, 0x9e, 0x96, 0x8d, + 0x84, 0x7c, 0x74, 0x6b, 0x62, 0x5a, 0x51, 0x49, + 0x41, 0x39, 0x31, 0x29, 0x21, 0x19, 0x12, 0x0a, + 0x06, 0x05, 0x02, 0x01, 0x00, 0x00, 0xc9, 0xb3, + 0x08, 0x0e, 0xf2, 0xe1, 0x59, 0xf4, 0x22, 0xad, + 0x40); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x02); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETDGCLUT, + 0xff, 0xfe, 0xfb, 0xf8, 0xf4, 0xf1, 0xed, 0xe6, + 0xe2, 0xde, 0xdb, 0xd6, 0xd3, 0xcf, 0xca, 0xc6, + 0xc2, 0xbe, 0xb9, 0xb0, 0xa7, 0x9e, 0x96, 0x8d, + 0x84, 0x7c, 0x74, 0x6b, 0x62, 0x5a, 0x51, 0x49, + 0x41, 0x39, 0x31, 0x29, 0x21, 0x19, 0x12, 0x0a, + 0x06, 0x05, 0x02, 0x01, 0x00, 0x00, 0xc9, 0xb3, + 0x08, 0x0e, 0xf2, 0xe1, 0x59, 0xf4, 0x22, 0xad, + 0x40); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x01); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETDGCLUT, + 0xff, 0xfe, 0xfb, 0xf8, 0xf4, 0xf1, 0xed, 0xe6, + 0xe2, 0xde, 0xdb, 0xd6, 0xd3, 0xcf, 0xca, 0xc6, + 0xc2, 0xbe, 0xb9, 0xb0, 0xa7, 0x9e, 0x96, 0x8d, + 0x84, 0x7c, 0x74, 0x6b, 0x62, 0x5a, 0x51, 0x49, + 0x41, 0x39, 0x31, 0x29, 0x21, 0x19, 0x12, 0x0a, + 0x06, 0x05, 0x02, 0x01, 0x00, 0x00, 0xc9, 0xb3, + 0x08, 0x0e, 0xf2, 0xe1, 0x59, 0xf4, 0x22, 0xad, + 0x40); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x00); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETDGCLUT, 0x01); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETTCON, + 0x70, 0x00, 0x04, 0xe0, 0x33, 0x00); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETPANEL, 0x08); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETPOWER2, 0x2b, 0x2b); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, + 0x08, 0x03, 0x03, 0x22, 0x18, 0x07, 0x07, 0x07, + 0x07, 0x32, 0x10, 0x06, 0x00, 0x06, 0x32, 0x10, + 0x07, 0x00, 0x07, 0x32, 0x19, 0x31, 0x09, 0x31, + 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x09, 0x30, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x00, + 0x0f); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x01); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP0, + 0x00, 0x00, 0x19, 0x10, 0x00, 0x0a, 0x00, 0x81); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x00); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP1, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0xc0, 0xc0, 0x18, 0x18, 0x19, 0x19, 0x18, 0x18, + 0x40, 0x40, 0x18, 0x18, 0x18, 0x18, 0x3f, 0x3f, + 0x28, 0x28, 0x24, 0x24, 0x02, 0x03, 0x02, 0x03, + 0x00, 0x01, 0x00, 0x01, 0x31, 0x31, 0x31, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x2f, 0x2f, 0x2f, 0x2f); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP2, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x40, 0x40, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, + 0x40, 0x40, 0x18, 0x18, 0x18, 0x18, 0x3f, 0x3f, + 0x24, 0x24, 0x28, 0x28, 0x01, 0x00, 0x01, 0x00, + 0x03, 0x02, 0x03, 0x02, 0x31, 0x31, 0x31, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x2f, 0x2f, 0x2f, 0x2f); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP3, + 0xaa, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0xab, 0xaa, + 0xaa, 0xaa, 0xaa, 0xea, 0xab, 0xaa, 0xaa, 0xaa); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x01); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP3, + 0xaa, 0x2e, 0x28, 0x00, 0x00, 0x00, 0xaa, 0x2e, + 0x28, 0x00, 0x00, 0x00, 0xaa, 0xee, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xee, 0xaa, 0xaa, 0xaa, 0xaa); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x02); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP3, + 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, + 0xff, 0xff, 0xff, 0xff); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x03); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETGIP3, + 0xaa, 0xaa, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x00); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETTP1, + 0x0e, 0x0e, 0x1e, 0x65, 0x1c, 0x65, 0x00, 0x50, + 0x20, 0x20, 0x00, 0x00, 0x02, 0x02, 0x02, 0x05, + 0x14, 0x14, 0x32, 0xb9, 0x23, 0xb9, 0x08); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x01); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETTP1, + 0x02, 0x00, 0xa8, 0x01, 0xa8, 0x0d, 0xa4, 0x0e); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x02); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETTP1, + 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETBANK, 0x00); + mipi_dsi_dcs_write_seq(dsi, HX83112A_UNKNOWN1, 0xc3); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETCLOCK, 0xd1, 0xd6); + mipi_dsi_dcs_write_seq(dsi, HX83112A_UNKNOWN1, 0x3f); + mipi_dsi_dcs_write_seq(dsi, HX83112A_UNKNOWN1, 0xc6); + mipi_dsi_dcs_write_seq(dsi, HX83112A_SETPTBA, 0x37); + mipi_dsi_dcs_write_seq(dsi, HX83112A_UNKNOWN1, 0x3f); + + ret = mipi_dsi_dcs_exit_sleep_mode(dsi); + if (ret < 0) { + dev_err(dev, "Failed to exit sleep mode: %d\n", ret); + return ret; + } + msleep(150); + + ret = mipi_dsi_dcs_set_display_on(dsi); + if (ret < 0) { + dev_err(dev, "Failed to set display on: %d\n", ret); + return ret; + } + msleep(50); + + return 0; +} + +static int hx83112a_disable(struct drm_panel *panel) +{ + struct hx83112a_panel *ctx = to_hx83112a_panel(panel); + struct mipi_dsi_device *dsi = ctx->dsi; + struct device *dev = &dsi->dev; + int ret; + + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; + + ret = mipi_dsi_dcs_set_display_off(dsi); + if (ret < 0) { + dev_err(dev, "Failed to set display off: %d\n", ret); + return ret; + } + msleep(20); + + ret = mipi_dsi_dcs_enter_sleep_mode(dsi); + if (ret < 0) { + dev_err(dev, "Failed to enter sleep mode: %d\n", ret); + return ret; + } + msleep(120); + + return 0; +} + +static int hx83112a_prepare(struct drm_panel *panel) +{ + struct hx83112a_panel *ctx = to_hx83112a_panel(panel); + struct device *dev = &ctx->dsi->dev; + int ret; + + ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + if (ret < 0) { + dev_err(dev, "Failed to enable regulators: %d\n", ret); + return ret; + } + + hx83112a_reset(ctx); + + ret = hx83112a_on(ctx); + if (ret < 0) { + dev_err(dev, "Failed to initialize panel: %d\n", ret); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + return ret; + } + + return 0; +} + +static int hx83112a_unprepare(struct drm_panel *panel) +{ + struct hx83112a_panel *ctx = to_hx83112a_panel(panel); + + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + + return 0; +} + +static const struct drm_display_mode hx83112a_mode = { + .clock = (1080 + 28 + 8 + 8) * (2340 + 27 + 5 + 5) * 60 / 1000, + .hdisplay = 1080, + .hsync_start = 1080 + 28, + .hsync_end = 1080 + 28 + 8, + .htotal = 1080 + 28 + 8 + 8, + .vdisplay = 2340, + .vsync_start = 2340 + 27, + .vsync_end = 2340 + 27 + 5, + .vtotal = 2340 + 27 + 5 + 5, + .width_mm = 67, + .height_mm = 145, + .type = DRM_MODE_TYPE_DRIVER, +}; + +static int hx83112a_get_modes(struct drm_panel *panel, + struct drm_connector *connector) +{ + return drm_connector_helper_get_modes_fixed(connector, &hx83112a_mode); +} + +static const struct drm_panel_funcs hx83112a_panel_funcs = { + .prepare = hx83112a_prepare, + .unprepare = hx83112a_unprepare, + .disable = hx83112a_disable, + .get_modes = hx83112a_get_modes, +}; + +static int hx83112a_probe(struct mipi_dsi_device *dsi) +{ + struct device *dev = &dsi->dev; + struct hx83112a_panel *ctx; + int ret; + + ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + ctx->supplies[0].supply = "vdd1"; + ctx->supplies[1].supply = "vsn"; + ctx->supplies[2].supply = "vsp"; + ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies), + ctx->supplies); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to get regulators\n"); + + ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(ctx->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get reset-gpios\n"); + + ctx->dsi = dsi; + mipi_dsi_set_drvdata(dsi, ctx); + + dsi->lanes = 4; + dsi->format = MIPI_DSI_FMT_RGB888; + dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | + MIPI_DSI_MODE_VIDEO_HSE | + MIPI_DSI_CLOCK_NON_CONTINUOUS; + + drm_panel_init(&ctx->panel, dev, &hx83112a_panel_funcs, + DRM_MODE_CONNECTOR_DSI); + ctx->panel.prepare_prev_first = true; + + ret = drm_panel_of_backlight(&ctx->panel); + if (ret) + return dev_err_probe(dev, ret, "Failed to get backlight\n"); + + drm_panel_add(&ctx->panel); + + ret = mipi_dsi_attach(dsi); + if (ret < 0) { + dev_err_probe(dev, ret, "Failed to attach to DSI host\n"); + drm_panel_remove(&ctx->panel); + return ret; + } + + return 0; +} + +static void hx83112a_remove(struct mipi_dsi_device *dsi) +{ + struct hx83112a_panel *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + + ret = mipi_dsi_detach(dsi); + if (ret < 0) + dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); + + drm_panel_remove(&ctx->panel); +} + +static const struct of_device_id hx83112a_of_match[] = { + { .compatible = "djn,9a-3r063-1102b" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, hx83112a_of_match); + +static struct mipi_dsi_driver hx83112a_driver = { + .probe = hx83112a_probe, + .remove = hx83112a_remove, + .driver = { + .name = "panel-himax-hx83112a", + .of_match_table = hx83112a_of_match, + }, +}; +module_mipi_dsi_driver(hx83112a_driver); + +MODULE_DESCRIPTION("DRM driver for hx83112a-equipped DSI panels"); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/panel/panel-leadtek-ltk500hd1829.c b/drivers/gpu/drm/panel/panel-leadtek-ltk500hd1829.c index 39e408c9f762..a4c9a5cb9811 100644 --- a/drivers/gpu/drm/panel/panel-leadtek-ltk500hd1829.c +++ b/drivers/gpu/drm/panel/panel-leadtek-ltk500hd1829.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include