RE: [PATCH] drm/amdgpu: simplify ATIF backlight handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[AMD Official Use Only - Internal Distribution Only]

Acked-by: Evan Quan <evan.quan@xxxxxxx>

-----Original Message-----
From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Alex Deucher
Sent: Wednesday, May 6, 2020 3:48 AM
To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>
Subject: [PATCH] drm/amdgpu: simplify ATIF backlight handling

Just register the a pointer to the backlight device and use that. Unifies the DC and non-DC handling.

Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 73 ++++++++++--------------
 1 file changed, 30 insertions(+), 43 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
index 956cbbda4793..913c8f0513bd 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
@@ -64,7 +64,9 @@ struct amdgpu_atif {
 struct amdgpu_atif_notifications notifications;
 struct amdgpu_atif_functions functions;
 struct amdgpu_atif_notification_cfg notification_cfg;
-struct amdgpu_encoder *encoder_for_bl;
+#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
+struct backlight_device *bd;
+#endif
 struct amdgpu_dm_backlight_caps backlight_caps;  };

@@ -444,45 +446,21 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev,

 DRM_DEBUG_DRIVER("ATIF: %d pending SBIOS requests\n", count);

-if ((req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) &&
-    !amdgpu_device_has_dc_support(adev)) {
-struct amdgpu_encoder *enc = atif->encoder_for_bl;
-
-if (enc) {
-struct amdgpu_encoder_atom_dig *dig = enc->enc_priv;
-
-DRM_DEBUG_DRIVER("Changing brightness to %d\n",
- 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);
-#endif
-}
-}
-#if defined(CONFIG_DRM_AMD_DC)
+if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) {
 #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
-if ((req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) &&
-    amdgpu_device_has_dc_support(adev)) {
-struct amdgpu_display_manager *dm = &adev->dm;
-struct backlight_device *bd = dm->backlight_dev;
-
-if (bd) {
+if (atif->bd) {
 DRM_DEBUG_DRIVER("Changing brightness to %d\n",
  req.backlight_level);
-
 /*
  * XXX backlight_device_set_brightness() is
  * hardwired to post BACKLIGHT_UPDATE_SYSFS.
  * It probably should accept 'reason' parameter.
  */
-backlight_device_set_brightness(bd, req.backlight_level);
+backlight_device_set_brightness(atif->bd, req.backlight_level);
 }
-}
-#endif
 #endif
+}
+
 if (req.pending & ATIF_DGPU_DISPLAY_EVENT) {
 if (adev->flags & AMD_IS_PX) {
 pm_runtime_get_sync(adev->ddev->dev);
@@ -829,23 +807,32 @@ int amdgpu_acpi_init(struct amdgpu_device *adev)
 adev->atif = atif;

 if (atif->notifications.brightness_change) {
-struct drm_encoder *tmp;
-
-/* Find the encoder controlling the brightness */
-list_for_each_entry(tmp, &adev->ddev->mode_config.encoder_list,
-head) {
-struct amdgpu_encoder *enc = to_amdgpu_encoder(tmp);
-
-if ((enc->devices & (ATOM_DEVICE_LCD_SUPPORT)) &&
-    enc->enc_priv) {
-struct amdgpu_encoder_atom_dig *dig = enc->enc_priv;
-if (dig->bl_dev) {
-atif->encoder_for_bl = enc;
-break;
+#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
+if (amdgpu_device_has_dc_support(adev)) { #if
+defined(CONFIG_DRM_AMD_DC)
+struct amdgpu_display_manager *dm = &adev->dm;
+atif->bd = dm->backlight_dev;
+#endif
+} else {
+struct drm_encoder *tmp;
+
+/* Find the encoder controlling the brightness */
+list_for_each_entry(tmp, &adev->ddev->mode_config.encoder_list,
+    head) {
+struct amdgpu_encoder *enc = to_amdgpu_encoder(tmp);
+
+if ((enc->devices & (ATOM_DEVICE_LCD_SUPPORT)) &&
+    enc->enc_priv) {
+struct amdgpu_encoder_atom_dig *dig = enc->enc_priv;
+if (dig->bl_dev) {
+atif->bd = dig->bl_dev;
+break;
+}
 }
 }
 }
 }
+#endif

 if (atif->functions.sbios_requests && !atif->functions.system_params) {
 /* XXX check this workraround, if sbios request function is
--
2.25.4

_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7Cevan.quan%40amd.com%7Cf8a40f42e8ec4ea3c9e008d7f12d4592%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637243050173626661&amp;sdata=yj1OgR%2FXj4X0VvZ3%2F%2FOIGgA0RDN4JP%2FG7IOuBM9xEaA%3D&amp;reserved=0
_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux