mirror of
https://github.com/torvalds/linux.git
synced 2026-05-10 09:09:50 -04:00
i2c: i801: Restore configuration at shutdown
commit f7f6d915a1 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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
44ff2389a8
commit
fd5cc02cbe
@@ -1700,6 +1700,15 @@ static void i801_remove(struct pci_dev *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)
|
||||
{
|
||||
@@ -1729,6 +1738,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,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user