Re: [PATCH v4 1/3] drm: Add drm_get_acpi_edid() helper
On 2/9/2024 12:57, Daniel Vetter wrote: On Fri, Feb 09, 2024 at 09:34:13AM -0600, Mario Limonciello wrote: On 2/9/2024 05:07, Daniel Vetter wrote: On Thu, Feb 08, 2024 at 11:57:11AM +0200, Jani Nikula wrote: On Wed, 07 Feb 2024, Mario Limonciello wrote: Some manufacturers have intentionally put an EDID that differs from the EDID on the internal panel on laptops. Drivers can call this helper to attempt to fetch the EDID from the BIOS's ACPI _DDC method. Signed-off-by: Mario Limonciello --- drivers/gpu/drm/Kconfig| 5 +++ drivers/gpu/drm/drm_edid.c | 77 ++ include/drm/drm_edid.h | 1 + 3 files changed, 83 insertions(+) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 6ec33d36f3a4..ec2bb71e8b36 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -21,6 +21,11 @@ menuconfig DRM select KCMP select VIDEO_CMDLINE select VIDEO_NOMODESET + select ACPI_VIDEO if ACPI + select BACKLIGHT_CLASS_DEVICE if ACPI + select INPUT if ACPI + select X86_PLATFORM_DEVICES if ACPI && X86 + select ACPI_WMI if ACPI && X86 I think I'll defer to drm maintainers on whether this is okay or something to be avoided. Uh yeah this is a bit much, and select just messes with everything. Just #ifdef this in the code with a dummy alternative, if users configure their kernel without acpi but need it, they get to keep all the pieces. Alternatively make a DRM_ACPI_HELPERS symbol, but imo a Kconfig for every function is also not great. And just using #ifdef in the code also works for CONFIG_OF, which is exactly the same thing for platforms using dt to describe hw. Also I'd expect ACPI code to already provide dummy functions if ACPI is provided, so you probably dont even need all that much #ifdef in the code. What we defo cant do is select platform/hw stuff just because you enable CONFIG_DRM. -Sima The problem was with linking. I'll experiment with #ifdef for the next version. Ah yes, if e.g. acpi is a module but drm is built-in then it will compile, but not link. You need depends on (ACPI || ACPI=n) for this. Looks a bit funny but works for all combinations. Nope; this fails at link time with this combination: CONFIG_ACPI=y CONFIG_ACPI_VIDEO=m CONFIG_DRM=y ld: drivers/gpu/drm/drm_edid.o: in function `drm_do_probe_acpi_edid': drm_edid.c:(.text+0xd34): undefined reference to `acpi_video_get_edid' make[5]: *** [scripts/Makefile.vmlinux:37: vmlinux] Error 1 So the logical solution is to try depends on (ACPI_VIDEO || ACPI_VIDEO=n) But that leads me back to the rabbit hole of why I had the selects moved to drm instead of drivers in the first place: drivers/gpu/drm/Kconfig:8:error: recursive dependency detected! drivers/gpu/drm/Kconfig:8: symbol DRM depends on ACPI_VIDEO drivers/acpi/Kconfig:213: symbol ACPI_VIDEO depends on BACKLIGHT_CLASS_DEVICE drivers/video/backlight/Kconfig:136:symbol BACKLIGHT_CLASS_DEVICE is selected by DRM_RADEON drivers/gpu/drm/radeon/Kconfig:3: symbol DRM_RADEON depends on DRM Since this gets mess it might be useful to have a DRM_ACPI_HELPERS Kconfig that controls all this. How about all those selects that I had in this patch moved to DRM_ACPI_HELPERS and keep the patch that drops from all the drivers then? -Sima help Kernel-level support for the Direct Rendering Infrastructure (DRI) introduced in XFree86 4.0. If you say Y here, you need to select diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 923c4423151c..c649b4f9fd8e 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -28,6 +28,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include #include #include @@ -2188,6 +2189,49 @@ drm_do_probe_ddc_edid(void *data, u8 *buf, unsigned int block, size_t len) return ret == xfers ? 0 : -1; } +/** + * drm_do_probe_acpi_edid() - get EDID information via ACPI _DDC + * @data: struct drm_device + * @buf: EDID data buffer to be filled + * @block: 128 byte EDID block to start fetching from + * @len: EDID data buffer length to fetch + * + * Try to fetch EDID information by calling acpi_video_get_edid() function. + * + * Return: 0 on success or error code on failure. + */ +static int +drm_do_probe_acpi_edid(void *data, u8 *buf, unsigned int block, size_t len) +{ + struct drm_device *ddev = data; + struct acpi_device *acpidev = ACPI_COMPANION(ddev->dev); + unsigned char start = block * EDID_LENGTH; + void *edid; + int r; + + if (!acpidev) + return -ENODEV; + + /* fetch the entire edid from BIOS */ + r = acpi_video_get_edid(acpidev, ACPI_VIDEO_DISPLAY_LCD, -1, &edid); + if (r < 0) { + DRM_DEBUG_KMS("Failed to get EDID from ACPI: %d\n", r); + return -EINVAL; + } + if (len > r || start > r || start +
Re: [PATCH] drm/amdgpu: respect the abmlevel module parameter value if it is set
On 2/9/2024 15:46, Hamza Mahfooz wrote: Currently, if the abmlevel module parameter is set, it is possible for user space to override the ABM level at some point after boot. However, that is undesirable because it means that we aren't respecting the user's wishes with regard to the level that they want to use. So, prevent user space from changing the ABM level if the module parameter is set to a non-auto value. Signed-off-by: Hamza Mahfooz Reviewed-by: Mario Limonciello Tested-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 11 ++- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 ++- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 1291b8eb9dff..f5c8187e0d58 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -196,7 +196,7 @@ extern int amdgpu_smu_pptable_id; extern uint amdgpu_dc_feature_mask; extern uint amdgpu_dc_debug_mask; extern uint amdgpu_dc_visual_confirm; -extern uint amdgpu_dm_abm_level; +extern int amdgpu_dm_abm_level; extern int amdgpu_backlight; extern int amdgpu_damage_clips; extern struct amdgpu_mgpu_info mgpu_info; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 6ef7f22c1152..af7fae7907d7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -849,12 +849,13 @@ module_param_named(visualconfirm, amdgpu_dc_visual_confirm, uint, 0444); * the ABM algorithm, with 1 being the least reduction and 4 being the most * reduction. * - * Defaults to 0, or disabled. Userspace can still override this level later - * after boot. + * Defaults to -1, or disabled. Userspace can only override this level after + * boot if it's set to auto. */ -uint amdgpu_dm_abm_level; -MODULE_PARM_DESC(abmlevel, "ABM level (0 = off (default), 1-4 = backlight reduction level) "); -module_param_named(abmlevel, amdgpu_dm_abm_level, uint, 0444); +int amdgpu_dm_abm_level = -1; +MODULE_PARM_DESC(abmlevel, +"ABM level (0 = off, 1-4 = backlight reduction level, -1 auto (default))"); +module_param_named(abmlevel, amdgpu_dm_abm_level, int, 0444); int amdgpu_backlight = -1; MODULE_PARM_DESC(backlight, "Backlight control (0 = pwm, 1 = aux, -1 auto (default))"); diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index fbe2aa40c21a..a5b3330879f3 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -6513,7 +6513,8 @@ static void amdgpu_dm_connector_unregister(struct drm_connector *connector) { struct amdgpu_dm_connector *amdgpu_dm_connector = to_amdgpu_dm_connector(connector); - if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP && + amdgpu_dm_abm_level < 0) sysfs_remove_group(&connector->kdev->kobj, &amdgpu_group); drm_dp_aux_unregister(&amdgpu_dm_connector->dm_dp_aux.aux); @@ -6577,9 +6578,12 @@ void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector) state->vcpi_slots = 0; state->pbn = 0; - if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) - state->abm_level = amdgpu_dm_abm_level ?: - ABM_LEVEL_IMMEDIATE_DISABLE; + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { + if (amdgpu_dm_abm_level <= 0) + state->abm_level = ABM_LEVEL_IMMEDIATE_DISABLE; + else + state->abm_level = amdgpu_dm_abm_level; + } __drm_atomic_helper_connector_reset(connector, &state->base); } @@ -6617,7 +6621,8 @@ amdgpu_dm_connector_late_register(struct drm_connector *connector) to_amdgpu_dm_connector(connector); int r; - if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP && + amdgpu_dm_abm_level < 0) { r = sysfs_create_group(&connector->kdev->kobj, &amdgpu_group); if (r)
Re: [PATCH v3 9/9] drm/ci: uprev IGT and update testlist
On 2/10/24 15:17, Maíra Canal wrote: On 1/30/24 12:03, Vignesh Raman wrote: Uprev IGT and add amd, v3d, vc4 and vgem specific tests to testlist. Have testlist.txt per driver and include a base testlist so that the driver specific tests will run only on those hardware. Signed-off-by: Vignesh Raman --- v3: - New patch in series to uprev IGT and update testlist. --- drivers/gpu/drm/ci/gitlab-ci.yml | 2 +- drivers/gpu/drm/ci/igt_runner.sh | 12 +- drivers/gpu/drm/ci/testlist-amdgpu.txt | 151 ++ drivers/gpu/drm/ci/testlist-msm.txt | 50 ++ drivers/gpu/drm/ci/testlist-panfrost.txt | 17 ++ drivers/gpu/drm/ci/testlist-v3d.txt | 73 + drivers/gpu/drm/ci/testlist-vc4.txt | 49 ++ drivers/gpu/drm/ci/testlist.txt | 100 .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 24 ++- .../drm/ci/xfails/amdgpu-stoney-flakes.txt | 9 +- .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 10 +- 11 files changed, 427 insertions(+), 70 deletions(-) create mode 100644 drivers/gpu/drm/ci/testlist-amdgpu.txt create mode 100644 drivers/gpu/drm/ci/testlist-msm.txt create mode 100644 drivers/gpu/drm/ci/testlist-panfrost.txt create mode 100644 drivers/gpu/drm/ci/testlist-v3d.txt create mode 100644 drivers/gpu/drm/ci/testlist-vc4.txt diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index bc8cb3420476..e2b021616a8e 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -5,7 +5,7 @@ variables: UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next - IGT_VERSION: d2af13d9f5be5ce23d996e4afd3e45990f5ab977 + IGT_VERSION: b0cc8160ebdc87ce08b7fd83bb3c99ff7a4d8610 DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git DEQP_RUNNER_GIT_TAG: v0.15.0 diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh index f001e015d135..2fd09b9b7cf6 100755 --- a/drivers/gpu/drm/ci/igt_runner.sh +++ b/drivers/gpu/drm/ci/igt_runner.sh @@ -64,10 +64,20 @@ if ! grep -q "core_getversion" /install/testlist.txt; then fi set +e +if [ "$DRIVER_NAME" = "amdgpu" ]; then + TEST_LIST="/install/testlist-amdgpu.txt" +elif [ "$DRIVER_NAME" = "msm" ]; then + TEST_LIST="/install/testlist-msm.txt" +elif [ "$DRIVER_NAME" = "panfrost" ]; then + TEST_LIST="/install/testlist-panfrost.txt" +else + TEST_LIST="/install/testlist.txt" +fi + Isn't V3D and VC4 testlists missing? It would be nice if you could provide us a link to a working pipeline. Also, if possible, I would like to be CCed on the next version of this patch, as I have interest in the V3D/VC4 tests. Ah, one thing: it would be nice to add the testlists to the MAINTAINERS file. This way, maintainers can keep track of any changes. Best Regards, - Maíra igt-runner \ run \ --igt-folder /igt/libexec/igt-gpu-tools \ - --caselist /install/testlist.txt \ + --caselist $TEST_LIST \ --output /results \ $IGT_SKIPS \ $IGT_FLAKES \ diff --git a/drivers/gpu/drm/ci/testlist-amdgpu.txt b/drivers/gpu/drm/ci/testlist-amdgpu.txt new file mode 100644 index ..4486f86d340b --- /dev/null +++ b/drivers/gpu/drm/ci/testlist-amdgpu.txt @@ -0,0 +1,151 @@ +testlist.txt +amdgpu/amd_abm@dpms_cycle +amdgpu/amd_abm@backlight_monotonic_basic +amdgpu/amd_abm@backlight_monotonic_abm +amdgpu/amd_abm@abm_enabled +amdgpu/amd_abm@abm_gradual +amdgpu/amd_bo@amdgpu_bo_export_import +amdgpu/amd_bo@amdgpu_bo_metadata +amdgpu/amd_bo@amdgpu_bo_map_unmap +amdgpu/amd_bo@amdgpu_memory_alloc +amdgpu/amd_bo@amdgpu_mem_fail_alloc +amdgpu/amd_bo@amdgpu_bo_find_by_cpu_mapping +amdgpu/amd_cp_dma_misc@GTT_to_VRAM-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@GTT_to_VRAM-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_cp_dma_misc@VRAM_to_GTT-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@VRAM_to_GTT-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_cp_dma_misc@VRAM_to_VRAM-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@VRAM_to_VRAM-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_dispatch@amdgpu-dispatch-test-compute-with-IP-COMPUTE +amdgpu/amd_dispatch@amdgpu-dispatch-test-gfx-with-IP-GFX +amdgpu/amd_dispatch@amdgpu-dispatch-hang-test-gfx-with-IP-GFX +amdgpu/amd_dispatch@amdgpu-dispatch-hang-test-compute-with-IP-COMPUTE +amdgpu/amd_dispatch@amdgpu-reset-test-gfx-with-IP-GFX-and-COMPUTE +amdgpu/amd_hotplug@basic +amdgpu/amd_hotplug@basic-suspend +amdgpu/amd_jpeg_dec@amdgpu_cs_jpeg_decode +amdgpu/amd_max_bpc@4k-mode-max-bpc +amdgpu/amd_module_load@reload +amdgpu/amd_plane@test-mpo-4k +amdgpu/amd_plane@mpo-swizzle-toggle +amdgpu/amd_plane@mpo-swizzle-toggle-multihead +amdgpu/amd_plane@mpo-pan-rgb +amdgpu/amd_plane@mpo-pan-rgb-multihead +amdgpu/amd_plane@mpo-pan-nv12 +amdgpu/amd_plane@mpo-pan-nv12-multihead +amdgpu/amd_plane@mpo-pan-p010 +amdgpu/amd_plane@mpo-pan-p010-multihead +amdgpu/amd_plane@mpo-pan-multi-rgb +amdgpu/amd_plane@mpo-pan-mult
Re: [PATCH v3 9/9] drm/ci: uprev IGT and update testlist
On 1/30/24 12:03, Vignesh Raman wrote: Uprev IGT and add amd, v3d, vc4 and vgem specific tests to testlist. Have testlist.txt per driver and include a base testlist so that the driver specific tests will run only on those hardware. Signed-off-by: Vignesh Raman --- v3: - New patch in series to uprev IGT and update testlist. --- drivers/gpu/drm/ci/gitlab-ci.yml | 2 +- drivers/gpu/drm/ci/igt_runner.sh | 12 +- drivers/gpu/drm/ci/testlist-amdgpu.txt| 151 ++ drivers/gpu/drm/ci/testlist-msm.txt | 50 ++ drivers/gpu/drm/ci/testlist-panfrost.txt | 17 ++ drivers/gpu/drm/ci/testlist-v3d.txt | 73 + drivers/gpu/drm/ci/testlist-vc4.txt | 49 ++ drivers/gpu/drm/ci/testlist.txt | 100 .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 24 ++- .../drm/ci/xfails/amdgpu-stoney-flakes.txt| 9 +- .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 10 +- 11 files changed, 427 insertions(+), 70 deletions(-) create mode 100644 drivers/gpu/drm/ci/testlist-amdgpu.txt create mode 100644 drivers/gpu/drm/ci/testlist-msm.txt create mode 100644 drivers/gpu/drm/ci/testlist-panfrost.txt create mode 100644 drivers/gpu/drm/ci/testlist-v3d.txt create mode 100644 drivers/gpu/drm/ci/testlist-vc4.txt diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index bc8cb3420476..e2b021616a8e 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -5,7 +5,7 @@ variables: UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next - IGT_VERSION: d2af13d9f5be5ce23d996e4afd3e45990f5ab977 + IGT_VERSION: b0cc8160ebdc87ce08b7fd83bb3c99ff7a4d8610 DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git DEQP_RUNNER_GIT_TAG: v0.15.0 diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh index f001e015d135..2fd09b9b7cf6 100755 --- a/drivers/gpu/drm/ci/igt_runner.sh +++ b/drivers/gpu/drm/ci/igt_runner.sh @@ -64,10 +64,20 @@ if ! grep -q "core_getversion" /install/testlist.txt; then fi set +e +if [ "$DRIVER_NAME" = "amdgpu" ]; then +TEST_LIST="/install/testlist-amdgpu.txt" +elif [ "$DRIVER_NAME" = "msm" ]; then +TEST_LIST="/install/testlist-msm.txt" +elif [ "$DRIVER_NAME" = "panfrost" ]; then +TEST_LIST="/install/testlist-panfrost.txt" +else +TEST_LIST="/install/testlist.txt" +fi + Isn't V3D and VC4 testlists missing? It would be nice if you could provide us a link to a working pipeline. Also, if possible, I would like to be CCed on the next version of this patch, as I have interest in the V3D/VC4 tests. Best Regards, - Maíra igt-runner \ run \ --igt-folder /igt/libexec/igt-gpu-tools \ ---caselist /install/testlist.txt \ +--caselist $TEST_LIST \ --output /results \ $IGT_SKIPS \ $IGT_FLAKES \ diff --git a/drivers/gpu/drm/ci/testlist-amdgpu.txt b/drivers/gpu/drm/ci/testlist-amdgpu.txt new file mode 100644 index ..4486f86d340b --- /dev/null +++ b/drivers/gpu/drm/ci/testlist-amdgpu.txt @@ -0,0 +1,151 @@ +testlist.txt +amdgpu/amd_abm@dpms_cycle +amdgpu/amd_abm@backlight_monotonic_basic +amdgpu/amd_abm@backlight_monotonic_abm +amdgpu/amd_abm@abm_enabled +amdgpu/amd_abm@abm_gradual +amdgpu/amd_bo@amdgpu_bo_export_import +amdgpu/amd_bo@amdgpu_bo_metadata +amdgpu/amd_bo@amdgpu_bo_map_unmap +amdgpu/amd_bo@amdgpu_memory_alloc +amdgpu/amd_bo@amdgpu_mem_fail_alloc +amdgpu/amd_bo@amdgpu_bo_find_by_cpu_mapping +amdgpu/amd_cp_dma_misc@GTT_to_VRAM-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@GTT_to_VRAM-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_cp_dma_misc@VRAM_to_GTT-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@VRAM_to_GTT-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_cp_dma_misc@VRAM_to_VRAM-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@VRAM_to_VRAM-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_dispatch@amdgpu-dispatch-test-compute-with-IP-COMPUTE +amdgpu/amd_dispatch@amdgpu-dispatch-test-gfx-with-IP-GFX +amdgpu/amd_dispatch@amdgpu-dispatch-hang-test-gfx-with-IP-GFX +amdgpu/amd_dispatch@amdgpu-dispatch-hang-test-compute-with-IP-COMPUTE +amdgpu/amd_dispatch@amdgpu-reset-test-gfx-with-IP-GFX-and-COMPUTE +amdgpu/amd_hotplug@basic +amdgpu/amd_hotplug@basic-suspend +amdgpu/amd_jpeg_dec@amdgpu_cs_jpeg_decode +amdgpu/amd_max_bpc@4k-mode-max-bpc +amdgpu/amd_module_load@reload +amdgpu/amd_plane@test-mpo-4k +amdgpu/amd_plane@mpo-swizzle-toggle +amdgpu/amd_plane@mpo-swizzle-toggle-multihead +amdgpu/amd_plane@mpo-pan-rgb +amdgpu/amd_plane@mpo-pan-rgb-multihead +amdgpu/amd_plane@mpo-pan-nv12 +amdgpu/amd_plane@mpo-pan-nv12-multihead +amdgpu/amd_plane@mpo-pan-p010 +amdgpu/amd_plane@mpo-pan-p010-multihead +amdgpu/amd_plane@mpo-pan-multi-rgb +amdgpu/amd_plane@mpo-pan-multi-nv12 +amdgpu/amd_plane@mpo-pan-multi-p010 +amdgpu/amd_plane@multi-overlay +amdgpu/amd_plane@multi-overlay-invalid +amdgpu/amd_plane@mpo-scale-rgb +amdgpu/amd_plane@mpo-