+++ /dev/null
-From f7f6d915a10f7f2bce17e3b1b7d3376562395a28 Mon Sep 17 00:00:00 2001
-From: Jean Delvare <jdelvare@suse.de>
-Date: Wed, 11 Apr 2018 18:05:34 +0200
-Subject: i2c: i801: Restore configuration at shutdown
-
-From: Jean Delvare <jdelvare@suse.de>
-
-commit f7f6d915a10f7f2bce17e3b1b7d3376562395a28 upstream.
-
-On some systems, the BIOS expects certain SMBus register values to
-match the hardware defaults. Restore these configuration registers at
-shutdown time to avoid confusing the BIOS. This avoids hard-locking
-such systems upon reboot.
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
-Tested-by: Jason Andryuk <jandryuk@gmail.com>
-Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
-Cc: stable@vger.kernel.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/i2c/busses/i2c-i801.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
---- a/drivers/i2c/busses/i2c-i801.c
-+++ b/drivers/i2c/busses/i2c-i801.c
-@@ -1679,6 +1679,15 @@ static void i801_remove(struct pci_dev *
- */
- }
-
-+static void i801_shutdown(struct pci_dev *dev)
-+{
-+ struct i801_priv *priv = pci_get_drvdata(dev);
-+
-+ /* Restore config registers to avoid hard hang on some systems */
-+ i801_disable_host_notify(priv);
-+ pci_write_config_byte(dev, SMBHSTCFG, priv->original_hstcfg);
-+}
-+
- #ifdef CONFIG_PM
- static int i801_suspend(struct device *dev)
- {
-@@ -1711,6 +1720,7 @@ static struct pci_driver i801_driver = {
- .id_table = i801_ids,
- .probe = i801_probe,
- .remove = i801_remove,
-+ .shutdown = i801_shutdown,
- .driver = {
- .pm = &i801_pm_ops,
- },