]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.1 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Nov 2011 16:59:29 +0000 (08:59 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Nov 2011 16:59:29 +0000 (08:59 -0800)
added patches:
cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch
drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch
drm-radeon-kms-add-msi-module-parameter.patch
drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch
drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch
drm-radeon-kms-properly-set-panel-mode-for-edp.patch
drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch
drm-radeon-kms-split-msi-check-into-a-separate-function.patch
drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch
hwmon-coretemp-fix-for-non-smp-builds.patch
hwmon-w83627ehf-fix-broken-driver-init.patch
hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch
kbuild-fix-help-text-not-displayed-in-choice-option.patch
usb-update-last_busy-time-after-autosuspend-fails.patch

15 files changed:
queue-3.1/cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch [new file with mode: 0644]
queue-3.1/drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch [new file with mode: 0644]
queue-3.1/drm-radeon-kms-add-msi-module-parameter.patch [new file with mode: 0644]
queue-3.1/drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch [new file with mode: 0644]
queue-3.1/drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch [new file with mode: 0644]
queue-3.1/drm-radeon-kms-properly-set-panel-mode-for-edp.patch [new file with mode: 0644]
queue-3.1/drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch [new file with mode: 0644]
queue-3.1/drm-radeon-kms-split-msi-check-into-a-separate-function.patch [new file with mode: 0644]
queue-3.1/drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch [new file with mode: 0644]
queue-3.1/hwmon-coretemp-fix-for-non-smp-builds.patch [new file with mode: 0644]
queue-3.1/hwmon-w83627ehf-fix-broken-driver-init.patch [new file with mode: 0644]
queue-3.1/hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch [new file with mode: 0644]
queue-3.1/kbuild-fix-help-text-not-displayed-in-choice-option.patch [new file with mode: 0644]
queue-3.1/series
queue-3.1/usb-update-last_busy-time-after-autosuspend-fails.patch [new file with mode: 0644]

diff --git a/queue-3.1/cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch b/queue-3.1/cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch
new file mode 100644 (file)
index 0000000..b0e0271
--- /dev/null
@@ -0,0 +1,36 @@
+From ab5dbebe33e0c353e8545f09c34553ac3351dad6 Mon Sep 17 00:00:00 2001
+From: Mike Miller <mike.miller@hp.com>
+Date: Thu, 20 Oct 2011 22:19:17 +0200
+Subject: cciss: add small delay when using PCI Power Management to reset for kump
+
+From: Mike Miller <mike.miller@hp.com>
+
+commit ab5dbebe33e0c353e8545f09c34553ac3351dad6 upstream.
+
+The P600 requires a small delay when changing states. Otherwise we may think
+the board did not reset and we bail. This for kdump only and is particular
+to the P600.
+
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/block/cciss.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/block/cciss.c
++++ b/drivers/block/cciss.c
+@@ -4533,6 +4533,13 @@ static int cciss_controller_hard_reset(s
+               pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
+               pmcsr |= PCI_D0;
+               pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr);
++
++              /*
++               * The P600 requires a small delay when changing states.
++               * Otherwise we may think the board did not reset and we bail.
++               * This for kdump only and is particular to the P600.
++               */
++              msleep(500);
+       }
+       return 0;
+ }
diff --git a/queue-3.1/drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch b/queue-3.1/drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch
new file mode 100644 (file)
index 0000000..005c2b1
--- /dev/null
@@ -0,0 +1,49 @@
+From 340764465aa4a586ca332e61ae64883e5ad6f183 Mon Sep 17 00:00:00 2001
+From: Jerome Glisse <jglisse@redhat.com>
+Date: Mon, 24 Oct 2011 18:16:34 -0400
+Subject: drm/radeon: avoid bouncing connector status btw disconnected & unknown
+
+From: Jerome Glisse <jglisse@redhat.com>
+
+commit 340764465aa4a586ca332e61ae64883e5ad6f183 upstream.
+
+Since force handling rework of d0d0a225e6ad43314c9aa7ea081f76adc5098ad4
+we could end up bouncing connector status btw disconnected and unknown.
+When connector status change a call to output_poll_changed happen which
+in turn ask again for detect but with force set.
+
+So set the load detect flags whenever we report the connector as
+connected or unknown this avoid bouncing btw disconnected and unknown.
+
+Signed-off-by: Jerome Glisse <jglisse@redhat.com>
+Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Cc: Stefan Lippers-Hollmann <s.L-H@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_connectors.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_connectors.c
++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
+@@ -764,7 +764,7 @@ radeon_vga_detect(struct drm_connector *
+               if (radeon_connector->dac_load_detect && encoder) {
+                       encoder_funcs = encoder->helper_private;
+                       ret = encoder_funcs->detect(encoder, connector);
+-                      if (ret == connector_status_connected)
++                      if (ret != connector_status_disconnected)
+                               radeon_connector->detected_by_load = true;
+               }
+       }
+@@ -1005,8 +1005,9 @@ radeon_dvi_detect(struct drm_connector *
+                                       ret = encoder_funcs->detect(encoder, connector);
+                                       if (ret == connector_status_connected) {
+                                               radeon_connector->use_digital = false;
+-                                              radeon_connector->detected_by_load = true;
+                                       }
++                                      if (ret != connector_status_disconnected)
++                                              radeon_connector->detected_by_load = true;
+                               }
+                               break;
+                       }
diff --git a/queue-3.1/drm-radeon-kms-add-msi-module-parameter.patch b/queue-3.1/drm-radeon-kms-add-msi-module-parameter.patch
new file mode 100644 (file)
index 0000000..61f4274
--- /dev/null
@@ -0,0 +1,76 @@
+From a18cee15ed4c8b6a35f96b7b26a46bac32e04bd9 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 1 Nov 2011 14:20:30 -0400
+Subject: drm/radeon/kms: add MSI module parameter
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit a18cee15ed4c8b6a35f96b7b26a46bac32e04bd9 upstream.
+
+Allow the user to override whether MSIs are enabled
+or not on supported ASICs.  MSIs are disabled by default
+on IGP chips as they tend not to work.  However certain
+IGP chips only seem to work with MSIs enabled.
+
+I suspect this is a chipset or bios issue, but I'm not sure
+what the proper fix is.  This will at least make diagnosing
+and working around the problem much easier.
+
+See:
+https://bugs.freedesktop.org/show_bug.cgi?id=37679
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon.h         |    1 +
+ drivers/gpu/drm/radeon/radeon_drv.c     |    4 ++++
+ drivers/gpu/drm/radeon/radeon_irq_kms.c |    6 ++++++
+ 3 files changed, 11 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/radeon.h
++++ b/drivers/gpu/drm/radeon/radeon.h
+@@ -93,6 +93,7 @@ extern int radeon_audio;
+ extern int radeon_disp_priority;
+ extern int radeon_hw_i2c;
+ extern int radeon_pcie_gen2;
++extern int radeon_msi;
+ /*
+  * Copy from radeon_drv.h so we don't have to include both and have conflicting
+--- a/drivers/gpu/drm/radeon/radeon_drv.c
++++ b/drivers/gpu/drm/radeon/radeon_drv.c
+@@ -118,6 +118,7 @@ int radeon_audio = 0;
+ int radeon_disp_priority = 0;
+ int radeon_hw_i2c = 0;
+ int radeon_pcie_gen2 = 0;
++int radeon_msi = -1;
+ MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers");
+ module_param_named(no_wb, radeon_no_wb, int, 0444);
+@@ -164,6 +165,9 @@ module_param_named(hw_i2c, radeon_hw_i2c
+ MODULE_PARM_DESC(pcie_gen2, "PCIE Gen2 mode (1 = enable)");
+ module_param_named(pcie_gen2, radeon_pcie_gen2, int, 0444);
++MODULE_PARM_DESC(msi, "MSI support (1 = enable, 0 = disable, -1 = auto)");
++module_param_named(msi, radeon_msi, int, 0444);
++
+ static int radeon_suspend(struct drm_device *dev, pm_message_t state)
+ {
+       drm_radeon_private_t *dev_priv = dev->dev_private;
+--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+@@ -118,6 +118,12 @@ static bool radeon_msi_ok(struct radeon_
+       if (rdev->flags & RADEON_IS_AGP)
+               return false;
++      /* force MSI on */
++      if (radeon_msi == 1)
++              return true;
++      else if (radeon_msi == 0)
++              return false;
++
+       /* Quirks */
+       /* HP RS690 only seems to work with MSIs. */
+       if ((rdev->pdev->device == 0x791f) &&
diff --git a/queue-3.1/drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch b/queue-3.1/drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch
new file mode 100644 (file)
index 0000000..95a259f
--- /dev/null
@@ -0,0 +1,38 @@
+From 01e718ec194e30b3e8eb3858c742c13649757efc Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 1 Nov 2011 14:14:18 -0400
+Subject: drm/radeon/kms: Add MSI quirk for Dell RS690
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 01e718ec194e30b3e8eb3858c742c13649757efc upstream.
+
+Some Dell laptops only seem to work with MSIs.  This
+looks like a platform/bios bug.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=37679
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_irq_kms.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+@@ -125,6 +125,12 @@ static bool radeon_msi_ok(struct radeon_
+           (rdev->pdev->subsystem_device == 0x30c2))
+               return true;
++      /* Dell RS690 only seems to work with MSIs. */
++      if ((rdev->pdev->device == 0x791f) &&
++          (rdev->pdev->subsystem_vendor == 0x1028) &&
++          (rdev->pdev->subsystem_device == 0x01fd))
++              return true;
++
+       if (rdev->flags & RADEON_IS_IGP) {
+               /* APUs work fine with MSIs */
+               if (rdev->family >= CHIP_PALM)
diff --git a/queue-3.1/drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch b/queue-3.1/drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch
new file mode 100644 (file)
index 0000000..f30850e
--- /dev/null
@@ -0,0 +1,39 @@
+From b362105f7f5223fa4d2e03ceeea0e51da754ccc6 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 25 Oct 2011 15:11:08 -0400
+Subject: drm/radeon/kms: Add MSI quirk for HP RS690
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit b362105f7f5223fa4d2e03ceeea0e51da754ccc6 upstream.
+
+Some HP laptops only seem to work with MSIs.  This
+looks like a platform/bios bug.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=37679
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_irq_kms.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+@@ -118,6 +118,13 @@ static bool radeon_msi_ok(struct radeon_
+       if (rdev->flags & RADEON_IS_AGP)
+               return false;
++      /* Quirks */
++      /* HP RS690 only seems to work with MSIs. */
++      if ((rdev->pdev->device == 0x791f) &&
++          (rdev->pdev->subsystem_vendor == 0x103c) &&
++          (rdev->pdev->subsystem_device == 0x30c2))
++              return true;
++
+       if (rdev->flags & RADEON_IS_IGP) {
+               /* APUs work fine with MSIs */
+               if (rdev->family >= CHIP_PALM)
diff --git a/queue-3.1/drm-radeon-kms-properly-set-panel-mode-for-edp.patch b/queue-3.1/drm-radeon-kms-properly-set-panel-mode-for-edp.patch
new file mode 100644 (file)
index 0000000..4b06800
--- /dev/null
@@ -0,0 +1,70 @@
+From 00dfb8df5bf8c3afe4c0bb8361133156b06b7a2c Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Mon, 31 Oct 2011 08:54:41 -0400
+Subject: drm/radeon/kms: properly set panel mode for eDP
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 00dfb8df5bf8c3afe4c0bb8361133156b06b7a2c upstream.
+
+This should make eDP more reliable.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/atombios_dp.c |   11 +++++++++++
+ include/drm/drm_dp_helper.h          |    3 +++
+ 2 files changed, 14 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/atombios_dp.c
++++ b/drivers/gpu/drm/radeon/atombios_dp.c
+@@ -553,6 +553,7 @@ static void radeon_dp_set_panel_mode(str
+ {
+       struct drm_device *dev = encoder->dev;
+       struct radeon_device *rdev = dev->dev_private;
++      struct radeon_connector *radeon_connector = to_radeon_connector(connector);
+       int panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
+       if (!ASIC_IS_DCE4(rdev))
+@@ -560,10 +561,20 @@ static void radeon_dp_set_panel_mode(str
+       if (radeon_connector_encoder_is_dp_bridge(connector))
+               panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
++      else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
++              u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP);
++              if (tmp & 1)
++                      panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
++      }
+       atombios_dig_encoder_setup(encoder,
+                                  ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
+                                  panel_mode);
++
++      if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) &&
++          (panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) {
++              radeon_write_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_SET, 1);
++      }
+ }
+ void radeon_dp_set_link_config(struct drm_connector *connector,
+--- a/include/drm/drm_dp_helper.h
++++ b/include/drm/drm_dp_helper.h
+@@ -72,6 +72,7 @@
+ #define DP_MAIN_LINK_CHANNEL_CODING         0x006
++#define DP_EDP_CONFIGURATION_CAP            0x00d
+ #define DP_TRAINING_AUX_RD_INTERVAL         0x00e
+ /* link configuration */
+@@ -133,6 +134,8 @@
+ #define DP_MAIN_LINK_CHANNEL_CODING_SET           0x108
+ # define DP_SET_ANSI_8B10B                (1 << 0)
++#define DP_EDP_CONFIGURATION_SET            0x10a
++
+ #define DP_LANE0_1_STATUS                 0x202
+ #define DP_LANE2_3_STATUS                 0x203
+ # define DP_LANE_CR_DONE                  (1 << 0)
diff --git a/queue-3.1/drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch b/queue-3.1/drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch
new file mode 100644 (file)
index 0000000..4ee16ed
--- /dev/null
@@ -0,0 +1,110 @@
+From 64912e997f0fe13512e4c7b90e4f7c11cb922ab5 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 3 Nov 2011 11:21:39 -0400
+Subject: drm/radeon/kms: set HPD polarity in hpd_init()
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 64912e997f0fe13512e4c7b90e4f7c11cb922ab5 upstream.
+
+Polarity needs to be set accordingly to connector status (connected
+or disconnected). Set it up in hpd_init() so first hotplug works
+reliably no matter what is the initial set of connector. hpd_init()
+also covers resume so HPD will work correctly after resume as well.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: Jerome Glisse <j.glisse@gmail.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/evergreen.c         |    1 +
+ drivers/gpu/drm/radeon/r100.c              |    1 +
+ drivers/gpu/drm/radeon/r600.c              |   19 +++++++++----------
+ drivers/gpu/drm/radeon/radeon_connectors.c |    1 -
+ drivers/gpu/drm/radeon/rs600.c             |    1 +
+ 5 files changed, 12 insertions(+), 11 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/evergreen.c
++++ b/drivers/gpu/drm/radeon/evergreen.c
+@@ -353,6 +353,7 @@ void evergreen_hpd_init(struct radeon_de
+               default:
+                       break;
+               }
++              radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
+       }
+       if (rdev->irq.installed)
+               evergreen_irq_set(rdev);
+--- a/drivers/gpu/drm/radeon/r100.c
++++ b/drivers/gpu/drm/radeon/r100.c
+@@ -434,6 +434,7 @@ void r100_hpd_init(struct radeon_device
+               default:
+                       break;
+               }
++              radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
+       }
+       if (rdev->irq.installed)
+               r100_irq_set(rdev);
+--- a/drivers/gpu/drm/radeon/r600.c
++++ b/drivers/gpu/drm/radeon/r600.c
+@@ -762,13 +762,14 @@ void r600_hpd_init(struct radeon_device
+       struct drm_device *dev = rdev->ddev;
+       struct drm_connector *connector;
+-      if (ASIC_IS_DCE3(rdev)) {
+-              u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | DC_HPDx_RX_INT_TIMER(0xfa);
+-              if (ASIC_IS_DCE32(rdev))
+-                      tmp |= DC_HPDx_EN;
++      list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
++              struct radeon_connector *radeon_connector = to_radeon_connector(connector);
++
++              if (ASIC_IS_DCE3(rdev)) {
++                      u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | DC_HPDx_RX_INT_TIMER(0xfa);
++                      if (ASIC_IS_DCE32(rdev))
++                              tmp |= DC_HPDx_EN;
+-              list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+-                      struct radeon_connector *radeon_connector = to_radeon_connector(connector);
+                       switch (radeon_connector->hpd.hpd) {
+                       case RADEON_HPD_1:
+                               WREG32(DC_HPD1_CONTROL, tmp);
+@@ -798,10 +799,7 @@ void r600_hpd_init(struct radeon_device
+                       default:
+                               break;
+                       }
+-              }
+-      } else {
+-              list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+-                      struct radeon_connector *radeon_connector = to_radeon_connector(connector);
++              } else {
+                       switch (radeon_connector->hpd.hpd) {
+                       case RADEON_HPD_1:
+                               WREG32(DC_HOT_PLUG_DETECT1_CONTROL, DC_HOT_PLUG_DETECTx_EN);
+@@ -819,6 +817,7 @@ void r600_hpd_init(struct radeon_device
+                               break;
+                       }
+               }
++              radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
+       }
+       if (rdev->irq.installed)
+               r600_irq_set(rdev);
+--- a/drivers/gpu/drm/radeon/radeon_connectors.c
++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
+@@ -1790,7 +1790,6 @@ radeon_add_atom_connector(struct drm_dev
+                       connector->polled = DRM_CONNECTOR_POLL_CONNECT;
+       } else
+               connector->polled = DRM_CONNECTOR_POLL_HPD;
+-      radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
+       connector->display_info.subpixel_order = subpixel_order;
+       drm_sysfs_connector_add(connector);
+--- a/drivers/gpu/drm/radeon/rs600.c
++++ b/drivers/gpu/drm/radeon/rs600.c
+@@ -287,6 +287,7 @@ void rs600_hpd_init(struct radeon_device
+               default:
+                       break;
+               }
++              radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
+       }
+       if (rdev->irq.installed)
+               rs600_irq_set(rdev);
diff --git a/queue-3.1/drm-radeon-kms-split-msi-check-into-a-separate-function.patch b/queue-3.1/drm-radeon-kms-split-msi-check-into-a-separate-function.patch
new file mode 100644 (file)
index 0000000..f26411d
--- /dev/null
@@ -0,0 +1,64 @@
+From 8f6c25c59b0c895c68cae59d1b34e9a7b36971bc Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 25 Oct 2011 14:58:49 -0400
+Subject: drm/radeon/kms: split MSI check into a separate function
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 8f6c25c59b0c895c68cae59d1b34e9a7b36971bc upstream.
+
+This makes it easier to add quirks for certain systems.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_irq_kms.c |   29 +++++++++++++++++++++++------
+ 1 file changed, 23 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+@@ -108,6 +108,27 @@ void radeon_driver_irq_uninstall_kms(str
+       radeon_irq_set(rdev);
+ }
++static bool radeon_msi_ok(struct radeon_device *rdev)
++{
++      /* RV370/RV380 was first asic with MSI support */
++      if (rdev->family < CHIP_RV380)
++              return false;
++
++      /* MSIs don't work on AGP */
++      if (rdev->flags & RADEON_IS_AGP)
++              return false;
++
++      if (rdev->flags & RADEON_IS_IGP) {
++              /* APUs work fine with MSIs */
++              if (rdev->family >= CHIP_PALM)
++                      return true;
++              /* lots of IGPs have problems with MSIs */
++              return false;
++      }
++
++      return true;
++}
++
+ int radeon_irq_kms_init(struct radeon_device *rdev)
+ {
+       int i;
+@@ -124,12 +145,8 @@ int radeon_irq_kms_init(struct radeon_de
+       }
+       /* enable msi */
+       rdev->msi_enabled = 0;
+-      /* MSIs don't seem to work reliably on all IGP
+-       * chips.  Disable MSI on them for now.
+-       */
+-      if ((rdev->family >= CHIP_RV380) &&
+-          ((!(rdev->flags & RADEON_IS_IGP)) || (rdev->family >= CHIP_PALM)) &&
+-          (!(rdev->flags & RADEON_IS_AGP))) {
++
++      if (radeon_msi_ok(rdev)) {
+               int ret = pci_enable_msi(rdev->pdev);
+               if (!ret) {
+                       rdev->msi_enabled = 1;
diff --git a/queue-3.1/drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch b/queue-3.1/drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch
new file mode 100644 (file)
index 0000000..3e051fa
--- /dev/null
@@ -0,0 +1,31 @@
+From 8ab250d4484b72ccc78e34276c5ffa84c1d41303 Mon Sep 17 00:00:00 2001
+From: Jerome Glisse <jglisse@redhat.com>
+Date: Fri, 28 Oct 2011 17:52:34 -0400
+Subject: drm/radeon: set hpd polarity at init time so hotplug detect works
+
+From: Jerome Glisse <jglisse@redhat.com>
+
+commit 8ab250d4484b72ccc78e34276c5ffa84c1d41303 upstream.
+
+Polarity needs to be set accordingly to connector status (connected
+or disconnected). Set it up at module init so first hotplug works
+reliably no matter what is the initial set of connector.
+
+Signed-off-by: Jerome Glisse <jglisse@redhat.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_connectors.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/radeon/radeon_connectors.c
++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
+@@ -1790,6 +1790,7 @@ radeon_add_atom_connector(struct drm_dev
+                       connector->polled = DRM_CONNECTOR_POLL_CONNECT;
+       } else
+               connector->polled = DRM_CONNECTOR_POLL_HPD;
++      radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
+       connector->display_info.subpixel_order = subpixel_order;
+       drm_sysfs_connector_add(connector);
diff --git a/queue-3.1/hwmon-coretemp-fix-for-non-smp-builds.patch b/queue-3.1/hwmon-coretemp-fix-for-non-smp-builds.patch
new file mode 100644 (file)
index 0000000..5c4fd2e
--- /dev/null
@@ -0,0 +1,44 @@
+From 2aba6cac2a84f3b80e11a680c34d55e7739b474d Mon Sep 17 00:00:00 2001
+From: Jean Delvare <khali@linux-fr.org>
+Date: Sun, 6 Nov 2011 20:25:18 +0100
+Subject: hwmon: (coretemp) Fix for non-SMP builds
+
+From: Jean Delvare <khali@linux-fr.org>
+
+commit 2aba6cac2a84f3b80e11a680c34d55e7739b474d upstream.
+
+The definition of TO_ATTR_NO in the non-SMP case is wrong. As the SMP
+definition resolves to the correct value, just use this for both
+cases.
+
+Without this fix the temperature attributes are named temp0_* instead
+of temp2_*, so libsensors won't pick them. Broken since kernel 3.0.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Tested-by: Phil Sutter <phil@nwl.cc>
+Acked-by: Durgadoss R <Durgadoss.r@intel.com>
+Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/coretemp.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/hwmon/coretemp.c
++++ b/drivers/hwmon/coretemp.c
+@@ -60,14 +60,13 @@ MODULE_PARM_DESC(tjmax, "TjMax value in
+ #ifdef CONFIG_SMP
+ #define TO_PHYS_ID(cpu)               cpu_data(cpu).phys_proc_id
+ #define TO_CORE_ID(cpu)               cpu_data(cpu).cpu_core_id
+-#define TO_ATTR_NO(cpu)               (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO)
+ #define for_each_sibling(i, cpu)      for_each_cpu(i, cpu_sibling_mask(cpu))
+ #else
+ #define TO_PHYS_ID(cpu)               (cpu)
+ #define TO_CORE_ID(cpu)               (cpu)
+-#define TO_ATTR_NO(cpu)               (cpu)
+ #define for_each_sibling(i, cpu)      for (i = 0; false; )
+ #endif
++#define TO_ATTR_NO(cpu)               (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO)
+ /*
+  * Per-Core Temperature Data
diff --git a/queue-3.1/hwmon-w83627ehf-fix-broken-driver-init.patch b/queue-3.1/hwmon-w83627ehf-fix-broken-driver-init.patch
new file mode 100644 (file)
index 0000000..d42f7aa
--- /dev/null
@@ -0,0 +1,49 @@
+From bfa02b0da66965caf46e441270af87edda4fea14 Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <guenter.roeck@ericsson.com>
+Date: Sun, 6 Nov 2011 20:25:18 +0100
+Subject: hwmon: (w83627ehf) Fix broken driver init
+
+From: Guenter Roeck <guenter.roeck@ericsson.com>
+
+commit bfa02b0da66965caf46e441270af87edda4fea14 upstream.
+
+Commit 2265cef2 (hwmon: (w83627ehf) Properly report PECI and AMD-SI
+sensor types) results in kernel panic if data->temp_label was not
+initialized.
+The problem was found with chip W83627DHG-P.
+
+Add check if data->temp->label was set before use.
+
+Based on incomplete patch by Alexander Beregalov.
+
+Reported-by: Alexander Beregalov <a.beregalov@gmail.com>
+Tested-by: Alexander Beregalov <a.beregalov@gmail.com>
+Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/w83627ehf.c |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/drivers/hwmon/w83627ehf.c
++++ b/drivers/hwmon/w83627ehf.c
+@@ -1756,12 +1756,15 @@ static inline void __devinit w83627ehf_i
+               diode = 0x70;
+       }
+       for (i = 0; i < 3; i++) {
+-              const char *label = data->temp_label[data->temp_src[i]];
++              const char *label = NULL;
++
++              if (data->temp_label)
++                      label = data->temp_label[data->temp_src[i]];
+               /* Digital source overrides analog type */
+-              if (strncmp(label, "PECI", 4) == 0)
++              if (label && strncmp(label, "PECI", 4) == 0)
+                       data->temp_type[i] = 6;
+-              else if (strncmp(label, "AMD", 3) == 0)
++              else if (label && strncmp(label, "AMD", 3) == 0)
+                       data->temp_type[i] = 5;
+               else if ((tmp & (0x02 << i)))
+                       data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3;
diff --git a/queue-3.1/hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch b/queue-3.1/hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch
new file mode 100644 (file)
index 0000000..f37c861
--- /dev/null
@@ -0,0 +1,39 @@
+From 2265cef2751b3441df91f85e0107f9f549e5b711 Mon Sep 17 00:00:00 2001
+From: Jean Delvare <khali@linux-fr.org>
+Date: Fri, 4 Nov 2011 12:00:47 +0100
+Subject: hwmon: (w83627ehf) Properly report PECI and AMD-SI sensor types
+
+From: Jean Delvare <khali@linux-fr.org>
+
+commit 2265cef2751b3441df91f85e0107f9f549e5b711 upstream.
+
+When temperature sources are PECI or AMD-SI agents, it makes no sense
+to report their type as diode or thermistor. Instead we must report
+their digital nature.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/w83627ehf.c |    9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/hwmon/w83627ehf.c
++++ b/drivers/hwmon/w83627ehf.c
+@@ -1756,7 +1756,14 @@ static inline void __devinit w83627ehf_i
+               diode = 0x70;
+       }
+       for (i = 0; i < 3; i++) {
+-              if ((tmp & (0x02 << i)))
++              const char *label = data->temp_label[data->temp_src[i]];
++
++              /* Digital source overrides analog type */
++              if (strncmp(label, "PECI", 4) == 0)
++                      data->temp_type[i] = 6;
++              else if (strncmp(label, "AMD", 3) == 0)
++                      data->temp_type[i] = 5;
++              else if ((tmp & (0x02 << i)))
+                       data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3;
+               else
+                       data->temp_type[i] = 4; /* thermistor */
diff --git a/queue-3.1/kbuild-fix-help-text-not-displayed-in-choice-option.patch b/queue-3.1/kbuild-fix-help-text-not-displayed-in-choice-option.patch
new file mode 100644 (file)
index 0000000..1cfb94f
--- /dev/null
@@ -0,0 +1,60 @@
+From 3f198dfee49d2e9c30583c62b0c79286c78c7b44 Mon Sep 17 00:00:00 2001
+From: Srinivas Kandagatla <srinivas.kandagatla@st.com>
+Date: Tue, 2 Aug 2011 18:49:52 +0100
+Subject: kbuild: Fix help text not displayed in choice option.
+
+From: Srinivas Kandagatla <srinivas.kandagatla@st.com>
+
+commit 3f198dfee49d2e9c30583c62b0c79286c78c7b44 upstream.
+
+Help text under choice menu is never displayed because it does not have
+symbol name associated with it, however many kconfigs have help text
+under choice, assuming that it will be displayed when user selects help.
+for example in Kconfig if we have:
+choice
+        prompt "Choice"
+        ---help---
+           HELP TEXT ...
+
+config A
+        bool "A"
+
+config B
+        bool "B"
+
+endchoice
+
+Without this patch "HELP TEXT" is not displayed when user selects help
+option when "Choice" is highlighted from menuconfig or xconfig or
+gconfig.
+
+This patch changes the logic in menu_get_ext_help to display help for
+cases which dont have symbol names like choice.
+
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com>
+Reviewed-by: Stuart Menefy <stuart.menefy@st.com>
+Reviewed-by: Arnaud Lacombe <lacombar@gmail.com>
+Signed-off-by: Michal Marek <mmarek@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ scripts/kconfig/menu.c |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/scripts/kconfig/menu.c
++++ b/scripts/kconfig/menu.c
+@@ -597,11 +597,10 @@ void menu_get_ext_help(struct menu *menu
+       struct symbol *sym = menu->sym;
+       if (menu_has_help(menu)) {
+-              if (sym->name) {
++              if (sym->name)
+                       str_printf(help, "%s%s:\n\n", CONFIG_, sym->name);
+-                      str_append(help, _(menu_get_help(menu)));
+-                      str_append(help, "\n");
+-              }
++              str_append(help, _(menu_get_help(menu)));
++              str_append(help, "\n");
+       } else {
+               str_append(help, nohelp_text);
+       }
index 06010f3e4176c01464fefd4fab9aa95f5f754acb..67c45bb741df7ff4a97e749b1f8b3a59b37360cd 100644 (file)
@@ -193,3 +193,17 @@ alsa-hda-realtek-don-t-create-alt-stream-for-capture-when-unnecessary.patch
 alsa-hda-realtek-skip-invalid-digital-out-pins.patch
 alsa-hda-fix-silent-output-regression-with-alc861.patch
 alsa-hda-fix-a-regression-for-dma-position-check-with-ca0110.patch
+drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch
+drm-radeon-kms-split-msi-check-into-a-separate-function.patch
+drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch
+drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch
+drm-radeon-kms-properly-set-panel-mode-for-edp.patch
+drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch
+drm-radeon-kms-add-msi-module-parameter.patch
+drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch
+kbuild-fix-help-text-not-displayed-in-choice-option.patch
+usb-update-last_busy-time-after-autosuspend-fails.patch
+cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch
+hwmon-coretemp-fix-for-non-smp-builds.patch
+hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch
+hwmon-w83627ehf-fix-broken-driver-init.patch
diff --git a/queue-3.1/usb-update-last_busy-time-after-autosuspend-fails.patch b/queue-3.1/usb-update-last_busy-time-after-autosuspend-fails.patch
new file mode 100644 (file)
index 0000000..a0ab04a
--- /dev/null
@@ -0,0 +1,50 @@
+From b2c0a863e14676fa5760c6d828fd373288e2f64a Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Fri, 4 Nov 2011 00:52:46 +0100
+Subject: USB: Update last_busy time after autosuspend fails
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit b2c0a863e14676fa5760c6d828fd373288e2f64a upstream.
+
+Originally, the runtime PM core would send an idle notification
+whenever a suspend attempt failed.  The idle callback routine could
+then schedule a delayed suspend for some time later.
+
+However this behavior was changed by commit
+f71648d73c1650b8b4aceb3856bebbde6daa3b86 (PM / Runtime: Remove idle
+notification after failing suspend).  No notifications were sent, and
+there was no clear mechanism to retry failed suspends.
+
+This caused problems for the usbhid driver, because it fails
+autosuspend attempts as long as a key is being held down.  A companion
+patch changes the PM core's behavior, but we also need to change the
+USB core.  In particular, this patch (as1493) updates the device's
+last_busy time when an autosuspend fails, so that the PM core will
+retry the autosuspend in the future when the delay time expires
+again.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Tested-by: Henrik Rydberg <rydberg@euromail.se>
+Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
+Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/driver.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/core/driver.c
++++ b/drivers/usb/core/driver.c
+@@ -1668,6 +1668,11 @@ int usb_runtime_suspend(struct device *d
+               return -EAGAIN;
+       status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND);
++
++      /* Allow a retry if autosuspend failed temporarily */
++      if (status == -EAGAIN || status == -EBUSY)
++              usb_mark_last_busy(udev);
++
+       /* The PM core reacts badly unless the return code is 0,
+        * -EAGAIN, or -EBUSY, so always return -EBUSY on an error.
+        */