Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 58246
b: refs/heads/master
c: 95069f8
h: refs/heads/master
v: v3
  • Loading branch information
Andres Salomon authored and Linus Torvalds committed Jul 6, 2007
1 parent 3a665b7 commit a55040f
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1feb17e286339382a1ae36e0fecc4d88c2d7f123
refs/heads/master: 95069f89e80bb49ecc1b135bf85747e8dc6681f9
4 changes: 2 additions & 2 deletions trunk/arch/i386/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -441,8 +441,8 @@ config X86_REBOOTFIXUPS
this config is intended, is when reboot ends with a stalled/hung
system.

Currently, the only fixup is for the Geode GX1/CS5530A/TROM2.1.
combination.
Currently, the only fixup is for the Geode machines using
CS5530A and CS5536 chipsets.

Say Y if you want to enable the fixup. Currently, it's safe to
enable this option even if you don't need it.
Expand Down
13 changes: 13 additions & 0 deletions trunk/arch/i386/kernel/reboot_fixups.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
*
* List of supported fixups:
* geode-gx1/cs5530a - Jaya Kumar <jayalk@intworks.biz>
* geode-gx/lx/cs5536 - Andres Salomon <dilinger@debian.org>
*
*/

#include <asm/delay.h>
#include <linux/pci.h>
#include <asm/reboot_fixups.h>
#include <asm/msr.h>

static void cs5530a_warm_reset(struct pci_dev *dev)
{
Expand All @@ -21,6 +23,16 @@ static void cs5530a_warm_reset(struct pci_dev *dev)
return;
}

static void cs5536_warm_reset(struct pci_dev *dev)
{
/*
* 6.6.2.12 Soft Reset (DIVIL_SOFT_RESET)
* writing 1 to the LSB of this MSR causes a hard reset.
*/
wrmsrl(0x51400017, 1ULL);
udelay(50); /* shouldn't get here but be safe and spin a while */
}

struct device_fixup {
unsigned int vendor;
unsigned int device;
Expand All @@ -29,6 +41,7 @@ struct device_fixup {

static struct device_fixup fixups_table[] = {
{ PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset },
{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset },
};

/*
Expand Down

0 comments on commit a55040f

Please sign in to comment.