📄 5530.asm
字号:
;**************************************************************************
;*
;* 5530.ASM
;*
;* Copyright (c) 1999 National Semiconductor Corporation.
;* All Rights Reserved.
;*
;* Function:
;* Set up 5530 chipset to default values.
;*
;* $Revision:: 1 $
;*
;**************************************************************************
.486P
INCLUDE DEF.INC
INCLUDE MACROS.INC
INCLUDE PORT80.INC
INCLUDE 5530.INC
INCLUDE OPTIONS.INC
_TEXT SEGMENT PUBLIC use16 'CODE'
EXTERN cy55x0RegRead8:NEAR
EXTERN cy55x0RegWrite8:NEAR
;
; We use db FF, FF to Increment the FUNCTION number
; Make sure you NEVER need to talk to REG FF of any device.
;
FUN_5530_0_TABLE:
db CX5530_REG04, 1Fh ; Allow memory and I/O cycles/Memwrite & invalidate
db CX5530_REG05, 00h
db CX5530_REG06, 80h
db CX5530_REG07, 02h ; Medium Devsel timing
db CX5530_REG0C, 04h ; PCi cache line size
db CX5530_REG0D, 40h ; Master Latency Timer
db CX5530_REG40, 89h
db CX5530_REG41, 10h ; Enable write buffer
db CX5530_REG42, 0ACh ; en USB, x-Bus buffer en,HOLD REQ#. DO NOT ENABLE DMA Priority bit!
db CX5530_REG43, 46h OR USBINSTALL
db CX5530_REG50, 7Bh
db CX5530_REG51, 44h
db CX5530_REG52, 099h
db CX5530_REG53, 03h
db CX5530_REG58, 00h
db CX5530_REG5A, 03h OR (FDDINSTALL SHL 6) ; KBD/RTC Positive decode
db CX5530_REG5B, 00h OR IDEENABLE ; BIOS ROM Subtractive decode was 3c, 24 no hd
db CX5530_REG5C, INTBA ; PCI INT steering
db CX5530_REG5D, INTDC ; PCI INT steering
db CX5530_REG70, GPCSIOL ; GPIO
db CX5530_REG71, GPCSIOH
db CX5530_REG72, GPCSCONTROL
db CX5530_REG80, 00h ; SMI related registers
db CX5530_REG81, 00h ; SMI related registers
db CX5530_REG82, 00h ; SMI related registers
db CX5530_REG83, 00h ; SMI related registers
; Should not set GPIO's here. - GPIOs are platform specific. Userfunc.asm is a good place.
; db CX5530_REG90, 0Bh ; GPIO direction
; db CX5530_REG91, 02h ; GPIO data
;
; Func 1 - SMI/ACPI PCI Config Cycles
;
db 0ffh, 0ffh
FUN_5530_1_TABLE:
db CX5530_REG04, 0Fh
db CX5530_REG05, 00h
db CX5530_REG06, 80h
db CX5530_REG07, 02h
db CX5530_REG0C, 00h
db CX5530_REG10, 00h ; Mem Base = X0012000h
db CX5530_REG11, 20h
db CX5530_REG12, 01h
db CX5530_REG13, (GX_BASE / 1000000h)
;
; Func 2 - IDE PCI Config Cycles
;
db 0ffh, 0ffh
FUN_5530_2_TABLE:
db CX5530_REG04, 00h ; Disable
db CX5530_REG20, 01h
db CX5530_REG21, 0fch
db CX5530_REG22, 00h
db CX5530_REG23, 00h
db CX5530_REG04, 01h ; Enable
;
; Func 3 - Audio PCI Config Cycles
;
db 0ffh, 0ffh
FUN_5530_3_TABLE:
db CX5530_REG04, 0Fh
db CX5530_REG05, 00h
db CX5530_REG06, 80h
db CX5530_REG07, 02h
db CX5530_REG0C, 00h
db CX5530_REG10, 00h ; Mem Base = X0011000h
db CX5530_REG11, 10h
db CX5530_REG12, 01h
db CX5530_REG13, (GX_BASE / 1000000h)
;
; Func 4 - Video PCI Config Cycles
;
db 0ffh, 0ffh
FUN_5530_4_TABLE:
db CX5530_REG04, 0Fh
db CX5530_REG05, 00h
db CX5530_REG06, 80h
db CX5530_REG07, 02h
db CX5530_REG0C, 00h
db CX5530_REG10, 00h ; Mem Base = X0010000h
db CX5530_REG11, 00h
db CX5530_REG12, 01h
db CX5530_REG13, (GX_BASE / 1000000h)
TOTAL_5530_COUNT EQU (($ - FUN_5530_0_TABLE)/2 )
;**************************************************************************
;*
;* chipsetInit
;*
;* Entry:
;* Exit:
;* Destroys:
;*
;**************************************************************************
chipsetInit PROC NEAR PUBLIC
push bx
PORT80 P80_CHIPSET_INIT ; Chipset init
mov cx, TOTAL_5530_COUNT
lea si, FUN_5530_0_TABLE
mov eax, CX55x0_ID
mov ah, FUNC0
Register_5530_Loop:
mov al, cs:[si]
inc si
mov dl, cs:[si]
inc si
cmp al, 0FFh
jne ValidReg
cmp dl, 0FFh
jne ValidReg
inc ah ; Crossed a Function Table
; Add one to the Function
jmp SkipRegWrite
ValidReg:
push edx
push eax
push ecx
NOSTACK bx, cy55x0RegWrite8
pop ecx
pop eax
pop edx
SkipRegWrite:
loop Register_5530_Loop
pop bx
jmp bx
chipsetInit ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -