Hans de Goede
2022-Jul-12 19:38 UTC
[Nouveau] [PATCH v2 03/29] drm/amdgpu: Don't register backlight when another backlight should be used
Before this commit when we want userspace to use the acpi_video backlight device we register both the GPU's native backlight device and acpi_video's firmware acpi_video# backlight device. This relies on userspace preferring firmware type backlight devices over native ones. Registering 2 backlight devices for a single display really is undesirable, don't register the GPU's native backlight device when another backlight device should be used. Changes in v2: - To avoid linker errors when amdgpu is builtin and video_detect.c is in a module, select ACPI_VIDEO and its deps if ACPI && X86 are enabled. When these are not set, ACPI_VIDEO is disabled, ensuring the stubs from acpi/video.h will be used. Signed-off-by: Hans de Goede <hdegoede at redhat.com> --- drivers/gpu/drm/Kconfig | 6 ++++++ drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | 7 +++++++ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index aaa7ad1f0614..d65119860760 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -258,6 +258,12 @@ config DRM_AMDGPU select HWMON select BACKLIGHT_CLASS_DEVICE select INTERVAL_TREE + # amdgpu depends on ACPI_VIDEO when X86 and ACPI are both enabled + # for select to work, ACPI_VIDEO's dependencies must also be selected + select INPUT if ACPI && X86 + select X86_PLATFORM_DEVICES if ACPI && X86 + select ACPI_WMI if ACPI && X86 + select ACPI_VIDEO if ACPI && X86 help Choose this option if you have a recent AMD Radeon graphics card. diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c index fa7421afb9a6..abf209e36fca 100644 --- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c +++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c @@ -26,6 +26,8 @@ #include <linux/pci.h> +#include <acpi/video.h> + #include <drm/drm_crtc_helper.h> #include <drm/amdgpu_drm.h> #include "amdgpu.h" @@ -184,6 +186,11 @@ void amdgpu_atombios_encoder_init_backlight(struct amdgpu_encoder *amdgpu_encode if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) return; + if (!acpi_video_backlight_use_native()) { + DRM_INFO("Skipping amdgpu atom DIG backlight registration\n"); + return; + } + pdata = kmalloc(sizeof(struct amdgpu_backlight_privdata), GFP_KERNEL); if (!pdata) { DRM_ERROR("Memory allocation failed\n"); 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 5eb111d35793..3b03a95e59a8 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -86,6 +86,8 @@ #include <drm/drm_audio_component.h> #include <drm/drm_gem_atomic_helper.h> +#include <acpi/video.h> + #include "ivsrcid/dcn/irqsrcs_dcn_1_0.h" #include "dcn/dcn_1_0_offset.h" @@ -4050,6 +4052,11 @@ amdgpu_dm_register_backlight_device(struct amdgpu_display_manager *dm) amdgpu_dm_update_backlight_caps(dm, dm->num_of_edps); dm->brightness[dm->num_of_edps] = AMDGPU_MAX_BL_LEVEL; + if (!acpi_video_backlight_use_native()) { + DRM_INFO("Skipping amdgpu DM backlight registration\n"); + return; + } + props.max_brightness = AMDGPU_MAX_BL_LEVEL; props.brightness = AMDGPU_MAX_BL_LEVEL; props.type = BACKLIGHT_RAW; -- 2.36.0
Alex Deucher
2022-Jul-20 16:44 UTC
[Nouveau] [PATCH v2 03/29] drm/amdgpu: Don't register backlight when another backlight should be used
On Tue, Jul 12, 2022 at 3:39 PM Hans de Goede <hdegoede at redhat.com> wrote:> > Before this commit when we want userspace to use the acpi_video backlight > device we register both the GPU's native backlight device and acpi_video's > firmware acpi_video# backlight device. This relies on userspace preferring > firmware type backlight devices over native ones. > > Registering 2 backlight devices for a single display really is > undesirable, don't register the GPU's native backlight device when > another backlight device should be used. > > Changes in v2: > - To avoid linker errors when amdgpu is builtin and video_detect.c is in > a module, select ACPI_VIDEO and its deps if ACPI && X86 are enabled. > When these are not set, ACPI_VIDEO is disabled, ensuring the stubs > from acpi/video.h will be used. > > Signed-off-by: Hans de Goede <hdegoede at redhat.com>Acked-by: Alex Deucher <alexander.deucher at amd.com>> --- > drivers/gpu/drm/Kconfig | 6 ++++++ > drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | 7 +++++++ > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 +++++++ > 3 files changed, 20 insertions(+) > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index aaa7ad1f0614..d65119860760 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -258,6 +258,12 @@ config DRM_AMDGPU > select HWMON > select BACKLIGHT_CLASS_DEVICE > select INTERVAL_TREE > + # amdgpu depends on ACPI_VIDEO when X86 and ACPI are both enabled > + # for select to work, ACPI_VIDEO's dependencies must also be selected > + select INPUT if ACPI && X86 > + select X86_PLATFORM_DEVICES if ACPI && X86 > + select ACPI_WMI if ACPI && X86 > + select ACPI_VIDEO if ACPI && X86 > help > Choose this option if you have a recent AMD Radeon graphics card. > > diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c > index fa7421afb9a6..abf209e36fca 100644 > --- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c > +++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c > @@ -26,6 +26,8 @@ > > #include <linux/pci.h> > > +#include <acpi/video.h> > + > #include <drm/drm_crtc_helper.h> > #include <drm/amdgpu_drm.h> > #include "amdgpu.h" > @@ -184,6 +186,11 @@ void amdgpu_atombios_encoder_init_backlight(struct amdgpu_encoder *amdgpu_encode > if (!(adev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) > return; > > + if (!acpi_video_backlight_use_native()) { > + DRM_INFO("Skipping amdgpu atom DIG backlight registration\n"); > + return; > + } > + > pdata = kmalloc(sizeof(struct amdgpu_backlight_privdata), GFP_KERNEL); > if (!pdata) { > DRM_ERROR("Memory allocation failed\n"); > 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 5eb111d35793..3b03a95e59a8 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -86,6 +86,8 @@ > #include <drm/drm_audio_component.h> > #include <drm/drm_gem_atomic_helper.h> > > +#include <acpi/video.h> > + > #include "ivsrcid/dcn/irqsrcs_dcn_1_0.h" > > #include "dcn/dcn_1_0_offset.h" > @@ -4050,6 +4052,11 @@ amdgpu_dm_register_backlight_device(struct amdgpu_display_manager *dm) > amdgpu_dm_update_backlight_caps(dm, dm->num_of_edps); > dm->brightness[dm->num_of_edps] = AMDGPU_MAX_BL_LEVEL; > > + if (!acpi_video_backlight_use_native()) { > + DRM_INFO("Skipping amdgpu DM backlight registration\n"); > + return; > + } > + > props.max_brightness = AMDGPU_MAX_BL_LEVEL; > props.brightness = AMDGPU_MAX_BL_LEVEL; > props.type = BACKLIGHT_RAW; > -- > 2.36.0 >