On Feb 6, 2008 7:03 PM, Urbez Santana Roma <urbez@linuxupc.upc.edu> wrote:

Note: for install this patch, you must download the last coreboot SVN,
and install first the patch posted by Corey Osgood, that includes
CN700/C7 and jetway mainboard.

The filo patch is for correct a problem with FILO when tries to find the
IDE disk, if more that
one IDE interface is on, and no all IDE's are in native Mode. The count
of compatibility
interfaces are wrong, and not finds the interface that is marked as a
IDE 0x0101 or SATA 0x0180
and not all are native, the search of the io base and control, are
wrong.

If this is not correct sorry :)))


If in VT8237R have SATA as an 0101 and the IDE too 0101 class, with this
patch, works, because
counts corectly the unique non native interface IDE, as the first.

Ok, so maybe this is why FILO beefs for me. It seems to find the IDE controller at hde, but dumps a message about a floating bus. I've already built filo and coreboot with the patch, but I'm holding off til tomorrow to test, at the moment I need sleep. Everything else IDE-wise looks to be the same.

NOTE1: in the epia-cn/Config.lb the IDE and SATA are enabled.
NOTE2: in epia-cn/auto.c the values of PCI_DEV(0,0x11,0) 0x50 and 0x51
are different, for have IDE and SATA enableds at function

And they look like they aren't right? IDE cannot be disabled in the same way the rest of the devs there can. Also 0x51's lower bits control keyboard, mouse, and RTC function.
 
enable_mainboard_devices
NOTE3: Here is a file base.c that haves a udelay with use of rtdsc
NOTE4: another function via_cn_fixup, fixes the use of PCI devices
access to the memory. Must be improved, and not use a fixed value.

The bus ones are set later during vt8237r lpc_init, so I'm not sure they're needed here (I've been testing with and without them, not seeing a difference), I'll investigate further. The memory bit is set correct during ram init in my lastest iterations.

NOTE5: have a change in cn700/raminit.c for configure in CN the memory.

I've confirmed these values to work with my Corsair and A-data memory too.
 

NOTE6: vt8237r configures the SATA device as an IDE class 0x0101 must be
0x0180?????

Clearing bit 7 of the SATA's Rx45 allows the sub-class code to be changed. The vt8237r datasheet is floating around the interwebs, it was released by via. There may even be a link to it in the vt8237r code somewhere.

Comment on this:
+    dev = pci_locate_device(PCI_ID(0x1106, 0x3149), 0);
+    if(dev == PCI_DEV_INVALID) {
+        print_debug("SATA Controller not found!\n\rUsing 00.f.0 PCI device\r\n");
+        dev=PCI_DEV(0,0xf,0);
+    }

If we can't find SATA, it means that for some reason it's probably already disabled, and setting the device statically might hit the IDE controller (since this function's entire purpose is to move the ide controller to where the sata controller is now). And we don't want to be messing up bits on an already flaky IDE controller ;)

And lastly: does vga work, and do you use the bochs bios or have you made changes to the emulator so the vga bios will run?

-Corey