[LinuxBIOS] romcc and epia
ron minnich
rminnich at gmail.com
Tue Sep 12 21:05:54 CEST 2006
On 9/12/06, Ben Hewson <ben at hewson-venieri.com> wrote:
>
> I have been looking through auto.inc and it would be very helpful if
> besides
> printing the line no inside auto.c, it would also print the actual C line.
>
> Does anyone know how easy this would be to do ?
>
>
> The reason I am asking this is because of the problem I am having with
> the epia code.
>
>
> There is this bit of C code
>
> // SDRAM in all banks
> pci_write_config8(north, 0x60, 0x3F);
>
> // DRAM timing. I'm suspicious of this
> // This is for all banks, 64 is 0,1. 65 is 2,3. 66 is 4,5.
> // ras precharge 4T, RAS pulse 5T
> // cas2 is 0xd6, cas3 is 0xe6
> // we're also backing off write pulse width to 2T, so result is 0xee
>
> #if DIMM_CL2
> pci_write_config8(north, 0x64, 0xd6);
> pci_write_config8(north, 0x65, 0xd6);
> pci_write_config8(north, 0x66, 0xd6);
> #else // CL=3
> pci_write_config8(north, 0x64, 0xe6);
> pci_write_config8(north, 0x65, 0xe6);
> pci_write_config8(north, 0x66, 0xe6);
> #endif
>
>
> print_debug_hex8(pci_read_config8(north, 0x64));
> print_debug_hex8(pci_read_config8(north, 0x65));
> print_debug_hex8(pci_read_config8(north, 0x66));
>
> ok now loking at the serial output I get the following snippet
>
> 1106 0601
> ece6e6init 1 done
>
> the important bit is the ece6e6
>
> Ok now as you can see it is not writing to the register properly. So I
> am now looking
> through auto.inc and trying to find the relevant code. While I will be
> honest and say
> at the moment I do not 100% understand it, I can never the less find the
> relevant
> assembler code. Anyway this is it
>
>
> **********
> first bit I think is for this line
> pci_write_config8(north, 0x60, 0x3F);
> ***********
>
> mov $63 , %al
> mov $3324 , %dx
> outb %al, %dx
3324 is cfc. data. 63 is 3f. You have to look at the code before this, but I
expect that it will be for 0x60.
/* ,:0.0 */
> /*
> * pci_write_config8,romcc_io.h:148.38
> * sdram_set_registers,raminit.c:164.26
> * main,auto.c:107.28
> */
> /* ,:0.0 */
> /*
> * __builtin_outl,<built-in>:1.0
> * outl,io.h:25.23
> * pci_write_config8,romcc_io.h:148.13
> * sdram_set_registers,raminit.c:164.26
> * main,auto.c:107.28
> */
> mov $-2147483548 , %eax
> mov $3320 , %dx
> outl %eax, %dx
3320 is cf8. $-2147483548 is 64. So set cf8 to x64.
/* ,:0.0 */
> /*
> * __builtin_outb,<built-in>:1.0
> * outb,io.h:15.23
> * pci_write_config8,romcc_io.h:149.13
> * sdram_set_registers,raminit.c:164.26
> * main,auto.c:107.28
> */
>
> ********* ok here is 1 write of 0xe6 **********
>
>
>
> mov $230 , %al
> mov $3325 , %dx
> outb %al, %dx
so, write e6 to cfd, i.e. 65. hmm. what happened to 64?
/* ,:0.0 */
> /*
> * pci_write_config8,romcc_io.h:148.38
> * sdram_set_registers,raminit.c:165.26
> * main,auto.c:107.28
> */
> /* ,:0.0 */
> /*
> * __builtin_outl,<built-in>:1.0
> * outl,io.h:25.23
> * pci_write_config8,romcc_io.h:148.13
> * sdram_set_registers,raminit.c:165.26
> * main,auto.c:107.28
> */
> mov $-2147483548 , %eax
> mov $3320 , %dx
> outl %eax, %dx
set cfc to 64.
/* ,:0.0 */
> /*
> * __builtin_outb,<built-in>:1.0
> * outb,io.h:15.23
> * pci_write_config8,romcc_io.h:149.13
> * sdram_set_registers,raminit.c:165.26
> * main,auto.c:107.28
> */
>
> ********** here is 2nd write of 0xe6 ************
>
> mov $230 , %al
> mov $3326 , %dx
> outb %al, %dx
Write e6 to 66.
/*
> * pci_read_config8,romcc_io.h:124.38
> * sdram_set_registers,raminit.c:169.42
> * main,auto.c:107.28
> */
> /* ,:0.0 */
> /*
> * __builtin_outl,<built-in>:1.0
> * outl,io.h:25.23
> * pci_read_config8,romcc_io.h:124.13
> * sdram_set_registers,raminit.c:169.42
> * main,auto.c:107.28
> */
> mov $-2147483548 , %eax
> mov $3320 , %dx
> outl %eax, %dx
> /* ,:0.0 */
set cfc to 64.
/*
>
> ******** now we get to read back the values ready to print ************
>
> * __builtin_inb,<built-in>:1.0
> * inb,io.h:31.29
> * pci_read_config8,romcc_io.h:125.19
> * sdram_set_registers,raminit.c:169.42
> * main,auto.c:107.28
I don't see a write to 64 either. HMMMMMM. Good detective work. Wonder
what's up here?
ron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20060912/51a3b733/attachment.html>
More information about the coreboot
mailing list