aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch
new file mode 100644
index 00000000..0a035651
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch
@@ -0,0 +1,101 @@
+From b4d19ebc884437b5d3a93b9da434a0f3a60bb316 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 19 Jul 2018 09:17:02 -0500
+Subject: [PATCH 4988/5725] drm/amdgpu/apci: don't call sbios request function
+ if it's not supported
+
+Check the supported functions mask before calling the bios
+requests method.
+
+Reviewed-by: Jim Qu <Jim.Qu@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 53 +++++++++++++++++---------------
+ 1 file changed, 28 insertions(+), 25 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
+index 0d8c3fc..4556178 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
+@@ -364,7 +364,6 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev,
+ struct acpi_bus_event *event)
+ {
+ struct amdgpu_atif *atif = adev->atif;
+- struct atif_sbios_requests req;
+ int count;
+
+ DRM_DEBUG_DRIVER("event, device_class = %s, type = %#x\n",
+@@ -379,42 +378,46 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev,
+ /* Not our event */
+ return NOTIFY_DONE;
+
+- /* Check pending SBIOS requests */
+- count = amdgpu_atif_get_sbios_requests(atif, &req);
++ if (atif->functions.sbios_requests) {
++ struct atif_sbios_requests req;
+
+- if (count <= 0)
+- return NOTIFY_DONE;
++ /* Check pending SBIOS requests */
++ count = amdgpu_atif_get_sbios_requests(atif, &req);
++
++ if (count <= 0)
++ return NOTIFY_DONE;
+
+- DRM_DEBUG_DRIVER("ATIF: %d pending SBIOS requests\n", count);
++ DRM_DEBUG_DRIVER("ATIF: %d pending SBIOS requests\n", count);
+
+- if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) {
+- struct amdgpu_encoder *enc = atif->encoder_for_bl;
++ if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) {
++ struct amdgpu_encoder *enc = atif->encoder_for_bl;
+
+- if (enc) {
+- struct amdgpu_encoder_atom_dig *dig = enc->enc_priv;
++ if (enc) {
++ struct amdgpu_encoder_atom_dig *dig = enc->enc_priv;
+
+- DRM_DEBUG_DRIVER("Changing brightness to %d\n",
+- req.backlight_level);
++ DRM_DEBUG_DRIVER("Changing brightness to %d\n",
++ req.backlight_level);
+
+- amdgpu_display_backlight_set_level(adev, enc, req.backlight_level);
++ amdgpu_display_backlight_set_level(adev, enc, req.backlight_level);
+
+ #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
+- backlight_force_update(dig->bl_dev,
+- BACKLIGHT_UPDATE_HOTKEY);
++ backlight_force_update(dig->bl_dev,
++ BACKLIGHT_UPDATE_HOTKEY);
+ #endif
++ }
+ }
+- }
+- if (req.pending & ATIF_DGPU_DISPLAY_EVENT) {
+- if ((adev->flags & AMD_IS_PX) &&
+- amdgpu_atpx_dgpu_req_power_for_displays()) {
+- pm_runtime_get_sync(adev->ddev->dev);
+- /* Just fire off a uevent and let userspace tell us what to do */
+- drm_helper_hpd_irq_event(adev->ddev);
+- pm_runtime_mark_last_busy(adev->ddev->dev);
+- pm_runtime_put_autosuspend(adev->ddev->dev);
++ if (req.pending & ATIF_DGPU_DISPLAY_EVENT) {
++ if ((adev->flags & AMD_IS_PX) &&
++ amdgpu_atpx_dgpu_req_power_for_displays()) {
++ pm_runtime_get_sync(adev->ddev->dev);
++ /* Just fire off a uevent and let userspace tell us what to do */
++ drm_helper_hpd_irq_event(adev->ddev);
++ pm_runtime_mark_last_busy(adev->ddev->dev);
++ pm_runtime_put_autosuspend(adev->ddev->dev);
++ }
+ }
++ /* TODO: check other events */
+ }
+- /* TODO: check other events */
+
+ /* We've handled the event, stop the notifier chain. The ACPI interface
+ * overloads ACPI_VIDEO_NOTIFY_PROBE, we don't want to send that to
+--
+2.7.4
+