diff options
Diffstat (limited to 'arch/x86/platform')
-rw-r--r-- | arch/x86/platform/ce4100/ce4100.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/x86/platform/ce4100/ce4100.c b/arch/x86/platform/ce4100/ce4100.c index 4c61b52191eb..5de16e359fe6 100644 --- a/arch/x86/platform/ce4100/ce4100.c +++ b/arch/x86/platform/ce4100/ce4100.c | |||
@@ -27,6 +27,18 @@ static int ce4100_i8042_detect(void) | |||
27 | return 0; | 27 | return 0; |
28 | } | 28 | } |
29 | 29 | ||
30 | /* | ||
31 | * The CE4100 platform has an internal 8051 Microcontroller which is | ||
32 | * responsible for signaling to the external Power Management Unit the | ||
33 | * intention to reset, reboot or power off the system. This 8051 device has | ||
34 | * its command register mapped at I/O port 0xcf9 and the value 0x4 is used | ||
35 | * to power off the system. | ||
36 | */ | ||
37 | static void ce4100_power_off(void) | ||
38 | { | ||
39 | outb(0x4, 0xcf9); | ||
40 | } | ||
41 | |||
30 | #ifdef CONFIG_SERIAL_8250 | 42 | #ifdef CONFIG_SERIAL_8250 |
31 | 43 | ||
32 | static unsigned int mem_serial_in(struct uart_port *p, int offset) | 44 | static unsigned int mem_serial_in(struct uart_port *p, int offset) |
@@ -143,4 +155,6 @@ void __init x86_ce4100_early_setup(void) | |||
143 | x86_init.pci.init_irq = sdv_pci_init; | 155 | x86_init.pci.init_irq = sdv_pci_init; |
144 | x86_init.mpparse.setup_ioapic_ids = setup_ioapic_ids_from_mpc_nocheck; | 156 | x86_init.mpparse.setup_ioapic_ids = setup_ioapic_ids_from_mpc_nocheck; |
145 | #endif | 157 | #endif |
158 | |||
159 | pm_power_off = ce4100_power_off; | ||
146 | } | 160 | } |