I attach a patch file for the Via Epia-m target which makes this target now compile and work.
I have tried to keep all changes local to the directories relevent to this target i.e. - mainboard/via/epia-m - northbridge/via/vt8623 - southbridge/via/vt8623 - southbridge/ricoh - superio/via/vt1211 - targets/via/epia-m
However there are 4 files which are modified elsewhere in the sources: - devices/cardbus_device.c - which needed another io resource probing - comments suggest no-one else is using this anyway - include/device/cardbus.h - to include another function definition - cpu/via/model_centaur/model_centaur.c - to add more processor id codes and to get it to set up mtrr's - arch/i386/lib/cpu.c - to conditionally test for SMP & IOAPIC systems - this board/processor has no APIC's and would otherwise fail on the call to lapicid()
In addition to making it work again, I have added the following functionality: - Dynamic memory sizing - which has been tested so far with: - - 256Mb 1 bank (i.e. single sided) - - 256Mb 2 bank (i.e. double sided) - - 512Mb 2 bank (i.e. double sided)
- A minimalist ACPI dsdt table free of any intellectual property and can thus be distributed with sources.
- Compact Flash boot working.
- I have also written an EPIA-M howto which I have attached seperately. Maybe that can get onto the web site.
Things still not resolved: I spent a great deal of time trying to get the vga to initialise through the emulator, but I have failed. I feel that I now know the workings of the emulator inside out, but it would take a good deal more effort to resolve the issues.
As an interim solution, therefore, I have re-implemented the old real mode vga-bios.c which works a treat on this board. To keep the main source tree clean of this, it is implemented locally within the mainboard/via/epia-m directory, and in a way which does not require any changes to the main source tree (e.g. it implements its own temporary gdt's and idt's). Maybe one day I shall return to this problem.
Whilst attempting to get the emulator to work, I had to start using a fallback only image for sizing reasons, and this is how the patch is configured. Without both real-mode vga and the emulator it may be possible to go back to a dual image.
My original epia-m port set up 2 mtrr's over the vga framebuffer and agp bridge as per the Award bios, and this makes a noticeable difference in performance. Without changing the current mtrr stuff I see no way of making a request for these to be set up, and so this version doesn't attempt to. It would be nice to see this sort of functionality return into the core if anyone is interested - perhaps as another type of memory resource different to main memory and non contiguous from main memory. The type of these mtrr's is write combining rather than write back as used for main memory.
Nick Barker