提交 9e7204be 编写于 作者: A Alex Deucher

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: NJim Qu <Jim.Qu@amd.com>
Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
上级 7766484b
...@@ -364,7 +364,6 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev, ...@@ -364,7 +364,6 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev,
struct acpi_bus_event *event) struct acpi_bus_event *event)
{ {
struct amdgpu_atif *atif = adev->atif; struct amdgpu_atif *atif = adev->atif;
struct atif_sbios_requests req;
int count; int count;
DRM_DEBUG_DRIVER("event, device_class = %s, type = %#x\n", DRM_DEBUG_DRIVER("event, device_class = %s, type = %#x\n",
...@@ -379,42 +378,46 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev, ...@@ -379,42 +378,46 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev,
/* Not our event */ /* Not our event */
return NOTIFY_DONE; return NOTIFY_DONE;
/* Check pending SBIOS requests */ if (atif->functions.sbios_requests) {
count = amdgpu_atif_get_sbios_requests(atif, &req); struct atif_sbios_requests req;
if (count <= 0) /* Check pending SBIOS requests */
return NOTIFY_DONE; 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) { if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) {
struct amdgpu_encoder *enc = atif->encoder_for_bl; struct amdgpu_encoder *enc = atif->encoder_for_bl;
if (enc) { if (enc) {
struct amdgpu_encoder_atom_dig *dig = enc->enc_priv; struct amdgpu_encoder_atom_dig *dig = enc->enc_priv;
DRM_DEBUG_DRIVER("Changing brightness to %d\n", DRM_DEBUG_DRIVER("Changing brightness to %d\n",
req.backlight_level); 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) #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
backlight_force_update(dig->bl_dev, backlight_force_update(dig->bl_dev,
BACKLIGHT_UPDATE_HOTKEY); BACKLIGHT_UPDATE_HOTKEY);
#endif #endif
}
} }
} if (req.pending & ATIF_DGPU_DISPLAY_EVENT) {
if (req.pending & ATIF_DGPU_DISPLAY_EVENT) { if ((adev->flags & AMD_IS_PX) &&
if ((adev->flags & AMD_IS_PX) && amdgpu_atpx_dgpu_req_power_for_displays()) {
amdgpu_atpx_dgpu_req_power_for_displays()) { pm_runtime_get_sync(adev->ddev->dev);
pm_runtime_get_sync(adev->ddev->dev); /* Just fire off a uevent and let userspace tell us what to do */
/* Just fire off a uevent and let userspace tell us what to do */ drm_helper_hpd_irq_event(adev->ddev);
drm_helper_hpd_irq_event(adev->ddev); pm_runtime_mark_last_busy(adev->ddev->dev);
pm_runtime_mark_last_busy(adev->ddev->dev); pm_runtime_put_autosuspend(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 /* 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 * overloads ACPI_VIDEO_NOTIFY_PROBE, we don't want to send that to
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册