All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amdgpu: simplify ATIF backlight handling
@ 2020-05-05 19:48 Alex Deucher
  2020-05-07 16:09 ` Alex Deucher
  2020-05-22  5:53 ` Quan, Evan
  0 siblings, 2 replies; 5+ messages in thread
From: Alex Deucher @ 2020-05-05 19:48 UTC (permalink / raw)
  To: amd-gfx; +Cc: Alex Deucher

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@amd.com>
---
 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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] drm/amdgpu: simplify ATIF backlight handling
  2020-05-05 19:48 [PATCH] drm/amdgpu: simplify ATIF backlight handling Alex Deucher
@ 2020-05-07 16:09 ` Alex Deucher
  2020-05-12 20:15   ` Alex Deucher
  2020-05-22  5:53 ` Quan, Evan
  1 sibling, 1 reply; 5+ messages in thread
From: Alex Deucher @ 2020-05-07 16:09 UTC (permalink / raw)
  To: amd-gfx list; +Cc: Alex Deucher

Ping?

On Tue, May 5, 2020 at 3:48 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> 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@amd.com>
> ---
>  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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] drm/amdgpu: simplify ATIF backlight handling
  2020-05-07 16:09 ` Alex Deucher
@ 2020-05-12 20:15   ` Alex Deucher
  2020-05-21 14:15     ` Alex Deucher
  0 siblings, 1 reply; 5+ messages in thread
From: Alex Deucher @ 2020-05-12 20:15 UTC (permalink / raw)
  To: amd-gfx list; +Cc: Alex Deucher

Ping?

Alex

On Thu, May 7, 2020 at 12:09 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> Ping?
>
> On Tue, May 5, 2020 at 3:48 PM Alex Deucher <alexdeucher@gmail.com> wrote:
> >
> > 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@amd.com>
> > ---
> >  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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] drm/amdgpu: simplify ATIF backlight handling
  2020-05-12 20:15   ` Alex Deucher
@ 2020-05-21 14:15     ` Alex Deucher
  0 siblings, 0 replies; 5+ messages in thread
From: Alex Deucher @ 2020-05-21 14:15 UTC (permalink / raw)
  To: amd-gfx list; +Cc: Alex Deucher

Ping?

On Tue, May 12, 2020 at 4:15 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> Ping?
>
> Alex
>
> On Thu, May 7, 2020 at 12:09 PM Alex Deucher <alexdeucher@gmail.com> wrote:
> >
> > Ping?
> >
> > On Tue, May 5, 2020 at 3:48 PM Alex Deucher <alexdeucher@gmail.com> wrote:
> > >
> > > 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@amd.com>
> > > ---
> > >  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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH] drm/amdgpu: simplify ATIF backlight handling
  2020-05-05 19:48 [PATCH] drm/amdgpu: simplify ATIF backlight handling Alex Deucher
  2020-05-07 16:09 ` Alex Deucher
@ 2020-05-22  5:53 ` Quan, Evan
  1 sibling, 0 replies; 5+ messages in thread
From: Quan, Evan @ 2020-05-22  5:53 UTC (permalink / raw)
  To: Alex Deucher, amd-gfx; +Cc: Deucher, Alexander

[AMD Official Use Only - Internal Distribution Only]

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

-----Original Message-----
From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of Alex Deucher
Sent: Wednesday, May 6, 2020 3:48 AM
To: amd-gfx@lists.freedesktop.org
Cc: Deucher, Alexander <Alexander.Deucher@amd.com>
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@amd.com>
---
 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@lists.freedesktop.org
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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-05-22  5:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-05 19:48 [PATCH] drm/amdgpu: simplify ATIF backlight handling Alex Deucher
2020-05-07 16:09 ` Alex Deucher
2020-05-12 20:15   ` Alex Deucher
2020-05-21 14:15     ` Alex Deucher
2020-05-22  5:53 ` Quan, Evan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.