]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.7-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Aug 2016 11:38:41 +0000 (13:38 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Aug 2016 11:38:41 +0000 (13:38 +0200)
added patches:
drm-amdgpu-add-a-delay-after-atpx-dgpu-power-off.patch
drm-amdgpu-disable-rpm-helpers-while-reprobing-connectors-on-resume.patch
drm-amdgpu-fix-firmware-info-version-checks.patch
drm-amdgpu-gmc7-add-missing-mullins-case.patch
drm-amdgpu-poll-for-both-connect-disconnect-on-analog-connectors.patch
drm-amdgpu-support-backlight-control-for-uniphy3.patch
drm-radeon-add-a-delay-after-atpx-dgpu-power-off.patch
drm-radeon-fix-firmware-info-version-checks.patch
drm-radeon-poll-for-both-connect-disconnect-on-analog-connectors.patch
drm-radeon-support-backlight-control-for-uniphy3.patch

queue-4.7/drm-amdgpu-add-a-delay-after-atpx-dgpu-power-off.patch [new file with mode: 0644]
queue-4.7/drm-amdgpu-disable-rpm-helpers-while-reprobing-connectors-on-resume.patch [new file with mode: 0644]
queue-4.7/drm-amdgpu-fix-firmware-info-version-checks.patch [new file with mode: 0644]
queue-4.7/drm-amdgpu-gmc7-add-missing-mullins-case.patch [new file with mode: 0644]
queue-4.7/drm-amdgpu-poll-for-both-connect-disconnect-on-analog-connectors.patch [new file with mode: 0644]
queue-4.7/drm-amdgpu-support-backlight-control-for-uniphy3.patch [new file with mode: 0644]
queue-4.7/drm-radeon-add-a-delay-after-atpx-dgpu-power-off.patch [new file with mode: 0644]
queue-4.7/drm-radeon-fix-firmware-info-version-checks.patch [new file with mode: 0644]
queue-4.7/drm-radeon-poll-for-both-connect-disconnect-on-analog-connectors.patch [new file with mode: 0644]
queue-4.7/drm-radeon-support-backlight-control-for-uniphy3.patch [new file with mode: 0644]
queue-4.7/series

diff --git a/queue-4.7/drm-amdgpu-add-a-delay-after-atpx-dgpu-power-off.patch b/queue-4.7/drm-amdgpu-add-a-delay-after-atpx-dgpu-power-off.patch
new file mode 100644 (file)
index 0000000..1dae639
--- /dev/null
@@ -0,0 +1,46 @@
+From f81eb1a349d47694fe1e688336ca1b40ea3e248a Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 1 Jun 2016 12:54:33 -0400
+Subject: drm/amdgpu: add a delay after ATPX dGPU power off
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit f81eb1a349d47694fe1e688336ca1b40ea3e248a upstream.
+
+ATPX dGPU power control requires a 200ms delay between
+power off and on.  This should fix dGPU failures on
+resume from power off.
+
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Acked-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c
+@@ -10,6 +10,7 @@
+ #include <linux/slab.h>
+ #include <linux/acpi.h>
+ #include <linux/pci.h>
++#include <linux/delay.h>
+ #include "amd_acpi.h"
+@@ -259,6 +260,10 @@ static int amdgpu_atpx_set_discrete_stat
+               if (!info)
+                       return -EIO;
+               kfree(info);
++
++              /* 200ms delay is required after off */
++              if (state == 0)
++                      msleep(200);
+       }
+       return 0;
+ }
diff --git a/queue-4.7/drm-amdgpu-disable-rpm-helpers-while-reprobing-connectors-on-resume.patch b/queue-4.7/drm-amdgpu-disable-rpm-helpers-while-reprobing-connectors-on-resume.patch
new file mode 100644 (file)
index 0000000..ae0cc09
--- /dev/null
@@ -0,0 +1,72 @@
+From 23a1a9e54e71593fe5657e883662995d181d2d6b Mon Sep 17 00:00:00 2001
+From: Lyude <cpaul@redhat.com>
+Date: Mon, 18 Jul 2016 11:41:37 -0400
+Subject: drm/amdgpu: Disable RPM helpers while reprobing connectors on resume
+
+From: Lyude <cpaul@redhat.com>
+
+commit 23a1a9e54e71593fe5657e883662995d181d2d6b upstream.
+
+Just about all of amdgpu's connector probing functions try to acquire
+runtime PM refs. If we try to do this in the context of
+amdgpu_resume_kms by calling drm_helper_hpd_irq_event(), we end up
+deadlocking the system.
+
+Since we're guaranteed to be holding the spinlock for RPM in
+amdgpu_resume_kms, and we already know the GPU is in working order, we
+need to prevent the RPM helpers from trying to run during the initial
+connector reprobe on resume.
+
+There's a couple of solutions I've explored for fixing this, but this
+one by far seems to be the simplest and most reliable (plus I'm pretty
+sure that's what disable_depth is there for anyway).
+
+Reproduction recipe:
+  - Get any laptop dual GPUs using PRIME
+  - Make sure runtime PM is enabled for amdgpu
+  - Boot the machine
+  - If the machine managed to boot without hanging, switch out of X to
+    another VT. This should definitely cause X to hang infinitely.
+
+Changes since v1:
+  - add appropriate #ifdef checks for CONFIG_PM. This is not very
+    useful, but it appears some kernel test suites test compiling amdgpu
+    with CONFIG_PM disabled, which results in this patch breaking the builds
+    if we don't include this #ifdef
+
+Cc: Alex Deucher <alexdeucher@gmail.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Lyude <cpaul@redhat.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |   16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+@@ -1841,7 +1841,23 @@ int amdgpu_resume_kms(struct drm_device
+       }
+       drm_kms_helper_poll_enable(dev);
++
++      /*
++       * Most of the connector probing functions try to acquire runtime pm
++       * refs to ensure that the GPU is powered on when connector polling is
++       * performed. Since we're calling this from a runtime PM callback,
++       * trying to acquire rpm refs will cause us to deadlock.
++       *
++       * Since we're guaranteed to be holding the rpm lock, it's safe to
++       * temporarily disable the rpm helpers so this doesn't deadlock us.
++       */
++#ifdef CONFIG_PM
++      dev->dev->power.disable_depth++;
++#endif
+       drm_helper_hpd_irq_event(dev);
++#ifdef CONFIG_PM
++      dev->dev->power.disable_depth--;
++#endif
+       if (fbcon) {
+               amdgpu_fbdev_set_suspend(adev, 0);
diff --git a/queue-4.7/drm-amdgpu-fix-firmware-info-version-checks.patch b/queue-4.7/drm-amdgpu-fix-firmware-info-version-checks.patch
new file mode 100644 (file)
index 0000000..2fe1d3c
--- /dev/null
@@ -0,0 +1,59 @@
+From a8a04c994d41a489eb0f2899893209e04e030153 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 27 Jul 2016 15:31:59 -0400
+Subject: drm/amdgpu: fix firmware info version checks
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit a8a04c994d41a489eb0f2899893209e04e030153 upstream.
+
+Some of the checks didn't handle frev 2 tables properly.
+amdgpu doesn't support any tables pre-frev 2, so drop
+the checks.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c |   25 ++++++++-----------------
+ 1 file changed, 8 insertions(+), 17 deletions(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
+@@ -551,28 +551,19 @@ int amdgpu_atombios_get_clock_info(struc
+                   le16_to_cpu(firmware_info->info.usReferenceClock);
+               ppll->reference_div = 0;
+-              if (crev < 2)
+-                      ppll->pll_out_min =
+-                              le16_to_cpu(firmware_info->info.usMinPixelClockPLL_Output);
+-              else
+-                      ppll->pll_out_min =
+-                              le32_to_cpu(firmware_info->info_12.ulMinPixelClockPLL_Output);
++              ppll->pll_out_min =
++                      le32_to_cpu(firmware_info->info_12.ulMinPixelClockPLL_Output);
+               ppll->pll_out_max =
+                   le32_to_cpu(firmware_info->info.ulMaxPixelClockPLL_Output);
+-              if (crev >= 4) {
+-                      ppll->lcd_pll_out_min =
+-                              le16_to_cpu(firmware_info->info_14.usLcdMinPixelClockPLL_Output) * 100;
+-                      if (ppll->lcd_pll_out_min == 0)
+-                              ppll->lcd_pll_out_min = ppll->pll_out_min;
+-                      ppll->lcd_pll_out_max =
+-                              le16_to_cpu(firmware_info->info_14.usLcdMaxPixelClockPLL_Output) * 100;
+-                      if (ppll->lcd_pll_out_max == 0)
+-                              ppll->lcd_pll_out_max = ppll->pll_out_max;
+-              } else {
++              ppll->lcd_pll_out_min =
++                      le16_to_cpu(firmware_info->info_14.usLcdMinPixelClockPLL_Output) * 100;
++              if (ppll->lcd_pll_out_min == 0)
+                       ppll->lcd_pll_out_min = ppll->pll_out_min;
++              ppll->lcd_pll_out_max =
++                      le16_to_cpu(firmware_info->info_14.usLcdMaxPixelClockPLL_Output) * 100;
++              if (ppll->lcd_pll_out_max == 0)
+                       ppll->lcd_pll_out_max = ppll->pll_out_max;
+-              }
+               if (ppll->pll_out_min == 0)
+                       ppll->pll_out_min = 64800;
diff --git a/queue-4.7/drm-amdgpu-gmc7-add-missing-mullins-case.patch b/queue-4.7/drm-amdgpu-gmc7-add-missing-mullins-case.patch
new file mode 100644 (file)
index 0000000..b87b3e5
--- /dev/null
@@ -0,0 +1,29 @@
+From 7f555c8e5a84b348c2b76f4ca78eae7222354c03 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Fri, 29 Jul 2016 18:03:42 -0400
+Subject: drm/amdgpu/gmc7: add missing mullins case
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 7f555c8e5a84b348c2b76f4ca78eae7222354c03 upstream.
+
+Looks like this got missed when we ported the code from radeon.
+
+Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+@@ -167,6 +167,7 @@ static int gmc_v7_0_init_microcode(struc
+               break;
+       case CHIP_KAVERI:
+       case CHIP_KABINI:
++      case CHIP_MULLINS:
+               return 0;
+       default: BUG();
+       }
diff --git a/queue-4.7/drm-amdgpu-poll-for-both-connect-disconnect-on-analog-connectors.patch b/queue-4.7/drm-amdgpu-poll-for-both-connect-disconnect-on-analog-connectors.patch
new file mode 100644 (file)
index 0000000..19d77c0
--- /dev/null
@@ -0,0 +1,63 @@
+From b636a1b3d624b49b23cc1be2f9f6bcbb89aca855 Mon Sep 17 00:00:00 2001
+From: Lyude <cpaul@redhat.com>
+Date: Fri, 24 Jun 2016 17:54:32 -0400
+Subject: drm/amdgpu: Poll for both connect/disconnect on analog connectors
+
+From: Lyude <cpaul@redhat.com>
+
+commit b636a1b3d624b49b23cc1be2f9f6bcbb89aca855 upstream.
+
+DRM_CONNECTOR_POLL_CONNECT only enables polling for connections, not
+disconnections. Because of this, we end up losing hotplug polling for
+analog connectors once they get connected.
+
+Easy way to reproduce:
+ - Grab a machine with an AMD GPU and a VGA port
+ - Plug a monitor into the VGA port, wait for it to update the connector
+   from disconnected to connected
+ - Disconnect the monitor on VGA, a hotplug event is never sent for the
+   removal of the connector.
+
+Originally, only using DRM_CONNECTOR_POLL_CONNECT might have been a good
+idea since doing VGA polling can sometimes result in having to mess with
+the DAC voltages to figure out whether or not there's actually something
+there since VGA doesn't have HPD. Doing this would have the potential of
+showing visible artifacts on the screen every time we ran a poll while a
+VGA display was connected. Luckily, amdgpu_vga_detect() only resorts to
+this sort of polling if the poll is forced, and DRM's polling helper
+doesn't force it's polls.
+
+Additionally, this removes some assignments to connector->polled that
+weren't actually doing anything.
+
+Signed-off-by: Lyude <cpaul@redhat.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+@@ -1690,7 +1690,6 @@ amdgpu_connector_add(struct amdgpu_devic
+                                                  DRM_MODE_SCALE_NONE);
+                       /* no HPD on analog connectors */
+                       amdgpu_connector->hpd.hpd = AMDGPU_HPD_NONE;
+-                      connector->polled = DRM_CONNECTOR_POLL_CONNECT;
+                       connector->interlace_allowed = true;
+                       connector->doublescan_allowed = true;
+                       break;
+@@ -1893,8 +1892,10 @@ amdgpu_connector_add(struct amdgpu_devic
+       }
+       if (amdgpu_connector->hpd.hpd == AMDGPU_HPD_NONE) {
+-              if (i2c_bus->valid)
+-                      connector->polled = DRM_CONNECTOR_POLL_CONNECT;
++              if (i2c_bus->valid) {
++                      connector->polled = DRM_CONNECTOR_POLL_CONNECT |
++                                          DRM_CONNECTOR_POLL_DISCONNECT;
++              }
+       } else
+               connector->polled = DRM_CONNECTOR_POLL_HPD;
diff --git a/queue-4.7/drm-amdgpu-support-backlight-control-for-uniphy3.patch b/queue-4.7/drm-amdgpu-support-backlight-control-for-uniphy3.patch
new file mode 100644 (file)
index 0000000..94a9d4a
--- /dev/null
@@ -0,0 +1,28 @@
+From dba6c4fa26ccf47661be5b68dba87e746fa137d8 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Fri, 8 Jul 2016 17:19:59 -0400
+Subject: drm/amdgpu: support backlight control for UNIPHY3
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit dba6c4fa26ccf47661be5b68dba87e746fa137d8 upstream.
+
+Same interface as other UNIPHY blocks
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/amd/amdgpu/atombios_encoders.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
++++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
+@@ -98,6 +98,7 @@ amdgpu_atombios_encoder_set_backlight_le
+               case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
+               case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
+               case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
++              case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3:
+                       if (dig->backlight_level == 0)
+                               amdgpu_atombios_encoder_setup_dig_transmitter(encoder,
+                                                                      ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0);
diff --git a/queue-4.7/drm-radeon-add-a-delay-after-atpx-dgpu-power-off.patch b/queue-4.7/drm-radeon-add-a-delay-after-atpx-dgpu-power-off.patch
new file mode 100644 (file)
index 0000000..a15566e
--- /dev/null
@@ -0,0 +1,46 @@
+From d814b24fb74cb9797d70cb8053961447c5879a5c Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 1 Jun 2016 12:58:36 -0400
+Subject: drm/radeon: add a delay after ATPX dGPU power off
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit d814b24fb74cb9797d70cb8053961447c5879a5c upstream.
+
+ATPX dGPU power control requires a 200ms delay between
+power off and on.  This should fix dGPU failures on
+resume from power off.
+
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Acked-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_atpx_handler.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/radeon_atpx_handler.c
++++ b/drivers/gpu/drm/radeon/radeon_atpx_handler.c
+@@ -10,6 +10,7 @@
+ #include <linux/slab.h>
+ #include <linux/acpi.h>
+ #include <linux/pci.h>
++#include <linux/delay.h>
+ #include "radeon_acpi.h"
+@@ -258,6 +259,10 @@ static int radeon_atpx_set_discrete_stat
+               if (!info)
+                       return -EIO;
+               kfree(info);
++
++              /* 200ms delay is required after off */
++              if (state == 0)
++                      msleep(200);
+       }
+       return 0;
+ }
diff --git a/queue-4.7/drm-radeon-fix-firmware-info-version-checks.patch b/queue-4.7/drm-radeon-fix-firmware-info-version-checks.patch
new file mode 100644 (file)
index 0000000..1ddfd7c
--- /dev/null
@@ -0,0 +1,38 @@
+From 3edc38a0facef45ee22af8afdce3737f421f36ab Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 27 Jul 2016 15:28:56 -0400
+Subject: drm/radeon: fix firmware info version checks
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 3edc38a0facef45ee22af8afdce3737f421f36ab upstream.
+
+Some of the checks didn't handle frev 2 tables properly.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_atombios.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_atombios.c
++++ b/drivers/gpu/drm/radeon/radeon_atombios.c
+@@ -1155,7 +1155,7 @@ bool radeon_atom_get_clock_info(struct d
+                   le16_to_cpu(firmware_info->info.usReferenceClock);
+               p1pll->reference_div = 0;
+-              if (crev < 2)
++              if ((frev < 2) && (crev < 2))
+                       p1pll->pll_out_min =
+                               le16_to_cpu(firmware_info->info.usMinPixelClockPLL_Output);
+               else
+@@ -1164,7 +1164,7 @@ bool radeon_atom_get_clock_info(struct d
+               p1pll->pll_out_max =
+                   le32_to_cpu(firmware_info->info.ulMaxPixelClockPLL_Output);
+-              if (crev >= 4) {
++              if (((frev < 2) && (crev >= 4)) || (frev >= 2)) {
+                       p1pll->lcd_pll_out_min =
+                               le16_to_cpu(firmware_info->info_14.usLcdMinPixelClockPLL_Output) * 100;
+                       if (p1pll->lcd_pll_out_min == 0)
diff --git a/queue-4.7/drm-radeon-poll-for-both-connect-disconnect-on-analog-connectors.patch b/queue-4.7/drm-radeon-poll-for-both-connect-disconnect-on-analog-connectors.patch
new file mode 100644 (file)
index 0000000..3807366
--- /dev/null
@@ -0,0 +1,87 @@
+From 14ff8d48f2235295dfb3117693008e367b49cdb5 Mon Sep 17 00:00:00 2001
+From: Lyude <cpaul@redhat.com>
+Date: Fri, 24 Jun 2016 17:54:31 -0400
+Subject: drm/radeon: Poll for both connect/disconnect on analog connectors
+
+From: Lyude <cpaul@redhat.com>
+
+commit 14ff8d48f2235295dfb3117693008e367b49cdb5 upstream.
+
+DRM_CONNECTOR_POLL_CONNECT only enables polling for connections, not
+disconnections. Because of this, we end up losing hotplug polling for
+analog connectors once they get connected.
+
+Easy way to reproduce:
+ - Grab a machine with a radeon GPU and a VGA port
+ - Plug a monitor into the VGA port, wait for it to update the connector
+   from disconnected to connected
+ - Disconnect the monitor on VGA, a hotplug event is never sent for the
+   removal of the connector.
+
+Originally, only using DRM_CONNECTOR_POLL_CONNECT might have been a good
+idea since doing VGA polling can sometimes result in having to mess with
+the DAC voltages to figure out whether or not there's actually something
+there since VGA doesn't have HPD. Doing this would have the potential of
+showing visible artifacts on the screen every time we ran a poll while a
+VGA display was connected. Luckily, radeon_vga_detect() only resorts to
+this sort of polling if the poll is forced, and DRM's polling helper
+doesn't force it's polls.
+
+Additionally, this removes some assignments to connector->polled that
+weren't actually doing anything.
+
+Signed-off-by: Lyude <cpaul@redhat.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_connectors.c |   15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_connectors.c
++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
+@@ -2064,7 +2064,6 @@ radeon_add_atom_connector(struct drm_dev
+                                                          RADEON_OUTPUT_CSC_BYPASS);
+                       /* no HPD on analog connectors */
+                       radeon_connector->hpd.hpd = RADEON_HPD_NONE;
+-                      connector->polled = DRM_CONNECTOR_POLL_CONNECT;
+                       connector->interlace_allowed = true;
+                       connector->doublescan_allowed = true;
+                       break;
+@@ -2314,8 +2313,10 @@ radeon_add_atom_connector(struct drm_dev
+       }
+       if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) {
+-              if (i2c_bus->valid)
+-                      connector->polled = DRM_CONNECTOR_POLL_CONNECT;
++              if (i2c_bus->valid) {
++                      connector->polled = DRM_CONNECTOR_POLL_CONNECT |
++                                          DRM_CONNECTOR_POLL_DISCONNECT;
++              }
+       } else
+               connector->polled = DRM_CONNECTOR_POLL_HPD;
+@@ -2391,7 +2392,6 @@ radeon_add_legacy_connector(struct drm_d
+                                             1);
+               /* no HPD on analog connectors */
+               radeon_connector->hpd.hpd = RADEON_HPD_NONE;
+-              connector->polled = DRM_CONNECTOR_POLL_CONNECT;
+               connector->interlace_allowed = true;
+               connector->doublescan_allowed = true;
+               break;
+@@ -2476,10 +2476,13 @@ radeon_add_legacy_connector(struct drm_d
+       }
+       if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) {
+-              if (i2c_bus->valid)
+-                      connector->polled = DRM_CONNECTOR_POLL_CONNECT;
++              if (i2c_bus->valid) {
++                      connector->polled = DRM_CONNECTOR_POLL_CONNECT |
++                                          DRM_CONNECTOR_POLL_DISCONNECT;
++              }
+       } else
+               connector->polled = DRM_CONNECTOR_POLL_HPD;
++
+       connector->display_info.subpixel_order = subpixel_order;
+       drm_connector_register(connector);
+ }
diff --git a/queue-4.7/drm-radeon-support-backlight-control-for-uniphy3.patch b/queue-4.7/drm-radeon-support-backlight-control-for-uniphy3.patch
new file mode 100644 (file)
index 0000000..83092dc
--- /dev/null
@@ -0,0 +1,28 @@
+From d3200be6c423afa1c34f7e39e9f6d04dd5b0af9d Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Fri, 8 Jul 2016 17:27:04 -0400
+Subject: drm/radeon: support backlight control for UNIPHY3
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit d3200be6c423afa1c34f7e39e9f6d04dd5b0af9d upstream.
+
+Same interface as other UNIPHY blocks
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/atombios_encoders.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/radeon/atombios_encoders.c
++++ b/drivers/gpu/drm/radeon/atombios_encoders.c
+@@ -120,6 +120,7 @@ atombios_set_backlight_level(struct rade
+               case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
+               case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
+               case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
++              case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3:
+                       if (dig->backlight_level == 0)
+                               atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0);
+                       else {
index 2d2bafa786cf78dc0535c74064cad2512161791c..11b7d2287e18a09dc2189f0a90cb1da8e1a11f53 100644 (file)
@@ -116,3 +116,13 @@ clk-rockchip-fix-incorrect-rk3399-spdif-dptx-divider-bits.patch
 soc-qcom-smp2p-correct-addressing-of-outgoing-value.patch
 netlabel-add-address-family-checks-to-netlbl_-sock-req-_delattr.patch
 w1-omap_hdq-fix-regression.patch
+drm-amdgpu-add-a-delay-after-atpx-dgpu-power-off.patch
+drm-amdgpu-poll-for-both-connect-disconnect-on-analog-connectors.patch
+drm-amdgpu-support-backlight-control-for-uniphy3.patch
+drm-amdgpu-disable-rpm-helpers-while-reprobing-connectors-on-resume.patch
+drm-amdgpu-fix-firmware-info-version-checks.patch
+drm-amdgpu-gmc7-add-missing-mullins-case.patch
+drm-radeon-add-a-delay-after-atpx-dgpu-power-off.patch
+drm-radeon-poll-for-both-connect-disconnect-on-analog-connectors.patch
+drm-radeon-fix-firmware-info-version-checks.patch
+drm-radeon-support-backlight-control-for-uniphy3.patch