--- /dev/null
+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"
+
+@@ -256,6 +257,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;
+ }
--- /dev/null
+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
+@@ -1128,7 +1128,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
+@@ -1137,7 +1137,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)
--- /dev/null
+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
+@@ -1769,7 +1769,6 @@ radeon_add_atom_connector(struct drm_dev
+ 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;
+@@ -1998,8 +1997,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;
+
+@@ -2071,7 +2072,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;
+@@ -2156,10 +2156,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_sysfs_connector_add(connector);
+ }
--- /dev/null
+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
+@@ -119,6 +119,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 {
udp-properly-support-msg_peek-with-truncated-buffers.patch
arm-8579-1-mm-fix-definition-of-pmd_mknotpresent.patch
netlabel-add-address-family-checks-to-netlbl_-sock-req-_delattr.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