From d4788245de37a2b6a968b4677d9ae0e40a1d8232 Mon Sep 17 00:00:00 2001 From: Li-Ta Lo Date: Tue, 6 Nov 2001 04:32:05 +0000 Subject: [PATCH] add code to disable internal devices --- src/northsouthbridge/sis/630/raminit.inc | 21 ++++++++++++++++++ src/northsouthbridge/sis/730/raminit.inc | 27 ++++++++++++++++++++---- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/northsouthbridge/sis/630/raminit.inc b/src/northsouthbridge/sis/630/raminit.inc index fe296ef010..15b2c24ff8 100644 --- a/src/northsouthbridge/sis/630/raminit.inc +++ b/src/northsouthbridge/sis/630/raminit.inc @@ -33,6 +33,7 @@ #define PCI_DATA_PORT 0xcfc #define NORTH_BRIDGE_BASE_ADDR 0x80000000 +#define LPC_BRIDGE_BASE_ADDR 0x80000800 register_setting_start: movl $northbridge_init_table, %esi @@ -62,6 +63,26 @@ write_northbridge_register: outb %al, %dx loopnz init_northbridge +#ifdef DISABLE_INTERNAL_DEVICES + movw $0x7c0e, %ax # Writting undocumented LPC register +write_lpc_register: + /* Input: AH - register number. AL - register value. */ + movl $LPC_BRIDGE_BASE_ADDR, %edx + movl %eax, %ebx # Save %eax to %ebx. + + movzbl %bh, %eax # add register address to + addl %edx, %eax # PCI base address + + movw $PCI_COMMAND_PORT, %dx + outl %eax, %dx + + movw $PCI_DATA_PORT, %dx + andb $0x03, %al + addb %al, %dl + movb %bl, %al + outb %al, %dx +#endif /* DISABLE_INTERNAL_DEVICES */ + jmp register_setting_end #ifdef SIS630S diff --git a/src/northsouthbridge/sis/730/raminit.inc b/src/northsouthbridge/sis/730/raminit.inc index cc9018d630..e75135b3c5 100644 --- a/src/northsouthbridge/sis/730/raminit.inc +++ b/src/northsouthbridge/sis/730/raminit.inc @@ -33,6 +33,7 @@ #define PCI_DATA_PORT 0xcfc #define NORTH_BRIDGE_BASE_ADDR 0x80000000 +#define LPC_BRIDGE_BASE_ADDR 0x80000800 register_setting_start: movl $northbridge_init_table, %esi @@ -43,9 +44,10 @@ init_northbridge: lodsw (%esi), %ax # load the register address/value to %ax xchgb %al, %ah # exchange address/values for write_common - +write_northbridge_register: /* Input: AH - register number. AL - register value. */ movl $NORTH_BRIDGE_BASE_ADDR, %edx + movl %eax, %ebx # Save %eax to %ebx. movzbl %bh, %eax # add register address to @@ -59,13 +61,30 @@ init_northbridge: addb %al, %dl movb %bl, %al outb %al, %dx - loopnz init_northbridge +#ifdef DISABLE_INTERNAL_DEVICES + movw $0x7c0e, %ax # Writting undocumented LPC register +write_lpc_register: + /* Input: AH - register number. AL - register value. */ + movl $LPC_BRIDGE_BASE_ADDR, %edx + movl %eax, %ebx # Save %eax to %ebx. + + movzbl %bh, %eax # add register address to + addl %edx, %eax # PCI base address + + movw $PCI_COMMAND_PORT, %dx + outl %eax, %dx + + movw $PCI_DATA_PORT, %dx + andb $0x03, %al + addb %al, %dl + movb %bl, %al + outb %al, %dx +#endif /* DISABLE_INTERNAL_DEVICES */ + jmp register_setting_end - - #include "730s_regs.inc" register_setting_end: