here we go.
caveats: this was generated by a script, using a linux system, to dump register values. Except for register 76, which was done from the programming manuals.
I need to get a macro in here, I know. If you find this useless let me know and I'll try to do the macro.
here goes.
First, though: 1) set reg 76 to 30 (power + nop), delay 200 us 2) set up the other regs 3) set up reg 76 to 50, then the other values as shown.
generic_init: PORT_80 0xd0 ; now the fun begins. ; turn on the dram and wait a while (this from the intel book) mov dx, 0xcf8 mov eax, 0x80000074 out dx, eax mov dx, 0xcfe ; turn power and and set the nop bit too. mov al, 0x30 out dx, al ; delay 200 us mov ecx, 0x20000 .loop: loop .loop ; First, set registers we can set once to reasonable values ; note -- this code auto-generated ... ; note -- we need to grab the nice macro from the other chipset file. ; set it for sdram, 31 microsecond refresh (? ok? ) ; should we be doing this just yet? who knows? mov dx, 0xcf8 mov eax, 0x80000054 out dx, eax mov dx, 0xcff mov al, 0x12 out dx, al mov dx, 0xcf8 mov eax, 0x80000058 out dx, eax mov dx, 0xcfd mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x80000060 out dx, eax mov dx, 0xcfc mov al, 0x10 out dx, al mov dx, 0xcf8 mov eax, 0x80000060 out dx, eax mov dx, 0xcfd mov al, 0x20 out dx, al mov dx, 0xcf8 mov eax, 0x80000060 out dx, eax mov dx, 0xcfe mov al, 0x30 out dx, al mov dx, 0xcf8 mov eax, 0x80000060 out dx, eax mov dx, 0xcff mov al, 0x40 out dx, al mov dx, 0xcf8 mov eax, 0x80000064 out dx, eax mov dx, 0xcfc mov al, 0x50 out dx, al mov dx, 0xcf8 mov eax, 0x80000064 out dx, eax mov dx, 0xcfd mov al, 0x60 out dx, al mov dx, 0xcf8 mov eax, 0x80000064 out dx, eax mov dx, 0xcfe mov al, 0x70 out dx, al mov dx, 0xcf8 mov eax, 0x80000064 out dx, eax mov dx, 0xcff mov al, 0x80 out dx, al mov dx, 0xcf8 mov eax, 0x80000068 out dx, eax mov dx, 0xcfd mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x80000068 out dx, eax mov dx, 0xcfe mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x80000068 out dx, eax mov dx, 0xcff mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x8000006c mov dx, 0xcfc mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x8000006c out dx, eax mov dx, 0xcfd mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x8000006c out dx, eax mov dx, 0xcfe mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x80000074 out dx, eax mov dx, 0xcfc mov al, 0x22 out dx, al mov dx, 0xcf8 mov eax, 0x80000074 out dx, eax mov dx, 0xcfd mov al, 0x22 out dx, al mov dx, 0xcf8 mov eax, 0x80000078 out dx, eax mov dx, 0xcfc mov al, 0x7 out dx, al mov dx, 0xcf8 mov eax, 0x80000078 out dx, eax mov dx, 0xcfd mov al, 0x55 out dx, al mov dx, 0xcf8 mov eax, 0x800000c8 out dx, eax mov dx, 0xcfe mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x800000c8 out dx, eax mov dx, 0xcff mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x800000c8 out dx, eax mov dx, 0xcff mov al, 0x0 out dx, al mov dx, 0xcf8 mov eax, 0x800000cc out dx, eax mov dx, 0xcfc mov al, 0x1e out dx, al ; standard init of sdram at this point: ; it is on and the bridge is configured for 256M dimms. ; now we have to do a precharge all (see the pc100 sdram book mov dx, 0xcf8 mov eax, 0x80000074 out dx, eax ; now we stick to reg 76, so no more of that mov dx, 0xcfe ; we're going to use es to ref dram xor eax, eax mov es, eax ; do the nop cycle mov eax, [es:0x400] ; now we have to kick the dram to do this? so what, I guess we hit it, ; but we're not in bigreal, wonder what will happen. Just to bank 0 for ; now. A10 has to be high. (pc100 sdram book) ; this should be a Precharge all mov al, 0x50 out dx, al ; meaningless delay PORT_80 0xdf mov [es:0x400], eax ; now we do the eight CBRs mov al, 0x90 out dx, al PORT_80 0xdf mov eax, [es:0x400] mov eax, [es:0x400] mov eax, [es:0x400] mov eax, [es:0x400] mov eax, [es:0x400] mov eax, [es:0x400] mov eax, [es:0x400] mov eax, [es:0x400] ; now a mode register set mov al, 0x70 out dx, al PORT_80 0xdf ; we have to do a memory reference that sets things up. ; ok -- we go with burst length 4 (?) wrap type 0, ltmode 3 ; ltmod 3 matches the other mode in the bridge. This is slow, ; we fix later if possible ; now we reference the dram to issue the mrs mov eax, 0x32 mov [es:0x00], eax ; well, maybe it is working now.
mov ax, cs mov ss, ax mov sp, .stack
---------------------
anyways, i can store and load, but I'm only seeing an 8-byte memory.
ron
- To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message