diff options
| author | Dirk Brandewie <dirk.brandewie@gmail.com> | 2010-11-09 15:08:08 -0500 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2010-11-11 18:45:41 -0500 |
| commit | 37bc9f5078c62bfa73edeb0053edceb3ed5e46a4 (patch) | |
| tree | 7699bd2fa900fe2a79903c1151287a97a708db30 | |
| parent | 91d8037f563e4a86ff8b02c994530989c7936427 (diff) | |
x86: Ce4100: Add reboot_fixup() for CE4100
This patch adds the CE4100 reboot fixup to reboot_fixups_32.c
[ tglx: Moved PCI id to reboot_fixups_32.c ]
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
LKML-Reference: <5bdcfb4f0206fa721570504e95659a03b815bc5e.1289331834.git.dirk.brandewie@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| -rw-r--r-- | arch/x86/Kconfig | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/reboot_fixups_32.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 43951c9c7435..e5510cf0666f 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
| @@ -383,6 +383,7 @@ config X86_INTEL_CE | |||
| 383 | depends on PCI_GODIRECT | 383 | depends on PCI_GODIRECT |
| 384 | depends on X86_32 | 384 | depends on X86_32 |
| 385 | depends on X86_EXTENDED_PLATFORM | 385 | depends on X86_EXTENDED_PLATFORM |
| 386 | select X86_REBOOTFIXUPS | ||
| 386 | ---help--- | 387 | ---help--- |
| 387 | Select for the Intel CE media processor (CE4100) SOC. | 388 | Select for the Intel CE media processor (CE4100) SOC. |
| 388 | This option compiles in support for the CE4100 SOC for settop | 389 | This option compiles in support for the CE4100 SOC for settop |
diff --git a/arch/x86/kernel/reboot_fixups_32.c b/arch/x86/kernel/reboot_fixups_32.c index fda313ebbb03..c8e41e90f59c 100644 --- a/arch/x86/kernel/reboot_fixups_32.c +++ b/arch/x86/kernel/reboot_fixups_32.c | |||
| @@ -43,17 +43,33 @@ static void rdc321x_reset(struct pci_dev *dev) | |||
| 43 | outb(1, 0x92); | 43 | outb(1, 0x92); |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | static void ce4100_reset(struct pci_dev *dev) | ||
| 47 | { | ||
| 48 | int i; | ||
| 49 | |||
| 50 | for (i = 0; i < 10; i++) { | ||
| 51 | outb(0x2, 0xcf9); | ||
| 52 | udelay(50); | ||
| 53 | } | ||
| 54 | } | ||
| 55 | |||
| 46 | struct device_fixup { | 56 | struct device_fixup { |
| 47 | unsigned int vendor; | 57 | unsigned int vendor; |
| 48 | unsigned int device; | 58 | unsigned int device; |
| 49 | void (*reboot_fixup)(struct pci_dev *); | 59 | void (*reboot_fixup)(struct pci_dev *); |
| 50 | }; | 60 | }; |
| 51 | 61 | ||
| 62 | /* | ||
| 63 | * PCI ids solely used for fixups_table go here | ||
| 64 | */ | ||
| 65 | #define PCI_DEVICE_ID_INTEL_CE4100 0x0708 | ||
| 66 | |||
| 52 | static const struct device_fixup fixups_table[] = { | 67 | static const struct device_fixup fixups_table[] = { |
| 53 | { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset }, | 68 | { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset }, |
| 54 | { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset }, | 69 | { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset }, |
| 55 | { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset }, | 70 | { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset }, |
| 56 | { PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030, rdc321x_reset }, | 71 | { PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030, rdc321x_reset }, |
| 72 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CE4100, ce4100_reset }, | ||
| 57 | }; | 73 | }; |
| 58 | 74 | ||
| 59 | /* | 75 | /* |
