https://www.coreboot.org/api.php?action=feedcontributions&user=Ward&feedformat=atomcoreboot - User contributions [en]2024-03-29T11:10:41ZUser contributionsMediaWiki 1.40.0https://www.coreboot.org/index.php?title=Board:asus/f2a85-m&diff=12146Board:asus/f2a85-m2013-08-26T21:29:34Z<p>Ward: /* Hardware info */ add timing info for write with flashrom + buspirate</p>
<hr />
<div>== Status ==<br />
<br />
<br />
=== Notes ===<br />
<br />
* The ASUS F2A85-M CSM is same as F2A85-M.<br />
* get VGA from original bios using this:<br />
Source: http://www.coreboot.org/pipermail/coreboot/2012-December/073133.html<br />
<br />
for internal VGA:<br />
Boot the legacy BIOS, and use [[VGA_support]] chapter <br />
<br />
extracting from your system: dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768<br />
<br />
* Add VGA bios in the menuconfig<br />
* If you use PS/2 de-select legacy free<br />
* De-select running option ROMs, Seabios will run the ROMs that coreboot loads into memory so you should get a text display from Seabios<br />
* It is required that seabios is the coreboot payload for the F2A85-M or the internal VGA will not be initialized. But read [[SeaBIOS]] for how to add payloads to SeaBIOS and set SeaBIOS' boot order to run your payload.<br />
* Hotswapping the PDIP BIOS chip has some issues (most likely USB3 XHCI, disable it in original bios before hot-flashing to coreboot). Drop a mail to mailing list if you have issues.<br />
<br />
=== TODOs ===<br />
* test virtualization<br />
* test HDMI<br />
* update VERB tables<br />
* test suspend<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_comments = <br />
|CPU_L1_status = OK<br />
|CPU_L1_comments = <br />
|CPU_L2_status = OK<br />
|CPU_L2_comments = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = OK<br />
|CPU_multicore_status = OK<br />
|CPU_multicore_comments = <br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = OK <br />
|RAM_DDR3_comments = Please select right voltage in menuconfig! Default is 1.5V but some DIMMs need more or less!<br />
|RAM_dualchannel_status = OK<br />
|RAM_ecc_status = N/A<br />
|RAM_ecc_comments =<br />
<br />
|IDE_status = N/A<br />
|IDE_comments = <br />
|IDE_25_status = N/A<br />
|IDE_CF_status = N/A<br />
|CDROM_DVD_status = Untested<br />
|SATA_status = OK<br />
|SATA_comments = Tested all ports of sixpack.<br />
|USB_status = OK<br />
|USB_comments = Issues with XHCI exist with Asus' BIOS as well<br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = Use dd to [[VGA_support|extract the legacy BIOS]], HDMI untested<br />
|Onboard_SCSI_status = N/A<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = Untested<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCIE_x1_status = OK<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = OK<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = OK<br />
|PCIE_x16_comments = <br />
|PCIE_x32_status = N/A<br />
|Mini_PCI_cards_status = N/A<br />
|PCIX_cards_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = N/A<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|PP_status = N/A<br />
|PP_comments = <br />
|Game_port_status = N/A<br />
|IR_status = ?<br />
|Speaker_status = OK<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|CPUfreq_comments = <br />
|Powersave_status = ?<br />
|ACPI_status = OK<br />
|ACPI_comments = ACPI power button event works, suspend untested.<br />
|Reboot_status = OK<br />
|Reboot_comments = warm reboot from Asus' BIOS to coreboot does not work, use reset button after the first time you flash coreboot<br />
|Poweroff_status = OK<br />
|LEDs_status = OK<br />
|HPET_status = OK<br />
|RNG_status = ?<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = OK<br />
<br />
}}<br />
<br />
== Hardware info ==<br />
<br />
This board ships with a socketed Winbond 25Q64F, 64 Mbit (8 Mbyte) chip, in PDIP 300 mil package:<br />
<br />
{|<br />
|| [[Image:IMG_20130522_084444.jpg|thumb|Winbond 25Q64F]] <br />
|}<br />
<br />
The chip manual is available [http://www.nexflash.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/W25Q64FV.htm here]<br />
<br />
For out of band flashing, I use a<br />
<br />
3M test clip model 923739-08-ND<br />
<br />
It has .300" spacing, 8 pin DIP clip, gold finish and 'headless heads'. I hook this up to a bus pirate. This works but reading and writing take forever:<br />
<br />
<pre><br />
# time /usr/src/flashrom/flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -w 20130826-coreboot.rom<br />
flashrom v0.9.6.1-r1669 on Linux 3.8-2-amd64 (x86_64)<br />
flashrom is free software, get the source code at http://www.flashrom.org<br />
<br />
Calibrating delay loop... OK.<br />
Found Winbond flash chip "W25Q64" (8192 kB, SPI) on buspirate_spi.<br />
Reading old flash chip contents... done.<br />
Erasing and writing flash chip... Erase/write done.<br />
Verifying flash... VERIFIED.<br />
<br />
real 35m35.409s<br />
user 0m55.976s<br />
sys 0m12.920s<br />
</pre><br />
<br />
== Memory ==<br />
<br />
I use:<br />
<br />
2x 2GB DDR3 modules in blue slots:<br />
<br />
<pre><br />
#modprobe i2c-piix4<br />
#modprobe eeprom<br />
#decode-dimms<br />
<br />
---=== Memory Characteristics ===--- <br />
Fine time base 2.500 ps <br />
Medium time base 0.125 ns <br />
Maximum module speed 1333MHz (PC3-10666) <br />
Size 2048 MB <br />
Banks x Rows x Columns x Bits 8 x 14 x 10 x 64 <br />
Ranks 2 <br />
SDRAM Device Width 8 bits <br />
tCL-tRCD-tRP-tRAS 8-8-8-24 <br />
Supported CAS Latencies (tCL) 9T, 8T, 7T, 6T <br />
</pre></div>Wardhttps://www.coreboot.org/index.php?title=Board:asus/f2a85-m&diff=12145Board:asus/f2a85-m2013-08-26T21:18:09Z<p>Ward: /* TODOs */ This board does not have on-board SCSI, nor PCI-X or mini-PCI slots.</p>
<hr />
<div>== Status ==<br />
<br />
<br />
=== Notes ===<br />
<br />
* The ASUS F2A85-M CSM is same as F2A85-M.<br />
* get VGA from original bios using this:<br />
Source: http://www.coreboot.org/pipermail/coreboot/2012-December/073133.html<br />
<br />
for internal VGA:<br />
Boot the legacy BIOS, and use [[VGA_support]] chapter <br />
<br />
extracting from your system: dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768<br />
<br />
* Add VGA bios in the menuconfig<br />
* If you use PS/2 de-select legacy free<br />
* De-select running option ROMs, Seabios will run the ROMs that coreboot loads into memory so you should get a text display from Seabios<br />
* It is required that seabios is the coreboot payload for the F2A85-M or the internal VGA will not be initialized. But read [[SeaBIOS]] for how to add payloads to SeaBIOS and set SeaBIOS' boot order to run your payload.<br />
* Hotswapping the PDIP BIOS chip has some issues (most likely USB3 XHCI, disable it in original bios before hot-flashing to coreboot). Drop a mail to mailing list if you have issues.<br />
<br />
=== TODOs ===<br />
* test virtualization<br />
* test HDMI<br />
* update VERB tables<br />
* test suspend<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_comments = <br />
|CPU_L1_status = OK<br />
|CPU_L1_comments = <br />
|CPU_L2_status = OK<br />
|CPU_L2_comments = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = OK<br />
|CPU_multicore_status = OK<br />
|CPU_multicore_comments = <br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = OK <br />
|RAM_DDR3_comments = Please select right voltage in menuconfig! Default is 1.5V but some DIMMs need more or less!<br />
|RAM_dualchannel_status = OK<br />
|RAM_ecc_status = N/A<br />
|RAM_ecc_comments =<br />
<br />
|IDE_status = N/A<br />
|IDE_comments = <br />
|IDE_25_status = N/A<br />
|IDE_CF_status = N/A<br />
|CDROM_DVD_status = Untested<br />
|SATA_status = OK<br />
|SATA_comments = Tested all ports of sixpack.<br />
|USB_status = OK<br />
|USB_comments = Issues with XHCI exist with Asus' BIOS as well<br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = Use dd to [[VGA_support|extract the legacy BIOS]], HDMI untested<br />
|Onboard_SCSI_status = N/A<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = Untested<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCIE_x1_status = OK<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = OK<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = OK<br />
|PCIE_x16_comments = <br />
|PCIE_x32_status = N/A<br />
|Mini_PCI_cards_status = N/A<br />
|PCIX_cards_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = N/A<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|PP_status = N/A<br />
|PP_comments = <br />
|Game_port_status = N/A<br />
|IR_status = ?<br />
|Speaker_status = OK<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|CPUfreq_comments = <br />
|Powersave_status = ?<br />
|ACPI_status = OK<br />
|ACPI_comments = ACPI power button event works, suspend untested.<br />
|Reboot_status = OK<br />
|Reboot_comments = warm reboot from Asus' BIOS to coreboot does not work, use reset button after the first time you flash coreboot<br />
|Poweroff_status = OK<br />
|LEDs_status = OK<br />
|HPET_status = OK<br />
|RNG_status = ?<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = OK<br />
<br />
}}<br />
<br />
== Hardware info ==<br />
<br />
This board ships with a socketed Winbond 25Q64F, 64 Mbit (8 Mbyte) chip, in PDIP 300 mil package:<br />
<br />
{|<br />
|| [[Image:IMG_20130522_084444.jpg|thumb|Winbond 25Q64F]] <br />
|}<br />
<br />
The chip manual is available [http://www.nexflash.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/W25Q64FV.htm here]<br />
<br />
For out of band flashing, I use a<br />
<br />
3M test clip model 923739-08-ND<br />
<br />
It has .300" spacing, 8 pin DIP clip, gold finish and 'headless heads'. I hook this up to a bus pirate. This works but reading and writing take forever. Large chip...<br />
<br />
== Memory ==<br />
<br />
I use:<br />
<br />
2x 2GB DDR3 modules in blue slots:<br />
<br />
<pre><br />
#modprobe i2c-piix4<br />
#modprobe eeprom<br />
#decode-dimms<br />
<br />
---=== Memory Characteristics ===--- <br />
Fine time base 2.500 ps <br />
Medium time base 0.125 ns <br />
Maximum module speed 1333MHz (PC3-10666) <br />
Size 2048 MB <br />
Banks x Rows x Columns x Bits 8 x 14 x 10 x 64 <br />
Ranks 2 <br />
SDRAM Device Width 8 bits <br />
tCL-tRCD-tRP-tRAS 8-8-8-24 <br />
Supported CAS Latencies (tCL) 9T, 8T, 7T, 6T <br />
</pre></div>Wardhttps://www.coreboot.org/index.php?title=Board:asus/f2a85-m&diff=12144Board:asus/f2a85-m2013-08-26T20:56:30Z<p>Ward: /* Hardware info */</p>
<hr />
<div>== Status ==<br />
<br />
<br />
=== Notes ===<br />
<br />
* The ASUS F2A85-M CSM is same as F2A85-M.<br />
* get VGA from original bios using this:<br />
Source: http://www.coreboot.org/pipermail/coreboot/2012-December/073133.html<br />
<br />
for internal VGA:<br />
Boot the legacy BIOS, and use [[VGA_support]] chapter <br />
<br />
extracting from your system: dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768<br />
<br />
* Add VGA bios in the menuconfig<br />
* If you use PS/2 de-select legacy free<br />
* De-select running option ROMs, Seabios will run the ROMs that coreboot loads into memory so you should get a text display from Seabios<br />
* It is required that seabios is the coreboot payload for the F2A85-M or the internal VGA will not be initialized. But read [[SeaBIOS]] for how to add payloads to SeaBIOS and set SeaBIOS' boot order to run your payload.<br />
* Hotswapping the PDIP BIOS chip has some issues (most likely USB3 XHCI, disable it in original bios before hot-flashing to coreboot). Drop a mail to mailing list if you have issues.<br />
<br />
=== TODOs ===<br />
* test virtualization<br />
* test HDMI<br />
* update VERB tables<br />
* test suspend<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_comments = <br />
|CPU_L1_status = OK<br />
|CPU_L1_comments = <br />
|CPU_L2_status = OK<br />
|CPU_L2_comments = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = OK<br />
|CPU_multicore_status = OK<br />
|CPU_multicore_comments = <br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = OK <br />
|RAM_DDR3_comments = Please select right voltage in menuconfig! Default is 1.5V but some DIMMs need more or less!<br />
|RAM_dualchannel_status = OK<br />
|RAM_ecc_status = N/A<br />
|RAM_ecc_comments =<br />
<br />
|IDE_status = N/A<br />
|IDE_comments = <br />
|IDE_25_status = N/A<br />
|IDE_CF_status = N/A<br />
|CDROM_DVD_status = Untested<br />
|SATA_status = OK<br />
|SATA_comments = Tested all ports of sixpack.<br />
|USB_status = OK<br />
|USB_comments = Issues with XHCI exist with Asus' BIOS as well<br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = Use dd to [[VGA_support|extract the legacy BIOS]], HDMI untested<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = Untested<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCIE_x1_status = OK<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = OK<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = OK<br />
|PCIE_x16_comments = <br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = N/A<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|PP_status = N/A<br />
|PP_comments = <br />
|Game_port_status = N/A<br />
|IR_status = ?<br />
|Speaker_status = OK<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|CPUfreq_comments = <br />
|Powersave_status = ?<br />
|ACPI_status = OK<br />
|ACPI_comments = ACPI power button event works, suspend untested.<br />
|Reboot_status = OK<br />
|Reboot_comments = warm reboot from Asus' BIOS to coreboot does not work, use reset button after the first time you flash coreboot<br />
|Poweroff_status = OK<br />
|LEDs_status = OK<br />
|HPET_status = OK<br />
|RNG_status = ?<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = OK<br />
<br />
}}<br />
<br />
== Hardware info ==<br />
<br />
This board ships with a socketed Winbond 25Q64F, 64 Mbit (8 Mbyte) chip, in PDIP 300 mil package:<br />
<br />
{|<br />
|| [[Image:IMG_20130522_084444.jpg|thumb|Winbond 25Q64F]] <br />
|}<br />
<br />
The chip manual is available [http://www.nexflash.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/W25Q64FV.htm here]<br />
<br />
For out of band flashing, I use a<br />
<br />
3M test clip model 923739-08-ND<br />
<br />
It has .300" spacing, 8 pin DIP clip, gold finish and 'headless heads'. I hook this up to a bus pirate. This works but reading and writing take forever. Large chip...<br />
<br />
== Memory ==<br />
<br />
I use:<br />
<br />
2x 2GB DDR3 modules in blue slots:<br />
<br />
<pre><br />
#modprobe i2c-piix4<br />
#modprobe eeprom<br />
#decode-dimms<br />
<br />
---=== Memory Characteristics ===--- <br />
Fine time base 2.500 ps <br />
Medium time base 0.125 ns <br />
Maximum module speed 1333MHz (PC3-10666) <br />
Size 2048 MB <br />
Banks x Rows x Columns x Bits 8 x 14 x 10 x 64 <br />
Ranks 2 <br />
SDRAM Device Width 8 bits <br />
tCL-tRCD-tRP-tRAS 8-8-8-24 <br />
Supported CAS Latencies (tCL) 9T, 8T, 7T, 6T <br />
</pre></div>Wardhttps://www.coreboot.org/index.php?title=Board:asus/f2a85-m&diff=11905Board:asus/f2a85-m2013-06-04T21:23:34Z<p>Ward: /* Hardware info */</p>
<hr />
<div>== Status ==<br />
<br />
<br />
=== Notes ===<br />
<br />
* The ASUS F2A85-M CSM is same as F2A85-M.<br />
* get VGA from original bios using this:<br />
Source: http://www.coreboot.org/pipermail/coreboot/2012-December/073133.html<br />
<br />
for internal VGA:<br />
Boot the legacy BIOS, and use http://www.coreboot.org/VGA_support chapter <br />
<br />
extracting from your system: dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768<br />
<br />
You will need following patch to seabios:<br />
<code><br />
--- a/src/optionroms.c<br />
+++ b/src/optionroms.c<br />
@@ -215,7 +215,10 @@ is_pci_vga(struct pci_device *pci)<br />
{<br />
if (pci->class != PCI_CLASS_DISPLAY_VGA)<br />
return 0;<br />
- u16 cmd = pci_config_readw(pci->bdf, PCI_COMMAND);<br />
+ u16 cmd = pci_config_readw(pci->bdf, PCI_COMMAND) | PCI_COMMAND_IO | PCI_COMMAND_MEMORY;<br />
+<br />
+ pci_config_writew(pci->bdf, PCI_COMMAND, cmd);<br />
+<br />
if (!(cmd & PCI_COMMAND_IO && cmd & PCI_COMMAND_MEMORY))<br />
return 0;<br />
while (pci->parent) {<br />
</code><br />
<br />
Reason is unknown, I see coreboot is writing 7 to cmd, but there is actually <br />
6... Maybe there is some magic about IO decode bit...<br />
<br />
* Add VGA bios in the menuconfig<br />
* If you use PS/2 de-select legacy free<br />
* De-select running option ROMs, leave this to Seabios<br />
* Use seabios as payload<br />
* Hotswapping has some issues (most likely USB3, disable it in orig bios before hot-flashing to coreboot). Drop a mail to mailing list if you have issues.<br />
<br />
=== TODOs ===<br />
* test virtualization<br />
* test HDMI<br />
* update VERB tables<br />
* test suspend<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_comments = <br />
|CPU_L1_status = OK<br />
|CPU_L1_comments = <br />
|CPU_L2_status = OK<br />
|CPU_L2_comments = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = OK<br />
|CPU_multicore_status = OK<br />
|CPU_multicore_comments = <br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = OK <br />
|RAM_DDR3_comments = Please select right voltage in menuconfig! Default is 1.5V but some DIMMs need more or less!<br />
|RAM_dualchannel_status = OK<br />
|RAM_ecc_status = N/A<br />
|RAM_ecc_comments =<br />
<br />
|IDE_status = N/A<br />
|IDE_comments = <br />
|IDE_25_status = N/A<br />
|IDE_CF_status = N/A<br />
|CDROM_DVD_status = Untested<br />
|SATA_status = OK<br />
|SATA_comments = Tested only first top port on left in sixpack (from outside view).<br />
|USB_status = Untested<br />
|USB_comments = <br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = HDMI untested<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = Untested<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCIE_x1_status = OK<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = OK<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = OK<br />
|PCIE_x16_comments = <br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = Untested<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|PP_status = N/A<br />
|PP_comments = <br />
|Game_port_status = N/A<br />
|IR_status = ?<br />
|Speaker_status = ?<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|CPUfreq_comments = <br />
|Powersave_status = ?<br />
|ACPI_status = OK<br />
|ACPI_comments = ACPI power button event works, suspend untested.<br />
|Reboot_status = OK<br />
|Poweroff_status = OK<br />
|LEDs_status = Unknown<br />
|HPET_status = OK<br />
|RNG_status = ?<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = OK<br />
<br />
}}<br />
<br />
== Hardware info ==<br />
<br />
This board ships with a socketed Winbond 25Q64F, 64 Mbit (8 Mbyte) chip, in PDIP 300 mil package:<br />
<br />
{|<br />
|| [[Image:IMG_20130522_084444.jpg|thumb|Winbond 25Q64F]] <br />
|}<br />
<br />
The chip manual is available [http://www.nexflash.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/W25Q64FV.htm here]<br />
<br />
For out of band flashing, I use a<br />
<br />
3M test clip model 923739-08-ND<br />
<br />
It has .300" spacing, 8 pin DIP clip, gold finish and 'headless heads'.<br />
<br />
== Memory ==<br />
<br />
I use:<br />
<br />
2x 2GB DDR3 modules in blue slots:<br />
<br />
<pre><br />
#modprobe i2c-piix4<br />
#modprobe eeprom<br />
#decode-dimms<br />
<br />
---=== Memory Characteristics ===--- <br />
Fine time base 2.500 ps <br />
Medium time base 0.125 ns <br />
Maximum module speed 1333MHz (PC3-10666) <br />
Size 2048 MB <br />
Banks x Rows x Columns x Bits 8 x 14 x 10 x 64 <br />
Ranks 2 <br />
SDRAM Device Width 8 bits <br />
tCL-tRCD-tRP-tRAS 8-8-8-24 <br />
Supported CAS Latencies (tCL) 9T, 8T, 7T, 6T <br />
</pre></div>Wardhttps://www.coreboot.org/index.php?title=Board:asus/f2a85-m&diff=11871Board:asus/f2a85-m2013-05-22T13:19:52Z<p>Ward: </p>
<hr />
<div>== Status ==<br />
<br />
<br />
=== Notes ===<br />
<br />
* The ASUS F2A85-M CSM is same as F2A85-M.<br />
* get VGA from original bios using this:<br />
Source: http://www.coreboot.org/pipermail/coreboot/2012-December/073133.html<br />
<br />
for internal VGA:<br />
Boot the legacy BIOS, and use http://www.coreboot.org/VGA_support chapter <br />
<br />
extracting from your system: dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768<br />
<br />
You will need following patch to seabios:<br />
<code><br />
--- a/src/optionroms.c<br />
+++ b/src/optionroms.c<br />
@@ -215,7 +215,10 @@ is_pci_vga(struct pci_device *pci)<br />
{<br />
if (pci->class != PCI_CLASS_DISPLAY_VGA)<br />
return 0;<br />
- u16 cmd = pci_config_readw(pci->bdf, PCI_COMMAND);<br />
+ u16 cmd = pci_config_readw(pci->bdf, PCI_COMMAND) | PCI_COMMAND_IO | PCI_COMMAND_MEMORY;<br />
+<br />
+ pci_config_writew(pci->bdf, PCI_COMMAND, cmd);<br />
+<br />
if (!(cmd & PCI_COMMAND_IO && cmd & PCI_COMMAND_MEMORY))<br />
return 0;<br />
while (pci->parent) {<br />
</code><br />
<br />
Reason is unknown, I see coreboot is writing 7 to cmd, but there is actually <br />
6... Maybe there is some magic about IO decode bit...<br />
<br />
* Add VGA bios in the menuconfig<br />
* If you use PS/2 de-select legacy free<br />
* De-select running option ROMs, leave this to Seabios<br />
* Use seabios as payload<br />
* Hotswapping has some issues (most likely USB3, disable it in orig bios before hot-flashing to coreboot). Drop a mail to mailing list if you have issues.<br />
<br />
=== TODOs ===<br />
* test virtualization<br />
* test HDMI<br />
* update VERB tables<br />
* test suspend<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_comments = <br />
|CPU_L1_status = OK<br />
|CPU_L1_comments = <br />
|CPU_L2_status = OK<br />
|CPU_L2_comments = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = OK<br />
|CPU_multicore_status = OK<br />
|CPU_multicore_comments = <br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = OK <br />
|RAM_DDR3_comments = Please select right voltage in menuconfig! Default is 1.5V but some DIMMs need more or less!<br />
|RAM_dualchannel_status = OK<br />
|RAM_ecc_status = N/A<br />
|RAM_ecc_comments =<br />
<br />
|IDE_status = N/A<br />
|IDE_comments = <br />
|IDE_25_status = N/A<br />
|IDE_CF_status = N/A<br />
|CDROM_DVD_status = Untested<br />
|SATA_status = OK<br />
|SATA_comments = Tested only first top port on left in sixpack (from outside view).<br />
|USB_status = Untested<br />
|USB_comments = <br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = HDMI untested<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = Untested<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCIE_x1_status = OK<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = OK<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = OK<br />
|PCIE_x16_comments = <br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = Untested<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|PP_status = N/A<br />
|PP_comments = <br />
|Game_port_status = N/A<br />
|IR_status = ?<br />
|Speaker_status = ?<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|CPUfreq_comments = <br />
|Powersave_status = ?<br />
|ACPI_status = OK<br />
|ACPI_comments = ACPI power button event works, suspend untested.<br />
|Reboot_status = OK<br />
|Poweroff_status = OK<br />
|LEDs_status = Unknown<br />
|HPET_status = OK<br />
|RNG_status = ?<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = OK<br />
<br />
}}<br />
<br />
== Hardware info ==<br />
<br />
This board ships with a socketed Winbond 25Q64F, 64 Mbit (8 Mbyte) chip, in PDIP 300 mil package:<br />
<br />
{|<br />
|| [[Image:IMG_20130522_084444.jpg|thumb|Winbond 25Q64F]] <br />
|}<br />
<br />
The chip manual is available [http://www.nexflash.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/W25Q64FV.htm here]</div>Wardhttps://www.coreboot.org/index.php?title=File:IMG_20130522_084444.jpg&diff=11870File:IMG 20130522 084444.jpg2013-05-22T13:10:36Z<p>Ward: Asus F2A85-M rom chip</p>
<hr />
<div>Asus F2A85-M rom chip</div>Wardhttps://www.coreboot.org/index.php?title=User:Ward&diff=11189User:Ward2012-09-07T00:27:21Z<p>Ward: /* Ward Vandewege */</p>
<hr />
<div>=== Ward Vandewege ===<br />
<br />
I'm a (part-time) CTO for the [http://www.fsf.org Free Software Foundation]. We have a [http://www.fsf.org/campaigns/free-bios.html Campaign for a free BIOS], because a Free BIOS is essential to achieve true computing freedom.<br />
<br />
Where possible, we only buy hardware capable of running coreboot. Currently, we are standardizing on AMD-based systems: in terms of servers we have some Tyan systems and more recently we've purchased Silicon Mechanics A236 and A266 servers. We also have a bunch of Gigabyte M57SLI-S4 based machines, a few PC Engines ALIX boards, and a couple Asus M2A-VM boards.<br />
<br />
You can reach me at ward@gnu.org.</div>Wardhttps://www.coreboot.org/index.php?title=Fun_Stuff&diff=10944Fun Stuff2011-12-06T02:26:02Z<p>Ward: </p>
<hr />
<div><br />
== Failure at scale ==<br />
<br />
A BIOS gets confused in a very visible way: <br />
<br />
[[File:Billboard_bios_fail.jpeg|640px]]<br />
<br />
Photo courtesy Greg Kurtzer of LBL.<br />
<br />
<br />
== What floor am I on? ==<br />
<br />
An elevator in Spain: <br />
<br />
[[File:Elevator_spain.jpeg|640px]]<br />
<br />
Photo courtesy Gorka Guardiola<br />
<br />
== Confused payphone ==<br />
<br />
A payphone in trouble. Taken during the LinuxBIOS summit in Hamburg, Germany in October 2006. Bonus: two coreboot hackers visible in the reflection.<br />
<br />
[[File:Dscn3815.jpg|640px]]<br />
<br />
Photo by Ward Vandewege</div>Wardhttps://www.coreboot.org/index.php?title=File:Dscn3815.jpg&diff=10943File:Dscn3815.jpg2011-12-06T02:23:36Z<p>Ward: Confused payphone in Hamburg, Germany (2006)</p>
<hr />
<div>Confused payphone in Hamburg, Germany (2006)</div>Wardhttps://www.coreboot.org/index.php?title=Board:gigabyte/ma785gmt&diff=9870Board:gigabyte/ma785gmt2010-08-20T20:40:17Z<p>Ward: </p>
<hr />
<div>This board exists in 4 versions: v1.0, v1.1, v1.3 and v3.3.<br />
<br />
This documentation applies to [http://www.gigabyte.com/products/product-page.aspx?pid=3274 v1.1]. If you have a different version of the board, YMMV.<br />
<br />
==Dual BIOS==<br />
<br />
This board has a dual bios chip. Both chips are 8Mbit; the main bios is called M_BIOS, the backup bios B_BIOS. Gigabyte claims the backup bios can not be flashed by the user. It contains code that will overwrite M_BIOS if it determines that M_BIOS is corrupted.<br />
<br />
The M_BIOS chip is a [http://www.mct.net/download/macronix/mx25l8005.pdf Macronix MX25L8005].<br />
<br />
If you flash coreboot into M_BIOS and something goes wrong, you can force B_BIOS to boot and reflash M_BIOS by bridging pins 4 (GND) and 7 (#HOLD) on the M_BIOS chip, powering up the machine, and then releasing your bridge after a few seconds. The B_BIOS will take over at that point - you will hear a beep, and see the B_BIOS boot and forcibly re-flash M_BIOS.</div>Wardhttps://www.coreboot.org/index.php?title=Board:gigabyte/ma785gmt&diff=9869Board:gigabyte/ma785gmt2010-08-20T20:14:09Z<p>Ward: </p>
<hr />
<div>This board exists in 4 versions: v1.0, v1.1, v1.3 and v3.3.<br />
<br />
This documentation applies to [http://www.gigabyte.com/products/product-page.aspx?pid=3274 v1.1]. If you have a different version of the board, YMMV.<br />
<br />
==Dual BIOS==<br />
<br />
This board has a dual bios chip. Both chips are 8Mbit; the main bios is called M_BIOS, the backup bios B_BIOS. Gigabyte claims the backup bios can not be flashed by the user. It contains code that will overwrite M_BIOS if it determines that M_BIOS is corrupted.<br />
<br />
The M_BIOS chip is a [http://www.mct.net/download/macronix/mx25l8005.pdf Macronix MX25L8005].<br />
<br />
If you flash coreboot into M_BIOS and something goes wrong, you can force B_BIOS to boot and reflash M_BIOS by bridging pins 4 (GND) and 7 (#HOLD) on the M_BIOS chip, powering up the machine, and then releasing your bridge. The B_BIOS will take over at that point - you will hear a beep, and see the B_BIOS boot and forcibly re-flash M_BIOS.</div>Wardhttps://www.coreboot.org/index.php?title=Board:gigabyte/ma785gmt&diff=9868Board:gigabyte/ma785gmt2010-08-20T20:13:42Z<p>Ward: Created page with "This board exists in 4 versions: v1.0, v1.1, v1.3 and v3.3. This documentation applies to [http://www.gigabyte.com/products/product-page.aspx?pid=3274 v1.1]. If you have a diffe..."</p>
<hr />
<div>This board exists in 4 versions: v1.0, v1.1, v1.3 and v3.3.<br />
<br />
This documentation applies to [http://www.gigabyte.com/products/product-page.aspx?pid=3274 v1.1]. If you have a different version of the board, YMMV.<br />
<br />
==GA-MA785GMT-UD2H==<br />
<br />
==Dual BIOS==<br />
<br />
This board has a dual bios chip. Both chips are 8Mbit; the main bios is called M_BIOS, the backup bios B_BIOS. Gigabyte claims the backup bios can not be flashed by the user. It contains code that will overwrite M_BIOS if it determines that M_BIOS is corrupted.<br />
<br />
The M_BIOS chip is a [http://www.mct.net/download/macronix/mx25l8005.pdf Macronix MX25L8005].<br />
<br />
If you flash coreboot into M_BIOS and something goes wrong, you can force B_BIOS to boot and reflash M_BIOS by bridging pins 4 (GND) and 7 (#HOLD) on the M_BIOS chip, powering up the machine, and then releasing your bridge. The B_BIOS will take over at that point - you will hear a beep, and see the B_BIOS boot and forcibly re-flash M_BIOS.</div>Wardhttps://www.coreboot.org/index.php?title=Development_Guidelines&diff=9720Development Guidelines2010-05-21T14:33:27Z<p>Ward: /* Required Toolchain */</p>
<hr />
<div>= Development Environment =<br />
<br />
== Required Toolchain ==<br />
<br />
* GNU development environment:<br />
** [http://gcc.gnu.org/ GCC] (tested: 4.1.2 prerelease)<br />
** G++<br />
** [http://www.kernel.org/pub/linux/devel/binutils/ binutils] (tested: 2.17.50.0.5)<br />
* libncurses*-dev<br />
* Python (tested: 2.4, 2.5)<br />
* bash (tested: 3.0, 3.1)<br />
* [http://www.acpica.org/downloads/ IASL], now part of the '''ACPICA''' download (package ''pmtools'' or ''iasl'' in many distributions)<br />
* [http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml pciutils-devel/pciutils-dev] This package is called libpci-dev in Ubuntu (Intrepid Ibex and newer) and Debian (Lenny and newer).<br />
<br />
= Coding Guidelines =<br />
<br />
== General Guidelines ==<br />
<br />
* Encapsulate and isolate assembly language<br />
* Code shall not be "commented out"<br />
* No use of floating-point arithmetics<br />
* No hiding of identifiers defined in outer scopes<br />
* Typedefs are unique (device_t?)<br />
* Functions shall have prototype declarations<br />
* Local functions should be declared static<br />
* No definitions in header files<br />
* All variables are assigned before use<br />
* All objects should have fully qualified types (''unsigned int'' instead of ''unsigned'')<br />
* We suggest trying to import more such rules, such as additional ones described in [http://www.misra.org.uk/index.htm MISRA-C 2004] (''Guidelines for the use of C in critical systems'')<br />
<br />
== Comments ==<br />
<br />
=== References ===<br />
<br />
If you are referencing a data sheet or other documentation in the code, please add the name or document number in addition to the URL. Vendors just ''love'' to rearrange their websites (and some remove documentation on their old products altogether)! If we have the name/number (or even just the filename of the PDF) at least there's a chance to google for it again (either on the vendor's site or on some archive).<br />
<br />
== Coding Style ==<br />
<br />
* We use the [http://lxr.linux.no/source/Documentation/CodingStyle Linux kernel coding style] for coreboot.<br />
* You can use the 'indent' tool to fix the coding style like this:<br />
indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs *.[ch]<br />
:Do not trust 'indent' blindly, though. It sometimes gets things wrong. Manual corrections may be required.<br />
<br />
= Documentation Guidelines =<br />
<br />
== General Guidelines and Tips ==<br />
<br />
* Documentation should be put into the wiki and/or in the code as Doxygen comments<br />
* Avoid using different styles and looks of documentation<br />
* Document ''what'', not ''how'' (No comments like ''// add one to i'')<br />
* Document assumptions, stipulations etc...<br />
* Document design and concepts!<br />
* Not lots of documentation but good documentation<br />
* Structured documentation<br />
* Focus: Whom are you addressing in your documentation? Write documentation for users, developers, vendors, ...<br />
<br />
== Automatic documentation ==<br />
<br />
* Doxygen-generated API- and code documentation is available at http://qa.coreboot.org/docs/. This documentation is updated on every 10th checkin.<br />
* To create a Doxygen comment, write<br />
/**<br />
* Sample comment.<br />
*/<br />
:or<br />
/** Sample comment. */<br />
* There are a few commands that describe what kind of comment you are adding:<br />
::@param &mdash; input parameters of a function<br />
::@return &mdash; return value of a function<br />
* A list of all commands is available at http://www.stack.nl/~dimitri/doxygen/commands.html<br />
<br />
Full example:<br />
<br />
/**<br />
* Calculate the length of a string.<br />
*<br />
* @param str The input string.<br />
* @return The length of the string, not including the final NUL character.<br />
*/<br />
static inline size_t strlen(const char *str)<br />
{<br />
/* ... */<br />
}<br />
<br />
= Testing =<br />
<br />
Every commit will be processed by the autobuild and autotest system available at http://qa.coreboot.org/. In addition please run autobuild yourself before submitting <br />
patches.<br />
<br />
== autobuild ==<br />
<br />
Autobuild can be found at [http://tracker.coreboot.org/trac/coreboot/browser/trunk/util/abuild/abuild coreboot/util/abuild]. <br />
<br />
Please run ''abuild'' '''before''' you commit. <br />
<br />
Autobuild is also running on every check-in to the repository and sending result mails to the coreboot [[Mailinglist|mailing list]]. The results of this build are also available at http://qa.coreboot.org/ in the ''build'' section of each revision.<br />
<br />
== autotest ==<br />
<br />
Each revision is also tested with an automated test system: http://qa.coreboot.org/overview.php?tested=1. If you developed coreboot for a certain mainboard or wish to help improving coreboot's quality by running the testsuite on one of your mainboards, please contact [mailto:info@coresystems.de info@coresystems.de].<br />
<br />
= How to contribute =<br />
<br />
== Creating Patches ==<br />
<br />
* '''Always use a checkout of the latest svn revision of the code'''. Patches that do not apply on the latest svn revision will be rejected!<br />
* Make sure all new and modified files contain the [[Development Guidelines#Common_License_Header|proper license headers]] (see below).<br />
* If your patch is supposed to add new files, please add them to your local repository before creating a diff. Use<br />
svn add path/to/file<br />
* Create your patches by executing the following command in the top-level coreboot directory:<br />
svn diff > ~/some_descriptive_name.patch<br />
* Open the patch in a text-editor and double-check that your changes are correct, and that the patch only contains what you think it contains.<br />
<br />
== Testing your Patch ==<br />
<br />
Patches can be tested against your clean local repository by using the '''patch''' command. Just copy your new patch file to the top-level directory of your clean local repository and issue this command:<br />
<br />
patch -p0 < filename.patch<br />
<br />
== Sign-off Procedure ==<br />
<br />
We employ a similar sign-off procedure for coreboot <br />
[http://web.archive.org/web/20070306195036/http://osdlab.org/newsroom/press_releases/2004/2004_05_24_dco.html as the Linux developers] do.<br />
Please add a note such as<br />
Signed-off-by: Random J Developer <random@developer.example.org><br />
to your email/patch if you agree with the following Developer's Certificate of Origin 1.1.<br />
<br />
Patches without a Signed-off-by cannot be committed!<br />
<br />
<span style="color:red">You have to use your real name in the Signed-off-by line and in any copyright notices you add.</span> Patches without an associated real name cannot be committed!<br />
<br />
'''Developer's Certificate of Origin 1.1:'''<br />
<br />
By making a contribution to this project, I certify that:<br /><br />
(a) The contribution was created in whole or in part by me and I have<br />
the right to submit it under the open source license indicated in the file; or<br /><br />
(b) The contribution is based upon previous work that, to the best of my<br />
knowledge, is covered under an appropriate open source license and I have the<br />
right under that license to submit that work with modifications, whether created<br />
in whole or in part by me, under the same open source license (unless I am<br />
permitted to submit under a different license), as indicated in the file; or<br /><br />
(c) The contribution was provided directly to me by some other person who<br />
certified (a), (b) or (c) and I have not modified it; and<br /><br />
(d) In the case of each of (a), (b), or (c), I understand and agree that<br />
this project and the contribution are public and that a record of the contribution<br />
(including all personal information I submit with it, including my sign-off) is<br />
maintained indefinitely and may be redistributed consistent with this project or the<br />
open source license indicated in the file.<br />
<br />
<small>Note: The [http://web.archive.org/web/20070306195036/http://osdlab.org/newsroom/press_releases/2004/2004_05_24_dco.html Developer's Certificate of Origin 1.1] is licensed under the terms of the [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5 License].</small><br />
<br />
== Reviews ==<br />
<br />
* Send your patch to the [[Mailinglist|mailing list]] for review. Changes that impact a lot of code should also be documented in the [http://tracker.coreboot.org/trac/coreboot/ issue tracker].<br />
** Start the email with a detailed description of what the patch does and why. This text will usually end up in the commit logs so don't clutter it with useless stuff which should not go into the commit message.<br />
** Add a single line containing your "[[Development Guidelines#Sign-off_Procedure|sign-off]]" after the description of the patch.<br />
*** Example: ''Signed-off-by: John Doe <john@example.com>''<br />
** Add a single line which only contains "---". Everything which comes after that line will not be included in the commit message.<br />
* The developers on the mailing list will review and/or test your patch and send comments or suggestions. Please post updated patches to the mailing list again.<br />
* If the patch looks ok to one or more developers, they will reply to your mail with an Acked-by: line.<br />
** Example: ''Acked-by: John Doe <john@example.com>''<br />
* Every non-trivial patch must get at least one Acked-by: by another developer before it can be commited.<br />
** Exception: if you are fixing '''trivial''' things like a typo in a comment, you may specify your own name and email address in the Acked-by: field, and add the word "trivial" in the commit description (in '''addition''' to the commit description).<br />
<br />
== Repository Commits ==<br />
<br />
Commits to the coreboot subversion repository have to be done with a commit comment. This may be short, but descriptive:<br />
<br />
* If anyone involved in coreboot reads your comment in a year, she/he shall still be able to understand what your commit is about, without analyzing the code.<br />
* Double-check that you're really committing what you think you are, e.g. by typing the following in the top-level coreboot directory:<br />
svn diff | less<br />
* Include the following information in the svn commit message:<br />
** The description from the email containing the patch.<br />
** All Signed-off-by: and Acked-by: lines your patch received.<br />
** Reference or close bugs which are fixed by the commit, or are related to it. See [[Development Guidelines#How_to_close_Trac_issues_automatically_via_email|below]] for details.<br />
<br />
= Bug-Tracker =<br />
<br />
== Where is the coreboot bug tracker? ==<br />
<br />
It is available at http://tracker.coreboot.org/. Log in with your svn username and password if you have one.<br />
<br />
== Why do we use a bug tracker? ==<br />
<br />
We want a standardized interface for keeping track of open issues. The [[Mailinglist|mailing list]] is fine for discussion, but long standing issues, plans, goals, milestones can not be tracked there in a sufficient manner. There is no means of quality control via the mailing list. <br />
<br />
Therefore changes that impact a lot of code '''must''' be documented in the bug tracker. Also, please document bugs in the tracker.<br />
<br />
== How can I close Trac issues automatically via svn commits? ==<br />
<br />
It searches commit messages for text in the form of:<br />
* command #1<br />
* command #1, #2<br />
* command #1 & #2<br />
* command #1 and #2<br /><br />
<br />
You can have more then one command in a message. The following commands<br />
are supported. There is more then one spelling for each command, to make<br />
this as user-friendly as possible.<br /><br />
* closes, fixes<br />
The specified issue numbers are closed with the contents of this<br />
commit message being added to it.<br />
* references, refs, addresses, re <br />
The specified issue numbers are left in their current status, but<br />
the contents of this commit message are added to their notes.<br /><br />
A fairly complicated example of what you can do is with a commit message of:<br /><br />
Changed blah and foo to do this or that. Fixes #10 and #12, and refs #12.<br /><br />
This will close #10 and #12, and add a note to #12.<br />
<br />
= License Issues =<br />
<br />
* Contributed code must be GPL'd (preferrably 'GPLv2 or any later version', but 'GPLv2' is fine, too). At the very minimum the code must have a GPL-compatible license.<br />
<br />
== Common License Header ==<br />
<br />
Please quote the full GPL license header text in every file, as shown below. It should contain:<br />
<br />
* The '''year(s)''' when the code was written or modified and a '''copyright note''' of you (or your company, if you are contributing as part of your employment, and thus the copyright belongs to your company). Also, please provide an '''email address''' so that you can be contacted if questions arise.<br />
** Example:<br />
::''Copyright (C) 2006 John Doe <john@example.com>''<br />
::''Copyright (C) 2004-2006 Company, Inc.''<br />
* An extra line which lists the '''author of the code, if the copyright holder is not the same as the author''' (e.g. if you work for a company and the company owns the copyright).<br />
** Example:<br />
::''Copyright (C) 2004-2006 Company, Inc.''<br />
::''(Written by Janet Doe <janet@example.com> for Company, Inc.)''<br />
* The full '''GPL header''' as shown below.<br />
<br />
'''Complete example for *.c and *.h files:'''<br />
<br />
/*<br />
* This file is part of the coreboot project.<br />
*<br />
* Copyright (C) 2003-2005 John Doe <john@example.com><br />
* Copyright (C) 2005 Jane Doe <jane@example.com><br />
* Copyright (C) 2006 Company, Inc.<br />
* (Written by Janet Doe <janet@example.com> for Company, Inc.)<br />
* Copyright (C) 2007 Joe Doe <joe@example.com><br />
*<br />
* This program is free software; you can redistribute it and/or modify<br />
* it under the terms of the GNU General Public License as published by<br />
* the Free Software Foundation; either version 2 of the License, or<br />
* (at your option) any later version.<br />
*<br />
* This program is distributed in the hope that it will be useful,<br />
* but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
* GNU General Public License for more details.<br />
*<br />
* You should have received a copy of the GNU General Public License<br />
* along with this program; if not, write to the Free Software<br />
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA<br />
*/<br />
<br />
'''Complete example for Makefiles, config files, Python files, shell scripts etc.:'''<br />
<br />
##<br />
## This file is part of the coreboot project.<br />
##<br />
## Copyright (C) 2003-2005 John Doe <john@example.com><br />
## Copyright (C) 2005 Jane Doe <jane@example.com><br />
## Copyright (C) 2006 Company, Inc.<br />
## (Written by Janet Doe <janet@example.com> for Company, Inc.)<br />
## Copyright (C) 2007 Joe Doe <joe@example.com><br />
##<br />
## This program is free software; you can redistribute it and/or modify<br />
## it under the terms of the GNU General Public License as published by<br />
## the Free Software Foundation; either version 2 of the License, or<br />
## (at your option) any later version.<br />
##<br />
## This program is distributed in the hope that it will be useful,<br />
## but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
## GNU General Public License for more details.<br />
##<br />
## You should have received a copy of the GNU General Public License<br />
## along with this program; if not, write to the Free Software<br />
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA<br />
##</div>Wardhttps://www.coreboot.org/index.php?title=Development_Guidelines&diff=9719Development Guidelines2010-05-21T14:31:24Z<p>Ward: /* Required Toolchain */</p>
<hr />
<div>= Development Environment =<br />
<br />
== Required Toolchain ==<br />
<br />
* GNU development environment:<br />
** [http://gcc.gnu.org/ GCC] (tested: 4.1.2 prerelease)<br />
** G++<br />
** [http://www.kernel.org/pub/linux/devel/binutils/ binutils] (tested: 2.17.50.0.5)<br />
* libncurses*-dev<br />
* Python (tested: 2.4, 2.5)<br />
* bash (tested: 3.0, 3.1)<br />
* [http://www.acpica.org/downloads/ IASL], now part of the '''ACPICA''' download (package ''pmtools'' or ''iasl'' in many distributions)<br />
* [http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml pciutils-devel/pciutils-dev] This package is called libpci-dev in Ubuntu (Intrepid Ibex and newer).<br />
<br />
= Coding Guidelines =<br />
<br />
== General Guidelines ==<br />
<br />
* Encapsulate and isolate assembly language<br />
* Code shall not be "commented out"<br />
* No use of floating-point arithmetics<br />
* No hiding of identifiers defined in outer scopes<br />
* Typedefs are unique (device_t?)<br />
* Functions shall have prototype declarations<br />
* Local functions should be declared static<br />
* No definitions in header files<br />
* All variables are assigned before use<br />
* All objects should have fully qualified types (''unsigned int'' instead of ''unsigned'')<br />
* We suggest trying to import more such rules, such as additional ones described in [http://www.misra.org.uk/index.htm MISRA-C 2004] (''Guidelines for the use of C in critical systems'')<br />
<br />
== Comments ==<br />
<br />
=== References ===<br />
<br />
If you are referencing a data sheet or other documentation in the code, please add the name or document number in addition to the URL. Vendors just ''love'' to rearrange their websites (and some remove documentation on their old products altogether)! If we have the name/number (or even just the filename of the PDF) at least there's a chance to google for it again (either on the vendor's site or on some archive).<br />
<br />
== Coding Style ==<br />
<br />
* We use the [http://lxr.linux.no/source/Documentation/CodingStyle Linux kernel coding style] for coreboot.<br />
* You can use the 'indent' tool to fix the coding style like this:<br />
indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs *.[ch]<br />
:Do not trust 'indent' blindly, though. It sometimes gets things wrong. Manual corrections may be required.<br />
<br />
= Documentation Guidelines =<br />
<br />
== General Guidelines and Tips ==<br />
<br />
* Documentation should be put into the wiki and/or in the code as Doxygen comments<br />
* Avoid using different styles and looks of documentation<br />
* Document ''what'', not ''how'' (No comments like ''// add one to i'')<br />
* Document assumptions, stipulations etc...<br />
* Document design and concepts!<br />
* Not lots of documentation but good documentation<br />
* Structured documentation<br />
* Focus: Whom are you addressing in your documentation? Write documentation for users, developers, vendors, ...<br />
<br />
== Automatic documentation ==<br />
<br />
* Doxygen-generated API- and code documentation is available at http://qa.coreboot.org/docs/. This documentation is updated on every 10th checkin.<br />
* To create a Doxygen comment, write<br />
/**<br />
* Sample comment.<br />
*/<br />
:or<br />
/** Sample comment. */<br />
* There are a few commands that describe what kind of comment you are adding:<br />
::@param &mdash; input parameters of a function<br />
::@return &mdash; return value of a function<br />
* A list of all commands is available at http://www.stack.nl/~dimitri/doxygen/commands.html<br />
<br />
Full example:<br />
<br />
/**<br />
* Calculate the length of a string.<br />
*<br />
* @param str The input string.<br />
* @return The length of the string, not including the final NUL character.<br />
*/<br />
static inline size_t strlen(const char *str)<br />
{<br />
/* ... */<br />
}<br />
<br />
= Testing =<br />
<br />
Every commit will be processed by the autobuild and autotest system available at http://qa.coreboot.org/. In addition please run autobuild yourself before submitting <br />
patches.<br />
<br />
== autobuild ==<br />
<br />
Autobuild can be found at [http://tracker.coreboot.org/trac/coreboot/browser/trunk/util/abuild/abuild coreboot/util/abuild]. <br />
<br />
Please run ''abuild'' '''before''' you commit. <br />
<br />
Autobuild is also running on every check-in to the repository and sending result mails to the coreboot [[Mailinglist|mailing list]]. The results of this build are also available at http://qa.coreboot.org/ in the ''build'' section of each revision.<br />
<br />
== autotest ==<br />
<br />
Each revision is also tested with an automated test system: http://qa.coreboot.org/overview.php?tested=1. If you developed coreboot for a certain mainboard or wish to help improving coreboot's quality by running the testsuite on one of your mainboards, please contact [mailto:info@coresystems.de info@coresystems.de].<br />
<br />
= How to contribute =<br />
<br />
== Creating Patches ==<br />
<br />
* '''Always use a checkout of the latest svn revision of the code'''. Patches that do not apply on the latest svn revision will be rejected!<br />
* Make sure all new and modified files contain the [[Development Guidelines#Common_License_Header|proper license headers]] (see below).<br />
* If your patch is supposed to add new files, please add them to your local repository before creating a diff. Use<br />
svn add path/to/file<br />
* Create your patches by executing the following command in the top-level coreboot directory:<br />
svn diff > ~/some_descriptive_name.patch<br />
* Open the patch in a text-editor and double-check that your changes are correct, and that the patch only contains what you think it contains.<br />
<br />
== Testing your Patch ==<br />
<br />
Patches can be tested against your clean local repository by using the '''patch''' command. Just copy your new patch file to the top-level directory of your clean local repository and issue this command:<br />
<br />
patch -p0 < filename.patch<br />
<br />
== Sign-off Procedure ==<br />
<br />
We employ a similar sign-off procedure for coreboot <br />
[http://web.archive.org/web/20070306195036/http://osdlab.org/newsroom/press_releases/2004/2004_05_24_dco.html as the Linux developers] do.<br />
Please add a note such as<br />
Signed-off-by: Random J Developer <random@developer.example.org><br />
to your email/patch if you agree with the following Developer's Certificate of Origin 1.1.<br />
<br />
Patches without a Signed-off-by cannot be committed!<br />
<br />
<span style="color:red">You have to use your real name in the Signed-off-by line and in any copyright notices you add.</span> Patches without an associated real name cannot be committed!<br />
<br />
'''Developer's Certificate of Origin 1.1:'''<br />
<br />
By making a contribution to this project, I certify that:<br /><br />
(a) The contribution was created in whole or in part by me and I have<br />
the right to submit it under the open source license indicated in the file; or<br /><br />
(b) The contribution is based upon previous work that, to the best of my<br />
knowledge, is covered under an appropriate open source license and I have the<br />
right under that license to submit that work with modifications, whether created<br />
in whole or in part by me, under the same open source license (unless I am<br />
permitted to submit under a different license), as indicated in the file; or<br /><br />
(c) The contribution was provided directly to me by some other person who<br />
certified (a), (b) or (c) and I have not modified it; and<br /><br />
(d) In the case of each of (a), (b), or (c), I understand and agree that<br />
this project and the contribution are public and that a record of the contribution<br />
(including all personal information I submit with it, including my sign-off) is<br />
maintained indefinitely and may be redistributed consistent with this project or the<br />
open source license indicated in the file.<br />
<br />
<small>Note: The [http://web.archive.org/web/20070306195036/http://osdlab.org/newsroom/press_releases/2004/2004_05_24_dco.html Developer's Certificate of Origin 1.1] is licensed under the terms of the [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5 License].</small><br />
<br />
== Reviews ==<br />
<br />
* Send your patch to the [[Mailinglist|mailing list]] for review. Changes that impact a lot of code should also be documented in the [http://tracker.coreboot.org/trac/coreboot/ issue tracker].<br />
** Start the email with a detailed description of what the patch does and why. This text will usually end up in the commit logs so don't clutter it with useless stuff which should not go into the commit message.<br />
** Add a single line containing your "[[Development Guidelines#Sign-off_Procedure|sign-off]]" after the description of the patch.<br />
*** Example: ''Signed-off-by: John Doe <john@example.com>''<br />
** Add a single line which only contains "---". Everything which comes after that line will not be included in the commit message.<br />
* The developers on the mailing list will review and/or test your patch and send comments or suggestions. Please post updated patches to the mailing list again.<br />
* If the patch looks ok to one or more developers, they will reply to your mail with an Acked-by: line.<br />
** Example: ''Acked-by: John Doe <john@example.com>''<br />
* Every non-trivial patch must get at least one Acked-by: by another developer before it can be commited.<br />
** Exception: if you are fixing '''trivial''' things like a typo in a comment, you may specify your own name and email address in the Acked-by: field, and add the word "trivial" in the commit description (in '''addition''' to the commit description).<br />
<br />
== Repository Commits ==<br />
<br />
Commits to the coreboot subversion repository have to be done with a commit comment. This may be short, but descriptive:<br />
<br />
* If anyone involved in coreboot reads your comment in a year, she/he shall still be able to understand what your commit is about, without analyzing the code.<br />
* Double-check that you're really committing what you think you are, e.g. by typing the following in the top-level coreboot directory:<br />
svn diff | less<br />
* Include the following information in the svn commit message:<br />
** The description from the email containing the patch.<br />
** All Signed-off-by: and Acked-by: lines your patch received.<br />
** Reference or close bugs which are fixed by the commit, or are related to it. See [[Development Guidelines#How_to_close_Trac_issues_automatically_via_email|below]] for details.<br />
<br />
= Bug-Tracker =<br />
<br />
== Where is the coreboot bug tracker? ==<br />
<br />
It is available at http://tracker.coreboot.org/. Log in with your svn username and password if you have one.<br />
<br />
== Why do we use a bug tracker? ==<br />
<br />
We want a standardized interface for keeping track of open issues. The [[Mailinglist|mailing list]] is fine for discussion, but long standing issues, plans, goals, milestones can not be tracked there in a sufficient manner. There is no means of quality control via the mailing list. <br />
<br />
Therefore changes that impact a lot of code '''must''' be documented in the bug tracker. Also, please document bugs in the tracker.<br />
<br />
== How can I close Trac issues automatically via svn commits? ==<br />
<br />
It searches commit messages for text in the form of:<br />
* command #1<br />
* command #1, #2<br />
* command #1 & #2<br />
* command #1 and #2<br /><br />
<br />
You can have more then one command in a message. The following commands<br />
are supported. There is more then one spelling for each command, to make<br />
this as user-friendly as possible.<br /><br />
* closes, fixes<br />
The specified issue numbers are closed with the contents of this<br />
commit message being added to it.<br />
* references, refs, addresses, re <br />
The specified issue numbers are left in their current status, but<br />
the contents of this commit message are added to their notes.<br /><br />
A fairly complicated example of what you can do is with a commit message of:<br /><br />
Changed blah and foo to do this or that. Fixes #10 and #12, and refs #12.<br /><br />
This will close #10 and #12, and add a note to #12.<br />
<br />
= License Issues =<br />
<br />
* Contributed code must be GPL'd (preferrably 'GPLv2 or any later version', but 'GPLv2' is fine, too). At the very minimum the code must have a GPL-compatible license.<br />
<br />
== Common License Header ==<br />
<br />
Please quote the full GPL license header text in every file, as shown below. It should contain:<br />
<br />
* The '''year(s)''' when the code was written or modified and a '''copyright note''' of you (or your company, if you are contributing as part of your employment, and thus the copyright belongs to your company). Also, please provide an '''email address''' so that you can be contacted if questions arise.<br />
** Example:<br />
::''Copyright (C) 2006 John Doe <john@example.com>''<br />
::''Copyright (C) 2004-2006 Company, Inc.''<br />
* An extra line which lists the '''author of the code, if the copyright holder is not the same as the author''' (e.g. if you work for a company and the company owns the copyright).<br />
** Example:<br />
::''Copyright (C) 2004-2006 Company, Inc.''<br />
::''(Written by Janet Doe <janet@example.com> for Company, Inc.)''<br />
* The full '''GPL header''' as shown below.<br />
<br />
'''Complete example for *.c and *.h files:'''<br />
<br />
/*<br />
* This file is part of the coreboot project.<br />
*<br />
* Copyright (C) 2003-2005 John Doe <john@example.com><br />
* Copyright (C) 2005 Jane Doe <jane@example.com><br />
* Copyright (C) 2006 Company, Inc.<br />
* (Written by Janet Doe <janet@example.com> for Company, Inc.)<br />
* Copyright (C) 2007 Joe Doe <joe@example.com><br />
*<br />
* This program is free software; you can redistribute it and/or modify<br />
* it under the terms of the GNU General Public License as published by<br />
* the Free Software Foundation; either version 2 of the License, or<br />
* (at your option) any later version.<br />
*<br />
* This program is distributed in the hope that it will be useful,<br />
* but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
* GNU General Public License for more details.<br />
*<br />
* You should have received a copy of the GNU General Public License<br />
* along with this program; if not, write to the Free Software<br />
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA<br />
*/<br />
<br />
'''Complete example for Makefiles, config files, Python files, shell scripts etc.:'''<br />
<br />
##<br />
## This file is part of the coreboot project.<br />
##<br />
## Copyright (C) 2003-2005 John Doe <john@example.com><br />
## Copyright (C) 2005 Jane Doe <jane@example.com><br />
## Copyright (C) 2006 Company, Inc.<br />
## (Written by Janet Doe <janet@example.com> for Company, Inc.)<br />
## Copyright (C) 2007 Joe Doe <joe@example.com><br />
##<br />
## This program is free software; you can redistribute it and/or modify<br />
## it under the terms of the GNU General Public License as published by<br />
## the Free Software Foundation; either version 2 of the License, or<br />
## (at your option) any later version.<br />
##<br />
## This program is distributed in the hope that it will be useful,<br />
## but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
## GNU General Public License for more details.<br />
##<br />
## You should have received a copy of the GNU General Public License<br />
## along with this program; if not, write to the Free Software<br />
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA<br />
##</div>Wardhttps://www.coreboot.org/index.php?title=FlexyICE&diff=9512FlexyICE2010-04-17T19:23:19Z<p>Ward: /* Booting SPI boards */ add potential SPI testclip</p>
<hr />
<div>[[Image:artec_dongle.jpg|thumb|right|Artec Group FlexyICE <br/>(version 1).]]<br />
<br />
== About the FlexyICE ==<br />
<br />
The FlexyICE (formerly known as LPC dongle) is made by [http://www.artecgroup.com/products/hardware-products/programmable-lpc-dongle.html Artec Group], based in Estonia. It costs about EUR 160 (2009-11).<br />
<br />
The FlexyICE connects to a computer via USB. It connects to the target via an LPC header. <br />
<br />
The FlexyICE comes with [http://opencores.org/projects.cgi/web/usb_dongle_fpga/overview free software and full schematics] (scroll all the way to the bottom for download links, or click on the CVS: browse link near the top). The host-based software is written in Python, and works just fine under GNU/Linux. <br />
<br />
The FlexyICE has 16 MByte of onboard memory, divided in 4 banks of 4 Mbyte each. The 'mode-selection' jumpers allow selection of each bank: 00, 01, 10, 11.<br />
<br />
The dongle also has two 16-segment LED displays that can show POST codes.<br />
<br />
If you hold the reset button on the dongle, the second LED will show the version of the VHDL you have - currently 03, 04 or 05.<br />
<br />
Artec Group provides [http://opencores.org/cvsweb.shtml/usb_dongle_fpga/release/EPCS_update_tool.zip a tool] to upgrade the VHDL on the dongle that can be run under GNU/Linux (it's a python program). They also provide the binary image for the v5 of the VHDL. Of course all sources are available to build that binary image, but currently proprietary software on Windows is needed to do so. You will need a byteblaster-II cable (which can be purchased at http://www.customcircuitsolutions.com/cable.html or http://fpgaguy.110mb.com/, for instance). This tool has only received limited testing, so please be careful and report any problems to the author.<br />
<br />
== Using the FlexyICE ==<br />
=== Drivers for Windows and Mac OS ===<br />
The FlexyICE can be accessed using its usb-to-serial chip (FT245B(M)). For Windows and Mac OS, you need a driver for the chip, which can be found at the [http://www.ftdichip.com/Drivers/VCP.htm chip vendor's website].<br />
<br />
=== Reading from and writing to the FlexyICE ===<br />
<br />
If you use Ubuntu, make sure to uninstall brltty (apt-get remove brltty --purge) before you hook up the FlexyICE; otherwise it will hijack the FlexyICE and you won't be able to talk to it. Brltty is a software braille terminal.<br />
<br />
Images are downloaded via USB. With the latest version of the VHDL (v5), it should take about 8 seconds to write a 512KByte image to the FlexyICE.<br />
<br />
Here's a command that writes a 512KByte image to the FlexyICE<br />
<br />
./dongle.py -v -c /dev/ttyUSB0 alix0-1.bin 3584K<br />
<br />
The -v parameter makes the command verbose. -c /dev/ttyUSB0 means 'use device /dev/ttyS0'. Alix0-1.bin is the image that is to be written to the FlexyICE (it's a 512KByte file), and 3584K is the offset at which it should be written. Always calculate that number as 4Mbyte - size of your image.<br />
<br />
And here's how you can read the image back:<br />
<br />
./dongle.py -c /dev/ttyUSB0 -r 3670016 512K test2.rom <br />
<br />
The -r parameter indicates 'read', and 3670016 is the offset at which the program should start reading (this is 3584K), for 512K bytes. You can express the offset in decimal (like in this example, in hex with a leading 0x, or in abbreviated decimal - for instance 3584K). Test2.rom is the file the image will be stored in on your computer.<br />
<br />
If you actually wrote and read an image, you should now md5sum both files to make sure they are identical.<br />
<br />
== Adapters and Cables ==<br />
<br />
=== Booting an ALIX.1C ===<br />
<br />
First of all, you'll need to make a custom cable. The ALIX.1C has a 20-pin header (J16) that can be used to hook up the FlexyICE. The pin layout is documented on page 13 and 14 in the [http://pcengines.ch/pdf/alix1c.pdf ALIX.1C manual]:<br />
<br />
<pre><br />
1 LCLK0 LPC clock (33 MHz)<br />
2 GND ground<br />
3 LAD0 LPC data 0<br />
4 GND ground<br />
5 LAD1 LPC data 1<br />
6 GND ground<br />
7 LAD2 LPC data 2<br />
8 GND ground<br />
9 LAD3 LPC data 3<br />
10 GND ground<br />
11 LFRAME# LPC frame<br />
12 GND ground<br />
13 PCIRST# reset (active low)<br />
14 NC reserved<br />
15 ISP high to use LPC flash, low to use on-board flash, pulled low by resistor<br />
16 VCC +5V supply<br />
17 GND ground<br />
18 V3 +3.3V supply<br />
19 SERIRQ serial interrupt<br />
20 LDRQ# LPC DMA request<br />
</pre><br />
<br />
The Artec Group FlexyICE has a 10-pin LPC connector that is described [http://www.artecgroup.com/downloads/task,doc_download/gid,5/Itemid,33/ in the schematics]. This is the pin layout:<br />
<br />
<pre><br />
1 RESETX<br />
2 LAD0<br />
3 LAD1<br />
4 LAD2<br />
5 LAD3<br />
6 LFRAME#<br />
7 R33 GND<br />
8 PCICLK1<br />
9 GND<br />
10 VCC 3V in<br />
</pre><br />
<br />
Peter Stuge figured out the correct wiring [http://www.coreboot.org/pipermail/coreboot/2007-December/028011.html here] and [http://www.coreboot.org/pipermail/coreboot/2007-December/028012.html here]. This is the wiring diagram:<br />
<br />
<pre><br />
FlexyICE - ALIX.1C<br />
<br />
1 - 13<br />
2 - 3<br />
3 - 5<br />
4 - 7<br />
5 - 9<br />
6 - 11<br />
7 - NC<br />
8 - 1<br />
9 - 2/4/6/8/10/12/17 (just pick one)<br />
10 - NC<br />
- 15 connected to 18<br />
</pre><br />
<br />
In the above, pin 7 on the FlexyICE should not be connected to anything on the ALIX.1C. Pin 9 on the FlexyICE should be connected to one of 2/4/6/8/10/12/17 on the ALIX.1C, not all of those pins. Pin 15 and 18 on the ALIX.1C side need to be shorted, but not connected to anything on the FlexyICE side.<br />
<br />
Cable length is important - your cable should not be more than a few centimeter long.<br />
<br />
The easiest way to make such a cable is to take an old floppy or IDE-40 flat ribbon cable (don't use IDE-80, its wires are much thinner which makes things harder), cut it, and put a 10-pin header on the FlexyICE side.<br />
<br />
If you are in the US, you can buy 10-pin headers [https://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&storeId=10001&catalogId=10001&pa=32492&productId=32492 here] (Jameco part number 32492). You might also want to get [https://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&storeId=10001&catalogId=10001&pa=73252&productId=73252 a crimping tool] (Jameco part number 73252).<br />
<br />
This is what a finished cable looks like:<br />
<br />
[[Image:Dscn3151_640_480.jpg||Custom ALIX.1C to FlexyICE cable]]<br />
<br />
You can test your cable by booting the ALIX.1C, and then hooking it up to the FlexyICE (using J16 on the ALIX.1C, of course). Now reboot the ALIX.1C board; the LEDs on the FlexyICE should show post codes as the ALIX.1C shuts down and tries to boot. Unless you've prepared the FlexyICE and stored an image into it, the ALIX.1C will not boot. But if you see POST codes on the LEDs, your cable is likely to be good. If not, use a multimeter and make sure it matches the layout above. Also make sure that it is not too long.<br />
<br />
Now make sure the FlexyICE is correctly configured:<br />
<br />
Jump pin 1/2 on J1. Make sure JMP4 is set to position 1/2 (i.e. NOT to the pins marked as LPC). Make sure that you leave the mode select jumpers in the same position between the writing of the image into the FlexyICE and trying to boot off it.<br />
<br />
Now write your image to the top of the memory bank you want to use (see higher). Then <i>disconnect the FlexyICE from your computer</i>, reconnect it, make sure that you have your cable connected to the LPC port on the FlexyICE and J16 on the ALIX.1C, and plug in power to the ALIX.1C. Also hook up a serial port to the ALIX.1C so that you see what happens during boot. If all goes well, you will see post codes on the FlexyICE LEDs as the ALIX.1C boots.<br />
<br />
=== Booting FWH PLCC boards ===<br />
<br />
It is also possible to boot FWH PLCC boards, if you make a special cable. For an example of such a cable, see some photos here: http://www.artecdesign.ee/~martr/dongle-fwh-plcc-cable/. TODO: we need to find a place to buy such a connector, and we need to document the pinout of the cable.<br />
<br />
=== Booting SPI boards ===<br />
<br />
With a VHDL change and the proper cable, it should be possible to use the FlexyICE to boot SPI-based boards. Artec is considering this as a planned feature for [http://www.opencores.org/projects.cgi/web/artec_dongle_ii_fpga/overview FlexyICE II] VHDL - when that is done, interested parties can try to backport the relevant open source VHDL parts.<br />
<br />
An SPI adapter would also be needed. This might be a good candidate: [http://www.dediprog.com/SPI-flash-in-circuit-programming/ISP-Testclip-SO8 ISP Testclip SO8]<br />
<br />
<br />
{{GPL}}</div>Wardhttps://www.coreboot.org/index.php?title=Welcome_to_coreboot&diff=9151Welcome to coreboot2009-11-14T00:57:55Z<p>Ward: </p>
<hr />
<div><table width="100%" valign="top"><tr valign="top"><td width="80%"><br />
<br />
<div style="margin-top:0.5em; margin-bottom:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#efefff; align:right; border:1px solid #aabbcc;"><br />
'''coreboot''' (formerly known as LinuxBIOS) is a Free Software project aimed at replacing the proprietary BIOS (firmware) you can find in most of today's computers. It performs just a little bit of hardware initialization and then executes a so-called [[Payloads|payload]].<br />
<br />
We currently support '''[[Supported Motherboards|212]]''' different mainboards.<br />
<br />
</div><br />
<br />
{| cellspacing=0 cellpadding=8 border=0 margin=0 padding=0 align="top" width=100%<br />
|-<br />
|style="vertical-align:top"|<br />
<br />
{{Box|<br />
BORDER = #8898bf|<br />
BACKGROUND = yellow|<br />
WIDTH = 100%|<br />
ICON = <small>[[Benefits|More...]]</small>|<br />
HEADING = <span style="font-variant:small-caps; font-size:120%">[[Benefits]]</span>|<br />
CONTENT =<br />
<small><br />
* 100% Free Software (GPL), no royalties, no license fees!<br />
* Fast boot times (3 seconds to Linux console)<br />
<!-- * Avoids the need for a slow/buggy/proprietary BIOS --><br />
<!-- * Runs in 32-Bit protected mode almost from the start --><br />
<!-- * Written in C, contains virtually no assembly code --><br />
* Supports many [[Supported Motherboards|mainboards]], [[Supported Chipsets and Devices|chipsets]], and [[payloads]]<br />
<!-- * Further features: netboot, serial console, remote flashing, ... --><br />
</small><br />
}}<br />
<br />
|style="vertical-align:top"|<br />
<br />
{{Box|<br />
BORDER = #8898bf|<br />
BACKGROUND = #d1adf6|<br />
WIDTH = 100%|<br />
ICON = <small>[[Use Cases|More...]]</small>|<br />
HEADING = <span style="font-variant:small-caps; font-size:120%">[[Use Cases]]</span>|<br />
CONTENT =<br />
<small><br />
* Desktop PCs and servers<br />
* [[Clusters]]<br />
<!-- * Set-Top-Boxes, thin clients --><br />
* Embedded solutions<br />
<!-- * [http://en.wikipedia.org/wiki/Small_form_factor Small form factor computers], [http://en.wikipedia.org/wiki/Home_theater_PC Home-theater PCs] --><br />
<!-- * No-moving-parts solutions (ROM chip as "disk") --><br />
<!-- * Non-standard scenarios (e.g. FPGA in Opteron socket) --><br />
</small><br />
}}<br />
<br />
|style="vertical-align:top"|<br />
<br />
{{Box|<br />
BORDER = #8898bf|<br />
BACKGROUND = lime|<br />
WIDTH = 100%|<br />
ICON = <small>[[Payloads|More...]]</small>|<br />
HEADING = <span style="font-variant:small-caps; font-size:120%">[[Payloads]]</span>|<br />
CONTENT =<br />
<small><br />
* [[FILO]] / [http://grub.enbug.org/CoreBoot GRUB2] <!-- / [[OpenFirmware]] / [[OpenBIOS]] --><br />
* [[Linux]] / [[Booting Windows using coreboot|Windows]] / [[Booting FreeBSD using coreboot|FreeBSD]]<!-- / [[Coreboot and NetBSD|NetBSD]] / [http://openbsd.org/ OpenBSD]--><br />
* [[Etherboot]]<br />
<!--* [[SeaBIOS]] / [[Memtest86]]<br />
* [[Etherboot]] / [[GPXE]]<br />
* [[Bayou]] / [[Coreinfo]] / [[Tint]] / [[Libpayload]]--><br />
</small><br />
}}<br />
<br />
|}<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:chip_cb.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">About</span>'''<br /><small>Find out more about coreboot.</small><small><hr />[[Press]] | [[Logo]] | [[History]] | [[Screenshots|Screenshots/Videos]] | [[Contributors]] | [[Sponsors]] | [[Products]] | [[Clusters]] | [[Vendors]]</small><br />
|}<br />
<br />
|style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:chip_devel.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Developers</span>'''<br /><small>Get involved! Help us make coreboot better.</small><small><hr />[[Development Guidelines]] | [[Developer Manual]] | [http://qa.coreboot.org/docs/doxygen.php Doxygen] | [http://tracker.coreboot.org/trac/coreboot/browser/trunk Browse Source] | [[GSoC]] | [[SerialICE]]</small><br />
|}<br />
<br />
|-<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:chip_status.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Status</span>'''<br /><small>Find out whether your hardware is already supported.</small><small><hr />[[Supported Motherboards|Supported Boards]] | [[Supported Chipsets and Devices|Supported Chipsets]] | [http://qa.coreboot.org Build Status]</small><br />
|}<br />
<br />
|style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:chip_tools.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Related Tools</span>'''<br /><small>Tools and libraries related to coreboot.</small><small><hr />[[Flashrom]] | [[Superiotool]] | [[Nvramtool]] | [[Buildrom]] | [[Mkelfimage]] | [[Inteltool]] | [[Msrtool]] | [[Ectool]] | [[Developer_Manual/Tools|Hardware tools]]</small><br />
|}<br />
<br />
|-<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:chip_101.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Getting Started</span>'''<br /><small>Download coreboot and get started.</small><small><hr />[[Build HOWTO]] | [[Download coreboot|Downloads]] | [[Documentation]] | [[:Category:Tutorials|Board Tutorials]] | [[QEMU]] | [[AMD SimNow]]</small><br />
|}<br />
<br />
|style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:chip_support.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Support</span>'''<br /><small>Learn how to contact us and find help and support.</small><small><hr />[[FAQ]] | [[Mailinglist]] | [[IRC]] | [http://tracker.coreboot.org/trac/coreboot/ Issue Tracker] | [[Glossary]] | [[coreboot Options|coreboot v2 Options]]</small><br />
|}<br />
<br />
|}<br />
</td><td width="20%"><br />
<br />
[[File:Coreboot linuxjournal.jpg|center|thumb|[[News#2009.2F09.2F25_coreboot_on_the_cover_of_the_Linux_Journal|coreboot @ Linux Journal]] ]]<br />
<br />
<br clear=all /><br />
<br />
'''<span style="font-variant:small-caps; font-size:120%">[[News]]</span>'''<hr /><br />
<!-- Please always make this list 7 items long (7 most recent news items). --><br />
<small><br />
* '''2009/10/21:''' [[News#2009.2F10.2F21_HP_e-Vectra_P2706T_now_supported|HP e-Vectra P2706T support]]<br />
* '''2009/10/13:''' [[News#2009.2F10.2F13_MSI_MS-6156_now_supported|MSI MS-6156 support]]<br />
* '''2009/10/13:''' [[News#2009.2F10.2F13_TechNexion_TIM-5690_now_supported|TechNexion TIM-5690 support]]<br />
* '''2009/10/13:''' [[News#2009.2F10.2F13_Kontron_KT690.2FmITX_now_supported|Kontron KT690/mITX support]]<br />
* '''2009/09/25:''' [[News#2009.2F09.2F25_coreboot_on_the_cover_of_the_Linux_Journal|coreboot @ Linux Journal]]<br />
* '''2009/09/02:''' [[News#2009.2F09.2F02_flashrom_0.9.1_has_been_released|flashrom 0.9.1 released]]<br />
* '''2009/07/15:''' [[News#2009.2F07.2F15_VIA_EPIA-M700_now_supported|VIA EPIA-M700 support]]<br />
</small><br />
<br />
<br />
'''<span style="font-variant:small-caps; font-size:120%">[[Current events|Upcoming Events]]</span>'''<hr /><br />
<!-- List of upcoming events (remove events after they have taken place). --><br />
<small><br />
<!-- * '''2009/mon/day:''' coreboot event at [[Link]] in somecity --><br />
* '''2009/12/27:''' coreboot presentation at [http://events.ccc.de/congress/2009/ 26C3] in Berlin<br />
</small><br />
<br />
</td></tr></table><br />
<br />
__NOTOC__<br />
__NOEDITSECTION__</div>Wardhttps://www.coreboot.org/index.php?title=Datasheets&diff=8867Datasheets2009-08-08T10:11:05Z<p>Ward: /* Northbridge */ add links to AMD RS780 chipset docs</p>
<hr />
<div></div>Wardhttps://www.coreboot.org/index.php?title=Supported_Chipsets_and_Devices&diff=8840Supported Chipsets and Devices2009-07-20T14:11:23Z<p>Ward: /* Devices supported in coreboot v2 */ add missing br</p>
<hr />
<div>Note: If a device is not supported by coreboot v2, try [[Supported_Chipsets_and_Devices#Devices_supported_in_coreboot_v1|checking coreboot v1]] for support. Do '''not''' attempt to use coreboot v3 &mdash; this is an early development version which is not ready for production use, yet.<br />
<br />
See also [[Supported Motherboards]].<br />
<br />
== Devices supported in coreboot v3 ==<br />
<br />
<div style="color: #ff0000">coreboot v3 is an alpha-stage development version of coreboot and is not meant for production use, yet!</div><br />
<br />
{| border="0" valign="top"<br />
| valign="top"|<br />
<br />
'''Northbridges'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Northbridge<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| Geode&nbsp;LX<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| Geode&nbsp;K8<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 82443BX&nbsp;(440BX)<br />
| style="background:orange" | WIP<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 945<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| CN700<br />
| style="background:orange" | WIP<br />
<br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''Southbridges'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Southbridge<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD-8111<br />
| style="background:yellow" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD-8132<br />
| style="background:yellow" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD-8151<br />
| style="background:yellow" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| CS5536<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| RS690<br />
| style="background: lime " | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| SB600<br />
| style="background: lime " | OK<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 82371EB&nbsp;(PIIX4E)<br />
| style="background:orange" | WIP<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 82801GX&nbsp;(ICH7)<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NVIDIA<br />
| MCP55<br />
| style="background:orange" | WIP<sup>1</sup><br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT8237R<br />
| style="background:orange" | WIP<br />
<br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''Super I/Os'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Super&nbsp;I/O<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Fintek<br />
| F71805F<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| ITE<br />
| IT8712F<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| ITE<br />
| IT8716F<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT1211<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83627HF<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83627THG<br />
| style="background:lime" | OK<br />
<br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''CPUs'''<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Type<br />
! align="left" | CPU<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| Geode LX<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| K8<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Generic<br />
| i586<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel<br />
| Core Duo / Core 2 Duo<br />
| style="background:orange" | WIP<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| C7<br />
| style="background:orange" | WIP<br />
<br />
|}<br />
<br />
|}<br />
<br />
<small><br />
<sup>1</sup> MCP55 and CK804 are supported, but no open documents are available from NVIDIA.<br />
</small><br />
<br />
== Devices supported in coreboot v2 ==<br />
<br />
{| border="0" valign="top"<br />
| valign="top"|<br />
<br />
'''Northbridges'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Northbridge<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| Fam10<br />
| style="background:lime" | OK<sup>16</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| K8<br />
| style="background: lime " | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| GX1<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| GX&nbsp;(GX2)<br />
| style="background: lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| LX<br />
| style="background: lime" | OK<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| IBM<br />
| CPC710<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| IBM<br />
| CPC925<br />
| style="background:#dddddd" | ?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| E7501<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| E7520<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| E7525<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82810<br />
| style="background:yellow" | WIP<sup>9</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82830<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82443BX&nbsp;([http://developer.intel.com/design/chipsets/440bx/ 440BX])<br />
| style="background:yellow" | WIP<sup>11</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82855PM<br />
| style="background:red" | WIP<sup>2</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 3100<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| EP80579 (Tolapai)<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 945<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Motorola<br />
| MPC107<br />
| style="background:#dddddd" | ?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| SiS<br />
| SiS761GX<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT8601 (PLE133)<br />
| style="background:yellow" | WIP<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT8623 (CLE266)<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| K8T890<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| K8M890<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| CN700<br />
| style="background:lime" | OK<sup>14</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| CX700<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VX800<br />
| style="background:yellow" | WIP<br />
<br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''Southbridges'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Southbridge<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD8111<br />
| style="background: lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD8131<br />
| style="background: lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD8132<br />
| style="background: lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD8151<br />
| style="background: lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| CS5530/CS5530A<br />
| style="background:yellow" | WIP<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| CS5535<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| CS5536<br />
| style="background: lime " | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| RS690<br />
| style="background: lime " | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| SB600<br />
| style="background: lime " | OK<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Broadcom<br />
| BCM5780<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| Broadcom<br />
| BCM5785<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 6300ESB (ESB6300)<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82371EB&nbsp;(PIIX4E)<br />
| style="background:yellow" | WIP<sup>6</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801AA/AB&nbsp;(ICH/ICH0)<br />
| style="background:lime" | OK<sup>10</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801BA/BAM&nbsp;(ICH2/ICH2-M)<br />
| style="background:lime" | OK<sup>10</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801CA/CAM&nbsp;(ICH3-S/ICH3-M)<br />
| style="background:lime" | OK<sup>10</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801DB/DBL/DBM<br/>(ICH4/ICH4-L/ICH4-M)<br />
| style="background:lime" | OK<sup>10</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801EB/ER&nbsp;(ICH5/ICH5R)<br />
| style="background:lime" | OK<sup>10</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82870<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| PXHD<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 3100<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| EP80579 (Tolapai)<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| NVIDIA<br />
| CK804<br />
| style="background:lime" | OK<sup>17</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| NVIDIA<br />
| MCP55<br />
| style="background:lime" | OK<sup>17</sup><br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Ricoh<br />
| RL5C476<br />
| style="background:#eeeeee" | ?<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| SiS966(L)<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT8231<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT8235<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT8237R<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT8237A<br />
| style="background:red" | WIP<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT8237S<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT82C686<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83C553<br />
| style="background:#dddddd" | ?<br />
<br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''Super I/Os'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Super&nbsp;I/O<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| ASUS<br />
| A8000<br />
| style="background:lime" | <sup>12</sup>, <sup>13</sup><br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Fintek<br />
| F71805F/FG<br />
| style="background:lime" | OK<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| ITE<br />
| IT8661F<br />
| style="background:yellow" | OK <sup>1</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| ITE<br />
| IT8671F<br />
| style="background:yellow" | OK <sup>1</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| ITE<br />
| IT8673F<br />
| style="background:yellow" | OK <sup>1</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| ITE<br />
| IT8705F<br />
| style="background:yellow" | OK <sup>1</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| ITE<br />
| IT8712F<br />
| style="background:lime" | OK <sup>8</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| ITE<br />
| IT8716F<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| ITE<br />
| IT8718F<br />
| style="background:yellow" | OK <sup>1</sup><br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 3100<br />
| style="background:lime" | OK <sup>15</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| EP80579 (Tolapai)<br />
| style="background:lime" | OK <sup>15</sup><br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC8374<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87309<br />
| style="background:yellow" | OK <sup>5</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87351<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87360<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87366<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87417<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87427<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC97307 <br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC97317<br />
| style="background:#eeeeee" | ?<br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| ServerEngines<br />
| PILOT<br />
| style="background:yellow" | OK<sup>18</sup><br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| FDC37M70x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| FDC37B80x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| FDC37B78x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| FDC37B72x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| FDC37B81x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| FDC37M60x<br />
| style="background:lime" | OK<sup>3</sup>,<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47B27x<br />
| style="background:lime" | OK<sup>7</sup>,<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47M10x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47M112<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47M13x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47M15x<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47M192<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47B397<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| DME1737<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| SCH5307<br />
| style="background:lime" | OK<sup>12</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| SMSC&reg;<br />
| LPC47N217<br />
| style="background:#dddddd" | ?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT1211<br />
| style="background:#eeeeee" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT82C686(A/B)<br />
| style="background:yellow" | OK<sup>5</sup><br />
<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83627DHG<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83627UHG<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83627EHG/HF/EHF/THF<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83697HF/HG<br />
| ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83627THF<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83627THG<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83977F<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83977TF<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83977EF<br />
| style="background:lime" | OK<sup>4</sup><br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''CPUs'''<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Type<br />
! align="left" | CPU<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| x86<br />
| AMD<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| x86<br />
| Intel&reg;<br />
| style="background:lime" | OK<br />
|- bgcolor="#eeeeee" valign="top"<br />
| x86<br />
| VIA<br />
| style="background:lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| PowerPC<br />
| MPC74xx<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| PowerPC<br />
| PPC4xx<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| PowerPC<br />
| PPC7xx<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#dddddd" valign="top"<br />
| PowerPC<br />
| PPC970<br />
| style="background:#dddddd" | ?<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Emulated<br />
| QEMU<br />
| style="background:lime" | OK<br />
|}<br />
<br />
'''SOCs'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | SOC<br />
! align="left" | Status<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| Elan SC520<br />
| style="background: lime" | OK<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| EP80579 (Tolapai)<br />
| style="background: lime" | OK<br />
|}<br />
<br />
|}<br />
<br />
<small><br />
<sup>1</sup> Serial output should work for all ITE Super I/Os (but is only tested on the IT8671F and IT8712F). The rest ''could'' work, but is completely untested.<br /><br />
<sup>2</sup> Work in progress.<br /><br />
<sup>3</sup> Serial output on serial port 1 is tested and works, the rest probably not yet (tested on FDC37M602).<br /><br />
<sup>4</sup> The W83977EF works fine with the W83977TF code (the pre-RAM serial part at least).<br /><br />
<sup>5</sup> Pre-RAM serial output works fine, but nothing else, yet.<br /><br />
<sup>6</sup> IDE support is available and tested. SMBus support may work, but is untested. USB support is on our TODO list.<br /><br />
<sup>7</sup> Pre-RAM serial output [http://www.linuxbios.org/pipermail/linuxbios/2007-May/021247.html works fine], everything else is untested.<br /><br />
<sup>8</sup> [http://www.linuxbios.org/pipermail/linuxbios/2007-May/021623.html Works fine] mostly, but support for more obscure features (floppy, game port, MIDI, IR) might need more work.<br /><br />
<sup>9</sup> Works mostly, but currently there are some limitations as to which RAM DIMMs can be used.<br /><br />
<sup>10</sup> These southbridges should all be supported by the (experimental) new code in src/southbridge/intel/i82801xx/ now. Please test this code and use this code for all new ICH* based boards. There's still some old code for the southbridges, but that should not be used anymore.<br /><br />
<sup>11</sup> Sort of works, but the settings are hardcoded for the Tyan S1846. This will be fixed soonish.<br /><br />
<sup>12</sup> All these Super I/O chips should be supported by the "smscsuperio" driver. Only the ASUS A8000 is tested, though. The floppy disk controller, the parallel port, the serial ports (COM1 + COM2), and the keyboard should work for all chips. More advanced stuff may need more work, though.<br /><br />
<sup>13</sup> The ASUS A8000 Super I/O seems to be a rebranded SMSC DME1737.<br /><br />
<sup>14</sup> Working, but not widely tested, yet. Works with single DIMM DDR2.<br /><br />
<sup>15</sup> The Intel 3100/EP80579 UARTs and watchdog timer are integrated as a Super I/O-like device; only the UARTs have been tested so far.<br /><br />
<sup>16</sup> Barcelona B0-B3 supported.<br /><br />
<sup>17</sup> MCP55 and CK804 are supported, but no open documents are available from NVIDIA.<br /><br />
<sup>18</sup> Partially supported, but not all features implemented.<br />
</small><br />
<br />
== Devices supported in coreboot v1 ==<br />
<br />
Not all devices have been ported from coreboot v1 to coreboot v2, yet (check "v2?" field). If you want to work on such a port contact us on the [[Mailinglist|mailing list]].<br />
<br />
{| border="0" valign="top"<br />
| valign="top"|<br />
<br />
'''Northbridges'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Northbridge<br />
! align="left" | Status<br />
! align="left" | v2?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Acer<br />
| M1631<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Alpha<br />
| Tsunami<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| AMD<br />
| AMD76x<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 430TX<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 440BX<br />
| style="background:#dddddd" | ?<br />
| style="background:yellow" | Yes<sup>3</sup><br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 440GX<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 82815EP<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 82830<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| 82860<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| E7500<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| E7501<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#dddddd" valign="top"<br />
| Intel&reg;<br />
| E7505<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Micron<br />
| 21PAD<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Motorola<br />
| MPC107<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC/AMD<br />
| GX1<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT694<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT8601<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT8623<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''Southbridges'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Southbridge<br />
! align="left" | Status<br />
! align="left" | v2?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Acer<br />
| M1535<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Acer<br />
| M1543<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| AMD<br />
| AMD766<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| AMD<br />
| AMD768<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801CA<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82801DB<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| 82870<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Intel&reg;<br />
| PIIX4E<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#dddddd" valign="top"<br />
| NSC/AMD<br />
| CS5530<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#dddddd" valign="top"<br />
| NSC<br />
| SCX200<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT8231<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT8235<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| VIA<br />
| VT82C686<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| Winbond&trade;<br />
| W83C553<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''Super I/Os'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | Super&nbsp;I/O<br />
! align="left" | Status<br />
! align="left" | v2?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Acer<br />
| M1535<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| ITE<br />
| IT8671F<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87309<br />
| style="background:lime" | OK<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC87351<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC97307<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| PC97317<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| 950<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| SMC<br />
| FDC37B72X<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| SMC<br />
| FDC37B78X<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| SMC<br />
| FDC37B807<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| SMC<br />
| FDC37C669<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| SMC<br />
| FDC37C67X<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| SMC<br />
| FDC37N769<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT1211<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT8231<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| VIA<br />
| VT82C686<br />
| style="background:#dddddd" | ?<br />
| style="background:yellow" | Yes<sup>2</sup><br />
|- bgcolor="#eeeeee" valign="top"<br />
| Winbond&trade;<br />
| W83627HF<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Winbond&trade;<br />
| W83877TF<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Winbond&trade;<br />
| W83977EF<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<sup>1</sup><br />
|}<br />
<br />
| valign="top"|<br />
<br />
'''North-/Southbridges'''<br />
<br />
{| border="0" style="font-size: smaller" valign="top"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Vendor<br />
! align="left" | North/South<br />
! align="left" | Status<br />
! align="left" | v2?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| NSC<br />
| SCX200<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| 540<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| 550<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| 630<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| 635<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| 730<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| SiS<br />
| 735<br />
| style="background:#dddddd" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#eeeeee" valign="top"<br />
| ST<br />
| STPC<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|}<br />
<br />
'''CPUs'''<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699dd"<br />
! align="left" | Type<br />
! align="left" | CPU<br />
! align="left" | Status<br />
! align="left" | v2?<br />
<br />
|- bgcolor="#eeeeee" valign="top"<br />
| Alpha<br />
| EV6<br />
| style="background:#eeeeee" | ?<br />
| style="background:red" | No<br />
|- bgcolor="#dddddd" valign="top"<br />
| PowerPC<br />
| ?<br />
| style="background:#dddddd" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| x86<br />
| AMD<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| x86<br />
| Intel&reg;<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|- bgcolor="#eeeeee" valign="top"<br />
| x86<br />
| VIA<br />
| style="background:#eeeeee" | ?<br />
| style="background:lime" | Yes<br />
|}<br />
<br />
|}<br />
<br />
<small><br />
<sup>1</sup> The W83977EF works fine with the W83977TF code in coreboot v2 (the pre-RAM serial part at least).<br /><br />
<sup>2</sup> Pre-RAM serial output works in coreboot v2, but the rest is not supported, yet.<br /><br />
<sup>3</sup> Work in progress.<br /><br />
</small><br />
<br />
__FORCETOC__</div>Wardhttps://www.coreboot.org/index.php?title=SeaBIOS&diff=8391SeaBIOS2009-04-25T23:49:37Z<p>Ward: /* coreboot */</p>
<hr />
<div>'''SeaBIOS''' (previously known as '''LegacyBIOS''') is an open-source legacy BIOS implementation, which can also be used as coreboot [[Payloads|payload]].<br />
<br />
= Use cases =<br />
<br />
Any software requiring 16-bit BIOS services benefits from SeaBIOS.<br />
<br />
== Windows XP ==<br />
<br />
Windows XP has been booted on real hardware with coreboot and SeaBIOS. Some patches are required.<br />
<br />
== Windows Vista ==<br />
<br />
Windows Vista (64/32 bit) has been booted on real hardware with coreboot and SeaBIOS. Some patches are required.<br />
<br />
== Windows 7 Beta ==<br />
<br />
Windows 7 Beta (?? bit) has been booted on real hardware with coreboot and SeaBIOS. Some patches are required.<br />
<br />
== GRUB ==<br />
<br />
GRUB works with coreboot and SeaBIOS on real hardware and boots Linux just fine.<br />
<br />
= Building =<br />
<br />
== SeaBIOS ==<br />
<br />
You can download the latest version of SeaBIOS through a git repository:<br />
<br />
<source lang="bash"><br />
$ git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios<br />
$ cd seabios<br />
</source><br />
<br />
Alternatively, the released versions of SeaBIOS can be found at http://linuxtogo.org/~kevin/SeaBIOS/. There's also a [http://git.linuxtogo.org/?p=kevin/seabios.git;a=summary gitweb] facility to browse the latest source code online.<br />
<br />
Edit '''src/config.h''' and set the following values:<br />
<br />
<source lang="C"><br />
#define CONFIG_COREBOOT 1<br />
#define CONFIG_DEBUG_SERIAL 1<br />
#define CONFIG_OPTIONROMS_DEPLOYED 0<br />
#define CONFIG_COREBOOT_FLASH 1<br />
#define CONFIG_VGAHOOKS 1<br />
</source><br />
<br />
Then:<br />
<br />
<source lang="bash"><br />
$ make<br />
</source><br />
<br />
The final SeaBIOS payload file is '''out/bios.bin.elf''', which can be used with coreboot v2 or v3.<br />
<br />
== coreboot ==<br />
<br />
For best results, use coreboot-v2 and edit the target Config.lb with the following:<br />
<br />
option CONFIG_CBFS=1<br />
option HAVE_HIGH_TABLES=1<br />
...<br />
romimage "fallback"<br />
...<br />
payload /path/to/seabios/out/bios.bin.elf<br />
end<br />
<br />
Unfortunately, many boards don't have HAVE_HIGH_TABLES support yet. If the build fails complaining about this option, one can edit the src/mainboard/<vendor>/<board>/Options.lb file and add a "uses HAVE_HIGH_TABLES" line. Then one can edit src/arch/i386/boot/tables.c and change the lines:<br />
<br />
<source lang="C"><br />
uint64_t high_tables_base = 0;<br />
uint64_t high_tables_size;<br />
</source><br />
<br />
to:<br />
<br />
<source lang="C"><br />
uint64_t high_tables_base = ( <memorysize> )*1024*1024 - (64*1024);<br />
uint64_t high_tables_size = 64*1024;<br />
</source><br />
<br />
where <memorysize> is the amount of memory (in MiB) available on the target machine, but not more than 3072. So, if you have more than 3GiB of ram installed, put 3072. Otherwise, put the number of MiB of ram installed in your machine.<br />
<br />
Alternatively, one can add proper support for HAVE_HIGH_TABLES.<br />
<br />
Once the above is done, the final image will be in '''coreboot.rom'''.<br />
<br />
= SeaBIOS and CBFS =<br />
<br />
SeaBIOS can read the coreboot flash filesystem and extract option roms and payloads.<br />
<br />
== Adding a VGA option rom ==<br />
<br />
Once a '''coreboot.rom''' file has been prepared, one can add option roms to it. It is frequently necessary to add a vga option rom for built-in VGA adapters so that they are properly initialized.<br />
<br />
The first step is to find the vendor and device id of the VGA adapter. This information can be found from '''lspci''':<br />
<br />
<source lang="bash"><br />
$ lspci -vnn<br />
...<br />
01:00.0 VGA compatible controller [0300]: VIA Technologies, Inc. UniChrome Pro IGP [1106:3344] (rev 01) (prog-if 00 [VGA controller])<br />
</source><br />
<br />
In the above example, the VGA vendor/deviceid is "1106:3344". [[VGA_support#How_to_retrieve_a_good_video_bios|Obtain the vga rom]] (eg, vgabios.bin) and add it to the rom with:<br />
<br />
<source lang="bash"><br />
$ ./cbfstool coreboot.rom add /path/to/vgabios.bin pci1106,3344.rom 0<br />
$ ./cbfstool coreboot.rom print<br />
</source><br />
<br />
After the above is done, one can write the coreboot.rom file to flash. SeaBIOS will extract the vga rom and run it during boot.<br />
<br />
== Adding gpxe support ==<br />
<br />
A [[http://www.etherboot.org/ gpxe]] option rom can nicely complement SeaBIOS and coreboot by adding network boot support. Adding gpxe is similar to [[#Adding a VGA option rom]]. The first step is to find the ethernet vendor/device id. For example:<br />
<br />
<source lang="bash"><br />
$ lspci -vnn<br />
...<br />
00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)<br />
</source><br />
<br />
Then one can build a gpxe option rom. For example:<br />
<br />
<source lang="bash"><br />
$ cd gpxe/src/<br />
$ make bin/10ec8167.rom<br />
</source><br />
<br />
And add it to the coreboot image. For example:<br />
<br />
<source lang="bash"><br />
$ ./cbfstool coreboot.rom add /path/to/gpxe/src/bin/10ec8167.rom pci10ec,8167.rom 0<br />
$ ./cbfstool coreboot.rom print<br />
</source><br />
<br />
In addition to gpxe, other option roms can be added in the same manor.<br />
<br />
== Adding payloads ==<br />
<br />
Most [[Payloads|payloads]] can also be launched from SeaBIOS. To add a payload, build the corresponding .elf file and then add it to the '''coreboot.rom''' file in the "img/" directory. For example:<br />
<br />
<source lang="bash"><br />
$ ./cbfstool coreboot.rom add-payload /path/to/payload.elf img/MyPayload<br />
$ ./cbfstool coreboot.rom print<br />
</source><br />
<br />
During boot, one can press the F12 key to get a boot menu. SeaBIOS will show all files in the "img/" directory, and one can instruct SeaBIOS to run them.<br />
<br />
Note, SeaBIOS currently only supports uncompressed payloads.</div>Wardhttps://www.coreboot.org/index.php?title=FlexyICE&diff=8283FlexyICE2009-04-11T00:58:25Z<p>Ward: </p>
<hr />
<div>[[Image:artec_dongle.jpg|thumb|right|Artecgroup programmable LPC dongle.]]<br />
<br />
== About the dongle ==<br />
<br />
The dongle is for sale by [http://www.artecgroup.com/products/hardware-products/programmable-lpc-dongle.html Artecgroup], based in Estonia. It costs about EUR 150 (2007-12).<br />
<br />
The dongle connects to a computer via USB. It connects to the target via an LPC header. <br />
<br />
The dongle comes with [http://opencores.org/projects.cgi/web/usb_dongle_fpga/overview free software and full schematics] (scroll all the way to the bottom for download links, or click on the CVS: browse link near the top). The host-based software is written in Python, and works just fine under GNU/Linux. <br />
<br />
The dongle has 16 MByte of onboard memory, divided in 4 banks of 4 Mbyte each. The 'mode-selection' jumpers allow selection of each bank: 00, 01, 10, 11.<br />
<br />
The dongle also has two 16-segment LED displays that can show POST codes.<br />
<br />
If you hold the reset button on the dongle, the second LED will show the version of the VHDL you have - currently 03, 04 or 05.<br />
<br />
Artecgroup provides [http://opencores.org/cvsweb.shtml/usb_dongle_fpga/release/EPCS_update_tool.zip a tool] to upgrade the VHDL on the dongle that can be run under GNU/Linux (it's a python program). They also provide the binary image for the v5 of the VHDL. Of course all sources are available to build that binary image, but currently proprietary software on Windows is needed to do so. You will need a byteblaster-II cable (which can be purchased at http://www.customcircuitsolutions.com/cable.html or http://fpgaguy.110mb.com/, for instance). This tool has only received limited testing, so please be careful and report any problems to the author.<br />
<br />
== Using the dongle ==<br />
=== Drivers for Windows and Mac OS ===<br />
The dongle can be accessed using its usb-to-serial chip (FT245B(M)). For Windows and Mac OS, you need a driver for the chip, which can be found at the [http://www.ftdichip.com/Drivers/VCP.htm chip vendor's website].<br />
<br />
=== Reading from and writing to the dongle ===<br />
<br />
If you use Ubuntu, make sure to uninstall brltty (apt-get remove brltty --purge) before you hook up the dongle; otherwise it will hijack the dongle and you won't be able to talk to it. Brltty is a software braille terminal.<br />
<br />
Images are downloaded via USB. With the latest version of the VHDL (v5), it should take about 8 seconds to write a 512KByte image to the dongle.<br />
<br />
Here's a command that writes a 512KByte image to the dongle<br />
<br />
./dongle.py -v -c /dev/ttyUSB0 alix0-1.bin 3584K<br />
<br />
The -v parameter makes the command verbose. -c /dev/ttyUSB0 means 'use device /dev/ttyS0'. Alix0-1.bin is the image that is to be written to the dongle (it's a 512KByte file), and 3584K is the offset at which it should be written. Always calculate that number as 4Mbyte - size of your image.<br />
<br />
And here's how you can read the image back:<br />
<br />
./dongle.py -c /dev/ttyUSB0 -r 3670016 512K test2.rom <br />
<br />
The -r parameter indicates 'read', and 3670016 is the offset at which the program should start reading (this is 3584K), for 512K bytes. You can express the offset in decimal (like in this example, in hex with a leading 0x, or in abbreviated decimal - for instance 3584K). Test2.rom is the file the image will be stored in on your computer.<br />
<br />
If you actually wrote and read an image, you should now md5sum both files to make sure they are identical.<br />
<br />
=== Booting an ALIX.1C ===<br />
<br />
First of all, you'll need to make a custom cable. The ALIX.1C has a 20-pin header (J16) that can be used to hook up the dongle. The pin layout is documented on page 13 and 14 in the [http://pcengines.ch/pdf/alix1c.pdf ALIX.1C manual]:<br />
<br />
<pre><br />
1 LCLK0 LPC clock (33 MHz)<br />
2 GND ground<br />
3 LAD0 LPC data 0<br />
4 GND ground<br />
5 LAD1 LPC data 1<br />
6 GND ground<br />
7 LAD2 LPC data 2<br />
8 GND ground<br />
9 LAD3 LPC data 3<br />
10 GND ground<br />
11 LFRAME# LPC frame<br />
12 GND ground<br />
13 PCIRST# reset (active low)<br />
14 NC reserved<br />
15 ISP high to use LPC flash, low to use on-board flash, pulled low by resistor<br />
16 VCC +5V supply<br />
17 GND ground<br />
18 V3 +3.3V supply<br />
19 SERIRQ serial interrupt<br />
20 LDRQ# LPC DMA request<br />
</pre><br />
<br />
The Artecgroup LPC dongle has a 10-pin LPC dongle that is described [http://www.artecgroup.com/downloads/task,doc_download/gid,5/Itemid,33/ in the schematics]. This is the pin layout:<br />
<br />
<pre><br />
1 RESETX<br />
2 LAD0<br />
3 LAD1<br />
4 LAD2<br />
5 LAD3<br />
6 LFRAME#<br />
7 R33 GND<br />
8 PCICLK1<br />
9 GND<br />
10 VCC 3V in<br />
</pre><br />
<br />
Peter Stuge figured out the correct wiring [http://www.coreboot.org/pipermail/coreboot/2007-December/028011.html here] and [http://www.coreboot.org/pipermail/coreboot/2007-December/028012.html here]. This is the wiring diagram:<br />
<br />
<pre><br />
Dongle - ALIX.1C<br />
<br />
1 - 13<br />
2 - 3<br />
3 - 5<br />
4 - 7<br />
5 - 9<br />
6 - 11<br />
7 - NC<br />
8 - 1<br />
9 - 2/4/6/8/10/12/17 (just pick one)<br />
10 - NC<br />
- 15 connected to 18<br />
</pre><br />
<br />
In the above, pin 7 on the dongle should not be connected to anything on the ALIX.1C. Pin 9 on the dongle should be connected to one of 2/4/6/8/10/12/17 on the ALIX.1C, not all of those pins. Pin 15 and 18 on the ALIX.1C side need to be shorted, but not connected to anything on the dongle side.<br />
<br />
Cable length is important - your cable should not be more than a few centimeter long.<br />
<br />
The easiest way to make such a cable is to take an old floppy or IDE-40 flat ribbon cable (don't use IDE-80, its wires are much thinner which makes things harder), cut it, and put a 10-pin header on the dongle side.<br />
<br />
If you are in the US, you can buy 10-pin headers [https://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&storeId=10001&catalogId=10001&pa=32492&productId=32492 here] (Jameco part number 32492). You might also want to get [https://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&storeId=10001&catalogId=10001&pa=73252&productId=73252 a crimping tool] (Jameco part number 73252).<br />
<br />
This is what a finished cable looks like:<br />
<br />
[[Image:Dscn3151_640_480.jpg||Custom ALIX.1C to Artecgroup LPC dongle cable]]<br />
<br />
You can test your cable by booting the ALIX.1C, and then hooking it up to the dongle (using J16 on the ALIX.1C, of course). Now reboot the ALIX.1C board; the LEDs on the dongle should show post codes as the ALIX.1C shuts down and tries to boot. Unless you've prepared the dongle and stored an image into it, the ALIX.1C will not boot. But if you see POST codes on the LEDs, your cable is likely to be good. If not, use a multimeter and make sure it matches the layout above. Also make sure that it is not too long.<br />
<br />
Now make sure the dongle is correctly configured:<br />
<br />
Jump pin 1/2 on J1. Make sure JMP4 is set to position 1/2 (i.e. NOT to the pins marked as LPC). Make sure that you leave the mode select jumpers in the same position between the writing of the image into the dongle and trying to boot off it.<br />
<br />
Now write your image to the top of the memory bank you want to use (see higher). Then <i>disconnect the dongle from your computer</i>, reconnect it, make sure that you have your cable connected to the LPC port on the dongle and J16 on the ALIX.1C, and plug in power to the ALIX.1C. Also hook up a serial port to the ALIX.1C so that you see what happens during boot. If all goes well, you will see post codes on the dongle LEDs as the ALIX.1C boots.<br />
<br />
=== Booting FWH PLCC boards ===<br />
<br />
It is also possible to boot FWH PLCC boards, if you make a special cable. For an example of such a cable, see some photos here: http://www.artecdesign.ee/~martr/dongle-fwh-plcc-cable/. TODO: we need to find a place to buy such a connector, and we need to document the pinout of the cable.<br />
<br />
=== Booting SPI boards ===<br />
<br />
With a VHDL change and the proper cable, it should be possible to use the dongle to boot SPI-based boards. Artec is considering this as a planned feature for [http://www.opencores.org/projects.cgi/web/artec_dongle_ii_fpga/overview Artec Dongle II] VHDL - when that is done, interested parties can try to backport the relevant open source VHDL parts.<br />
<br />
<br />
<br />
{{GPL}}</div>Wardhttps://www.coreboot.org/index.php?title=File:Plcc-legs-cut-off-on-two-sides.jpg&diff=8227File:Plcc-legs-cut-off-on-two-sides.jpg2009-03-31T15:44:04Z<p>Ward: moved File:Plcc-pins-cut-off-on-two-sides.jpg to File:Plcc-legs-cut-off-on-two-sides.jpg</p>
<hr />
<div>PLCC chip - legs cut off on two sides.<br />
<br />
Author: [[User:Ward|Ward Vandewege]]<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=Soldering_a_socket_on_your_board&diff=8224Soldering a socket on your board2009-03-31T13:16:51Z<p>Ward: /* Cutting the chip */ add some pictures</p>
<hr />
<div>Mainboards where the BIOS chip is soldered onto the board (i.e., not in a socket) are usually problematic for coreboot developers and especially coreboot users, as one incorrectly flashed image will render the board unusable.<br />
<br />
Here's a simple procedure how you can desolder/remove the chip from such a board, and '''solder on a PLCC socket''' instead (so that you can swap chips as often as you like later on).<br />
<br />
<span style="color:red">Important</span>: This will definitely void the warranty of your board! Also, we take no responsibility for any damage you inflict on your board or other stuff. Use at your own risk!<br />
<br />
That said, we believe this procedure requires only relatively '''low-cost equipment''' which is widely available, and '''can also be performed by people without much soldering experience'''. You do '''not''' have to be a hardware/soldering guru to do any of this, with a little practice everyone can learn to perform the procedure.<br />
<br />
== Video ==<br />
<br />
[[User:Uwe|Uwe Hermann]] created a video showing most of the steps in this HOWTO. You can get it from:<br />
<br />
* [http://www.archive.org/details/CorebootHackingHowToSolderAPlccSocketOnYourBoard archive.org]: [http://www.archive.org/download/CorebootHackingHowToSolderAPlccSocketOnYourBoard/coreboot_hacking_how_to_solder_a_plcc_socket_on_your_board_small.ogv Ogg Theora, small] (32 MB), [http://www.archive.org/download/CorebootHackingHowToSolderAPlccSocketOnYourBoard/coreboot_hacking_how_to_solder_a_plcc_socket_on_your_board.ogv Ogg Theora] (154 MB)<br />
* [http://www.youtube.com/watch?v=30x4oxyczH4 Youtube]: Direct download via "'''youtube-dl -t 'http://www.youtube.com/watch?v=30x4oxyczH4''''" (FLV, 13 MB)<br />
* [http://blip.tv/file/1933817 blip.tv]: [http://blip.tv/file/get/UweHermann-CorebootHackingHowToSolderAPLCCSocketOnYourBoard919.flv FLV, small] (20 MB)<br />
<br />
The video is licensed under the '''Creative Commons Attribution-ShareAlike 3.0''' license.<br />
<br />
<gallery><br />
File:Desoldering video 1.jpg<br />
File:Desoldering video 3.jpg<br />
File:Desoldering video 2.jpg<br />
File:Soldering the socket.jpg<br />
File:Desoldering video 4.jpg<br />
File:Desoldering the chip.jpg<br />
File:Place plcc socket.jpg<br />
File:Test the socket.jpg<br />
</gallery><br />
<br />
== Requirements ==<br />
<br />
* A board with soldered-on PLCC chip (a similar procedure will likely work for DIP32 or DIP8 chips).<br />
* A soldering iron, solder, and soldering wick.<br />
** Optional: No Clean Flux ("Flussmitteldispenser" in German) for easier soldering.<br />
* A PLCC socket (SMD type).<br />
* A [http://www.aoyue.de/en/Aoyue_852_hot_air_rework_repair_system_smd_esd_safe.htm desoldering station] / heat gun (or a [http://hmcelectronics.com/cgi-bin/scripts/query.cgi?query=+%09+TR20M cutter]).<br />
** Optional: [http://aoyue.de/en/Aoyue_939_Vacuum_pickup_smd_rework.htm Vacuum suction pen] for holding/dragging the chip<br />
* Tweezers.<br />
* Wire cutter.<br />
<br />
<gallery><br />
File:Soldered plcc rom chip.jpg|<small>Soldered PLCC chip</small><br />
File:Soldering iron.jpg|<small>Soldering iron</small><br />
File:Solder.jpg|<small>Solder</small><br />
File:Desoldering wick.jpg|<small>Desoldering wick</small><br />
File:Plcc socket.jpg|<small>PLCC socket, front</small><br />
File:Plcc socket back side.jpg|<small>PLCC socket, back</small><br />
File:Desoldering station.jpg|<small>Cheap desoldering station</small><br />
File:Desoldering station accessories.jpg|<small>Desoldering accessories</small><br />
File:Tweezers.jpg|<small>Tweezers</small><br />
File:Pliers1.jpg|<small>Wire cutter</small><br />
File:Flussmitteldispenser.jpg|<small>No Clean Flux</small><br />
</gallery><br />
<br />
The desoldering station used here is an [http://www.aoyue.de/en/Aoyue_852_hot_air_rework_repair_system_smd_esd_safe.htm Aoyue 852 SMD Rework Station], which is available relatively cheaply (ca. 70.- Euros). There are even cheapers ones available, e.g. on eBay.<br />
<br />
== Preparation ==<br />
<br />
* Take a picture of the board and ROM chip. You might need that later in order to add the socket in the correct orientation. The ROM chips all have a marking where the top is (and the same is true for most boards), but on '''some''' boards there is no such marking. So write down the orientation of the chip (or take a picture).<br />
* Prepare the PLCC socket, by cutting away the plastic middle part using the wire cutter (for easier soldering later):<br />
<br />
<gallery><br />
File:Pliers1.jpg|<small>Wire cutter and PLCC socket</small><br />
File:Cutting the plastic from the plcc socket.jpg|<small>Cut the middle part</small><br />
File:Pliers2.jpg|<small>Socket and removed plastic</small><br />
File:Plcc socket back side without plastic.jpg|<small>Prepared socket, back side</small><br />
</gallery><br />
<br />
== Desolder or cut away the ROM chip ==<br />
<br />
The next step is to remove the soldered ROM chip. There are multiple ways to do that.<br />
<br />
=== Desoldering the chip using a desoldering station ===<br />
<br />
If you have access to a desoldering station use that for desoldering the chip. Use a temperature of ca. 350-370&deg;C. Higher temperatures might speed up the process a bit, but will also increase the risk of damaging the chip or surrounding parts. At 370&deg;C the process takes less than 20 seconds.<br />
<br />
* Advantages:<br />
** Quick and painless method.<br />
** The ROM chip will usually survive, if you're careful and don't supply too much heat.<br />
* Disadvantages:<br />
** You have to spend some money on a desoldering station (less than 70,- Euros).<br />
** The surrounding chips, resistors, etc. might get too hot if you're not careful (usually doesn't happen, though).<br />
<br />
<gallery><br />
File:Soldered plcc rom chip.jpg|<small>Soldered PLCC chip</small><br />
File:Desoldering station temperature.jpg|<small>Desoldering temperature</small><br />
File:Holding dragging the chip with tweezers.jpg|<small>Hold the chip with tweezers</small><br />
File:Desoldering the chip.jpg|<small>Desoldering the chip</small><br />
File:Pads after desoldering.jpg|<small>PCB pads after desoldering</small><br />
File:Rom chip desoldered front.jpg|<small>Desoldered chip, front</small><br />
File:Rom chip after desoldering.jpg|<small>Desoldered chip, back</small><br />
</gallery><br />
<br />
=== Desoldering the chip using a heat gun and aluminum foil ===<br />
<br />
You can also use a piece of aluminum foil and a house hold heat gun for desoldering the chip. Most heat guns have a high and low setting, you will only need the low setting. The whole process only takes a few minutes. Blow the heat at an angle to the side of the chip at the solder joints going around the chip in a circle (never directly on top).<br />
<br />
* Advantages:<br />
** Fairly quick and painless as long as you don't burn yourself.<br />
** The ROM chip will usually survive, if you're careful and don't supply too much heat.<br />
* Disadvantages:<br />
** You have to be very careful not to pull on the chip. You could lift a solder pad causing a whole other issue.<br />
** The foil can get pretty hot!<br />
<br />
<gallery><br />
File:Foil-hgun1.jpg|<small>Aluminum foil folded in half (double protection).</small><br />
File:Foil-hgun2.jpg|<small>Bend the foil over the chip for cut out lines.</small><br />
File:Foil-hgun3.jpg|<small>Cut out a chip-sized rectangle.</small><br />
File:Foil-hgun4.jpg|<small>Foil with chip cut out.</small><br />
File:Foil-hgun5.jpg|<small>Place the foil over the chip.</small><br />
File:Foil-hgun6.jpg|<small>Close up of foil over chip.</small><br />
File:Foil-hgun7.jpg|<small>Blow the heat at an angle to the chip's side.</small><br />
File:Foil-hgun8.jpg|<small>Soon the chip will fall off. Use tweezers to remove.</small><br />
File:Foil-hgun9.jpg|<small>Foil and chip removed.</small><br />
File:Foil-hgun10.jpg|<small>Foil and chip.</small><br />
File:Foil-hgun11.jpg|<small>Clean the pads, solder on the socket.</small><br />
</gallery><br />
<br />
=== Cutting the chip ===<br />
<br />
Alternatively, you can just cut away the chip with a proper cutter (e.g. the [http://hmcelectronics.com/cgi-bin/scripts/query.cgi?query=+%09+TR20M Hakko CHP Ergonomic Micro Cutter]). Make sure to cut as close to the packaging as possible, so as to minimize strain on the paths on the motherboard while the chip is being cut off.<br />
<br />
* Advantages:<br />
** No desoldering station required.<br />
** Surrounding chips, capacitors, etc. are not at risk from a heat gun.<br />
* Disadvantages:<br />
** Cutting the chip is a bit tedious.<br />
** The chip is rendered unusable in the process (so make sure you have a backup before cutting it).<br />
<br />
<gallery><br />
File:Plcc-pins-cut-off-on-two-sides.jpg|<small>Legs cut off on two sides.</small><br />
File:Plcc-only-legs-remain.jpg|<small>Chip removed. Only the legs remain.</small><br />
File:Plcc-no-legs.jpg|<small>The PLCC chip with the legs cut off.</small><br />
</gallery><br />
<br />
== Clean the pads on the board ==<br />
<br />
The next step is to clean the PCB pads, i.e., remove the remains of solder from the pads. Use desoldering wick for that.<br />
<br />
<gallery><br />
File:Pads after desoldering.jpg|<small>Pads before cleaning</small><br />
File:Pads cleaning.jpg|<small>Cleaning with desoldering wick</small><br />
File:Pads after cleaning.jpg|<small>Cleaned pads</small><br />
</gallery><br />
<br />
== Solder the socket onto the board ==<br />
<br />
Now solder the PLCC socket onto the pads. This procedure is best performed manually with a soldering iron (in theory you could try to use a desoldering station / heat gut, but the results are probably not too good, and you might melt the plastic socket). Optionally, if you have some No Clean Flux handy, apply some of it on the pads. This will make the soldering process a bit easier.<br />
<br />
We suggest to start by aligning the socket onto the pads with tweezers or with your fingers. Solder two pins in opposite corners of the socket first, in order to fixate the socket. Then solder all the other pins, one after the other. If you apply too much solder and two or more pins get connected accidentally, use the soldering wick to fix that.<br />
<br />
<gallery><br />
File:Prepare two pads.jpg|<small>Put solder on a pad</small><br />
File:Prepare two pads2.jpg|<small>Put solder on another pad</small><br />
File:Fixating the socket on the pads.jpg|<small>Aligning, tweezers</small><br />
File:Place plcc socket.jpg|<small>Aligning, fingers</small><br />
File:Soldering the socket.jpg|<small>Soldering the socket</small><br />
File:Plcc socket soldered.jpg|<small>Soldered-on socket</small><br />
File:Test the socket.jpg|<small>Testing the socket</small><br />
File:Socket with chip.jpg|<small>Socket with chip</small><br />
</gallery><br />
<br />
== Tips ==<br />
To keep your ROM chip from pushing in too far and possibly touching the wrong solder joint, you can use a small piece of single sided adhesive felt or thin foam. Cut out a small rectangle just big enough to fit into the opening of your PLCC Socket and stick it in the bottom of the socket against the PCB. Another tip is to place a small drop of super glue on each corner of the outside of the PLCC Socket. This helps your newly installed socket from lifting (causing damage to the solder pads) when you remove the ROM chip, which is a good idea if you are swapping out your ROM chip frequently. <br />
<br />
== Results ==<br />
<br />
Congratulations. You have now successfully replaced a soldered-on PLCC ROM chip on your board with a PLCC socket. You can now swap out the ROM chip as often as you want to or need to. In almost all cases, the board '''and''' the ROM chip will survive this procedure if you are careful.<br />
<br />
== Further resources ==<br />
<br />
* [http://ward.vandewege.net/blog/2009/03/howto-replace-a-plcc-chip-with-a-socket-ghetto-style/ HOWO: replace a PLCC chip with a socket "ghetto style"] (tutorial for doing this without desoldering station by cutting the chip)<br />
* [http://hermann-uwe.de/blog/coreboot-hacking-how-to-solder-a-plcc-socket-on-your-board Coreboot hacking: How to solder a PLCC socket on your board] (blog post)<br />
<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=File:Plcc-no-legs.jpg&diff=8223File:Plcc-no-legs.jpg2009-03-31T13:11:44Z<p>Ward: PLCC chip with the legs cut off. Note how I cut as close to the chip packaging as possible.
Author: Ward Vandewege
{{PD-self}}</p>
<hr />
<div>PLCC chip with the legs cut off. Note how I cut as close to the chip packaging as possible.<br />
<br />
Author: [[User:Ward|Ward Vandewege]]<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=File:Plcc-only-legs-remain.jpg&diff=8222File:Plcc-only-legs-remain.jpg2009-03-31T12:56:29Z<p>Ward: The PLCC chip was removed from the motherboard, only the legs remain.
Author: Ward Vandewege
{{PD-self}}</p>
<hr />
<div>The PLCC chip was removed from the motherboard, only the legs remain.<br />
<br />
Author: [[User:Ward|Ward Vandewege]]<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=File:Plcc-legs-cut-off-on-two-sides.jpg&diff=8221File:Plcc-legs-cut-off-on-two-sides.jpg2009-03-31T12:52:38Z<p>Ward: </p>
<hr />
<div>PLCC chip - legs cut off on two sides.<br />
<br />
Author: [[User:Ward|Ward Vandewege]]<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=File:Plcc-legs-cut-off-on-two-sides.jpg&diff=8220File:Plcc-legs-cut-off-on-two-sides.jpg2009-03-31T12:51:44Z<p>Ward: </p>
<hr />
<div></div>Wardhttps://www.coreboot.org/index.php?title=Soldering_a_socket_on_your_board&diff=8146Soldering a socket on your board2009-03-27T03:10:45Z<p>Ward: typo</p>
<hr />
<div>Mainboards where the BIOS chip is soldered onto the board (i.e., not in a socket) are usually problematic for coreboot developers and especially coreboot users, as one incorrectly flashed image will render the board unusable.<br />
<br />
Here's a simple procedure how you can desolder/remove the chip from such a board, and '''solder on a PLCC socket''' instead (so that you can swap chips as often as you like later on).<br />
<br />
<span style="color:red">Important</span>: This will definitely void the warranty of your board! Also, we take no responsibility for any damage you inflict on your board or other stuff. Use at your own risk!<br />
<br />
That said, we believe this procedure requires only relatively '''low-cost equipment''' which is widely available, and '''can also be performed by people without much soldering experience'''. You do '''not''' have be a hardware/soldering guru to do any of this, with a little practice everyone can learn to perform the procedure.<br />
<br />
== Requirements ==<br />
<br />
* A board with soldered-on PLCC chip (a similar procedure will likely work for DIP32 or DIP8 chips).<br />
* A soldering iron, soldering wick, and soldering wire.<br />
* A PLCC socket (SMD type).<br />
* A desoldering station / heat gun (or a sharp knife).<br />
* Tweezers.<br />
* Pliers.<br />
* Optional: No Clean Flux ("Flussmitteldispenser" in German) for easier soldering.<br />
<br />
<gallery><br />
File:Soldered plcc rom chip.jpg|<small>Soldered PLCC chip</small><br />
File:Soldering iron.jpg|<small>Soldering iron</small><br />
File:Desoldering wick.jpg|<small>Desoldering wick</small><br />
File:Plcc socket.jpg|<small>PLCC socket, front</small><br />
File:Plcc socket back side.jpg|<small>PLCC socket, back</small><br />
File:Desoldering station.jpg|<small>Cheap desoldering station</small><br />
File:Tweezers.jpg|<small>Tweezers</small><br />
File:Pliers1.jpg|<small>Pliers</small><br />
File:Flussmitteldispenser.jpg|<small>No Clean Flux</small><br />
</gallery><br />
<br />
The desoldering station used here is an [http://www.aoyue.de/en/Aoyue_852_hot_air_rework_repair_system_smd_esd_safe.htm Aoyue 852 SMD Rework Station], which is available relatively cheaply (ca. 70.- Euros). There are even cheapers ones available, e.g. on eBay.<br />
<br />
== Preparation ==<br />
<br />
* Take a picture of the board and ROM chip. You might need that later in order to add the socket in the correct orientation. The ROM chips all have a marking where the top is (and the same is true for most boards), but on '''some''' boards there is no such marking. So write down the orientation of the chip (or take a picture).<br />
* Prepare the PLCC socket, by cutting away the plastic middle part using the pliers (for easier soldering later):<br />
<br />
<gallery><br />
File:Pliers1.jpg|<small>Pliers and PLCC socket</small><br />
File:Cutting the plastic from the plcc socket.jpg|<small>Cut the middle part</small><br />
File:Pliers2.jpg|<small>Socket and removed plastic</small><br />
File:Plcc socket back side without plastic.jpg|<small>Prepared socket, back side</small><br />
</gallery><br />
<br />
== Desolder or cut away the ROM chip ==<br />
<br />
The next step is to remove the soldered ROM chip. There are basically two ways to do that.<br />
<br />
* '''Desoldering the chip'''.<br />If you have access to a desoldering station use that for desoldering the chip. Use a temperature of ca. 350-370&deg;C. Higher temperatures might speed up the process a bit, but will also increase the risk of damaging the the chip or surrounding parts. At 370&deg;C the process takes less than 20 seconds.<br />
** Advantages:<br />
*** Quick and painless method.<br />
*** The ROM chip will usually survive, if you're careful and don't supply too much heat.<br />
** Disadvantages:<br />
*** You have to spend (some) money on a desoldering station (less than 70,- Euros).<br />
*** The surrounding chips, resistors, etc. might get too hot if you're not careful (usually doesn't happen, though).<br />
* '''Cutting the chip'''.<br />Alternatively, you can just cut away the chip with a proper cutter (e.g. the [http://hmcelectronics.com/cgi-bin/scripts/query.cgi?query=+%09+TR20M Hakko CHP Ergonomic Micro Cutter]).<br />
** Advantages:<br />
*** No desoldering station required.<br />
*** Surrounding chips, capacitors, etc. are not at risk.<br />
** Disadvantages:<br />
*** Cutting the chip is a bit tedious.<br />
*** The chip is rendered unusable in the process (so make sure you have a backup before cutting it).<br />
<br />
<gallery><br />
File:Soldered plcc rom chip.jpg|<small>Soldered PLCC chip</small><br />
File:Desoldering station temperature.jpg|<small>Desoldering temperature</small><br />
File:Holding dragging the chip with tweezers.jpg|<small>Hold the chip with tweezers</small><br />
File:Pads after desoldering.jpg|<small>PCB pads after desoldering</small><br />
File:Rom chip desoldered front.jpg|<small>Desoldered chip, front</small><br />
File:Rom chip after desoldering.jpg|<small>Desoldered chip, back</small><br />
</gallery><br />
<br />
== Clean the pads on the board ==<br />
<br />
The next step is to clean the PCB pads, i.e. remove the remains of solder from the pads. Use soldering wick for that.<br />
<br />
<gallery><br />
File:Pads after desoldering.jpg|<small>Pads before cleaning</small><br />
File:Pads cleaning.jpg|<small>Cleaning with soldering wick</small><br />
File:Pads after cleaning.jpg|<small>Cleaned pads</small><br />
</gallery><br />
<br />
== Solder the socket onto the board ==<br />
<br />
Now solder on the PLCC socket onto the pads. This procedure is best performed manually with a soldering iron (in theory you could try to use a desoldering station / heat gut, but the results are probably not too good, and you'll probably melt the plastic socket). Optionally, if you have some No Clean Flux handy, apply some of it on the pads. This will make the soldering process a bit easier.<br />
<br />
We suggest to start by aligning the socket onto the pads with tweezers or with your fingers. Solder two pins in opposite corners of the socket first, in order to fixate the socket. Then solder all the other pins, one after the other. If you apply too much solder and two or more pins get connected accidentally, use the soldering wick to fix that.<br />
<br />
<gallery><br />
File:Fixating the socket on the pads.jpg|<small>Aligning the socket</small><br />
File:Plcc socket soldered.jpg|<small>Soldered-on socket</small><br />
</gallery><br />
<br />
== Results ==<br />
<br />
Congratulations. You have now successfully replaced a soldered-on PLCC ROM chip on your board with a PLCC socket. You can now swap out the ROM chip as often as you want to or need to. In almost all cases, the board '''and''' the ROM chip will survive this procedure if you are careful.<br />
<br />
== Further resources ==<br />
<br />
* [http://ward.vandewege.net/blog/2009/03/howto-replace-a-plcc-chip-with-a-socket-ghetto-style/ HOWO: replace a PLCC chip with a socket "ghetto style"] (tutorial for doing this without desoldering station by cutting the chip)<br />
<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=Memtest86&diff=8074Memtest862009-03-18T21:30:39Z<p>Ward: </p>
<hr />
<div>[[Image:Qemu memtest.png|thumb|right|The [[Memtest86]] payload.]]<br />
<br />
'''[http://www.memtest86.com/ Memtest86]''' is a program which checks your RAM modules.<br />
<br />
It can be run from within GRUB, but also as a coreboot payload (i.e. included in your ROM chip).<br />
<br />
== Building ==<br />
<br />
=== Memtest86 ===<br />
<br />
mkdir foo<br />
cd foo<br />
wget http://www.memtest86.com/memtest86-3.5.tar.gz<br />
tar xfvz memtest86-3.5.tar.gz<br />
cd memtest86-3.5<br />
(Optional: edit '''config.h''' and set '''#define SERIAL_CONSOLE_DEFAULT 1''' for serial support)<br />
make<br />
<br />
The file '''memtest''' is your final payload which you can use with coreboot (v2 or v3), either on real hardware or in a QEMU image.<br />
<br />
=== coreboot ===<br />
<br />
Finally, you have to build coreboot (v3 in this example) with Memtest86 as payload:<br />
<br />
cd ..<br />
svn co svn://coreboot.org/repository/coreboot-v3 '''-r656'''<br />
cp memtest86-3.4/memtest coreboot-v3/payload.elf<br />
cd coreboot-v3<br />
make menuconfig<br />
<br />
Now enter the '''Payload''' menu and select '''Payload type''' and then '''An ELF executable payload file'''. Now exit the menu, save your settings, and build coreboot:<br />
<br />
make<br />
<br />
The file '''build/coreboot.rom''' (or '''build/bios.bin''') is your final coreboot v3 image, which also contains the payload.<br />
<br />
== Running Memtest86 in QEMU ==<br />
<br />
For running the coreboot+Memtest86 image in QEMU, you need a patched version of '''vgabios-cirrus.bin''' in your '''build''' directory first:<br />
<br />
cd build<br />
wget http://www.coreboot.org/images/0/0d/Vgabios-cirrus.zip<br />
unzip Vgabios-cirrus.zip<br />
cd ..<br />
<br />
You can now run coreboot and Memtest86 in QEMU:<br />
<br />
qemu -L build -hda /dev/zero -serial stdio<br />
<br />
== Ready-made QEMU image ==<br />
<br />
Please follow [http://www.coreboot.org/QEMU#coreboot_v3_.2B_Memtest86 these instructions] if you want to try out coreboot and Memtest86 in [[QEMU]].<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=GSoC&diff=8069GSoC2009-03-16T00:45:15Z<p>Ward: /* USB Option ROM for SeaBIOS */</p>
<hr />
<div>= Google Summer of Code 2009 =<br />
<br />
http://code.google.com/images/2009socwithlogo.gif<br />
<br />
Welcome to the [http://code.google.com/soc/ Google Summer of Code(tm)] page of the [[Welcome to coreboot|coreboot project]].<br />
<br />
= Your own Projects =<br />
<br />
We have come up with some ideas for cool Summer of Code projects here. These are projects that we think can be managed in the short period of GSoC, and they cover areas where coreboot is trying to reach new users and new use cases.<br />
<br />
But of course your application does not need to be based on any of the ideas listed below. The opposite: Maybe you have a great idea that we just didn't think of yet. Please let us know!<br />
<br />
Feel free to contact us at the email address below, and don't hesitate to suggest whatever you have in mind.<br />
<br />
= Possible ideas =<br />
<br />
== Infrastructure for automatic code checking ==<br />
<br />
We already have a build bot that builds various configurations of coreboot. It would be nice to extend it with various code validation routines, for example:<br />
* Validate that there's no regression in doxygen documentation (eg. are all arguments to functions still explained in @param tags, eg. after new arguments were added?)<br />
* Make code lint clean (and maybe extend lint to not fall into our traps), and run lint over the tree. Report regressions<br />
* Use LLVM's static code checking facilities, report regressions.<br />
* Work on code coverage support for coreboot code (dump data into ram, or via serial. Provide tools to fetch it). Analyse that data.<br />
<br />
=== Links ===<br />
* LLVM tools: [http://clang.llvm.org/StaticAnalysis.html Clang static analyser], [http://llvm.org/ProjectsWithLLVM/#Calysto SSA assertion checker]<br />
* Lint tools: [http://lclint.cs.virginia.edu/ Splint]<br />
<br />
=== Mentors ===<br />
* [[User:PatrickGeorgi|Patrick Georgi]]<br />
* [[User:MJones|Marc Jones]]<br />
* [[User:Stepan|Stefan Reinauer]]<br />
<br />
== VGA BIOS for Geode LX ==<br />
<br />
This project's goal is to write a VGA BIOS (PCI option rom) for AMD Geode LX systems (such as the Linutop, Thincan or XO). There exists a [http://savannah.nongnu.org/projects/vgabios free VGA BIOS] but it knows nothing about real hardware. If you really want to kick the iron, this project could be enhanced to contain a complete infrastructure for including hardware initialization code for many different graphics cards.<br />
<br />
=== Links ===<br />
* [http://savannah.nongnu.org/projects/vgabios free VGA BIOS]<br />
<br />
=== Mentors ===<br />
* [[User:Ward|Ward Vandewege]]<br />
* [[User:Stepan|Stefan Reinauer]]<br />
* [[User:MJones|Marc Jones]]<br />
<br />
<br />
== USB Option ROM for SeaBIOS ==<br />
<br />
SeaBIOS is our latest and greatest way to boot all kinds of different operating systems. It is a coreboot payload that implements 16bit BIOS interrupts as they are needed by nearly all boot loaders today. In the last year, SeaBIOS learned how to cope with coreboot ACPI, and how to boot off SCSI drives. One major feature that we're desperately lacking is USB stick/disk/cdrom booting from SeaBIOS.<br />
USB support for SeaBIOS should be implemented as a PCI option rom, using the [[libpayload]] USB stack. The USB stack currently supports UHCI controllers. Part of this project could also be to add OHCI and EHCI support to the USB stack in libpayload (not a requirement for participation, but would sure be nice!)<br />
<br />
=== Links ===<br />
* [[SeaBIOS]]<br />
* [[libpayload]]<br />
<br />
=== Mentors ===<br />
<br />
* [[User:MJones|Marc Jones]]<br />
* [[User:PatrickGeorgi|Patrick Georgi]]<br />
* [[User:Stepan|Stefan Reinauer]]<br />
<br />
== TianoCore on coreboot ==<br />
<br />
[http://www.tianocore.org/ Tiano Core] is Intel's EFI implementation. Unlike coreboot, it is not a firmware, but rather a bootloader. Last year we started porting TianoCore to run on coreboot, but there are many things left to do. Improve Tiano Core running as a coreboot payloads, or change coreboot so it can load Tiano Core as a payloads.<br />
<br />
This project requires no hardware skills, but especially in case of TianoCore might require knowledge of Windows compilers (VC2005?)<br />
<br />
=== Links ===<br />
* [http://www.tianocore.org/ Tiano Core]<br />
<br />
=== Mentors ===<br />
* [[User:Rminnich|Ron Minnich]]<br />
* [[User:Stepan|Stefan Reinauer]]<br />
* [[User:MJones|Marc Jones]]<br />
<br />
= Previous Summer of Code projects =<br />
<br />
We successfully participated in Google's Summer of Code in 2007 and 2008. See our [[Previous GSoC Projects|list of previous GSoC projects]].<br />
<br />
= Why work for coreboot =<br />
<br />
Why would you like to work for coreboot?<br />
<br />
* coreboot offers you the opportunity to work with modern technology "right on the iron".<br />
* Your application will be available to users worldwide and promoted along with all other coreboot projects.<br />
* We are a very passionate team - so you will interact directly with the project initiators and project leaders. <br />
* We have a large, helpful community. Over 100 experts in hardware and firmware lurk on our mailing list, many of them waiting to help you.<br />
<br />
<br />
= Summer of Code Application =<br />
<br />
Please complete the standard [http://code.google.com/soc/ Google SoC 2008 application]. Additionally, please provide information on the following:<br />
<br />
# Who are you? What are you studying?<br />
# Why are you the right person for this task?<br />
# Do you have any other commitments that we should know about?<br />
# List your C, Assembler and hardware experience.<br />
# List your history with open source projects.<br />
# What is your preferred method of contact? (Phone, email, Skype, etc) <br />
<br />
Feel free to keep your application short. A 15 page essay is no better than a 2 page summary. If you wish to write 15 pages, you are of course welcome to do so, and we will gladly put your paper up on the web page. But it is not required for the application.<br />
<br />
== How to apply ==<br />
<br />
The Drupal project has a great page on [http://drupal.org/node/59037 How to write an SOC application].<br />
<br />
Please also read Google's [http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents Advice for Students].<br />
<br />
== Some Caveats ==<br />
<br />
* Google Summer-of-Code projects are a full (day-) time job. This means we expect roughly 30-40 hours per week on your project, during the three months of coding. Obviously we have flexibility, but if your schedule (exams, courses) does not give you this amount of spare time, then maybe you should not apply.<br />
* Getting paid by Google requires that you meet certain milestones. First, you must be in good standing with the community before the official start of the program. We suggest you post some design emails to the mailing list, and get feedback on them, both before applying, and during the "community bonding period" between acceptance and official start. Also, you must have made progress and committed significant code before the mid-term point.<br />
* We are thinking of requiring accepted students to have a blog, where you will write about your project on a regular basis. This is so that the community at large can be involved and help you. SoC is not a private contract between your mentor and you. <br />
<br />
== Time Frame ==<br />
<br />
'''DEADLINE FOR STUDENT APPLICATIONS:''' Students who are interested in working on a coreboot-related GSoC project must apply between '''March 23, 2009''' and '''April 3, 2009'''! If you want to apply, please get in contact with us right away!<br />
<br />
= Contact =<br />
<br />
If you are interested in becoming a GSoC student, please contact [mailto:stepan@coresystems.de Stefan Reinauer].<br />
<br />
There is also an IRC channel on irc.freenode.net: #coreboot</div>Wardhttps://www.coreboot.org/index.php?title=User:Ward&diff=8068User:Ward2009-03-16T00:44:00Z<p>Ward: /* Ward Vandewege */</p>
<hr />
<div>=== Ward Vandewege ===<br />
<br />
I'm a (part-time) sysadmin for the [http://www.fsf.org Free Software Foundation]. We have a [http://www.fsf.org/campaigns/free-bios.html Campaign for a free BIOS], because a Free BIOS is essential to achieve true computing freedom.<br />
<br />
Where possible, we only buy hardware capable of running coreboot. Currently, we are standardizing on AMD-based systems: in terms of servers we have some Tyan systems and more recently we've purchased Silicon Mechanics A236 and A266 servers. We also have a bunch of Gigabyte M57SLI-S4 based machines, a few PC Engines ALIX boards, and a couple Asus M2A-VM boards.<br />
<br />
You can reach me at ward@gnu.org.</div>Wardhttps://www.coreboot.org/index.php?title=Libpayload&diff=8067Libpayload2009-03-16T00:08:45Z<p>Ward: FILO uses libpayload</p>
<hr />
<div>'''libpayload''' is a small BSD-licensed static library (a lightweight implementation of common and useful functions) intended to be used as a basis for coreboot payloads.<br />
<br />
The benefits of linking a coreboot payload against libpayload are:<br />
<br />
* Payloads do not have to implement and maintain low-level code for I/O, common functions, etc.<br />
* Payloads can be recompiled and deployed for CPU architectures supported by coreboot in the future.<br />
* The libpayload functions can be tested and scrutinized outside payload development.<br />
* Payloads themselves may be partly host-tested, e.g. against an emulation libpayload.<br />
<br />
''Just give us a main() and a pocket full of dreams and we'll do the rest.''<br />
<br />
== Features ==<br />
<br />
* Provides a [[Libpayload#Libc_Coverage|subset of libc functions]] (e.g. malloc, printf, strcmp, etc).<br />
* Provides an optional tiny (n)curses implementation.<br />
* Provides various small drivers for<br />
** keyboard<br />
** PC speaker<br />
** NVRAM/CMOS access<br />
** serial console<br />
** VGA<br />
** Geode framebuffer<br />
* Reads and parses the coreboot table.http://qa.coreboot.org/docs/libpayload/<br />
<br />
== Design ==<br />
* [[Payload API|Discussion of the API for passing parameters to the payload]]<br />
<br />
== Payloads using libpayload ==<br />
<br />
* [[FILO]] is a bootloader which loads boot images from a local filesystem, without help from legacy BIOS services.<br />
* [[coreinfo]] is a small payload which can display system information such as PCI info, an NVRAM dump, or the coreboot v3 printk buffer.<br />
* [[GRUB invaders]] has been ported successfully to libpayload (patch pending).<br />
* [[tint]] (a console tetris clone) has been successfully ported to libpayload.<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=scripts/kconfig/lxdialog;hb=HEAD lxdialog] from the Linux '''kconfig''' utility has been ported to be usable when linked with libpayload (patch pending).<br />
<br />
== Downloading and building libpayload ==<br />
<br />
$ svn co svn://coreboot.org/repos/trunk/payloads/libpayload<br />
$ cd libpayload<br />
$ make menuconfig<br />
$ make<br />
<br />
== Documentation ==<br />
<br />
See the autogenerated documentation for libpayload [http://qa.coreboot.org/docs/libpayload/ here].<br />
<br />
== Libc coverage ==<br />
<br />
{| border="0" valign="top"<br />
| valign="top"|<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff" <br />
! align="left" | Status<br />
! align="left" | Function/Macro/Variable<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''assert.h'''<br />
|- <br />
|- bgcolor="#eeeeee" valign="top"<br />
| style="background:red" | no<br />
| assert()<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''ctype.h'''<br />
|- <br />
|- bgcolor="#eeeeee" valign="top"<br />
| style="background:lime" | yes<br />
| int isalnum(int character)<br />
|- <br />
|- bgcolor="#dddddd" valign="top"<br />
| style="background:lime" | yes<br />
| int isalpha(int character)<br />
|- <br />
|- bgcolor="#eeeeee" valign="top"<br />
| style="background:lime" | yes<br />
| int iscntrl(int character)<br />
|- <br />
|- bgcolor="#dddddd" valign="top"<br />
| style="background:lime" | yes<br />
| int isdigit(int character)<br />
|- <br />
|- bgcolor="#eeeeee" valign="top"<br />
| style="background:lime" | yes<br />
| int isgraph(int character)<br />
|- <br />
|- bgcolor="#dddddd" valign="top"<br />
| style="background:lime" | yes<br />
| int islower(int character)<br />
|- <br />
|- bgcolor="#eeeeee" valign="top"<br />
| style="background:lime" | yes<br />
| int isprint(int character)<br />
|- <br />
|- bgcolor="#dddddd" valign="top"<br />
| style="background:lime" | yes<br />
| int ispunct(int character)<br />
|- <br />
|- bgcolor="#eeeeee" valign="top"<br />
| style="background:lime" | yes<br />
| int isspace(int character)<br />
|- <br />
|- bgcolor="#dddddd" valign="top"<br />
| style="background:lime" | yes<br />
| int isupper(int character)<br />
|- <br />
|- bgcolor="#eeeeee" valign="top"<br />
| style="background:lime" | yes<br />
| int isxdigit(int character)<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''errno.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>errno</code> (global)<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''float.h'''<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''limits.h'''<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''locale.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>char *setlocale(int category, const char *locale)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>struct lconv *localeconv(void)</code><br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''math.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>double exp(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double log(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double log10(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double pow(double x, double y)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double sqrt(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double ceil(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double floor(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double fabs(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double ldexp(double x, int n)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double frexp(double x, int* exp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double modf(double x, double* ip)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double fmod(double x, double y)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double sin(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double cos(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double tan(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double asin(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double acos(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double atan(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double atan2(double y, double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double sinh(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double cosh(double x)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double tanh(double x)</code><br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''setjmp.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>int setjmp(jmp_buf env)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void longjmp(jmp_buf env, int val)</code><br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''signal.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>void (*signal(int sig, void (*handler)(int)))(int)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int raise(int sig)</code><br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''stdarg.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>void va_start(va_list ap, lastarg)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>type va_arg(va_list ap, type)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void va_end(va_list ap)</code><br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''stddef.h'''<br />
<br />
|- colspan=2 <br />
| TODO<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''stdio.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>FILE* fopen(const char* filename, const char* mode)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>FILE* freopen(const char* filename, const char* mode, FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fflush(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fclose(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int remove(const char* filename)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int rename(const char* oldname, const char* newname)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>FILE* tmpfile()</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* tmpnam(char s[L_tmpnam])</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int setvbuf(FILE* stream, char* buf, int mode, size_t size)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void setbuf(FILE* stream, char* buf)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fprintf(FILE* stream, const char* format, ...)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int printf(const char* format, ...)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int sprintf(char* s, const char* format, ...)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int vfprintf(FILE* stream, const char* format, va_list arg)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int vprintf(const char* format, va_list arg)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int vsprintf(char* s, const char* format, va_list arg)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fscanf(FILE* stream, const char* format, ...)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int scanf(const char* format, ...)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int sscanf(char* s, const char* format, ...)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fgetc(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* fgets(char* s, int n, FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fputc(int c, FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* fputs(const char* s, FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int getc(FILE* stream)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int getchar(void)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* gets(char* s)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int putc(int c, FILE* stream)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int putchar(int c)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int puts(const char* s)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int ungetc(int c, FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>size_t fread(void* ptr, size_t size, size_t nobj, FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>size_t fwrite(const void* ptr, size_t size, size_t nobj, FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fseek(FILE* stream, long offset, int origin)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>long ftell(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void rewind(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fgetpos(FILE* stream, fpos_t* ptr)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int fsetpos(FILE* stream, const fpos_t* ptr)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void clearerr(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int feof(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int ferror(FILE* stream)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void perror(const char* s)</code><br />
<br />
|}<br />
<br />
| valign="top"|<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff" <br />
! align="left" | Status<br />
! align="left" | Function/Macro/Variable<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''stdlib.h'''<br />
|- <br />
| style="background:lime" | yes<br />
| <code>int abs(int n)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>long labs(long n)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>long long llabs(long long n)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>div_t div(int num, int denom)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>ldiv_t ldiv(long num, long denom)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double atof(const char* s)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int atoi(const char* s)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>long atol(const char* s)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double strtod(const char* s, char** endp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>long strtol(const char* s, char** endp, int base)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>unsigned long strtoul(const char* s, char** endp, int base)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void* calloc(size_t nobj, size_t size)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void* malloc(size_t size)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void* realloc(void* p, size_t size)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void free(void* p)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void abort()</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void exit(int status)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int atexit(void (*fcm)(void))</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int system(const char* s)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* getenv(const char* name)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void* bsearch(const void* key, const void* base, size_t n,<br />size_t size, int (*cmp)(const void* keyval, const void* datum))</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void qsort(void* base, size_t n, size_t size, <br />int (*cmp)(const void*, const void*))</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int rand(void)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void srand(unsigned int seed)</code><br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''string.h'''<br />
|- <br />
| style="background:lime" | yes<br />
| <code>char* strcpy(char* s, const char* ct)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>char* strncpy(char* s, const char* ct, size_t n)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* strcat(char* s, const char* ct)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>char* strncat(char* s, const char* ct, size_t n)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int strcmp(const char* cs, const char* ct)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int strncmp(const char* cs, const char* ct, size_t n)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>int strcoll(const char* cs, const char* ct)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>char* strchr(const char* cs, int c)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* strrchr(const char* cs, int c)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>size_t strspn(const char* cs, const char* ct)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>size_t strcspn(const char* cs, const char* ct)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* strpbrk(const char* cs, const char* ct)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>char* strstr(const char* cs, const char* ct)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>size_t strlen(const char* cs)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* strerror(int n)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* strtok(char* s, const char* t)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>size_t strxfrm(char* s, const char* ct, size_t n)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void* memcpy(void* s, const void* ct, size_t n)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void* memmove(void* s, const void* ct, size_t n)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>int memcmp(const void* cs, const void* ct, size_t n)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>void* memchr(const void* cs, int c, size_t n)</code><br />
|- <br />
| style="background:lime" | yes<br />
| <code>void* memset(void* s, int c, size_t n)</code><br />
<br />
|- bgcolor="#6699ff"<br />
| colspan=2 | '''time.h'''<br />
|- <br />
| style="background:red" | no<br />
| <code>clock_t clock(void)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>time_t time(time_t* tp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>double difftime(time_t time2, time_t time1)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>time_t mktime(struct tm* tp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* asctime(const struct tm* tp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>char* ctime(const time_t* tp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>struct tm* gmtime(const time_t* tp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>struct tm* localtime(const time_t* tp)</code><br />
|- <br />
| style="background:red" | no<br />
| <code>size_t strftime(char* s, size_t smax, const char* fmt,<br />const struct tm* tp)</code><br />
<br />
|}<br />
|}<br />
<br />
== Usage example ==<br />
<br />
Here's an example of a very simple payload (hello.c) and how to build it:<br />
<br />
<pre><br />
#include <libpayload.h><br />
<br />
int main(void)<br />
{<br />
printf("Hello, world!\n");<br />
halt();<br />
return 0;<br />
}<br />
</pre><br />
<br />
Building the payload:<br />
<br />
lpgcc -o hello.elf hello.c<br />
<br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=Welcome_to_coreboot&diff=8017Welcome to coreboot2009-03-01T22:16:14Z<p>Ward: small rephrasing</p>
<hr />
<div></div>Wardhttps://www.coreboot.org/index.php?title=VGA_support&diff=8012VGA support2009-02-26T17:10:09Z<p>Ward: /* How to retrieve a good video bios */</p>
<hr />
<div>== VGA initialization in coreboot v2 ==<br />
<br />
=== General ===<br />
<br />
You need to enable two CONFIG options in your Mainboard Option.lb<br />
<br />
<source lang="bash"><br />
# VGA Console<br />
option CONFIG_CONSOLE_VGA=1<br />
option CONFIG_PCI_ROM_RUN=1<br />
</source><br />
<br />
'''CONFIG_PCI_ROM_RUN''' will use the embedded x86 emulator to run the BIOS image in the expansion ROM of a PCI device.<br />
'''CONFIG_CONSOLE_VGA''' will redirect console messages to the VGA screen once VGA card is initialized.<br />
<br />
For add-on (PCI/PCIe/PCI-X/AGP) VGA cards, you don't have to do anything else besides these two CONFIG options.<br />
If your mainboard has an on-board VGA chip and you insert another VGA add-on card, the add-on<br />
VGA card will be used instead of the on-board VGA chip.<br />
<br />
=== On-board Video Devices ===<br />
<br />
If you want to use the onboard VGA chip, you have to add the following options in addition to the CONFIG options described above.<br />
<br />
==== Mainboard Configuration ====<br />
'''Note:''' This step is not necessary for the VIA CN700 chipset.<br />
<br />
1. In the mainboard's Config.lb (./src/mainboard/<mfg>/<board>/Config.lb) You need to specify the device number for your on-board VGA and the address that the video bios will show up at in the system.<br />
<br />
<source lang = bash><br />
device pci 9.0 on # PCI<br />
chip drivers/pci/onboard<br />
device pci 9.0 on end<br />
register "rom_address" = "0xfff80000" #512k image<br />
#register "rom_address" = "0xfff00000" #1M image<br />
end<br />
end<br />
</source><br />
<br />
Replace the 9.0 with the dev.fn of your vga device. You can find this number by doing a 'lspci' from the board booted under linux.<br />
Please make sure the device number is correct. Otherwise the config code can not compute the proper ROM address.<br />
<br />
<br />
===== How to compute the "rom_address" value =====<br />
<br />
ROM (called 'flash' a lot) chips are located directly below 4Gbyte (0xffffffff) boundary.<br />
<br />
So you need to calculate the address by subtracting the<br />
flash chip size (and adding the offset within the image)<br />
<br />
In coreboot the offset within the image is 0, because its the first<br />
thing in the coreboot image.<br />
<br />
So you need to compute the address in the systems memory space where the start of the video bios will show up.<br />
<br />
To do this you take the 4Gb of address and subtract the size of your coreboot image.<br />
0x100000000 - (ROM size in Kb * 1024)<br />
<br />
You can do this in bash by:<br />
<br />
<source lang="bash"><br />
biossize=256<br />
printf "0x%x\n" $(( 0x100000000 - ($biossize*1024) ))<br />
</source><br />
<br />
Addresses for popular chip sizes:<br />
256K 0xfffc0000<br />
512k 0xfff80000<br />
1024k 0xfff00000<br />
<br />
<br />
==== Target Configuration ====<br />
<br />
2. You still need to modify your target 'Config.lb' to reserve space for the additional video bios. Reduce the size of your coreboot image by the size of the video bios. You will prepend the video bios to the coreboot image in step 3.<br />
<br />
in the normal section<br />
<br />
<source lang="bash"><br />
romimage "normal"<br />
# 48K for SCSI FW or ATI ROM<br />
option ROM_SIZE = 475136<br />
</source><br />
<br />
or if you only have a "fallback" boot then use the "fallback" section instead.<br />
<br />
In the above example the bios chip is 512Kb part. The video bios is 48Kb. So (512*1024)-(48*1024) = 475136.<br />
<br />
'''Note:''' The Via CN700 chipset also requires legacy BIOS support. This can be found or at http://bochs.sourceforge.net/ or in the Debian package bochsbios, filename /usr/share/bochs/BIOS-bochs-legacy. You'll need to leave an additional 64k of space for the Bochs BIOS.<br />
<br />
==== Creating an Image ====<br />
<br />
3. Finally, prepend your video bios to the coreboot.rom<br />
<br />
<source lang="bash"><br />
cat videobios.bin coreboot.rom > final_coreboot.rom<br />
</source><br />
<br />
where ''videobios.bin'' is the name of your video bios image.<br />
You need to make sure the final_coreboot.rom size is the size of your ROM chip. Normally 256kb, 512kb, or 1024Kb.<br />
<br />
See below for instructions on how to retrieve the video BIOS from your factory ROM.<br />
<br />
'''For Via CN700:'''<br />
<source lang="bash"><br />
cat videobios.bin bochsbios.bin coreboot.rom > final_coreboot.rom<br />
</source><br />
<br />
== VGA initialization in coreboot v3 ==<br />
<br />
In coreboot v3 you have to set your PCI option ROM execution method under the '''Device''' menu. The default is x86emu. To get a smaller (and slightly more insecure) version, you can switch to vm86. If you don't want option rom execution, set it to Disabled.<br />
<br />
=== On-board devices ===<br />
<br />
To add option roms for on-board video cards to your coreboot image, you can just add the image using lar:<br />
<br />
<source lang="bash"><br />
lar -C lzma -a coreboot.rom vgabios.rom:pciXXXX,YYYY.rom<br />
</source><br />
<br />
In the above example, vgabios.rom is the name of your option rom on disk. XXXX is the PCI vendor ID of your on-board video adapter and YYYY is its PCI device ID.<br />
<br />
== How to retrieve a good video bios ==<br />
<br />
=== RECOMMENDED: Extracting from your vendor bios image ===<br />
<br />
The recommended method is to take your mainboard vendor's BIOS image and extract the VGA BIOS using a tool called awardeco/amideco/phnxdeco. These tools are available in Debian/Ubuntu. If your vendor bios is award, you would use awardeco, if it's AMI amideco, and if it's Phoenix phnxdeco.<br />
<br />
This is the most reliable way:<br />
* You are guaranteed to get an image that fits to your onboard VGA<br />
* Even if your VGA BIOS uses self-modifying code you get a correct image<br />
With this method, you may need to pad the image to a certain size, e.g. 64k. This is necessary at least for VIA CN700 chipsets where the factory VGA bios is smaller.<br />
<br />
=== Downloading ===<br />
<br />
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])<br />
<br />
=== Extracting from the system ===<br />
<br />
However you should be able to retrieve your own video bios as well with linux.<br />
* Boot up a machine with a commercial bios (not coreboot) with the video card you wish to work under coreboot.<br />
* You can see where and how much your card's bios is using by doing a <br />
<source lang="bash">cat /proc/iomem | grep 'Video ROM'</source><br />
* From the command line enter:<br /><source lang="bash">dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768</source> This assumes you card's bios is cached at 0xc0000, and is 64K long.<br />
<br /><source lang="bash">dd if=/dev/mem of=video.bios.bin.4 bs=65536 count=1 skip=12</source><br />
This works for many of the VIA Epia boards.<br><br />
Alternatively you can automatically generate it using this nice script from Peter Stuge:<br /><br />
<source lang="bash"><br />
$ cat /proc/iomem | grep 'Video ROM' | (read m; m=${m/ :*}; s=${m/-*}; e=${m/*-}; \<br />
$ dd if=/dev/mem of=vgabios.bin bs=1c skip=$[0x$s] count=$[$[0x$e]-$[0x$s]+1])<br />
</source><br />
* You now have a video bios image</div>Wardhttps://www.coreboot.org/index.php?title=VGA_support&diff=8011VGA support2009-02-26T17:09:08Z<p>Ward: /* Extracting from your vendor bios image */</p>
<hr />
<div>== VGA initialization in coreboot v2 ==<br />
<br />
=== General ===<br />
<br />
You need to enable two CONFIG options in your Mainboard Option.lb<br />
<br />
<source lang="bash"><br />
# VGA Console<br />
option CONFIG_CONSOLE_VGA=1<br />
option CONFIG_PCI_ROM_RUN=1<br />
</source><br />
<br />
'''CONFIG_PCI_ROM_RUN''' will use the embedded x86 emulator to run the BIOS image in the expansion ROM of a PCI device.<br />
'''CONFIG_CONSOLE_VGA''' will redirect console messages to the VGA screen once VGA card is initialized.<br />
<br />
For add-on (PCI/PCIe/PCI-X/AGP) VGA cards, you don't have to do anything else besides these two CONFIG options.<br />
If your mainboard has an on-board VGA chip and you insert another VGA add-on card, the add-on<br />
VGA card will be used instead of the on-board VGA chip.<br />
<br />
=== On-board Video Devices ===<br />
<br />
If you want to use the onboard VGA chip, you have to add the following options in addition to the CONFIG options described above.<br />
<br />
==== Mainboard Configuration ====<br />
'''Note:''' This step is not necessary for the VIA CN700 chipset.<br />
<br />
1. In the mainboard's Config.lb (./src/mainboard/<mfg>/<board>/Config.lb) You need to specify the device number for your on-board VGA and the address that the video bios will show up at in the system.<br />
<br />
<source lang = bash><br />
device pci 9.0 on # PCI<br />
chip drivers/pci/onboard<br />
device pci 9.0 on end<br />
register "rom_address" = "0xfff80000" #512k image<br />
#register "rom_address" = "0xfff00000" #1M image<br />
end<br />
end<br />
</source><br />
<br />
Replace the 9.0 with the dev.fn of your vga device. You can find this number by doing a 'lspci' from the board booted under linux.<br />
Please make sure the device number is correct. Otherwise the config code can not compute the proper ROM address.<br />
<br />
<br />
===== How to compute the "rom_address" value =====<br />
<br />
ROM (called 'flash' a lot) chips are located directly below 4Gbyte (0xffffffff) boundary.<br />
<br />
So you need to calculate the address by subtracting the<br />
flash chip size (and adding the offset within the image)<br />
<br />
In coreboot the offset within the image is 0, because its the first<br />
thing in the coreboot image.<br />
<br />
So you need to compute the address in the systems memory space where the start of the video bios will show up.<br />
<br />
To do this you take the 4Gb of address and subtract the size of your coreboot image.<br />
0x100000000 - (ROM size in Kb * 1024)<br />
<br />
You can do this in bash by:<br />
<br />
<source lang="bash"><br />
biossize=256<br />
printf "0x%x\n" $(( 0x100000000 - ($biossize*1024) ))<br />
</source><br />
<br />
Addresses for popular chip sizes:<br />
256K 0xfffc0000<br />
512k 0xfff80000<br />
1024k 0xfff00000<br />
<br />
<br />
==== Target Configuration ====<br />
<br />
2. You still need to modify your target 'Config.lb' to reserve space for the additional video bios. Reduce the size of your coreboot image by the size of the video bios. You will prepend the video bios to the coreboot image in step 3.<br />
<br />
in the normal section<br />
<br />
<source lang="bash"><br />
romimage "normal"<br />
# 48K for SCSI FW or ATI ROM<br />
option ROM_SIZE = 475136<br />
</source><br />
<br />
or if you only have a "fallback" boot then use the "fallback" section instead.<br />
<br />
In the above example the bios chip is 512Kb part. The video bios is 48Kb. So (512*1024)-(48*1024) = 475136.<br />
<br />
'''Note:''' The Via CN700 chipset also requires legacy BIOS support. This can be found or at http://bochs.sourceforge.net/ or in the Debian package bochsbios, filename /usr/share/bochs/BIOS-bochs-legacy. You'll need to leave an additional 64k of space for the Bochs BIOS.<br />
<br />
==== Creating an Image ====<br />
<br />
3. Finally, prepend your video bios to the coreboot.rom<br />
<br />
<source lang="bash"><br />
cat videobios.bin coreboot.rom > final_coreboot.rom<br />
</source><br />
<br />
where ''videobios.bin'' is the name of your video bios image.<br />
You need to make sure the final_coreboot.rom size is the size of your ROM chip. Normally 256kb, 512kb, or 1024Kb.<br />
<br />
See below for instructions on how to retrieve the video BIOS from your factory ROM.<br />
<br />
'''For Via CN700:'''<br />
<source lang="bash"><br />
cat videobios.bin bochsbios.bin coreboot.rom > final_coreboot.rom<br />
</source><br />
<br />
== VGA initialization in coreboot v3 ==<br />
<br />
In coreboot v3 you have to set your PCI option ROM execution method under the '''Device''' menu. The default is x86emu. To get a smaller (and slightly more insecure) version, you can switch to vm86. If you don't want option rom execution, set it to Disabled.<br />
<br />
=== On-board devices ===<br />
<br />
To add option roms for on-board video cards to your coreboot image, you can just add the image using lar:<br />
<br />
<source lang="bash"><br />
lar -C lzma -a coreboot.rom vgabios.rom:pciXXXX,YYYY.rom<br />
</source><br />
<br />
In the above example, vgabios.rom is the name of your option rom on disk. XXXX is the PCI vendor ID of your on-board video adapter and YYYY is its PCI device ID.<br />
<br />
== How to retrieve a good video bios ==<br />
<br />
=== Extracting from your vendor bios image ===<br />
<br />
The recommended method is to take your mainboard vendor's BIOS image and extract the VGA BIOS using a tool called awardeco/amideco/phnxdeco. These tools are available in Debian/Ubuntu. If your vendor bios is award, you would use awardeco, if it's AMI amideco, and if it's Phoenix phnxdeco.<br />
<br />
This is the most reliable way:<br />
* You are guaranteed to get an image that fits to your onboard VGA<br />
* Even if your VGA BIOS uses self-modifying code you get a correct image<br />
With this method, you may need to pad the image to a certain size, e.g. 64k. This is necessary at least for VIA CN700 chipsets where the factory VGA bios is smaller.<br />
<br />
=== Downloading ===<br />
<br />
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])<br />
<br />
=== Extracting from the system ===<br />
<br />
However you should be able to retrieve your own video bios as well with linux.<br />
* Boot up a machine with a commercial bios (not coreboot) with the video card you wish to work under coreboot.<br />
* You can see where and how much your card's bios is using by doing a <br />
<source lang="bash">cat /proc/iomem | grep 'Video ROM'</source><br />
* From the command line enter:<br /><source lang="bash">dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768</source> This assumes you card's bios is cached at 0xc0000, and is 64K long.<br />
<br /><source lang="bash">dd if=/dev/mem of=video.bios.bin.4 bs=65536 count=1 skip=12</source><br />
This works for many of the VIA Epia boards.<br><br />
Alternatively you can automatically generate it using this nice script from Peter Stuge:<br /><br />
<source lang="bash"><br />
$ cat /proc/iomem | grep 'Video ROM' | (read m; m=${m/ :*}; s=${m/-*}; e=${m/*-}; \<br />
$ dd if=/dev/mem of=vgabios.bin bs=1c skip=$[0x$s] count=$[$[0x$e]-$[0x$s]+1])<br />
</source><br />
* You now have a video bios image</div>Wardhttps://www.coreboot.org/index.php?title=ASUS_M2A-VM&diff=8006ASUS M2A-VM2009-02-20T21:34:14Z<p>Ward: </p>
<hr />
<div>This page describes how to use coreboot on the '''[http://www.asus.com/products.aspx?l1=3&l2=101&l3=496&l4=0&model=1568&modelmenu=1 ASUS M2A-VM]''' mainboard.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = OK<br />
|CPU_L2_status = OK<br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = Untested<br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = WIP<br />
|RAM_DDR2_comments = Works with 2 GB. Broken with 4 GB.<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = WIP<br />
|RAM_dualchannel_comments = Does not work with 2x2 GB unmatched DIMMS in a dualchannel setup (expected). Patches have been sent to the list to partially fix this.<br />
|RAM_ecc_status = Untested<br />
<br />
|IDE_status = OK<br />
|IDE_CF_status = Untested<br />
|IDE_25_status = N/A<br />
|CDROM_DVD_status = OK<br />
|SATA_status = OK<br />
|SATA_comments = Not working: SATA multicount transfers (detected as unsupported by Linux)<br />
|USB_status = OK<br />
|Onboard_SCSI_status = N/A<br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = VESA framebuffer console does not work if you select x86emu because the VESA call interface is not available. A normal X server works fine even with 3D (radeonhd driver).<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = WIP<br />
|Onboard_audio_comments = Stereo output (onboard jack) in HD Audio mode works. Onboard jack for microphone input seems not to work due to an unknown reason. Coreboot says it can't find . Linux kernel complains "hda_codec: Unknown model for ALC883, trying auto-probe from BIOS..."<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCI_cards_comments = Only one slot was tested.<br />
|Mini_PCI_cards_status = N/A<br />
|PCIE_x1_status = Untested<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = Untested<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = Untested<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PP_status = Untested<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|Game_port_status = Untested<br />
|IR_status = N/A<br />
|Speaker_status = Untested<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = WIP<br />
|Watchdog_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|Powersave_status = N/A<br />
|ACPI_status = WIP<br />
|ACPI_comments = power button works, software poweroff works, suspend is untested<br />
|Reboot_status = OK<br />
|Poweroff_status = OK<br />
|LEDs_status = N/A<br />
|HPET_status = Untested<br />
|RNG_status = N/A<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = WIP<br />
|Flashrom_comments = [http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html Reported as working with the proprietary BIOS.]<br />
<br />
}}<br />
<br />
== Flashrom ==<br />
<br />
You need [http://www.coreboot.org/pipermail/coreboot/2009-February/044573.html this patch] for flashrom as of 2009/02.<br />
<br />
== Bootlog ==<br />
<br />
The bootlog [http://www.coreboot.org/pipermail/coreboot/2008-December/043728.html is available].<br />
<br />
<br />
== Lspci ==<br />
<br />
=== Proprietary bios ===<br />
<br />
<pre><br />
00:00.0 Host bridge: ATI Technologies Inc RS690 Host Bridge<br />
00:01.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (Internal gfx)<br />
00:07.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express Port 3)<br />
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA<br />
00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)<br />
00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)<br />
00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)<br />
00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)<br />
00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)<br />
00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)<br />
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 13)<br />
00:14.1 IDE interface: ATI Technologies Inc SB600 IDE<br />
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)<br />
00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge<br />
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge<br />
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration<br />
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map<br />
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller<br />
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control<br />
01:05.0 VGA compatible controller: ATI Technologies Inc RS690 [Radeon X1200 Series]<br />
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)<br />
</pre><br />
<br />
<pre><br />
# lspci -vvvvvvvnx<br />
00:00.0 0600: 1002:7910<br />
Subsystem: 1043:826d<br />
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-<br />
Latency: 64<br />
00: 02 10 10 79 06 00 20 22 00 00 00 06 00 40 00 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 6d 82<br />
30: 00 00 00 00 c4 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:01.0 0604: 1002:7912 (prog-if 00 [Normal decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 99<br />
Bus: primary=00, secondary=01, subordinate=01, sec-latency=68<br />
I/O behind bridge: 0000d000-0000dfff<br />
Memory behind bridge: fdc00000-fddfffff<br />
Prefetchable memory behind bridge: 00000000fa000000-00000000fbffffff<br />
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA+ MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
Capabilities: [44] HyperTransport: MSI Mapping Enable+ Fixed+<br />
Capabilities: [b0] Subsystem: 1002:7912<br />
Kernel modules: shpchp<br />
00: 02 10 12 79 07 00 30 02 00 00 04 06 00 63 01 00<br />
10: 00 00 00 00 00 00 00 00 00 01 01 44 d1 d1 20 02<br />
20: c0 fd d0 fd 01 fa f1 fb 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 44 00 00 00 00 00 00 00 ff 00 08 00<br />
<br />
00:07.0 0604: 1002:7917 (prog-if 00 [Normal decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0, Cache Line Size: 32 bytes<br />
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0<br />
I/O behind bridge: 0000e000-0000efff<br />
Memory behind bridge: fdb00000-fdbfffff<br />
Prefetchable memory behind bridge: 00000000fdf00000-00000000fdffffff<br />
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
Capabilities: [50] Power Management version 3<br />
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [58] Express (v1) Root Port (Slot-), MSI 00<br />
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us<br />
ExtTag+ RBE+ FLReset-<br />
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+<br />
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<br />
MaxPayload 128 bytes, MaxReadReq 128 bytes<br />
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-<br />
LnkCap: Port #4, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <64ns, L1 <1us<br />
ClockPM- Suprise- LLActRep+ BwNot-<br />
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br />
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-<br />
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-<br />
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-<br />
RootCap: CRSVisible-<br />
RootSta: PME ReqID 0000, PMEStatus- PMEPending-<br />
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+<br />
Address: fee0300c Data: 4149<br />
Capabilities: [b0] Subsystem: 1043:826d<br />
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+<br />
Capabilities: [100] Virtual Channel <?><br />
Kernel driver in use: pcieport-driver<br />
Kernel modules: shpchp<br />
00: 02 10 17 79 07 04 10 00 00 00 04 06 08 00 01 00<br />
10: 00 00 00 00 00 00 00 00 00 02 02 00 e1 e1 00 00<br />
20: b0 fd b0 fd f1 fd f1 fd 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 00 00 00<br />
<br />
00:12.0 0106: 1002:4380 (prog-if 01 [AHCI 1.0])<br />
Subsystem: 1043:8231<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Interrupt: pin A routed to IRQ 22<br />
Region 0: I/O ports at ff00 [size=8]<br />
Region 1: I/O ports at fe00 [size=4]<br />
Region 2: I/O ports at fd00 [size=8]<br />
Region 3: I/O ports at fc00 [size=4]<br />
Region 4: I/O ports at fb00 [size=16]<br />
Region 5: Memory at fe02f000 (32-bit, non-prefetchable) [size=1K]<br />
Capabilities: [60] Power Management version 2<br />
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [70] SATA HBA <?><br />
Kernel driver in use: ahci<br />
Kernel modules: ahci<br />
00: 02 10 80 43 07 00 30 02 00 01 06 01 00 40 00 00<br />
10: 01 ff 00 00 01 fe 00 00 01 fd 00 00 01 fc 00 00<br />
20: 01 fb 00 00 00 f0 02 fe 00 00 00 00 43 10 31 82<br />
30: 00 00 00 00 60 00 00 00 00 00 00 00 0a 01 00 00<br />
<br />
00:13.0 0c03: 1002:4387 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin A routed to IRQ 16<br />
Region 0: Memory at fe02e000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 87 43 07 00 a0 02 00 10 03 0c 08 40 80 00<br />
10: 00 e0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 01 00 00<br />
<br />
00:13.1 0c03: 1002:4388 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin B routed to IRQ 17<br />
Region 0: Memory at fe02d000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 88 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 d0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 02 00 00<br />
<br />
00:13.2 0c03: 1002:4389 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin C routed to IRQ 18<br />
Region 0: Memory at fe02c000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 89 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 c0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00<br />
<br />
00:13.3 0c03: 1002:438a (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin B routed to IRQ 17<br />
Region 0: Memory at fe02b000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 8a 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 b0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 02 00 00<br />
<br />
00:13.4 0c03: 1002:438b (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin C routed to IRQ 18<br />
Region 0: Memory at fe02a000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 8b 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 a0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00<br />
<br />
00:13.5 0c03: 1002:4386 (prog-if 20 [EHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 64 bytes<br />
Interrupt: pin D routed to IRQ 19<br />
Region 0: Memory at fe029000 (32-bit, non-prefetchable) [size=256]<br />
Capabilities: [c0] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Bridge: PM- B3+<br />
Capabilities: [e4] Debug port: BAR=1 offset=00e0<br />
Kernel driver in use: ehci_hcd<br />
Kernel modules: ehci-hcd<br />
00: 02 10 86 43 17 00 b0 02 00 20 03 0c 10 40 00 00<br />
10: 00 90 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 c0 00 00 00 00 00 00 00 ff 04 00 00<br />
<br />
00:14.0 0c05: 1002:4385 (rev 13)<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV+ VGASnoop+ ParErr+ Stepping+ SERR+ FastB2B+ DisINTx+<br />
Status: Cap+ 66MHz+ UDF+ FastB2B+ ParErr+ DEVSEL=?? >TAbort+ <TAbort+ <MAbort+ >SERR+ <PERR+ INTx+<br />
Latency: 0<br />
Region 0: I/O ports at 0b00 [size=16]<br />
Capabilities: [b0] HyperTransport: MSI Mapping Enable- Fixed+<br />
Kernel driver in use: piix4_smbus<br />
Kernel modules: i2c-piix4<br />
00: 02 10 85 43 ff ff ff ff 13 00 05 0c 00 00 80 00<br />
10: 01 0b 00 00 ff ff ff ff 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 b0 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:14.1 0101: 1002:438c (prog-if 8a [Master SecP PriP])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Interrupt: pin A routed to IRQ 16<br />
Region 0: I/O ports at 01f0 [size=8]<br />
Region 1: I/O ports at 03f4 [size=1]<br />
Region 2: I/O ports at 0170 [size=8]<br />
Region 3: I/O ports at 0374 [size=1]<br />
Region 4: I/O ports at f900 [size=16]<br />
Capabilities: [70] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable-<br />
Address: 00000000 Data: 0000<br />
Kernel driver in use: ATIIXP_IDE<br />
Kernel modules: ata_generic, ide-pci-generic, atiixp<br />
00: 02 10 8c 43 05 00 30 02 00 8a 01 01 00 40 00 00<br />
10: 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00<br />
20: 01 f9 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 70 00 00 00 00 00 00 00 ff 01 00 00<br />
<br />
00:14.2 0403: 1002:4383<br />
Subsystem: 1043:8249<br />
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin ? routed to IRQ 16<br />
Region 0: Memory at fe020000 (64-bit, non-prefetchable) [size=16K]<br />
Capabilities: [50] Power Management version 2<br />
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-<br />
Address: 0000000000000000 Data: 0000<br />
Kernel driver in use: HDA Intel<br />
Kernel modules: snd-hda-intel<br />
00: 02 10 83 43 06 00 10 04 00 00 03 04 08 40 00 00<br />
10: 04 00 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 49 82<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 03 00 00 00<br />
<br />
00:14.3 0601: 1002:438d<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0<br />
00: 02 10 8d 43 0f 00 20 02 00 00 01 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:14.4 0604: 1002:4384 (prog-if 01 [Subtractive decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop+ ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Bus: primary=00, secondary=03, subordinate=03, sec-latency=64<br />
I/O behind bridge: 0000c000-0000cfff<br />
Memory behind bridge: fcc00000-fd7fffff<br />
Prefetchable memory behind bridge: fde00000-fdefffff<br />
Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
00: 02 10 84 43 27 00 a0 02 00 01 04 06 00 40 81 00<br />
10: 00 00 00 00 00 00 00 00 00 03 03 40 c0 c0 80 22<br />
20: c0 fc 70 fd e0 fd e0 fd 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.0 0600: 1022:1100<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Capabilities: [80] HyperTransport: Host or Secondary Interface<br />
!!! Possibly incomplete decoding<br />
Command: WarmRst+ DblEnd-<br />
Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0<br />
Link Config: MLWI=16bit MLWO=16bit LWI=16bit LWO=16bit<br />
Revision ID: 1.02<br />
00: 22 10 00 11 00 00 10 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.1 0600: 1022:1101<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
00: 22 10 01 11 00 00 00 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.2 0600: 1022:1102<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
00: 22 10 02 11 00 00 00 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.3 0600: 1022:1103<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Capabilities: [f0] Secure device <?><br />
Kernel driver in use: k8temp<br />
Kernel modules: k8temp<br />
00: 22 10 03 11 00 00 10 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
01:05.0 0300: 1002:791e (prog-if 00 [VGA controller])<br />
Subsystem: 1043:826d<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin A routed to IRQ 7<br />
Region 0: Memory at fa000000 (64-bit, prefetchable) [size=32M]<br />
Region 2: Memory at fddf0000 (64-bit, non-prefetchable) [size=64K]<br />
Region 4: I/O ports at de00 [size=256]<br />
Region 5: Memory at fdc00000 (32-bit, non-prefetchable) [size=1M]<br />
Capabilities: [50] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-<br />
Address: 0000000000000000 Data: 0000<br />
00: 02 10 1e 79 07 00 10 00 00 00 00 03 08 40 00 00<br />
10: 0c 00 00 fa 00 00 00 00 04 00 df fd 00 00 00 00<br />
20: 01 de 00 00 00 00 c0 fd 00 00 00 00 43 10 6d 82<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 07 01 00 00<br />
<br />
02:00.0 0200: 10ec:8168 (rev 01)<br />
Subsystem: 1043:81aa<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0, Cache Line Size: 64 bytes<br />
Interrupt: pin A routed to IRQ 1278<br />
Region 0: I/O ports at ee00 [size=256]<br />
Region 2: Memory at fdbff000 (64-bit, non-prefetchable) [size=4K]<br />
Expansion ROM at fdbc0000 [disabled] [size=128K]<br />
Capabilities: [40] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [48] Vital Product Data <?><br />
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable+<br />
Address: 00000000fee0300c Data: 4159<br />
Capabilities: [60] Express (v1) Endpoint, MSI 00<br />
DevCap: MaxPayload 1024 bytes, PhantFunc 0, Latency L0s <1us, L1 unlimited<br />
ExtTag+ AttnBtn+ AttnInd+ PwrInd+ RBE- FLReset-<br />
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-<br />
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<br />
MaxPayload 128 bytes, MaxReadReq 4096 bytes<br />
DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr+ TransPend-<br />
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 unlimited, L1 unlimited<br />
ClockPM- Suprise- LLActRep- BwNot-<br />
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br />
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-<br />
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br />
Capabilities: [84] Vendor Specific Information <?><br />
Capabilities: [100] Advanced Error Reporting <?><br />
Capabilities: [12c] Virtual Channel <?><br />
Capabilities: [148] Device Serial Number 68-81-ec-10-00-00-00-1a<br />
Capabilities: [154] Power Budgeting <?><br />
Kernel driver in use: r8169<br />
Kernel modules: r8169<br />
00: ec 10 68 81 07 04 10 00 01 00 00 02 10 00 00 00<br />
10: 01 ee 00 00 00 00 00 00 04 f0 bf fd 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 aa 81<br />
30: 00 00 bc fd 40 00 00 00 00 00 00 00 05 01 00 00<br />
</pre><br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=ASUS_M2A-VM&diff=8005ASUS M2A-VM2009-02-20T19:07:41Z<p>Ward: </p>
<hr />
<div>This page describes how to use coreboot on the '''[http://www.asus.com/products.aspx?l1=3&l2=101&l3=496&l4=0&model=1568&modelmenu=1 ASUS M2A-VM]''' mainboard.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = OK<br />
|CPU_L2_status = OK<br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = Untested<br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = WIP<br />
|RAM_DDR2_comments = Works with 2 GB. Broken with 4 GB.<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = WIP<br />
|RAM_dualchannel_comments = Does not work with 2x2 GB unmatched DIMMS in a dualchannel setup (expected). Patches have been sent to the list to partially fix this.<br />
|RAM_ecc_status = Untested<br />
<br />
|IDE_status = OK<br />
|IDE_CF_status = Untested<br />
|IDE_25_status = N/A<br />
|CDROM_DVD_status = OK<br />
|SATA_status = OK<br />
|SATA_comments = Not working: SATA multicount transfers (detected as unsupported by Linux)<br />
|USB_status = OK<br />
|Onboard_SCSI_status = N/A<br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = VESA framebuffer console does not work if you select x86emu because the VESA call interface is not available. A normal X server works fine even with 3D (radeonhd driver).<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = WIP<br />
|Onboard_audio_comments = Stereo output (onboard jack) in HD Audio mode works. Onboard jack for microphone input seems not to work due to an unknown reason. Coreboot says it can't find . Linux kernel complains "hda_codec: Unknown model for ALC883, trying auto-probe from BIOS..."<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCI_cards_comments = Only one slot was tested.<br />
|Mini_PCI_cards_status = N/A<br />
|PCIE_x1_status = Untested<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = Untested<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = Untested<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PP_status = Untested<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|Game_port_status = Untested<br />
|IR_status = N/A<br />
|Speaker_status = Untested<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = WIP<br />
|Watchdog_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|Powersave_status = N/A<br />
|ACPI_status = WIP<br />
|ACPI_comments = power button works, software poweroff works, suspend is untested<br />
|Reboot_status = OK<br />
|Poweroff_status = OK<br />
|LEDs_status = N/A<br />
|HPET_status = Untested<br />
|RNG_status = N/A<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = WIP<br />
|Flashrom_comments = [http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html Reported as working with the proprietary BIOS.]<br />
<br />
}}<br />
<br />
== Bootlog ==<br />
<br />
The bootlog [http://www.coreboot.org/pipermail/coreboot/2008-December/043728.html is available].<br />
<br />
<br />
== Lspci ==<br />
<br />
=== Proprietary bios ===<br />
<br />
<pre><br />
00:00.0 Host bridge: ATI Technologies Inc RS690 Host Bridge<br />
00:01.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (Internal gfx)<br />
00:07.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express Port 3)<br />
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA<br />
00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)<br />
00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)<br />
00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)<br />
00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)<br />
00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)<br />
00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)<br />
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 13)<br />
00:14.1 IDE interface: ATI Technologies Inc SB600 IDE<br />
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)<br />
00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge<br />
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge<br />
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration<br />
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map<br />
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller<br />
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control<br />
01:05.0 VGA compatible controller: ATI Technologies Inc RS690 [Radeon X1200 Series]<br />
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)<br />
</pre><br />
<br />
<pre><br />
# lspci -vvvvvvvnx<br />
00:00.0 0600: 1002:7910<br />
Subsystem: 1043:826d<br />
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-<br />
Latency: 64<br />
00: 02 10 10 79 06 00 20 22 00 00 00 06 00 40 00 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 6d 82<br />
30: 00 00 00 00 c4 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:01.0 0604: 1002:7912 (prog-if 00 [Normal decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 99<br />
Bus: primary=00, secondary=01, subordinate=01, sec-latency=68<br />
I/O behind bridge: 0000d000-0000dfff<br />
Memory behind bridge: fdc00000-fddfffff<br />
Prefetchable memory behind bridge: 00000000fa000000-00000000fbffffff<br />
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA+ MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
Capabilities: [44] HyperTransport: MSI Mapping Enable+ Fixed+<br />
Capabilities: [b0] Subsystem: 1002:7912<br />
Kernel modules: shpchp<br />
00: 02 10 12 79 07 00 30 02 00 00 04 06 00 63 01 00<br />
10: 00 00 00 00 00 00 00 00 00 01 01 44 d1 d1 20 02<br />
20: c0 fd d0 fd 01 fa f1 fb 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 44 00 00 00 00 00 00 00 ff 00 08 00<br />
<br />
00:07.0 0604: 1002:7917 (prog-if 00 [Normal decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0, Cache Line Size: 32 bytes<br />
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0<br />
I/O behind bridge: 0000e000-0000efff<br />
Memory behind bridge: fdb00000-fdbfffff<br />
Prefetchable memory behind bridge: 00000000fdf00000-00000000fdffffff<br />
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
Capabilities: [50] Power Management version 3<br />
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [58] Express (v1) Root Port (Slot-), MSI 00<br />
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us<br />
ExtTag+ RBE+ FLReset-<br />
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+<br />
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<br />
MaxPayload 128 bytes, MaxReadReq 128 bytes<br />
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-<br />
LnkCap: Port #4, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <64ns, L1 <1us<br />
ClockPM- Suprise- LLActRep+ BwNot-<br />
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br />
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-<br />
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-<br />
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-<br />
RootCap: CRSVisible-<br />
RootSta: PME ReqID 0000, PMEStatus- PMEPending-<br />
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+<br />
Address: fee0300c Data: 4149<br />
Capabilities: [b0] Subsystem: 1043:826d<br />
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+<br />
Capabilities: [100] Virtual Channel <?><br />
Kernel driver in use: pcieport-driver<br />
Kernel modules: shpchp<br />
00: 02 10 17 79 07 04 10 00 00 00 04 06 08 00 01 00<br />
10: 00 00 00 00 00 00 00 00 00 02 02 00 e1 e1 00 00<br />
20: b0 fd b0 fd f1 fd f1 fd 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 00 00 00<br />
<br />
00:12.0 0106: 1002:4380 (prog-if 01 [AHCI 1.0])<br />
Subsystem: 1043:8231<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Interrupt: pin A routed to IRQ 22<br />
Region 0: I/O ports at ff00 [size=8]<br />
Region 1: I/O ports at fe00 [size=4]<br />
Region 2: I/O ports at fd00 [size=8]<br />
Region 3: I/O ports at fc00 [size=4]<br />
Region 4: I/O ports at fb00 [size=16]<br />
Region 5: Memory at fe02f000 (32-bit, non-prefetchable) [size=1K]<br />
Capabilities: [60] Power Management version 2<br />
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [70] SATA HBA <?><br />
Kernel driver in use: ahci<br />
Kernel modules: ahci<br />
00: 02 10 80 43 07 00 30 02 00 01 06 01 00 40 00 00<br />
10: 01 ff 00 00 01 fe 00 00 01 fd 00 00 01 fc 00 00<br />
20: 01 fb 00 00 00 f0 02 fe 00 00 00 00 43 10 31 82<br />
30: 00 00 00 00 60 00 00 00 00 00 00 00 0a 01 00 00<br />
<br />
00:13.0 0c03: 1002:4387 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin A routed to IRQ 16<br />
Region 0: Memory at fe02e000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 87 43 07 00 a0 02 00 10 03 0c 08 40 80 00<br />
10: 00 e0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 01 00 00<br />
<br />
00:13.1 0c03: 1002:4388 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin B routed to IRQ 17<br />
Region 0: Memory at fe02d000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 88 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 d0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 02 00 00<br />
<br />
00:13.2 0c03: 1002:4389 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin C routed to IRQ 18<br />
Region 0: Memory at fe02c000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 89 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 c0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00<br />
<br />
00:13.3 0c03: 1002:438a (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin B routed to IRQ 17<br />
Region 0: Memory at fe02b000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 8a 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 b0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 02 00 00<br />
<br />
00:13.4 0c03: 1002:438b (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin C routed to IRQ 18<br />
Region 0: Memory at fe02a000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 8b 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 a0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00<br />
<br />
00:13.5 0c03: 1002:4386 (prog-if 20 [EHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 64 bytes<br />
Interrupt: pin D routed to IRQ 19<br />
Region 0: Memory at fe029000 (32-bit, non-prefetchable) [size=256]<br />
Capabilities: [c0] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Bridge: PM- B3+<br />
Capabilities: [e4] Debug port: BAR=1 offset=00e0<br />
Kernel driver in use: ehci_hcd<br />
Kernel modules: ehci-hcd<br />
00: 02 10 86 43 17 00 b0 02 00 20 03 0c 10 40 00 00<br />
10: 00 90 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 c0 00 00 00 00 00 00 00 ff 04 00 00<br />
<br />
00:14.0 0c05: 1002:4385 (rev 13)<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV+ VGASnoop+ ParErr+ Stepping+ SERR+ FastB2B+ DisINTx+<br />
Status: Cap+ 66MHz+ UDF+ FastB2B+ ParErr+ DEVSEL=?? >TAbort+ <TAbort+ <MAbort+ >SERR+ <PERR+ INTx+<br />
Latency: 0<br />
Region 0: I/O ports at 0b00 [size=16]<br />
Capabilities: [b0] HyperTransport: MSI Mapping Enable- Fixed+<br />
Kernel driver in use: piix4_smbus<br />
Kernel modules: i2c-piix4<br />
00: 02 10 85 43 ff ff ff ff 13 00 05 0c 00 00 80 00<br />
10: 01 0b 00 00 ff ff ff ff 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 b0 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:14.1 0101: 1002:438c (prog-if 8a [Master SecP PriP])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Interrupt: pin A routed to IRQ 16<br />
Region 0: I/O ports at 01f0 [size=8]<br />
Region 1: I/O ports at 03f4 [size=1]<br />
Region 2: I/O ports at 0170 [size=8]<br />
Region 3: I/O ports at 0374 [size=1]<br />
Region 4: I/O ports at f900 [size=16]<br />
Capabilities: [70] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable-<br />
Address: 00000000 Data: 0000<br />
Kernel driver in use: ATIIXP_IDE<br />
Kernel modules: ata_generic, ide-pci-generic, atiixp<br />
00: 02 10 8c 43 05 00 30 02 00 8a 01 01 00 40 00 00<br />
10: 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00<br />
20: 01 f9 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 70 00 00 00 00 00 00 00 ff 01 00 00<br />
<br />
00:14.2 0403: 1002:4383<br />
Subsystem: 1043:8249<br />
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin ? routed to IRQ 16<br />
Region 0: Memory at fe020000 (64-bit, non-prefetchable) [size=16K]<br />
Capabilities: [50] Power Management version 2<br />
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-<br />
Address: 0000000000000000 Data: 0000<br />
Kernel driver in use: HDA Intel<br />
Kernel modules: snd-hda-intel<br />
00: 02 10 83 43 06 00 10 04 00 00 03 04 08 40 00 00<br />
10: 04 00 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 49 82<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 03 00 00 00<br />
<br />
00:14.3 0601: 1002:438d<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0<br />
00: 02 10 8d 43 0f 00 20 02 00 00 01 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:14.4 0604: 1002:4384 (prog-if 01 [Subtractive decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop+ ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Bus: primary=00, secondary=03, subordinate=03, sec-latency=64<br />
I/O behind bridge: 0000c000-0000cfff<br />
Memory behind bridge: fcc00000-fd7fffff<br />
Prefetchable memory behind bridge: fde00000-fdefffff<br />
Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
00: 02 10 84 43 27 00 a0 02 00 01 04 06 00 40 81 00<br />
10: 00 00 00 00 00 00 00 00 00 03 03 40 c0 c0 80 22<br />
20: c0 fc 70 fd e0 fd e0 fd 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.0 0600: 1022:1100<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Capabilities: [80] HyperTransport: Host or Secondary Interface<br />
!!! Possibly incomplete decoding<br />
Command: WarmRst+ DblEnd-<br />
Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0<br />
Link Config: MLWI=16bit MLWO=16bit LWI=16bit LWO=16bit<br />
Revision ID: 1.02<br />
00: 22 10 00 11 00 00 10 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.1 0600: 1022:1101<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
00: 22 10 01 11 00 00 00 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.2 0600: 1022:1102<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
00: 22 10 02 11 00 00 00 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.3 0600: 1022:1103<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Capabilities: [f0] Secure device <?><br />
Kernel driver in use: k8temp<br />
Kernel modules: k8temp<br />
00: 22 10 03 11 00 00 10 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
01:05.0 0300: 1002:791e (prog-if 00 [VGA controller])<br />
Subsystem: 1043:826d<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin A routed to IRQ 7<br />
Region 0: Memory at fa000000 (64-bit, prefetchable) [size=32M]<br />
Region 2: Memory at fddf0000 (64-bit, non-prefetchable) [size=64K]<br />
Region 4: I/O ports at de00 [size=256]<br />
Region 5: Memory at fdc00000 (32-bit, non-prefetchable) [size=1M]<br />
Capabilities: [50] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-<br />
Address: 0000000000000000 Data: 0000<br />
00: 02 10 1e 79 07 00 10 00 00 00 00 03 08 40 00 00<br />
10: 0c 00 00 fa 00 00 00 00 04 00 df fd 00 00 00 00<br />
20: 01 de 00 00 00 00 c0 fd 00 00 00 00 43 10 6d 82<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 07 01 00 00<br />
<br />
02:00.0 0200: 10ec:8168 (rev 01)<br />
Subsystem: 1043:81aa<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0, Cache Line Size: 64 bytes<br />
Interrupt: pin A routed to IRQ 1278<br />
Region 0: I/O ports at ee00 [size=256]<br />
Region 2: Memory at fdbff000 (64-bit, non-prefetchable) [size=4K]<br />
Expansion ROM at fdbc0000 [disabled] [size=128K]<br />
Capabilities: [40] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [48] Vital Product Data <?><br />
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable+<br />
Address: 00000000fee0300c Data: 4159<br />
Capabilities: [60] Express (v1) Endpoint, MSI 00<br />
DevCap: MaxPayload 1024 bytes, PhantFunc 0, Latency L0s <1us, L1 unlimited<br />
ExtTag+ AttnBtn+ AttnInd+ PwrInd+ RBE- FLReset-<br />
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-<br />
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<br />
MaxPayload 128 bytes, MaxReadReq 4096 bytes<br />
DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr+ TransPend-<br />
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 unlimited, L1 unlimited<br />
ClockPM- Suprise- LLActRep- BwNot-<br />
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br />
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-<br />
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br />
Capabilities: [84] Vendor Specific Information <?><br />
Capabilities: [100] Advanced Error Reporting <?><br />
Capabilities: [12c] Virtual Channel <?><br />
Capabilities: [148] Device Serial Number 68-81-ec-10-00-00-00-1a<br />
Capabilities: [154] Power Budgeting <?><br />
Kernel driver in use: r8169<br />
Kernel modules: r8169<br />
00: ec 10 68 81 07 04 10 00 01 00 00 02 10 00 00 00<br />
10: 01 ee 00 00 00 00 00 00 04 f0 bf fd 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 aa 81<br />
30: 00 00 bc fd 40 00 00 00 00 00 00 00 05 01 00 00<br />
</pre><br />
<br />
{{PD-self}}</div>Wardhttps://www.coreboot.org/index.php?title=ASUS_M2A-VM&diff=8004ASUS M2A-VM2009-02-20T18:50:10Z<p>Ward: /* Lspci */ lspci -vvvvvvvnx</p>
<hr />
<div>This page describes how to use coreboot on the '''[http://www.asus.com/products.aspx?l1=3&l2=101&l3=496&l4=0&model=1568&modelmenu=1 ASUS M2A-VM]''' mainboard.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = OK<br />
|CPU_L2_status = OK<br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = Untested<br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = WIP<br />
|RAM_DDR2_comments = Works with 2 GB. Broken with 4 GB.<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = WIP<br />
|RAM_dualchannel_comments = Does not work with 2x2 GB unmatched DIMMS in a dualchannel setup (expected). Patches have been sent to the list to partially fix this.<br />
|RAM_ecc_status = Untested<br />
<br />
|IDE_status = OK<br />
|IDE_CF_status = Untested<br />
|IDE_25_status = N/A<br />
|CDROM_DVD_status = OK<br />
|SATA_status = OK<br />
|SATA_comments = Not working: SATA multicount transfers (detected as unsupported by Linux)<br />
|USB_status = OK<br />
|Onboard_SCSI_status = N/A<br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = VESA framebuffer console does not work if you select x86emu because the VESA call interface is not available. A normal X server works fine even with 3D (radeonhd driver).<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = WIP<br />
|Onboard_audio_comments = Stereo output (onboard jack) in HD Audio mode works. Onboard jack for microphone input seems not to work due to an unknown reason. Coreboot says it can't find . Linux kernel complains "hda_codec: Unknown model for ALC883, trying auto-probe from BIOS..."<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCI_cards_comments = Only one slot was tested.<br />
|Mini_PCI_cards_status = N/A<br />
|PCIE_x1_status = Untested<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = Untested<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = Untested<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PP_status = Untested<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|Game_port_status = Untested<br />
|IR_status = N/A<br />
|Speaker_status = Untested<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = WIP<br />
|Watchdog_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|Powersave_status = N/A<br />
|ACPI_status = WIP<br />
|ACPI_comments = power button works, software poweroff works, suspend is untested<br />
|Reboot_status = OK<br />
|Poweroff_status = OK<br />
|LEDs_status = N/A<br />
|HPET_status = Untested<br />
|RNG_status = N/A<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = WIP<br />
|Flashrom_comments = [http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html Reported as working with the proprietary BIOS.]<br />
<br />
}}<br />
<br />
== Bootlog ==<br />
<br />
The bootlog [http://www.coreboot.org/pipermail/coreboot/2008-December/043728.html is available].<br />
<br />
{{PD-self}}<br />
<br />
== Lspci ==<br />
<br />
=== Proprietary bios ===<br />
<br />
<pre><br />
00:00.0 Host bridge: ATI Technologies Inc RS690 Host Bridge<br />
00:01.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (Internal gfx)<br />
00:07.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express Port 3)<br />
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA<br />
00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)<br />
00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)<br />
00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)<br />
00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)<br />
00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)<br />
00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)<br />
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 13)<br />
00:14.1 IDE interface: ATI Technologies Inc SB600 IDE<br />
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)<br />
00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge<br />
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge<br />
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration<br />
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map<br />
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller<br />
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control<br />
01:05.0 VGA compatible controller: ATI Technologies Inc RS690 [Radeon X1200 Series]<br />
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)<br />
</pre><br />
<br />
<pre><br />
# lspci -vvvvvvvnx<br />
00:00.0 0600: 1002:7910<br />
Subsystem: 1043:826d<br />
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-<br />
Latency: 64<br />
00: 02 10 10 79 06 00 20 22 00 00 00 06 00 40 00 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 6d 82<br />
30: 00 00 00 00 c4 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:01.0 0604: 1002:7912 (prog-if 00 [Normal decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 99<br />
Bus: primary=00, secondary=01, subordinate=01, sec-latency=68<br />
I/O behind bridge: 0000d000-0000dfff<br />
Memory behind bridge: fdc00000-fddfffff<br />
Prefetchable memory behind bridge: 00000000fa000000-00000000fbffffff<br />
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA+ MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
Capabilities: [44] HyperTransport: MSI Mapping Enable+ Fixed+<br />
Capabilities: [b0] Subsystem: 1002:7912<br />
Kernel modules: shpchp<br />
00: 02 10 12 79 07 00 30 02 00 00 04 06 00 63 01 00<br />
10: 00 00 00 00 00 00 00 00 00 01 01 44 d1 d1 20 02<br />
20: c0 fd d0 fd 01 fa f1 fb 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 44 00 00 00 00 00 00 00 ff 00 08 00<br />
<br />
00:07.0 0604: 1002:7917 (prog-if 00 [Normal decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0, Cache Line Size: 32 bytes<br />
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0<br />
I/O behind bridge: 0000e000-0000efff<br />
Memory behind bridge: fdb00000-fdbfffff<br />
Prefetchable memory behind bridge: 00000000fdf00000-00000000fdffffff<br />
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
Capabilities: [50] Power Management version 3<br />
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [58] Express (v1) Root Port (Slot-), MSI 00<br />
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us<br />
ExtTag+ RBE+ FLReset-<br />
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+<br />
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<br />
MaxPayload 128 bytes, MaxReadReq 128 bytes<br />
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-<br />
LnkCap: Port #4, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <64ns, L1 <1us<br />
ClockPM- Suprise- LLActRep+ BwNot-<br />
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br />
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-<br />
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-<br />
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-<br />
RootCap: CRSVisible-<br />
RootSta: PME ReqID 0000, PMEStatus- PMEPending-<br />
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable+<br />
Address: fee0300c Data: 4149<br />
Capabilities: [b0] Subsystem: 1043:826d<br />
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+<br />
Capabilities: [100] Virtual Channel <?><br />
Kernel driver in use: pcieport-driver<br />
Kernel modules: shpchp<br />
00: 02 10 17 79 07 04 10 00 00 00 04 06 08 00 01 00<br />
10: 00 00 00 00 00 00 00 00 00 02 02 00 e1 e1 00 00<br />
20: b0 fd b0 fd f1 fd f1 fd 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 00 00 00<br />
<br />
00:12.0 0106: 1002:4380 (prog-if 01 [AHCI 1.0])<br />
Subsystem: 1043:8231<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Interrupt: pin A routed to IRQ 22<br />
Region 0: I/O ports at ff00 [size=8]<br />
Region 1: I/O ports at fe00 [size=4]<br />
Region 2: I/O ports at fd00 [size=8]<br />
Region 3: I/O ports at fc00 [size=4]<br />
Region 4: I/O ports at fb00 [size=16]<br />
Region 5: Memory at fe02f000 (32-bit, non-prefetchable) [size=1K]<br />
Capabilities: [60] Power Management version 2<br />
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [70] SATA HBA <?><br />
Kernel driver in use: ahci<br />
Kernel modules: ahci<br />
00: 02 10 80 43 07 00 30 02 00 01 06 01 00 40 00 00<br />
10: 01 ff 00 00 01 fe 00 00 01 fd 00 00 01 fc 00 00<br />
20: 01 fb 00 00 00 f0 02 fe 00 00 00 00 43 10 31 82<br />
30: 00 00 00 00 60 00 00 00 00 00 00 00 0a 01 00 00<br />
<br />
00:13.0 0c03: 1002:4387 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin A routed to IRQ 16<br />
Region 0: Memory at fe02e000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 87 43 07 00 a0 02 00 10 03 0c 08 40 80 00<br />
10: 00 e0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 01 00 00<br />
<br />
00:13.1 0c03: 1002:4388 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin B routed to IRQ 17<br />
Region 0: Memory at fe02d000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 88 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 d0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 02 00 00<br />
<br />
00:13.2 0c03: 1002:4389 (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin C routed to IRQ 18<br />
Region 0: Memory at fe02c000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 89 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 c0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00<br />
<br />
00:13.3 0c03: 1002:438a (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin B routed to IRQ 17<br />
Region 0: Memory at fe02b000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 8a 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 b0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 02 00 00<br />
<br />
00:13.4 0c03: 1002:438b (prog-if 10 [OHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin C routed to IRQ 18<br />
Region 0: Memory at fe02a000 (32-bit, non-prefetchable) [size=4K]<br />
Kernel driver in use: ohci_hcd<br />
Kernel modules: ohci-hcd<br />
00: 02 10 8b 43 07 00 a0 02 00 10 03 0c 08 40 00 00<br />
10: 00 a0 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00<br />
<br />
00:13.5 0c03: 1002:4386 (prog-if 20 [EHCI])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 64 bytes<br />
Interrupt: pin D routed to IRQ 19<br />
Region 0: Memory at fe029000 (32-bit, non-prefetchable) [size=256]<br />
Capabilities: [c0] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Bridge: PM- B3+<br />
Capabilities: [e4] Debug port: BAR=1 offset=00e0<br />
Kernel driver in use: ehci_hcd<br />
Kernel modules: ehci-hcd<br />
00: 02 10 86 43 17 00 b0 02 00 20 03 0c 10 40 00 00<br />
10: 00 90 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 c0 00 00 00 00 00 00 00 ff 04 00 00<br />
<br />
00:14.0 0c05: 1002:4385 (rev 13)<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV+ VGASnoop+ ParErr+ Stepping+ SERR+ FastB2B+ DisINTx+<br />
Status: Cap+ 66MHz+ UDF+ FastB2B+ ParErr+ DEVSEL=?? >TAbort+ <TAbort+ <MAbort+ >SERR+ <PERR+ INTx+<br />
Latency: 0<br />
Region 0: I/O ports at 0b00 [size=16]<br />
Capabilities: [b0] HyperTransport: MSI Mapping Enable- Fixed+<br />
Kernel driver in use: piix4_smbus<br />
Kernel modules: i2c-piix4<br />
00: 02 10 85 43 ff ff ff ff 13 00 05 0c 00 00 80 00<br />
10: 01 0b 00 00 ff ff ff ff 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 b0 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:14.1 0101: 1002:438c (prog-if 8a [Master SecP PriP])<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Interrupt: pin A routed to IRQ 16<br />
Region 0: I/O ports at 01f0 [size=8]<br />
Region 1: I/O ports at 03f4 [size=1]<br />
Region 2: I/O ports at 0170 [size=8]<br />
Region 3: I/O ports at 0374 [size=1]<br />
Region 4: I/O ports at f900 [size=16]<br />
Capabilities: [70] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable-<br />
Address: 00000000 Data: 0000<br />
Kernel driver in use: ATIIXP_IDE<br />
Kernel modules: ata_generic, ide-pci-generic, atiixp<br />
00: 02 10 8c 43 05 00 30 02 00 8a 01 01 00 40 00 00<br />
10: 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00<br />
20: 01 f9 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 70 00 00 00 00 00 00 00 ff 01 00 00<br />
<br />
00:14.2 0403: 1002:4383<br />
Subsystem: 1043:8249<br />
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin ? routed to IRQ 16<br />
Region 0: Memory at fe020000 (64-bit, non-prefetchable) [size=16K]<br />
Capabilities: [50] Power Management version 2<br />
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-<br />
Address: 0000000000000000 Data: 0000<br />
Kernel driver in use: HDA Intel<br />
Kernel modules: snd-hda-intel<br />
00: 02 10 83 43 06 00 10 04 00 00 03 04 08 40 00 00<br />
10: 04 00 02 fe 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 49 82<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 03 00 00 00<br />
<br />
00:14.3 0601: 1002:438d<br />
Subsystem: 1043:81ef<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0<br />
00: 02 10 8d 43 0f 00 20 02 00 00 01 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 ef 81<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:14.4 0604: 1002:4384 (prog-if 01 [Subtractive decode])<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop+ ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64<br />
Bus: primary=00, secondary=03, subordinate=03, sec-latency=64<br />
I/O behind bridge: 0000c000-0000cfff<br />
Memory behind bridge: fcc00000-fd7fffff<br />
Prefetchable memory behind bridge: fde00000-fdefffff<br />
Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-<br />
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-<br />
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-<br />
00: 02 10 84 43 27 00 a0 02 00 01 04 06 00 40 81 00<br />
10: 00 00 00 00 00 00 00 00 00 03 03 40 c0 c0 80 22<br />
20: c0 fc 70 fd e0 fd e0 fd 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.0 0600: 1022:1100<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Capabilities: [80] HyperTransport: Host or Secondary Interface<br />
!!! Possibly incomplete decoding<br />
Command: WarmRst+ DblEnd-<br />
Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0<br />
Link Config: MLWI=16bit MLWO=16bit LWI=16bit LWO=16bit<br />
Revision ID: 1.02<br />
00: 22 10 00 11 00 00 10 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.1 0600: 1022:1101<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
00: 22 10 01 11 00 00 00 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.2 0600: 1022:1102<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
00: 22 10 02 11 00 00 00 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
00:18.3 0600: 1022:1103<br />
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Capabilities: [f0] Secure device <?><br />
Kernel driver in use: k8temp<br />
Kernel modules: k8temp<br />
00: 22 10 03 11 00 00 10 00 00 00 00 06 00 00 80 00<br />
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br />
30: 00 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00<br />
<br />
01:05.0 0300: 1002:791e (prog-if 00 [VGA controller])<br />
Subsystem: 1043:826d<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 64, Cache Line Size: 32 bytes<br />
Interrupt: pin A routed to IRQ 7<br />
Region 0: Memory at fa000000 (64-bit, prefetchable) [size=32M]<br />
Region 2: Memory at fddf0000 (64-bit, non-prefetchable) [size=64K]<br />
Region 4: I/O ports at de00 [size=256]<br />
Region 5: Memory at fdc00000 (32-bit, non-prefetchable) [size=1M]<br />
Capabilities: [50] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-<br />
Address: 0000000000000000 Data: 0000<br />
00: 02 10 1e 79 07 00 10 00 00 00 00 03 08 40 00 00<br />
10: 0c 00 00 fa 00 00 00 00 04 00 df fd 00 00 00 00<br />
20: 01 de 00 00 00 00 c0 fd 00 00 00 00 43 10 6d 82<br />
30: 00 00 00 00 50 00 00 00 00 00 00 00 07 01 00 00<br />
<br />
02:00.0 0200: 10ec:8168 (rev 01)<br />
Subsystem: 1043:81aa<br />
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+<br />
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 0, Cache Line Size: 64 bytes<br />
Interrupt: pin A routed to IRQ 1278<br />
Region 0: I/O ports at ee00 [size=256]<br />
Region 2: Memory at fdbff000 (64-bit, non-prefetchable) [size=4K]<br />
Expansion ROM at fdbc0000 [disabled] [size=128K]<br />
Capabilities: [40] Power Management version 2<br />
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)<br />
Status: D0 PME-Enable- DSel=0 DScale=0 PME-<br />
Capabilities: [48] Vital Product Data <?><br />
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable+<br />
Address: 00000000fee0300c Data: 4159<br />
Capabilities: [60] Express (v1) Endpoint, MSI 00<br />
DevCap: MaxPayload 1024 bytes, PhantFunc 0, Latency L0s <1us, L1 unlimited<br />
ExtTag+ AttnBtn+ AttnInd+ PwrInd+ RBE- FLReset-<br />
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-<br />
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<br />
MaxPayload 128 bytes, MaxReadReq 4096 bytes<br />
DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr+ TransPend-<br />
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 unlimited, L1 unlimited<br />
ClockPM- Suprise- LLActRep- BwNot-<br />
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<br />
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-<br />
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<br />
Capabilities: [84] Vendor Specific Information <?><br />
Capabilities: [100] Advanced Error Reporting <?><br />
Capabilities: [12c] Virtual Channel <?><br />
Capabilities: [148] Device Serial Number 68-81-ec-10-00-00-00-1a<br />
Capabilities: [154] Power Budgeting <?><br />
Kernel driver in use: r8169<br />
Kernel modules: r8169<br />
00: ec 10 68 81 07 04 10 00 01 00 00 02 10 00 00 00<br />
10: 01 ee 00 00 00 00 00 00 04 f0 bf fd 00 00 00 00<br />
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 aa 81<br />
30: 00 00 bc fd 40 00 00 00 00 00 00 00 05 01 00 00<br />
</pre></div>Wardhttps://www.coreboot.org/index.php?title=ASUS_M2A-VM&diff=8003ASUS M2A-VM2009-02-20T18:48:30Z<p>Ward: add lspci (proprietary bios)</p>
<hr />
<div>This page describes how to use coreboot on the '''[http://www.asus.com/products.aspx?l1=3&l2=101&l3=496&l4=0&model=1568&modelmenu=1 ASUS M2A-VM]''' mainboard.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = OK<br />
|CPU_L2_status = OK<br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = Untested<br />
|CPU_virt_status = Untested<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = WIP<br />
|RAM_DDR2_comments = Works with 2 GB. Broken with 4 GB.<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = WIP<br />
|RAM_dualchannel_comments = Does not work with 2x2 GB unmatched DIMMS in a dualchannel setup (expected). Patches have been sent to the list to partially fix this.<br />
|RAM_ecc_status = Untested<br />
<br />
|IDE_status = OK<br />
|IDE_CF_status = Untested<br />
|IDE_25_status = N/A<br />
|CDROM_DVD_status = OK<br />
|SATA_status = OK<br />
|SATA_comments = Not working: SATA multicount transfers (detected as unsupported by Linux)<br />
|USB_status = OK<br />
|Onboard_SCSI_status = N/A<br />
|Onboard_VGA_status = OK<br />
|Onboard_VGA_comments = VESA framebuffer console does not work if you select x86emu because the VESA call interface is not available. A normal X server works fine even with 3D (radeonhd driver).<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = WIP<br />
|Onboard_audio_comments = Stereo output (onboard jack) in HD Audio mode works. Onboard jack for microphone input seems not to work due to an unknown reason. Coreboot says it can't find . Linux kernel complains "hda_codec: Unknown model for ALC883, trying auto-probe from BIOS..."<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = N/A<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = OK<br />
|PCI_cards_comments = Only one slot was tested.<br />
|Mini_PCI_cards_status = N/A<br />
|PCIE_x1_status = Untested<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = Untested<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = Untested<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PP_status = Untested<br />
|PS2_keyboard_status = OK<br />
|PS2_mouse_status = Untested<br />
|Game_port_status = Untested<br />
|IR_status = N/A<br />
|Speaker_status = Untested<br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = WIP<br />
|Watchdog_status = Untested<br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = OK<br />
|Powersave_status = N/A<br />
|ACPI_status = WIP<br />
|ACPI_comments = power button works, software poweroff works, suspend is untested<br />
|Reboot_status = OK<br />
|Poweroff_status = OK<br />
|LEDs_status = N/A<br />
|HPET_status = Untested<br />
|RNG_status = N/A<br />
|WakeOnModem_status = Untested<br />
|WakeOnLAN_status = Untested<br />
|WakeOnKeyboard_status = Untested<br />
|WakeOnMouse_status = Untested<br />
|Flashrom_status = WIP<br />
|Flashrom_comments = [http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html Reported as working with the proprietary BIOS.]<br />
<br />
}}<br />
<br />
== Bootlog ==<br />
<br />
The bootlog [http://www.coreboot.org/pipermail/coreboot/2008-December/043728.html is available].<br />
<br />
{{PD-self}}<br />
<br />
== Lspci ==<br />
<br />
=== Proprietary bios ===<br />
<br />
<pre><br />
00:00.0 Host bridge: ATI Technologies Inc RS690 Host Bridge<br />
00:01.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (Internal gfx)<br />
00:07.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express Port 3)<br />
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA<br />
00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)<br />
00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)<br />
00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)<br />
00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)<br />
00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)<br />
00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)<br />
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 13)<br />
00:14.1 IDE interface: ATI Technologies Inc SB600 IDE<br />
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)<br />
00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge<br />
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge<br />
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration<br />
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map<br />
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller<br />
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control<br />
01:05.0 VGA compatible controller: ATI Technologies Inc RS690 [Radeon X1200 Series]<br />
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)<br />
</pre></div>Wardhttps://www.coreboot.org/index.php?title=IRC&diff=7952IRC2009-02-04T21:15:49Z<p>Ward: </p>
<hr />
<div>Some of the coreboot developers and users hang out in the '''#coreboot''' channel on [http://www.freenode.net/ irc.freenode.net] (to which the '''#openbios''' channel is forwarded as well). <br />
<br />
Here you have the chance to talk to people being involved or interested in this project. Most of the discussion is tech talk. Questions on coreboot, OpenBIOS, firmware and related topics are welcome.<br />
<br />
Most people are in CET timezone, so don't give up when this channel seems very quiet for some time.</div>Wardhttps://www.coreboot.org/index.php?title=Glossary&diff=7951Glossary2009-02-04T21:11:19Z<p>Ward: /* PLCC */</p>
<hr />
<div>== A ==<br />
<br />
=== ACPI ===<br />
The '''Advanced Configuration & Power Interface''' is an industry standard for letting the OS control power management.<br />
* http://www.acpi.info/<br />
* http://www.computer-dictionary-online.org/index.asp?q=Advanced%20Configuration%20and%20Power%20Interface<br />
* http://kernelslacker.livejournal.com/88243.html acpitool to generate a C source (see mailing list also)<br />
<br />
=== AGP ===<br />
'''Advanced Graphics Port'''<br />
* http://en.wikipedia.org/wiki/AGP<br />
<br />
=== AGP Aperture ===<br />
The memory range that is set aside for AGP access.<br />
* http://en.wikipedia.org/wiki/AGP<br />
<br />
=== AHCI ===<br />
The '''Advanced Host Controller Interface'''. Describes the register-level interface for a SATA host controller.<br />
* http://en.wikipedia.org/wiki/AHCI<br />
* http://www.intel.com/technology/serialata/ahci.htm<br />
<br />
=== APIC ===<br />
'''Advanced Programmable Interrupt Controller'''. An advanced version of a [[Glossary#PIC|PIC]] that can handle interrupts from and for multiple CPUs. Modern systems usually have several APICs: Local APICs are CPU-bound, IO-APICs are bridge-bound.<br />
* http://www.computer-dictionary-online.org/index.asp?q=Advanced%20Programmable%20Interrupt%20Controller<br />
* http://osdev.berlios.de/pic.html<br />
<br />
<br />
== B ==<br />
<br />
=== BAR ===<br />
Base Address Register (on PCI device).<br />
<br />
=== BIOS ===<br />
Basic Input/Output System.<br />
<br />
<br />
== C ==<br />
<br />
=== CAR === <br />
Cache as RAM.<br />
<br />
=== CMOS === <br />
Complementary metal oxyde semiconductor.<br />
<br />
=== CPU ===<br />
Central processing unit (e.g. an Athlon64)<br />
<br />
== D ==<br />
<br />
=== DCR ===<br />
Decode Control Register.<br />
<br />
=== DID ===<br />
Device ID, a way of identifying the hardware in question. See [[Glossary#VID|VID]] for more info.<br />
<br />
=== DMA ===<br />
Direct Memory Access. Allows certain hardware subsystems within a computer to access system memory for reading and/or writing independently of the main CPU. Examples of systems that use DMA: Hard Disk Controller, Disk Drive Controller, Graphics Card, Sound Card.<br />
DMA is an essential feature of all modern computers, as it allows devices of different speeds to communicate without subjecting the CPU to a massive interrupt load.<br />
* http://en.wikipedia.org/wiki/Direct_memory_access<br />
<br />
=== DSDT ===<br />
Differentiated System Descriptor Table, generated by BIOS and necessary for ACPI, see mailing list also. Implementation of ACPI needs to be done in a "cleanroom" development process to avoid legal issues.<br />
* http://acpi.sourceforge.net/dsdt/index.php<br />
<br />
== E ==<br />
<br />
=== EEPROM ===<br />
Electrically erasable programmable ROM (common mistake: electrical erasable programmable ROM).<br />
<br />
=== EHCI ===<br />
Enhanced Host Controller Interface (USB host controller).<br />
<br />
== F ==<br />
<br />
=== Flashing ===<br />
Flashing means writing of flash memory. The BIOS on modern mainboards is stored in a flash memory chip, which can be 128 Kilobytes to 4 Megabytes big.<br />
<br />
=== Framebuffer ===<br />
The '''Framebuffer''' is a part of RAM in a computer allocated to hold the graphics information for one frame or picture. This information typically consists of color values for every pixel on the screen.<br />
A framebuffer is either:<br />
* Off-screen, meaning that writes to the framebuffer don't appear on the visible screen<br />
* On-screen, meaning that the framebuffer is directly coupled to the visible display<br />
<br />
* http://en.wikipedia.org/wiki/Framebuffer<br />
<br />
<br />
== G ==<br />
<br />
=== GART ===<br />
Graphics Address Relocation Table.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
<br />
=== GATT === <br />
Graphics Aperture Translation Table.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
<br />
=== GPIO ===<br />
General Purpose Input/Output.<br />
* http://en.wikipedia.org/wiki/GPIO<br />
<br />
=== GSoC ===<br />
[[GSoC|Google Summer of Code]].<br />
<br />
== H ==<br />
<br />
=== Hypertransport ===<br />
A high-speed electrical interconnection protocol between CPU, memory and peripheral devices.<br />
* http://en.wikipedia.org/wiki/Hypertransport<br />
* http://www.hypertransport.org<br />
* http://www.hotchips.org/archives/hc14/3_Tue/28_AMD_Hammer_MP_HC_v8.pdf<br />
<br />
== I ==<br />
<br />
=== I2C ===<br />
'''Inter-Integrated-Circuit''', a bidirectional 2-wire bus for efficient inter-IC control.<br />
* http://www.esacademy.com/faq/i2c/index.htm<br />
<br />
=== IDSEL/AD ===<br />
Initialization Device SELect/Address and Data. Each PCI slot has a signal called IDSEL. It is used to differentiate between the different cards?<br />
* http://www.techfest.com/hardware/bus/pci.htm<br />
* http://www.fpga4fun.com/PCI4.html<br />
<br />
=== IRQ ===<br />
Interrupt ReQuest (Handler).<br />
<br />
<br />
== J ==<br />
<br />
=== JTAG ===<br />
Debugging and test 4-wire interface named after an organization which defined it.<br />
<br />
== L ==<br />
<br />
=== LAR ===<br />
is the Linuxbios ARchiver, now called Lightweight [[LAR_Design|ARchiver]]. It is a small utility that we use to create and change coreboot images and their modules.<br />
<br />
=== LPC ===<br />
'''Low Pin Count''', an interface aimed at replacing the ISA bus.<br />
* http://www.intel.com/design/chipsets/industry/lpc.htm<br />
<br />
=== LRU ===<br />
'''Least Recently Used''', a rule used in operating systems that utilises a paging system. LRU selects a page to be paged out if it has been used less recently than any other page. This may be applied to a cache system as well.<br />
* http://computer.laborlawtalk.com/Least%20Recently%20Used<br />
<br />
== M ==<br />
<br />
=== Memory Training ===<br />
<br />
'''Memory training''' is a very complex technlogical area. We are accumulating references to it as we find them. <br />
<br />
* A [http://www.freshpatents.com/Training-of-signal-transfer-channels-between-memory-controller-and-memory-device-dt20080515ptan20080112255.php patent for GDDR4]<br />
* Key to understanding training is the concept of an [http://en.wikipedia.org/wiki/Eye_diagram eye diagram]<br />
<br />
It is amazing, but there is very little out there.<br />
<br />
=== MII ===<br />
'''Media Independent Interface'''. This is a chip commonly found on ethernet devices, together with a PHY.<br />
* http://en.wikipedia.org/wiki/MII<br />
<br />
=== MMIO ===<br />
'''Memory-mapped I/O''' and port I/O (also called port-mapped I/O or PMIO) are two complementary methods of performing input/output between the CPU and I/O devices in a computer.<br />
* http://en.wikipedia.org/wiki/MMIO<br />
<br />
=== MPTable ===<br />
'''Multi Processor Table'''. Intel MP specification is a hardware compatibility guide for machine hardware designers and OS software writers to produce SMP-capable machines and OSes in a vendor-independent manner. v1.1 and v1.4 versions exist.<br />
* http://www.uruk.org/mps/<br />
* http://www.intel.com/design/pentium/datashts/242016.htm<br />
<br />
=== MTRR ===<br />
'''Memory Type Range Register'''. This can be used to control the way a processor accesses memory ranges.<br />
* http://en.wikipedia.org/wiki/MTRR<br />
<br />
== O ==<br />
<br />
=== OHCI ===<br />
'''Open Host Controller Interface'''. IEEE1394 (Firewire) and USB standard (mostly used by other companies than Intel).<br />
* http://en.wikipedia.org/wiki/Ohci<br />
* http://developer.intel.com/technology/1394/download/ohci_11.htm<br />
<br />
<br />
== P ==<br />
<br />
=== PAM ===<br />
'''Programmable Attribute Map'''. Hardware registers that describe how certain memory areas are accessed. The '''BIOS''' areas have a flash chip mapped on top of a piece of memory. By changing the '''PAM''' registers, accesses to these memory areas can be mapped to either the RAM or the flash device. '''Shadowing''' is implemented by setting read accesses to the flash device and write accesses to the same address space are mapped to RAM. Walking over the address space, each byte is read and immediately written from/to each address. Afterwards write accesses are ignored and read accesses are mapped to RAM. Usually the '''PAM''' registers are part of the southbridge of a system.<br />
<br />
=== PAT ===<br />
'''Page Attribute Table'''. Can be used independently or in combination with MTRR to setup memory type access ranges. Allows more finely-grained control than MTRR.<br />
* http://www.intel.com/design/pentium4/manuals/index_new.htm<br />
* http://66.102.9.104/search?q=cache:k5pI7x36u1kJ:www-gtr.iutv.univ-paris13.fr/Cours/Mat/Architecture/Docs/System.pdf+%22page+attribute+table%22&hl=en&start=10<br />
<br />
=== PAT ===<br />
Performance Acceleration Technology.<br />
* http://www.intel.com/design/chipsets/pat.htm<br />
<br />
=== PCI ===<br />
Peripheral Component Interconnect.<br />
* http://en.wikipedia.org/wiki/Peripheral_Component_Interconnect<br />
<br />
=== PCI Configuration Space ===<br />
* http://en.wikipedia.org/wiki/PCI_Configuration_Space<br />
* http://www.techfest.com/hardware/bus/pci.htm<br />
<br />
=== PCI Express / PCIe ===<br />
* http://en.wikipedia.org/wiki/Pci_express<br />
<br />
=== PHY ===<br />
'''PHY layer device'''. A device that provides low level access to the physical layer.<br />
* http://en.wikipedia.org/wiki/PHY<br />
* http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?physical+layer<br />
<br />
=== PIC ===<br />
A '''Programmable Interrupt Controller''' is a device to control peripheral devices, offloading the main CPU.<br />
* http://www.computer-dictionary-online.org/index.asp?q=programmable%20interrupt%20controller<br />
* http://www.interq.or.jp/japan/se-inoue/e_pic1.htm<br />
<br />
=== PIO ===<br />
'''Programmed Input/Output''' interface is the original method used to transfer data between the CPU (through the IDE controller) and an IDE/ATA device.<br />
* http://en.wikipedia.org/wiki/Programmed_input/output<br />
<br />
=== PIR ===<br />
Programmable Interrupt Routing?<br />
<br />
=== PIRQ ===<br />
PCI IRQ routing table,<br />
* http://www.microsoft.com/whdc/archive/pciirq.mspx<br />
* http://www.soundonsound.com/sos/jul04/articles/qa0704-1.htm<br />
* Interesting tool?: https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=93717&action=view<br />
<br />
=== PLCC ===<br />
'''Plastic Leaded Chip Carrier''', a square surface-mount chip package.<br />
* http://en.wikipedia.org/wiki/Plastic_leaded_chip_carrier<br />
* http://www.webopedia.com/TERM/P/PLCC.html<br />
<br />
=== PLL ===<br />
'''Phase Locked Loop''' is a device to keep (electrical) signals synchronised throughout the system.<br />
* http://en.wikipedia.org/wiki/PLL<br />
<br />
=== POST ===<br />
The '''Power On Self Test''' is a test to check that devices the computer will rely on are functioning, and initializes devices.<br />
* http://en.wikipedia.org/wiki/Power-on_self_test<br />
<br />
== R ==<br />
<br />
=== RDMA ===<br />
'''Remote Direct Memory Access''' is a concept whereby two or more computers communicate via DMA directly from main memory of one system to the main memory of another.<br />
* http://en.wikipedia.org/wiki/Remote_Direct_Memory_Access<br />
<br />
=== RCS ===<br />
Revision control systems.<br />
<br />
== S ==<br />
<br />
=== SB ===<br />
'''Southbridge'''. Chip on the mainboard that is usually responsible for handling the flash device, IDE controller, ...<br />
<br />
=== SBA ===<br />
SideBand Addressing.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
<br />
=== Shadow RAM ===<br />
RAM which content is copied from ROM residing at the same address for speedup purposes.<br />
<br />
=== SIO ===<br />
Serial Input/Output.<br />
* http://www.acronymfinder.com/af-query.asp?String=off&Acronym=sio&Find=Find&sourceid=mozilla-search<br />
<br />
=== SMBus ===<br />
The '''System Management Bus''' is a simple two-wire bus used for communication with low-bandwidth devices on a motherboard. It is based on (actually a subset of) I2C.<br />
* http://www.smbus.org/<br />
* http://www.computer-dictionary-online.org/index.asp?q=System%20Management%20Bus<br />
<br />
=== SMM ===<br />
'''System Management Mode'''. Processor mode that is mainly used for power management purposes.<br />
<br />
=== SMRAM ===<br />
System Management Random Access Memory.<br />
<br />
=== SOIC ===<br />
'''Small-Outline Integrated Circuit'''.<br />
* http://en.wikipedia.org/wiki/Small-outline_integrated_circuit<br />
<br />
=== SPD ===<br />
'''Serial Presence Detect'''. On every (?) memory module there's an EPROM that provides the BIOS with information on how to properly configure the memory module.<br />
* http://www.simmtester.com/page/news/showpubnews.asp?num=101<br />
<br />
=== SPI ===<br />
The '''Serial Peripheral Interface Bus''' is a very loose standard for controlling almost any digital electronics that accepts a clocked serial stream of bits.<br />
* http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus<br />
<br />
=== SuperIO ===<br />
The '''SuperIO''' is the chip that provides floppy, serial and parallel functionality/ports.<br />
* http://www.simtec.co.uk/products/EB7500ATX/files/EB7500ATX-mmap.html<br />
<br />
== T ==<br />
<br />
=== TLB ===<br />
'''Translation Lookaside Buffer'''. The TLB stores the most recently used page-directory and page-table entries, which translates into speedier access to said memory.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
* For more details see IA-32 Intel256 Architecture Software Developer's Manual: Vol3 Section 10.1<br />
<br />
<br />
== U ==<br />
<br />
=== UC ===<br />
Strong '''UnCacheable'''. Memory type setting in MTRR/PAT.<br />
<br />
=== UC ===<br />
'''UnCacheable'''. Memory type setting in MTRR/PAT.<br />
* For more details see IA-32 Intel256 Architecture Software Developer's Manual: Vol3 Section 10.3<br />
<br />
=== UHCI ===<br />
'''Universal Host Controller Interface'''. USB standard.<br />
* http://en.wikipedia.org/wiki/UHCI<br />
* http://developer.intel.com/technology/usb/uhci11d.htm<br />
<br />
<br />
== V ==<br />
<br />
=== VGAcon ===<br />
The purpose of the '''VGAcon''' (VGA controller) is to isolate the details of VGA signal generation from all the other modules in a (hardware) design. It allows the pixel information to be written into its video memory using a very simple interface, while it is alone responsible for generating the required signals for displaying the pixel information on a VGA monitor. (Note: This is mostly relevant to a hardware design - the text is copied from a students FPGA project).<br />
* http://www.eecg.utoronto.ca/~singhd/241/vgacon.htm<br />
<br />
=== VID ===<br />
'''Vendor ID''', a way of identifying the hardware manufacturer.<br />
* http://www.microsoft.com/whdc/system/bus/PCI/infreq.mspx<br />
* http://pciids.sourceforge.net/<br />
A way of obtaining info for your hardware is through the 'lspci' command. Simply type 'lspci -n' in the console (or an xterm) or 'lspci -vn' for more verbose output.<br />
<br />
=== VMEBus ===<br />
'''VERSAmodule Eurocard Bus''' or '''Versa Module Europa Bus'''. A computer bus originally developed for the Motorola 68000.<br />
* http://en.wikipedia.org/wiki/VMEbus<br />
<br />
== W ==<br />
<br />
=== WB ===<br />
Write-Back. Memory type setting in MTRR/PAT.<br />
<br />
=== WC ===<br />
Write-Combining. Memory type setting in MTRR/PAT.<br />
<br />
=== WP ===<br />
Write Protected. Memory type setting in MTRR/PAT.<br />
<br />
=== WT ===<br />
Write-Through. Memory type setting in MTRR/PAT.<br />
* For more details see IA-32 Intel256 Architecture Software Developer's Manual: Vol3 Section 10.3</div>Wardhttps://www.coreboot.org/index.php?title=Glossary&diff=7950Glossary2009-02-04T21:08:01Z<p>Ward: /* S */ add entry for SOIC</p>
<hr />
<div>== A ==<br />
<br />
=== ACPI ===<br />
The '''Advanced Configuration & Power Interface''' is an industry standard for letting the OS control power management.<br />
* http://www.acpi.info/<br />
* http://www.computer-dictionary-online.org/index.asp?q=Advanced%20Configuration%20and%20Power%20Interface<br />
* http://kernelslacker.livejournal.com/88243.html acpitool to generate a C source (see mailing list also)<br />
<br />
=== AGP ===<br />
'''Advanced Graphics Port'''<br />
* http://en.wikipedia.org/wiki/AGP<br />
<br />
=== AGP Aperture ===<br />
The memory range that is set aside for AGP access.<br />
* http://en.wikipedia.org/wiki/AGP<br />
<br />
=== AHCI ===<br />
The '''Advanced Host Controller Interface'''. Describes the register-level interface for a SATA host controller.<br />
* http://en.wikipedia.org/wiki/AHCI<br />
* http://www.intel.com/technology/serialata/ahci.htm<br />
<br />
=== APIC ===<br />
'''Advanced Programmable Interrupt Controller'''. An advanced version of a [[Glossary#PIC|PIC]] that can handle interrupts from and for multiple CPUs. Modern systems usually have several APICs: Local APICs are CPU-bound, IO-APICs are bridge-bound.<br />
* http://www.computer-dictionary-online.org/index.asp?q=Advanced%20Programmable%20Interrupt%20Controller<br />
* http://osdev.berlios.de/pic.html<br />
<br />
<br />
== B ==<br />
<br />
=== BAR ===<br />
Base Address Register (on PCI device).<br />
<br />
=== BIOS ===<br />
Basic Input/Output System.<br />
<br />
<br />
== C ==<br />
<br />
=== CAR === <br />
Cache as RAM.<br />
<br />
=== CMOS === <br />
Complementary metal oxyde semiconductor.<br />
<br />
=== CPU ===<br />
Central processing unit (e.g. an Athlon64)<br />
<br />
== D ==<br />
<br />
=== DCR ===<br />
Decode Control Register.<br />
<br />
=== DID ===<br />
Device ID, a way of identifying the hardware in question. See [[Glossary#VID|VID]] for more info.<br />
<br />
=== DMA ===<br />
Direct Memory Access. Allows certain hardware subsystems within a computer to access system memory for reading and/or writing independently of the main CPU. Examples of systems that use DMA: Hard Disk Controller, Disk Drive Controller, Graphics Card, Sound Card.<br />
DMA is an essential feature of all modern computers, as it allows devices of different speeds to communicate without subjecting the CPU to a massive interrupt load.<br />
* http://en.wikipedia.org/wiki/Direct_memory_access<br />
<br />
=== DSDT ===<br />
Differentiated System Descriptor Table, generated by BIOS and necessary for ACPI, see mailing list also. Implementation of ACPI needs to be done in a "cleanroom" development process to avoid legal issues.<br />
* http://acpi.sourceforge.net/dsdt/index.php<br />
<br />
== E ==<br />
<br />
=== EEPROM ===<br />
Electrically erasable programmable ROM (common mistake: electrical erasable programmable ROM).<br />
<br />
=== EHCI ===<br />
Enhanced Host Controller Interface (USB host controller).<br />
<br />
== F ==<br />
<br />
=== Flashing ===<br />
Flashing means writing of flash memory. The BIOS on modern mainboards is stored in a flash memory chip, which can be 128 Kilobytes to 4 Megabytes big.<br />
<br />
=== Framebuffer ===<br />
The '''Framebuffer''' is a part of RAM in a computer allocated to hold the graphics information for one frame or picture. This information typically consists of color values for every pixel on the screen.<br />
A framebuffer is either:<br />
* Off-screen, meaning that writes to the framebuffer don't appear on the visible screen<br />
* On-screen, meaning that the framebuffer is directly coupled to the visible display<br />
<br />
* http://en.wikipedia.org/wiki/Framebuffer<br />
<br />
<br />
== G ==<br />
<br />
=== GART ===<br />
Graphics Address Relocation Table.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
<br />
=== GATT === <br />
Graphics Aperture Translation Table.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
<br />
=== GPIO ===<br />
General Purpose Input/Output.<br />
* http://en.wikipedia.org/wiki/GPIO<br />
<br />
=== GSoC ===<br />
[[GSoC|Google Summer of Code]].<br />
<br />
== H ==<br />
<br />
=== Hypertransport ===<br />
A high-speed electrical interconnection protocol between CPU, memory and peripheral devices.<br />
* http://en.wikipedia.org/wiki/Hypertransport<br />
* http://www.hypertransport.org<br />
* http://www.hotchips.org/archives/hc14/3_Tue/28_AMD_Hammer_MP_HC_v8.pdf<br />
<br />
== I ==<br />
<br />
=== I2C ===<br />
'''Inter-Integrated-Circuit''', a bidirectional 2-wire bus for efficient inter-IC control.<br />
* http://www.esacademy.com/faq/i2c/index.htm<br />
<br />
=== IDSEL/AD ===<br />
Initialization Device SELect/Address and Data. Each PCI slot has a signal called IDSEL. It is used to differentiate between the different cards?<br />
* http://www.techfest.com/hardware/bus/pci.htm<br />
* http://www.fpga4fun.com/PCI4.html<br />
<br />
=== IRQ ===<br />
Interrupt ReQuest (Handler).<br />
<br />
<br />
== J ==<br />
<br />
=== JTAG ===<br />
Debugging and test 4-wire interface named after an organization which defined it.<br />
<br />
== L ==<br />
<br />
=== LAR ===<br />
is the Linuxbios ARchiver, now called Lightweight [[LAR_Design|ARchiver]]. It is a small utility that we use to create and change coreboot images and their modules.<br />
<br />
=== LPC ===<br />
'''Low Pin Count''', an interface aimed at replacing the ISA bus.<br />
* http://www.intel.com/design/chipsets/industry/lpc.htm<br />
<br />
=== LRU ===<br />
'''Least Recently Used''', a rule used in operating systems that utilises a paging system. LRU selects a page to be paged out if it has been used less recently than any other page. This may be applied to a cache system as well.<br />
* http://computer.laborlawtalk.com/Least%20Recently%20Used<br />
<br />
== M ==<br />
<br />
=== Memory Training ===<br />
<br />
'''Memory training''' is a very complex technlogical area. We are accumulating references to it as we find them. <br />
<br />
* A [http://www.freshpatents.com/Training-of-signal-transfer-channels-between-memory-controller-and-memory-device-dt20080515ptan20080112255.php patent for GDDR4]<br />
* Key to understanding training is the concept of an [http://en.wikipedia.org/wiki/Eye_diagram eye diagram]<br />
<br />
It is amazing, but there is very little out there.<br />
<br />
=== MII ===<br />
'''Media Independent Interface'''. This is a chip commonly found on ethernet devices, together with a PHY.<br />
* http://en.wikipedia.org/wiki/MII<br />
<br />
=== MMIO ===<br />
'''Memory-mapped I/O''' and port I/O (also called port-mapped I/O or PMIO) are two complementary methods of performing input/output between the CPU and I/O devices in a computer.<br />
* http://en.wikipedia.org/wiki/MMIO<br />
<br />
=== MPTable ===<br />
'''Multi Processor Table'''. Intel MP specification is a hardware compatibility guide for machine hardware designers and OS software writers to produce SMP-capable machines and OSes in a vendor-independent manner. v1.1 and v1.4 versions exist.<br />
* http://www.uruk.org/mps/<br />
* http://www.intel.com/design/pentium/datashts/242016.htm<br />
<br />
=== MTRR ===<br />
'''Memory Type Range Register'''. This can be used to control the way a processor accesses memory ranges.<br />
* http://en.wikipedia.org/wiki/MTRR<br />
<br />
== O ==<br />
<br />
=== OHCI ===<br />
'''Open Host Controller Interface'''. IEEE1394 (Firewire) and USB standard (mostly used by other companies than Intel).<br />
* http://en.wikipedia.org/wiki/Ohci<br />
* http://developer.intel.com/technology/1394/download/ohci_11.htm<br />
<br />
<br />
== P ==<br />
<br />
=== PAM ===<br />
'''Programmable Attribute Map'''. Hardware registers that describe how certain memory areas are accessed. The '''BIOS''' areas have a flash chip mapped on top of a piece of memory. By changing the '''PAM''' registers, accesses to these memory areas can be mapped to either the RAM or the flash device. '''Shadowing''' is implemented by setting read accesses to the flash device and write accesses to the same address space are mapped to RAM. Walking over the address space, each byte is read and immediately written from/to each address. Afterwards write accesses are ignored and read accesses are mapped to RAM. Usually the '''PAM''' registers are part of the southbridge of a system.<br />
<br />
=== PAT ===<br />
'''Page Attribute Table'''. Can be used independently or in combination with MTRR to setup memory type access ranges. Allows more finely-grained control than MTRR.<br />
* http://www.intel.com/design/pentium4/manuals/index_new.htm<br />
* http://66.102.9.104/search?q=cache:k5pI7x36u1kJ:www-gtr.iutv.univ-paris13.fr/Cours/Mat/Architecture/Docs/System.pdf+%22page+attribute+table%22&hl=en&start=10<br />
<br />
=== PAT ===<br />
Performance Acceleration Technology.<br />
* http://www.intel.com/design/chipsets/pat.htm<br />
<br />
=== PCI ===<br />
Peripheral Component Interconnect.<br />
* http://en.wikipedia.org/wiki/Peripheral_Component_Interconnect<br />
<br />
=== PCI Configuration Space ===<br />
* http://en.wikipedia.org/wiki/PCI_Configuration_Space<br />
* http://www.techfest.com/hardware/bus/pci.htm<br />
<br />
=== PCI Express / PCIe ===<br />
* http://en.wikipedia.org/wiki/Pci_express<br />
<br />
=== PHY ===<br />
'''PHY layer device'''. A device that provides low level access to the physical layer.<br />
* http://en.wikipedia.org/wiki/PHY<br />
* http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?physical+layer<br />
<br />
=== PIC ===<br />
A '''Programmable Interrupt Controller''' is a device to control peripheral devices, offloading the main CPU.<br />
* http://www.computer-dictionary-online.org/index.asp?q=programmable%20interrupt%20controller<br />
* http://www.interq.or.jp/japan/se-inoue/e_pic1.htm<br />
<br />
=== PIO ===<br />
'''Programmed Input/Output''' interface is the original method used to transfer data between the CPU (through the IDE controller) and an IDE/ATA device.<br />
* http://en.wikipedia.org/wiki/Programmed_input/output<br />
<br />
=== PIR ===<br />
Programmable Interrupt Routing?<br />
<br />
=== PIRQ ===<br />
PCI IRQ routing table,<br />
* http://www.microsoft.com/whdc/archive/pciirq.mspx<br />
* http://www.soundonsound.com/sos/jul04/articles/qa0704-1.htm<br />
* Interesting tool?: https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=93717&action=view<br />
<br />
=== PLCC ===<br />
'''Plastic Leaded Chip Carrier''', a square surface-mount chip package.<br />
* http://www.webopedia.com/TERM/P/PLCC.html<br />
<br />
=== PLL ===<br />
'''Phase Locked Loop''' is a device to keep (electrical) signals synchronised throughout the system.<br />
* http://en.wikipedia.org/wiki/PLL<br />
<br />
=== POST ===<br />
The '''Power On Self Test''' is a test to check that devices the computer will rely on are functioning, and initializes devices.<br />
* http://en.wikipedia.org/wiki/Power-on_self_test<br />
<br />
== R ==<br />
<br />
=== RDMA ===<br />
'''Remote Direct Memory Access''' is a concept whereby two or more computers communicate via DMA directly from main memory of one system to the main memory of another.<br />
* http://en.wikipedia.org/wiki/Remote_Direct_Memory_Access<br />
<br />
=== RCS ===<br />
Revision control systems.<br />
<br />
== S ==<br />
<br />
=== SB ===<br />
'''Southbridge'''. Chip on the mainboard that is usually responsible for handling the flash device, IDE controller, ...<br />
<br />
=== SBA ===<br />
SideBand Addressing.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
<br />
=== Shadow RAM ===<br />
RAM which content is copied from ROM residing at the same address for speedup purposes.<br />
<br />
=== SIO ===<br />
Serial Input/Output.<br />
* http://www.acronymfinder.com/af-query.asp?String=off&Acronym=sio&Find=Find&sourceid=mozilla-search<br />
<br />
=== SMBus ===<br />
The '''System Management Bus''' is a simple two-wire bus used for communication with low-bandwidth devices on a motherboard. It is based on (actually a subset of) I2C.<br />
* http://www.smbus.org/<br />
* http://www.computer-dictionary-online.org/index.asp?q=System%20Management%20Bus<br />
<br />
=== SMM ===<br />
'''System Management Mode'''. Processor mode that is mainly used for power management purposes.<br />
<br />
=== SMRAM ===<br />
System Management Random Access Memory.<br />
<br />
=== SOIC ===<br />
'''Small-Outline Integrated Circuit'''.<br />
* http://en.wikipedia.org/wiki/Small-outline_integrated_circuit<br />
<br />
=== SPD ===<br />
'''Serial Presence Detect'''. On every (?) memory module there's an EPROM that provides the BIOS with information on how to properly configure the memory module.<br />
* http://www.simmtester.com/page/news/showpubnews.asp?num=101<br />
<br />
=== SPI ===<br />
The '''Serial Peripheral Interface Bus''' is a very loose standard for controlling almost any digital electronics that accepts a clocked serial stream of bits.<br />
* http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus<br />
<br />
=== SuperIO ===<br />
The '''SuperIO''' is the chip that provides floppy, serial and parallel functionality/ports.<br />
* http://www.simtec.co.uk/products/EB7500ATX/files/EB7500ATX-mmap.html<br />
<br />
== T ==<br />
<br />
=== TLB ===<br />
'''Translation Lookaside Buffer'''. The TLB stores the most recently used page-directory and page-table entries, which translates into speedier access to said memory.<br />
* http://www.linuxelectrons.com/article.php/20031021142247752<br />
* For more details see IA-32 Intel256 Architecture Software Developer's Manual: Vol3 Section 10.1<br />
<br />
<br />
== U ==<br />
<br />
=== UC ===<br />
Strong '''UnCacheable'''. Memory type setting in MTRR/PAT.<br />
<br />
=== UC ===<br />
'''UnCacheable'''. Memory type setting in MTRR/PAT.<br />
* For more details see IA-32 Intel256 Architecture Software Developer's Manual: Vol3 Section 10.3<br />
<br />
=== UHCI ===<br />
'''Universal Host Controller Interface'''. USB standard.<br />
* http://en.wikipedia.org/wiki/UHCI<br />
* http://developer.intel.com/technology/usb/uhci11d.htm<br />
<br />
<br />
== V ==<br />
<br />
=== VGAcon ===<br />
The purpose of the '''VGAcon''' (VGA controller) is to isolate the details of VGA signal generation from all the other modules in a (hardware) design. It allows the pixel information to be written into its video memory using a very simple interface, while it is alone responsible for generating the required signals for displaying the pixel information on a VGA monitor. (Note: This is mostly relevant to a hardware design - the text is copied from a students FPGA project).<br />
* http://www.eecg.utoronto.ca/~singhd/241/vgacon.htm<br />
<br />
=== VID ===<br />
'''Vendor ID''', a way of identifying the hardware manufacturer.<br />
* http://www.microsoft.com/whdc/system/bus/PCI/infreq.mspx<br />
* http://pciids.sourceforge.net/<br />
A way of obtaining info for your hardware is through the 'lspci' command. Simply type 'lspci -n' in the console (or an xterm) or 'lspci -vn' for more verbose output.<br />
<br />
=== VMEBus ===<br />
'''VERSAmodule Eurocard Bus''' or '''Versa Module Europa Bus'''. A computer bus originally developed for the Motorola 68000.<br />
* http://en.wikipedia.org/wiki/VMEbus<br />
<br />
== W ==<br />
<br />
=== WB ===<br />
Write-Back. Memory type setting in MTRR/PAT.<br />
<br />
=== WC ===<br />
Write-Combining. Memory type setting in MTRR/PAT.<br />
<br />
=== WP ===<br />
Write Protected. Memory type setting in MTRR/PAT.<br />
<br />
=== WT ===<br />
Write-Through. Memory type setting in MTRR/PAT.<br />
* For more details see IA-32 Intel256 Architecture Software Developer's Manual: Vol3 Section 10.3</div>Wardhttps://www.coreboot.org/index.php?title=PC_Engines_ALIX.2CX&diff=7936PC Engines ALIX.2CX2009-01-27T16:45:00Z<p>Ward: </p>
<hr />
<div>This page is work in progress.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = <br />
|CPU_L2_status = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = N/A<br />
|CPU_virt_status = N/A<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = OK<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = N/A<br />
|RAM_ecc_status = N/A<br />
<br />
|IDE_status =<br />
|IDE_25_status = <br />
|IDE_CF_status = <br />
|CDROM_DVD_status = <br />
|SATA_status = N/A<br />
|USB_status = OK<br />
|Onboard_VGA_status = N/A<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = N/A<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = OK<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status =<br />
|PCIE_x1_status = N/A<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = N/A<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = N/A<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PP_status = N/A<br />
|PS2_keyboard_status = N/A<br />
|PS2_mouse_status = N/A<br />
|Game_port_status = N/A<br />
|IR_status = N/A<br />
|Speaker_status = N/A <br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = <br />
|Watchdog_status = <br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = <br />
|Powersave_status = <br />
|ACPI_status = No<br />
|Reboot_status = OK<br />
|Poweroff_status = <br />
|LEDs_status = <br />
|HPET_status = <br />
|RNG_status = <br />
|WakeOnModem_status = N/A <br />
|WakeOnLAN_status = <br />
|WakeOnKeyboard_status = N/A<br />
|WakeOnMouse_status = N/A<br />
|Smartcard_status = N/A<br />
|Flashrom_status = OK<br />
<br />
}}<br />
<br />
== Notes ==<br />
<br />
Quick build:<br />
<br />
Coreboot works on the Alix.2c3 and its successor Alix.2d3. The easiest way to build coreboot for these boards is to use [[Buildrom]]. Enable the 'Experimental features', choose coreboot version v3, and then select the Alix.2c3 target (this also works for the Alix.2d3).<br />
<br />
Manual build:<br />
<br />
Alternatively, you can build coreboot manually. Currently this board is only supported in coreboot v3.<br />
<br />
This board still needs a binary blob from AMD called VSA.<br />
<br />
For coreboot-v3 build as alix2c3. Then add the VSA. You can download the VSA blob from [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/amd_vsa_lx_1.01.bin.gz here]. You need to uncompress it. It should be 57504 Bytes in Size and MD5 should be 0f4fd87b3eef78bd90b56a39646f5845.<br />
<br />
Copy that file into the root of you build system and execute the following command after coreboot is built and before you flash it.<br />
<br />
<pre><br />
build/util/lar/lar -C lzma -a build/bios.bin ./amd_vsa_lx_1.01.bin:blob/vsa<br />
</pre><br />
<br />
If you want to use coreboot v2 on this alix board, you'll need to port coreboot to it. See [http://www.coreboot.org/AMD_Geode_Porting_Guide the Geode Porting Guide].<br />
{{GPL}}</div>Wardhttps://www.coreboot.org/index.php?title=PC_Engines_ALIX.2CX&diff=7935PC Engines ALIX.2CX2009-01-27T16:44:24Z<p>Ward: update some status fields</p>
<hr />
<div>This page is work in progress.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = <br />
|CPU_L2_status = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = N/A<br />
|CPU_virt_status = N/A<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status = N/A<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = OK<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = N/A<br />
|RAM_ecc_status = N/A<br />
<br />
|IDE_status =<br />
|IDE_25_status = <br />
|IDE_CF_status = <br />
|CDROM_DVD_status = <br />
|SATA_status = N/A<br />
|USB_status = OK<br />
|Onboard_VGA_status = N/A<br />
|Onboard_ethernet_status = OK<br />
|Onboard_audio_status = N/A<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = OK<br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status =<br />
|PCIE_x1_status = N/A<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = N/A<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = N/A<br />
|COM1_status = OK<br />
|COM2_status = N/A<br />
|PP_status = N/A<br />
|PS2_keyboard_status = N/A<br />
|PS2_mouse_status = N/A<br />
|Game_port_status = N/A<br />
|IR_status = N/A<br />
|Speaker_status = N/A <br />
|DiskOnChip_status = N/A<br />
<br />
|Sensors_status = <br />
|Watchdog_status = <br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = <br />
|Powersave_status = <br />
|ACPI_status = No<br />
|Reboot_status = OK<br />
|Poweroff_status = <br />
|LEDs_status = <br />
|HPET_status = <br />
|RNG_status = <br />
|WakeOnModem_status = N/A <br />
|WakeOnLAN_status = <br />
|WakeOnKeyboard_status = N/A<br />
|WakeOnMouse_status = N/A<br />
|Smartcard_status = N/A<br />
|Flashrom_status = Yes<br />
<br />
}}<br />
<br />
== Notes ==<br />
<br />
Quick build:<br />
<br />
Coreboot works on the Alix.2c3 and its successor Alix.2d3. The easiest way to build coreboot for these boards is to use [[Buildrom]]. Enable the 'Experimental features', choose coreboot version v3, and then select the Alix.2c3 target (this also works for the Alix.2d3).<br />
<br />
Manual build:<br />
<br />
Alternatively, you can build coreboot manually. Currently this board is only supported in coreboot v3.<br />
<br />
This board still needs a binary blob from AMD called VSA.<br />
<br />
For coreboot-v3 build as alix2c3. Then add the VSA. You can download the VSA blob from [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/amd_vsa_lx_1.01.bin.gz here]. You need to uncompress it. It should be 57504 Bytes in Size and MD5 should be 0f4fd87b3eef78bd90b56a39646f5845.<br />
<br />
Copy that file into the root of you build system and execute the following command after coreboot is built and before you flash it.<br />
<br />
<pre><br />
build/util/lar/lar -C lzma -a build/bios.bin ./amd_vsa_lx_1.01.bin:blob/vsa<br />
</pre><br />
<br />
If you want to use coreboot v2 on this alix board, you'll need to port coreboot to it. See [http://www.coreboot.org/AMD_Geode_Porting_Guide the Geode Porting Guide].<br />
{{GPL}}</div>Wardhttps://www.coreboot.org/index.php?title=PC_Engines_ALIX.2CX&diff=7934PC Engines ALIX.2CX2009-01-27T16:40:39Z<p>Ward: /* Notes */ typo</p>
<hr />
<div>This page is work in progress.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = <br />
|CPU_L2_status = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = N/A<br />
|CPU_virt_status = N/A<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status =<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = N/A<br />
|RAM_ecc_status = N/A<br />
<br />
|IDE_status = <br />
|IDE_25_status = <br />
|IDE_CF_status = <br />
|CDROM_DVD_status = <br />
|SATA_status = N/A<br />
|USB_status = OK<br />
|Onboard_VGA_status = N/A<br />
|Onboard_ethernet_status = <br />
|Onboard_audio_status = N/A<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = <br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = <br />
|PCIE_x1_status = N/A<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = N/A<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = N/A<br />
|COM1_status = Yes<br />
|COM2_status = N/A<br />
|PP_status = N/A<br />
|PS2_keyboard_status = N/A<br />
|PS2_mouse_status = N/A<br />
|Game_port_status = N/A<br />
|IR_status = N/A<br />
|Speaker_status = <br />
|DiskOnChip_status = <br />
<br />
|Sensors_status = <br />
|Watchdog_status = <br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = <br />
|Powersave_status = <br />
|ACPI_status = No<br />
|Reboot_status = <br />
|Poweroff_status = <br />
|LEDs_status = <br />
|HPET_status = <br />
|RNG_status = <br />
|WakeOnModem_status = N/A <br />
|WakeOnLAN_status = <br />
|WakeOnKeyboard_status = N/A<br />
|WakeOnMouse_status = N/A<br />
|Smartcard_status = N/A<br />
|Flashrom_status = Yes<br />
<br />
}}<br />
<br />
== Notes ==<br />
<br />
Quick build:<br />
<br />
Coreboot works on the Alix.2c3 and its successor Alix.2d3. The easiest way to build coreboot for these boards is to use [[Buildrom]]. Enable the 'Experimental features', choose coreboot version v3, and then select the Alix.2c3 target (this also works for the Alix.2d3).<br />
<br />
Manual build:<br />
<br />
Alternatively, you can build coreboot manually. Currently this board is only supported in coreboot v3.<br />
<br />
This board still needs a binary blob from AMD called VSA.<br />
<br />
For coreboot-v3 build as alix2c3. Then add the VSA. You can download the VSA blob from [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/amd_vsa_lx_1.01.bin.gz here]. You need to uncompress it. It should be 57504 Bytes in Size and MD5 should be 0f4fd87b3eef78bd90b56a39646f5845.<br />
<br />
Copy that file into the root of you build system and execute the following command after coreboot is built and before you flash it.<br />
<br />
<pre><br />
build/util/lar/lar -C lzma -a build/bios.bin ./amd_vsa_lx_1.01.bin:blob/vsa<br />
</pre><br />
<br />
If you want to use coreboot v2 on this alix board, you'll need to port coreboot to it. See [http://www.coreboot.org/AMD_Geode_Porting_Guide the Geode Porting Guide].<br />
{{GPL}}</div>Wardhttps://www.coreboot.org/index.php?title=PC_Engines_ALIX.2CX&diff=7933PC Engines ALIX.2CX2009-01-27T16:40:18Z<p>Ward: /* Notes */ some more detail on building this board.</p>
<hr />
<div>This page is work in progress.<br />
<br />
== Status ==<br />
<br />
{{Status|<br />
<br />
|CPU_status = OK<br />
|CPU_L1_status = <br />
|CPU_L2_status = <br />
|CPU_L3_status = N/A<br />
|CPU_multiple_status = N/A<br />
|CPU_multicore_status = N/A<br />
|CPU_virt_status = N/A<br />
<br />
|RAM_EDO_status = N/A<br />
|RAM_SDRAM_status =<br />
|RAM_SODIMM_status = N/A<br />
|RAM_DDR_status = N/A<br />
|RAM_DDR2_status = N/A<br />
|RAM_DDR3_status = N/A<br />
|RAM_dualchannel_status = N/A<br />
|RAM_ecc_status = N/A<br />
<br />
|IDE_status = <br />
|IDE_25_status = <br />
|IDE_CF_status = <br />
|CDROM_DVD_status = <br />
|SATA_status = N/A<br />
|USB_status = OK<br />
|Onboard_VGA_status = N/A<br />
|Onboard_ethernet_status = <br />
|Onboard_audio_status = N/A<br />
|Onboard_modem_status = N/A<br />
|Onboard_firewire_status = N/A<br />
|Smartcard_status = N/A<br />
|Onboard_CF_status = <br />
|Onboard_PCMCIA_status = N/A<br />
<br />
|ISA_cards_status = N/A<br />
|AMR_cards_status = N/A<br />
|AGP_cards_status = N/A<br />
|PCI_cards_status = <br />
|PCIE_x1_status = N/A<br />
|PCIE_x2_status = N/A<br />
|PCIE_x4_status = N/A<br />
|PCIE_x8_status = N/A<br />
|PCIE_x16_status = N/A<br />
|PCIE_x32_status = N/A<br />
|HTX_status = N/A<br />
<br />
|Floppy_status = N/A<br />
|COM1_status = Yes<br />
|COM2_status = N/A<br />
|PP_status = N/A<br />
|PS2_keyboard_status = N/A<br />
|PS2_mouse_status = N/A<br />
|Game_port_status = N/A<br />
|IR_status = N/A<br />
|Speaker_status = <br />
|DiskOnChip_status = <br />
<br />
|Sensors_status = <br />
|Watchdog_status = <br />
|CAN_bus_status = N/A<br />
|CPUfreq_status = <br />
|Powersave_status = <br />
|ACPI_status = No<br />
|Reboot_status = <br />
|Poweroff_status = <br />
|LEDs_status = <br />
|HPET_status = <br />
|RNG_status = <br />
|WakeOnModem_status = N/A <br />
|WakeOnLAN_status = <br />
|WakeOnKeyboard_status = N/A<br />
|WakeOnMouse_status = N/A<br />
|Smartcard_status = N/A<br />
|Flashrom_status = Yes<br />
<br />
}}<br />
<br />
== Notes ==<br />
<br />
Quick build:<br />
<br />
Coreboot works on the Alix.2c3 and its successor Alix.2d3. The easiest way to build coreboot for these boards is to use [[Buildrom]]. Enable the 'Experimental features', choose coreboot version v3, and then select the Alix.2c3 target (this also works for the Alix.2d3).<br />
<br />
Manual build:<br />
<br />
Alternatively, you can build coreboot manually. Currently this board is only supported in coreboot v3.<br />
<br />
This board still needs a binary blob from AMD called VSA.<br />
<br />
For coreboot-v3 build as alix2c3. Then add the VSA. You can download the VSA blob from [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/amd_vsa_lx_1.01.bin.gz here]. You need to uncompress it. It should be 57504 Bytes in Size and MD5 should be 0f4fd87b3eef78bd90b56a39646f5845.<br />
<br />
Copy that file into the root of you build system and execute the following command after coreboot is build and before you flash it.<br />
<br />
<pre><br />
build/util/lar/lar -C lzma -a build/bios.bin ./amd_vsa_lx_1.01.bin:blob/vsa<br />
</pre><br />
<br />
If you want to use coreboot v2 on this alix board, you'll need to port coreboot to it. See [http://www.coreboot.org/AMD_Geode_Porting_Guide the Geode Porting Guide].<br />
{{GPL}}</div>Wardhttps://www.coreboot.org/index.php?title=Board:tyan/s2881&diff=7263Board:tyan/s28812008-10-10T20:41:08Z<p>Ward: /* Building coreboot */</p>
<hr />
<div>===Before you begin===<br />
<br />
Do yourself a favor, and get a BiosSavior before you begin. There are different models, make sure you order the one you need. It depends on the size and type of the ROM chip on your board. Our S2881 board has a 4Mbit PLCC chip. This is the list of BiosSavior vendors:<br />
<br />
http://www.ioss.com.tw/web/English/WheretoBuy.html<br />
<br />
While coreboot replaces the functions of the proprietary bios, it does NOT replace the VGA bios. If you want VGA on your coreboot'd machine (not strictly necessary for servers), you will need to extract the VGA bios and concatenate it with the coreboot image, before burning it to your ROM. See below for details.<br />
<br />
This wiki page is maintained by Ward Vandewege (ward at gnu dot org).<br />
<br />
===Hardware===<br />
<br />
The S2881 comes with a 4Mbit BIOS chip, which does not suffice to put a Linux kernel in ROM. However, it's sufficient to have a fully functional coreboot with FILO payload, as described below.<br />
<br />
It turns out that you can also use an 8Mbit BIOS chip on the S2881. For instance, flashrom supports flashing the SST 49LF080A on the S2881 without problems. Having a 8Mbit chip allows putting a Linux kernel into the BIOS, as described in [http://www.linuxbios.org/Tyan_S2892_Build_Tutorial the S2892 the OLPC way] build tutorial.<br />
<br />
===Payload===<br />
<br />
coreboot requires a [[Payloads|Payload]] to boot an operating system.<br />
<br />
If you want to boot from the network, you will need to use [http://www.etherboot.org Etherboot]. <br />
<br />
If you want to boot from an IDE drive, SATA drive, USB stick or CDROM, you can use [[FILO]]. <br />
<br />
===Building the payload===<br />
<br />
In order to boot from a SATA disk, we use FILO.<br />
<br />
Once you've downloaded FILO, you will need to put a file 'Config' in its root tree. An example can be found in the distribution, called 'defconfig'. <br />
<br />
You can configure FILO to load Grub. Here's my Config, which does that:<br />
<br />
# Use grub instead of autoboot?<br />
USE_GRUB = 1<br />
# Grub menu.lst path<br />
MENULST_FILE = "hda1:/grub/menu.lst"<br />
# Driver for hard disk, CompactFlash, and CD-ROM on IDE bus<br />
IDE_DISK = 1<br />
# Add a short delay when polling status registers<br />
# (required on some broken SATA controllers)<br />
IDE_DISK_POLL_DELAY = 1<br />
# Driver for USB Storage<br />
USB_DISK = 1<br />
# VGA text console<br />
VGA_CONSOLE = 1<br />
PC_KEYBOARD = 1<br />
# Enable the serial console<br />
SERIAL_CONSOLE = 1<br />
# Serial console; real external serial port<br />
SERIAL_IOBASE = 0x3f8<br />
SERIAL_SPEED = 115200<br />
# Filesystems<br />
FSYS_EXT2FS = 1<br />
FSYS_ISO9660 = 1<br />
# Support for boot disk image in bootable CD-ROM (El Torito)<br />
ELTORITO = 1<br />
# PCI support<br />
SUPPORT_PCI = 1<br />
# Enable this to scan PCI busses above bus 0<br />
# AMD64 based boards do need this.<br />
PCI_BRUTE_SCAN = 1<br />
# Loader for standard Linux kernel image, a.k.a. /vmlinuz<br />
LINUX_LOADER = 1<br />
<br />
In order to get serial output from Grub, you will also need to add something like this to your menu.list:<br />
<br />
# serial port 0<br />
serial --unit=0 --speed=115200<br />
terminal --timeout=15 serial console<br />
<br />
Now execute 'make', which will generate a filo.elf file that will be your payload. You will need to refer to this file to build coreboot as explained below, because it gets included in the coreboot ROM image.<br />
<br />
===Building coreboot ===<br />
<br />
Download coreboot ([[Download coreboot]]). You need subversion revision 2251 or higher. Note that revisions 2288 through 2295 are known bad, do not use those.<br />
<br />
If you want VGA support, a few changes are required in the coreboot source tree. Edit this file:<br />
<br />
src/mainboard/tyan/s2881/Options.lb<br />
<br />
You'll need to enable the following two lines:<br />
<br />
#VGA Console<br />
default CONFIG_CONSOLE_VGA=1<br />
default CONFIG_PCI_ROM_RUN=1<br />
<br />
Now - if you are going to be using a rom chip larger than 512K, you will need to also make a change in<br />
<br />
src/mainboard/tyan/s2881/Config.lb<br />
<br />
Assuming you are using a 1MB chip, modify the onboard vga device info from this<br />
<br />
chip drivers/pci/onboard<br />
device pci 6.0 on end<br />
register "rom_address" = "0xfff80000"<br />
end<br />
<br />
to this<br />
<br />
chip drivers/pci/onboard<br />
device pci 6.0 on end<br />
register "rom_address" = "0xfff00000"<br />
end<br />
<br />
This tells coreboot where to find the VGA rom. Depending on the size of the rom chip you use, it will be at a different address (which is calculated from the top of the rom chip, and we prepend the vga rom to the coreboot image!).<br />
<br />
Whether you want VGA or not, build a tyan/s2881 tree.<br />
<br />
cd targets<br />
./buildtarget tyan/s2881<br />
<br />
Modify tyan/s2881/Config.lb; change payload setting to point to your filo.elf file<br><br />
<br />
If you don't need VGA, you will need to modify tyan/s2881/Config.lb. Comment out the line:<br />
<br />
option ROM_SIZE = 475136<br />
<br />
If you do need VGA, modify the ROM_SIZE line to the following, because our VGA bios is only 36KB, not 48K:<br />
<br />
option ROM_SIZE = 487424<br />
<br />
Make you are using GCC 3.4 (not GCC 4.0), or your image will be too large, and then:<br />
<br />
cd tyan/s2881/s2881<br />
make<br />
<br />
===VGA bios===<br />
<br />
Skip this section if you don't need VGA support in your coreboot.<br />
<br />
The s2881 VGA bios is 36K long. The last 4KB are not available in RAM after boot (with the proprietary BIOS), however, so we can NOT use this method to extract the VGA BIOS:<br />
<br />
While booted with your proprietary BIOS, you can see where your vga bios starts <br />
and how much space it takes by issuing<br />
<code>cat /proc/iomem | grep "Video ROM"</code><br />
Then get a copy of your vga bios.<br />
<code>dd if=/dev/mem of=vgabios.bin bs=1k count=32 skip=768</code><br />
Our vga bios is 32K. Verify that the image is correct - it should start with 55 AA, <br />
and contain strings that indicate it's your VGA bios. You should be able to clearly <br />
make out 'ATI RAGE' etc.<br />
<br />
So this does not work - the last 4K is missing. Thankfully, Anton Borisov has some tools that can extract the VGA BIOS - and other option ROMs, in fact - from the BIOS images that Tyan offers on its website. <br />
<br />
You can download the tool for AMI here:<br />
<br />
http://www.kaos.ru/biosgfx/download/AmiDeco_0.31e.src.tar.gz<br />
<br />
Then download the latest Bios for the s2881 from the TYAN website:<br />
<br />
http://www.tyan.com/support_download_bios.aspx?model=S.S2881<br />
<br />
Once you have the image, you can display its contents like this:<br />
<br />
./amideco 2881v206.rom -l<br />
<br />
That should show output like:<br />
<br />
-=AmiBIOSDeco, version 0.31e (Linux)=-<br />
FileLength : 80000 (524288 bytes)<br />
FileName : 2881v206.rom<br />
AMIBIOS information:<br />
Version : 0800<br />
Packed Data : 56C90 (355472 bytes)<br />
Start : DF83C<br />
Packed Offset : 5F83C<br />
Offset : 80000<br />
Released : 14 June 2005<br />
DirName : 2881v206.---<br />
+------------------------------------------------------------------------------+<br />
| Class.Instance (Name) Packed ---> Expanded Compression Offset |<br />
+------------------------------------------------------------------------------+<br />
08 01 ( Interface) 00798 ( 01944) => 00798 ( 01944) 5F83Ch<br />
04 02 ( Setup Client) 03F40 ( 16192) => 069A2 ( 27042) + 5B8E8h<br />
0C 03 ( ROM-ID) 00008 ( 00008) => 00008 ( 00008) 5B8CCh<br />
0E 04 ( OEM Logo) 00B4D ( 02893) => 4B436 (308278) + 5AD68h<br />
1A 05 ( Small Logo) 00532 ( 01330) => 026A2 ( 09890) + 5A820h<br />
18 06 (ADM (Display MGR)) 01741 ( 05953) => 04019 ( 16409) + 590C8h<br />
19 07 ( ADM Font) 0059C ( 01436) => 01304 ( 04868) + 58B18h<br />
1B 08 ( SLAB) 25016 (151574) => 4CAA8 (314024) + 33AECh<br />
21 09 ( Multilanguage) 03B90 ( 15248) => 0844A ( 33866) + 2FF48h<br />
20 10 ( PCI AddOn ROM) 05B84 ( 23428) => 09000 ( 36864) + 2A3B0h<br />
20 11 ( PCI AddOn ROM) 06343 ( 25411) => 0C800 ( 51200) + 24058h<br />
20 12 ( PCI AddOn ROM) 0D5EA ( 54762) => 0E000 ( 57344) + 16A58h<br />
20 13 ( PCI AddOn ROM) 05678 ( 22136) => 09000 ( 36864) + 113CCh<br />
11 14 ( P6 Microcode) 2062004 (33955844) => 00039 ( 00057) + 0EBA4h<br />
2E 15 ( User ROM) 047B3 ( 18355) => 07800 ( 30720) + 0A3DCh<br />
06 16 ( DMI Data) 003CD ( 00973) => 00A1A ( 02586) + 09FF8h<br />
2F 17 ( User-Defined ;)) 00C1D ( 03101) => 02595 ( 09621) + 093C4h<br />
80 18 ( User-Defined ;)) 00038 ( 00056) => 00038 ( 00056) 09378h<br />
Total Sections : 18<br />
<br />
Now extract all these parts:<br />
<br />
./amideco 2881v206.rom -x<br />
<br />
That will create a number of new files:<br />
<br />
-rw-r--r-- 1 ward ward 27042 2006-07-07 16:29 amibody.04<br />
-rw-r--r-- 1 ward ward 1944 2006-07-07 16:29 amibody.08<br />
-rw-r--r-- 1 ward ward 8 2006-07-07 16:29 amibody.0c<br />
-rw-r--r-- 1 ward ward 308278 2006-07-07 16:29 amibody.0e<br />
-rw-r--r-- 1 ward ward 0 2006-07-07 16:29 amibody.11<br />
-rw-r--r-- 1 ward ward 16409 2006-07-07 16:29 amibody.18<br />
-rw-r--r-- 1 ward ward 4868 2006-07-07 16:29 amibody.19<br />
-rw-r--r-- 1 ward ward 9890 2006-07-07 16:29 amibody.1a<br />
-rw-r--r-- 1 ward ward 314024 2006-07-07 16:29 amibody.1b<br />
-rw-r--r-- 1 ward ward 33866 2006-07-07 16:29 amibody.21<br />
-rw-r--r-- 1 ward ward 36864 2006-07-07 16:29 amipci_00.20<br />
-rw-r--r-- 1 ward ward 51200 2006-07-07 16:29 amipci_01.20<br />
-rw-r--r-- 1 ward ward 57344 2006-07-07 16:29 amipci_02.20<br />
-rw-r--r-- 1 ward ward 36864 2006-07-07 16:29 amipci_03.20<br />
<br />
We know that our VGA BIOS is 36K long. Only 2 files fit the bill: amipci_00.20 and amipci_03.20. If you run 'strings' on both files, you'll see that the former is the VGA BIOS, and the latter is the Option ROM for the Broadcom network card.<br />
<br />
So, now that we have the proper VGA bios image (36K long), we need to concatenate the VGA bios with the coreboot image<br />
<br />
<code>cat amipci_00.20 coreboot.rom > final_coreboot.rom</code><br />
<br />
===Burning the bios===<br />
<br />
Make sure your Biossavior is set to the 'RD1' position (not to 'ORG'!), so that you can always revert to the original bios.<br />
<br />
On the target machine:<br />
<br />
cd coreboot-v2/util/flashrom<br />
./flashrom -v -w path/to/your/coreboot.rom<br />
<br />
If you want VGA support, make sure you burn the final_coreboot.rom image!<br />
<br />
===Booting coreboot===<br />
<br />
You now need to 'halt' the machine. A soft reset won't work the first time you boot from the proprietary BIOS into coreboot. <br />
<br />
Since we set up serial output in the coreboot configuration files above, you will want to hook up a serial console (or a copy of minicom or the like) to see what the box is doing while starting up. Keep your eyes on the screen after hitting the power button - coreboot will be up and running way before you expect it!<br />
<br />
If you have problems, don't despair. Power down the box, switch the biossavior to 'ORG' and boot in the proprietary BIOS. Just don't forget to switch the biossavior back to the 'RD1' position before flashing the BIOS!<br />
<br />
See what went wrong, and subscribe and post to the friendly and helpful [http://wiki.linuxbios.org/index.php/Mailinglist mailing list] if you can't figure it out by yourself.<br />
<br />
===Hardware monitoring===<br />
<br />
The s2881 has 2 HWM chips, each driving a number of fans and temperature sensors. As of SVN revision 2674, the main HWM chip that drives most of the fans (ADT7463) is configured to be in automatic (hardware) fan control mode, based on the temperature sensors connected to it. These are the specific HWM settings:<br />
<br />
* fans under automatic hardware control<br />
* fans blow by default at 25% speed<br />
* if any of the sensors goes above 55C (Tmin), the fans start blowing harder to compensate<br />
* if any of the sensors reach 70C (THERM limit), the fans start blowing at full speed<br />
<br />
These settings should lead to longer fan life, reduced power consumption, and better protection against accidental fan speed misconfiguration from software. And the machine is a lot less loud under light load.<br />
<br />
The original Tyan BIOS had these settings:<br />
<br />
* fans under manual (software) control<br />
* fans blow by default at 100% speed<br />
* automatic mode Tmin set to 90C<br />
* automatic mode THERM limit set to 100C<br />
<br />
The coreboot settings should be more ideal for real world deployment, and are a lot safer.<br />
<br />
{{GPL}}<br />
<br />
[[Category:Tutorials]]</div>Wardhttps://www.coreboot.org/index.php?title=Board:tyan/s2881&diff=7262Board:tyan/s28812008-10-10T20:39:49Z<p>Ward: /* Building coreboot */</p>
<hr />
<div>===Before you begin===<br />
<br />
Do yourself a favor, and get a BiosSavior before you begin. There are different models, make sure you order the one you need. It depends on the size and type of the ROM chip on your board. Our S2881 board has a 4Mbit PLCC chip. This is the list of BiosSavior vendors:<br />
<br />
http://www.ioss.com.tw/web/English/WheretoBuy.html<br />
<br />
While coreboot replaces the functions of the proprietary bios, it does NOT replace the VGA bios. If you want VGA on your coreboot'd machine (not strictly necessary for servers), you will need to extract the VGA bios and concatenate it with the coreboot image, before burning it to your ROM. See below for details.<br />
<br />
This wiki page is maintained by Ward Vandewege (ward at gnu dot org).<br />
<br />
===Hardware===<br />
<br />
The S2881 comes with a 4Mbit BIOS chip, which does not suffice to put a Linux kernel in ROM. However, it's sufficient to have a fully functional coreboot with FILO payload, as described below.<br />
<br />
It turns out that you can also use an 8Mbit BIOS chip on the S2881. For instance, flashrom supports flashing the SST 49LF080A on the S2881 without problems. Having a 8Mbit chip allows putting a Linux kernel into the BIOS, as described in [http://www.linuxbios.org/Tyan_S2892_Build_Tutorial the S2892 the OLPC way] build tutorial.<br />
<br />
===Payload===<br />
<br />
coreboot requires a [[Payloads|Payload]] to boot an operating system.<br />
<br />
If you want to boot from the network, you will need to use [http://www.etherboot.org Etherboot]. <br />
<br />
If you want to boot from an IDE drive, SATA drive, USB stick or CDROM, you can use [[FILO]]. <br />
<br />
===Building the payload===<br />
<br />
In order to boot from a SATA disk, we use FILO.<br />
<br />
Once you've downloaded FILO, you will need to put a file 'Config' in its root tree. An example can be found in the distribution, called 'defconfig'. <br />
<br />
You can configure FILO to load Grub. Here's my Config, which does that:<br />
<br />
# Use grub instead of autoboot?<br />
USE_GRUB = 1<br />
# Grub menu.lst path<br />
MENULST_FILE = "hda1:/grub/menu.lst"<br />
# Driver for hard disk, CompactFlash, and CD-ROM on IDE bus<br />
IDE_DISK = 1<br />
# Add a short delay when polling status registers<br />
# (required on some broken SATA controllers)<br />
IDE_DISK_POLL_DELAY = 1<br />
# Driver for USB Storage<br />
USB_DISK = 1<br />
# VGA text console<br />
VGA_CONSOLE = 1<br />
PC_KEYBOARD = 1<br />
# Enable the serial console<br />
SERIAL_CONSOLE = 1<br />
# Serial console; real external serial port<br />
SERIAL_IOBASE = 0x3f8<br />
SERIAL_SPEED = 115200<br />
# Filesystems<br />
FSYS_EXT2FS = 1<br />
FSYS_ISO9660 = 1<br />
# Support for boot disk image in bootable CD-ROM (El Torito)<br />
ELTORITO = 1<br />
# PCI support<br />
SUPPORT_PCI = 1<br />
# Enable this to scan PCI busses above bus 0<br />
# AMD64 based boards do need this.<br />
PCI_BRUTE_SCAN = 1<br />
# Loader for standard Linux kernel image, a.k.a. /vmlinuz<br />
LINUX_LOADER = 1<br />
<br />
In order to get serial output from Grub, you will also need to add something like this to your menu.list:<br />
<br />
# serial port 0<br />
serial --unit=0 --speed=115200<br />
terminal --timeout=15 serial console<br />
<br />
Now execute 'make', which will generate a filo.elf file that will be your payload. You will need to refer to this file to build coreboot as explained below, because it gets included in the coreboot ROM image.<br />
<br />
===Building coreboot ===<br />
<br />
Download coreboot ([[Download coreboot]]). You need subversion revision 2251 or higher. Note that revisions 2288 through 2295 are known bad, do not use those.<br />
<br />
If you want VGA support, a few changes are required in the coreboot source tree. Edit this file:<br />
<br />
src/mainboard/tyan/s2881/Options.lb<br />
<br />
You'll need to enable the following two lines:<br />
<br />
#VGA Console<br />
default CONFIG_CONSOLE_VGA=1<br />
default CONFIG_PCI_ROM_RUN=1<br />
<br />
Now - if you are going to be using a rom chip larger than 512K, you will need to also make a change in<br />
<br />
src/mainboard/tyan/s2881/Config.lb<br />
<br />
Assuming you are using a 1MB chip, modify the onboard vga device info from this<br />
<br />
chip drivers/pci/onboard<br />
device pci 6.0 on end<br />
register "rom_address" = "0xfff80000"<br />
end<br />
<br />
to this<br />
<br />
chip drivers/pci/onboard<br />
device pci 6.0 on end<br />
register "rom_address" = "0xfff00000"<br />
end<br />
<br />
Whether you want VGA or not, build a tyan/s2881 tree.<br />
<br />
cd targets<br />
./buildtarget tyan/s2881<br />
<br />
Modify tyan/s2881/Config.lb; change payload setting to point to your filo.elf file<br><br />
<br />
If you don't need VGA, you will need to modify tyan/s2881/Config.lb. Comment out the line:<br />
<br />
option ROM_SIZE = 475136<br />
<br />
If you do need VGA, modify the ROM_SIZE line to the following, because our VGA bios is only 36KB, not 48K:<br />
<br />
option ROM_SIZE = 487424<br />
<br />
Make you are using GCC 3.4 (not GCC 4.0), or your image will be too large, and then:<br />
<br />
cd tyan/s2881/s2881<br />
make<br />
<br />
===VGA bios===<br />
<br />
Skip this section if you don't need VGA support in your coreboot.<br />
<br />
The s2881 VGA bios is 36K long. The last 4KB are not available in RAM after boot (with the proprietary BIOS), however, so we can NOT use this method to extract the VGA BIOS:<br />
<br />
While booted with your proprietary BIOS, you can see where your vga bios starts <br />
and how much space it takes by issuing<br />
<code>cat /proc/iomem | grep "Video ROM"</code><br />
Then get a copy of your vga bios.<br />
<code>dd if=/dev/mem of=vgabios.bin bs=1k count=32 skip=768</code><br />
Our vga bios is 32K. Verify that the image is correct - it should start with 55 AA, <br />
and contain strings that indicate it's your VGA bios. You should be able to clearly <br />
make out 'ATI RAGE' etc.<br />
<br />
So this does not work - the last 4K is missing. Thankfully, Anton Borisov has some tools that can extract the VGA BIOS - and other option ROMs, in fact - from the BIOS images that Tyan offers on its website. <br />
<br />
You can download the tool for AMI here:<br />
<br />
http://www.kaos.ru/biosgfx/download/AmiDeco_0.31e.src.tar.gz<br />
<br />
Then download the latest Bios for the s2881 from the TYAN website:<br />
<br />
http://www.tyan.com/support_download_bios.aspx?model=S.S2881<br />
<br />
Once you have the image, you can display its contents like this:<br />
<br />
./amideco 2881v206.rom -l<br />
<br />
That should show output like:<br />
<br />
-=AmiBIOSDeco, version 0.31e (Linux)=-<br />
FileLength : 80000 (524288 bytes)<br />
FileName : 2881v206.rom<br />
AMIBIOS information:<br />
Version : 0800<br />
Packed Data : 56C90 (355472 bytes)<br />
Start : DF83C<br />
Packed Offset : 5F83C<br />
Offset : 80000<br />
Released : 14 June 2005<br />
DirName : 2881v206.---<br />
+------------------------------------------------------------------------------+<br />
| Class.Instance (Name) Packed ---> Expanded Compression Offset |<br />
+------------------------------------------------------------------------------+<br />
08 01 ( Interface) 00798 ( 01944) => 00798 ( 01944) 5F83Ch<br />
04 02 ( Setup Client) 03F40 ( 16192) => 069A2 ( 27042) + 5B8E8h<br />
0C 03 ( ROM-ID) 00008 ( 00008) => 00008 ( 00008) 5B8CCh<br />
0E 04 ( OEM Logo) 00B4D ( 02893) => 4B436 (308278) + 5AD68h<br />
1A 05 ( Small Logo) 00532 ( 01330) => 026A2 ( 09890) + 5A820h<br />
18 06 (ADM (Display MGR)) 01741 ( 05953) => 04019 ( 16409) + 590C8h<br />
19 07 ( ADM Font) 0059C ( 01436) => 01304 ( 04868) + 58B18h<br />
1B 08 ( SLAB) 25016 (151574) => 4CAA8 (314024) + 33AECh<br />
21 09 ( Multilanguage) 03B90 ( 15248) => 0844A ( 33866) + 2FF48h<br />
20 10 ( PCI AddOn ROM) 05B84 ( 23428) => 09000 ( 36864) + 2A3B0h<br />
20 11 ( PCI AddOn ROM) 06343 ( 25411) => 0C800 ( 51200) + 24058h<br />
20 12 ( PCI AddOn ROM) 0D5EA ( 54762) => 0E000 ( 57344) + 16A58h<br />
20 13 ( PCI AddOn ROM) 05678 ( 22136) => 09000 ( 36864) + 113CCh<br />
11 14 ( P6 Microcode) 2062004 (33955844) => 00039 ( 00057) + 0EBA4h<br />
2E 15 ( User ROM) 047B3 ( 18355) => 07800 ( 30720) + 0A3DCh<br />
06 16 ( DMI Data) 003CD ( 00973) => 00A1A ( 02586) + 09FF8h<br />
2F 17 ( User-Defined ;)) 00C1D ( 03101) => 02595 ( 09621) + 093C4h<br />
80 18 ( User-Defined ;)) 00038 ( 00056) => 00038 ( 00056) 09378h<br />
Total Sections : 18<br />
<br />
Now extract all these parts:<br />
<br />
./amideco 2881v206.rom -x<br />
<br />
That will create a number of new files:<br />
<br />
-rw-r--r-- 1 ward ward 27042 2006-07-07 16:29 amibody.04<br />
-rw-r--r-- 1 ward ward 1944 2006-07-07 16:29 amibody.08<br />
-rw-r--r-- 1 ward ward 8 2006-07-07 16:29 amibody.0c<br />
-rw-r--r-- 1 ward ward 308278 2006-07-07 16:29 amibody.0e<br />
-rw-r--r-- 1 ward ward 0 2006-07-07 16:29 amibody.11<br />
-rw-r--r-- 1 ward ward 16409 2006-07-07 16:29 amibody.18<br />
-rw-r--r-- 1 ward ward 4868 2006-07-07 16:29 amibody.19<br />
-rw-r--r-- 1 ward ward 9890 2006-07-07 16:29 amibody.1a<br />
-rw-r--r-- 1 ward ward 314024 2006-07-07 16:29 amibody.1b<br />
-rw-r--r-- 1 ward ward 33866 2006-07-07 16:29 amibody.21<br />
-rw-r--r-- 1 ward ward 36864 2006-07-07 16:29 amipci_00.20<br />
-rw-r--r-- 1 ward ward 51200 2006-07-07 16:29 amipci_01.20<br />
-rw-r--r-- 1 ward ward 57344 2006-07-07 16:29 amipci_02.20<br />
-rw-r--r-- 1 ward ward 36864 2006-07-07 16:29 amipci_03.20<br />
<br />
We know that our VGA BIOS is 36K long. Only 2 files fit the bill: amipci_00.20 and amipci_03.20. If you run 'strings' on both files, you'll see that the former is the VGA BIOS, and the latter is the Option ROM for the Broadcom network card.<br />
<br />
So, now that we have the proper VGA bios image (36K long), we need to concatenate the VGA bios with the coreboot image<br />
<br />
<code>cat amipci_00.20 coreboot.rom > final_coreboot.rom</code><br />
<br />
===Burning the bios===<br />
<br />
Make sure your Biossavior is set to the 'RD1' position (not to 'ORG'!), so that you can always revert to the original bios.<br />
<br />
On the target machine:<br />
<br />
cd coreboot-v2/util/flashrom<br />
./flashrom -v -w path/to/your/coreboot.rom<br />
<br />
If you want VGA support, make sure you burn the final_coreboot.rom image!<br />
<br />
===Booting coreboot===<br />
<br />
You now need to 'halt' the machine. A soft reset won't work the first time you boot from the proprietary BIOS into coreboot. <br />
<br />
Since we set up serial output in the coreboot configuration files above, you will want to hook up a serial console (or a copy of minicom or the like) to see what the box is doing while starting up. Keep your eyes on the screen after hitting the power button - coreboot will be up and running way before you expect it!<br />
<br />
If you have problems, don't despair. Power down the box, switch the biossavior to 'ORG' and boot in the proprietary BIOS. Just don't forget to switch the biossavior back to the 'RD1' position before flashing the BIOS!<br />
<br />
See what went wrong, and subscribe and post to the friendly and helpful [http://wiki.linuxbios.org/index.php/Mailinglist mailing list] if you can't figure it out by yourself.<br />
<br />
===Hardware monitoring===<br />
<br />
The s2881 has 2 HWM chips, each driving a number of fans and temperature sensors. As of SVN revision 2674, the main HWM chip that drives most of the fans (ADT7463) is configured to be in automatic (hardware) fan control mode, based on the temperature sensors connected to it. These are the specific HWM settings:<br />
<br />
* fans under automatic hardware control<br />
* fans blow by default at 25% speed<br />
* if any of the sensors goes above 55C (Tmin), the fans start blowing harder to compensate<br />
* if any of the sensors reach 70C (THERM limit), the fans start blowing at full speed<br />
<br />
These settings should lead to longer fan life, reduced power consumption, and better protection against accidental fan speed misconfiguration from software. And the machine is a lot less loud under light load.<br />
<br />
The original Tyan BIOS had these settings:<br />
<br />
* fans under manual (software) control<br />
* fans blow by default at 100% speed<br />
* automatic mode Tmin set to 90C<br />
* automatic mode THERM limit set to 100C<br />
<br />
The coreboot settings should be more ideal for real world deployment, and are a lot safer.<br />
<br />
{{GPL}}<br />
<br />
[[Category:Tutorials]]</div>Wardhttps://www.coreboot.org/index.php?title=FILO&diff=7108FILO2008-09-11T17:16:34Z<p>Ward: /* Download FILO */</p>
<hr />
<div>[[Image:Qemu filo.png|thumb|right|FILO trying to load menu.lst.]]<br />
[[Image:Qemu filo prompt.png|thumb|right|FILO prompt.]]<br />
<br />
'''FILO''' is a bootloader which loads boot images from a local filesystem,<br />
without help from legacy BIOS services.<br />
<br />
Expected usage is to flash it into the BIOS ROM together with coreboot.<br />
<br />
== Download FILO ==<br />
<br />
Download the latest version of FILO from Subversion with<br />
<br />
$ svn co svn://coreboot.org/filo/trunk/filo<br />
<br />
Or download the filo 0.5 release at<br />
<br />
$ svn co svn://coreboot.org/filo/branches/filo-0.5<br />
<br />
You can also browse the source code online at<br />
http://tracker.coreboot.org/trac/filo/browser/trunk<br />
<br />
== Features ==<br />
<br />
* Supported boot devices: IDE hard disk, SATA hard disk, CD-ROM, and system memory (ROM)<br />
* Supported filesystems: ext2, fat, jfs, minix, reiserfs, xfs, and iso9660<br />
* Supported image formats: ELF and [b]zImage (a.k.a. /vmlinuz)<br />
* Supports boot disk image of El Torito bootable CD-ROM. "hdc1" means the boot disk image of the CD-ROM at hdc.<br />
* Supports loading image from raw device with user-specified offset<br />
* Console on VGA + keyboard, serial port, or both<br />
* Line editing with ^H, ^W and ^U keys to type arbitrary filename to boot<br />
* Full support for the ELF Boot Proposal (where is it btw, Eric)<br />
* Auxiliary tool to compute checksum of ELF boot images<br />
* Full 32-bit code, no BIOS calls<br />
* uses [[libpayload]]<br />
<br />
== Requirements ==<br />
<br />
Only the x86 (x64) architecture is currently supported. Some efforts have <br />
been made to get FILO running on PPC. Contact the [[Mailinglist|coreboot mailinglist]]<br />
for more information.<br />
<br />
x64/AMD 64 machines work fine when compiling FILO in 32-bit mode.<br />
(coreboot uses 32-bit mode and Linux kernel does the transition to 64-bit mode)<br />
<br />
Recent version of GNU toolchain is required to build.<br />
<br />
We have tested with Debian/woody (gcc 2.95.4, binutils 2.12.90.0.1,<br />
make 3.79.1), Debian/sid (gcc 3.3.2, binutils 2.14.90.0.6,<br />
make 3.80) and different versions of SUSE Linux from 9.0 to 10.3.<br />
<br />
On AMD64 for Debian install the gcc-multilib package.<br />
<br />
== Preparation ==<br />
<br />
You need to compile libpayload (included via svn:externals in FILO)<br />
<br />
$ cd libpayload<br />
$ make defconfig<br />
$ make<br />
<br />
== Configuration ==<br />
<br />
Configure FILO using the Kconfig interface:<br />
<br />
$ make menuconfig<br />
<br />
== Installation ==<br />
Then running make again will build filo.elf, the ELF boot image of FILO.<br />
$ make<br />
<br />
Use build/filo.elf as your payload of coreboot, or a boot image for<br />
[[Etherboot]].<br />
<br />
== Credits ==<br />
<br />
* This software was originally developed by SONE Takeshi <ts1@tsn.or.jp><br />
* It has been significantly enhanced and is now maintained by [mailto:stepan@coresystems.de Stefan Reinauer].<br />
* It uses libpayload from Uwe Hermann and Jordan Crouse<br />
<br />
== Troubleshooting ==<br />
<br />
If you experience trouble compiling or using FILO, please report with a build log or detailed error description to the [[Mailinglist|coreboot mailing list]].<br />
<br />
== Notes ==<br />
<br />
=== CD-ROM Booting ===<br />
<br />
To boot a CD-ROM or DVD you only need to specify the drive '''without a partition number'''. For example to boot to the primary drive on the secondary IDE channel you would use '''hdc''' and not '''hdc1''' in FILO.<br />
<br />
=== Grub-like Interface ===<br />
If you are using FILO with '''CONFIG_USE_GRUB''', and want to boot to your Linux install disk you have to do a mixture of GRUB and FILO commands.<br />
<br />
Like GRUB you have to append a kernel (and parameters), then an initrd, and give a boot command.<br />
Like FILO you have to give absolute paths.<br />
<br />
Example to boot to a GeeXboX install CD-ROM:<br />
filo> kernel hdc:/GEEXBOX/boot/vmlinuz root=/dev/ram0 rw init=linuxrc boot=cdrom installator<br />
Press <ENTER><br />
filo> initrd hdc:/GEEXBOX/boot/initrd.gz<br />
Press <ENTER><br />
filo> boot<br />
Press <ENTER><br />
<br />
Your system will now boot right into the Linux install.<br />
<br />
=== NVRAM Parsing ===<br />
<br />
FILO parses the following NVRAM variables:<br />
<br />
* 'boot_default' is parsed by the command '''nvram-default''' to obtain the default boot entry for the boot menu. It can be used as an alternative to the '''default''' command which reads the default entry as a parameter.</div>Wardhttps://www.coreboot.org/index.php?title=PC_Engines_ALIX.1C_Vendor_Cooperation_Score&diff=6862PC Engines ALIX.1C Vendor Cooperation Score2008-08-21T15:23:52Z<p>Ward: </p>
<hr />
<div>== Availability ==<br />
<br />
[http://pcengines.ch/alix1c.htm PC Engines ALIX.1C] is [http://pcengines.ch/order.php widely available] as of August 2008.<br />
<br />
== Vendor Cooperation Score ==<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Points<br />
! align="left" | Max<br />
! align="left" | Rating<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''[[#Documentation]]'''<br />
| style="background:lime" | 59<br />
| 80<br />
| [[Image:four-hares.png]]<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''[[#Hackability]]'''<br />
| style="background:yellow" | 9<br />
| 24<br />
| [[Image:two-hares.png]]<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''[[#Example and support code]]'''<br />
| style="background:lime" | 7<br />
| 10<br />
| [[Image:three-hares.png]]<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Total'''<br />
| style="background:lime" | 75<br />
| 114<br />
| [[Image:four-hares.png]]<br />
<br />
|}<br />
<br />
== Documentation ==<br />
<br />
Score: 59/80<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Availability<br />
! align="left" | Points<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''CPU (Geode LX)'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Datasheet / register set'''<br />
| Freely available [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/33234F_LX_databook.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#dddddd"<br />
| '''BIOS programming guide'''<br />
| NDA allowing GPL'd code<br />
| style="background:yellow" | 3<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Errata'''<br />
| NDA allowing GPL'd code<br />
| style="background:yellow" | 3<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''Chipset (CS5536)'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Datasheet / register set'''<br />
| Freely available [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/33238G_cs5536_db.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#dddddd"<br />
| '''BIOS programming guide'''<br />
| NDA allowing GPL'd code<br />
| style="background:yellow" | 3<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Errata'''<br />
| Freely available [http://www.amd.com/files/connectivitysolutions/geode/geode_gx/34472D_CS5536_B1_specupdate.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''Super I/O'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Datasheet / register set'''<br />
| Freely available [http://www.itox.com/pages/support/wdt/W83627HF.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''Mainboard'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Schematics'''<br />
| Freely available [http://pcengines.ch/schema/alix1c.pdf]<br />
| style="background:lime" | 10<br />
<br />
|}<br />
<br />
== Hackability ==<br />
<br />
Score: 9/24. No soldering required to recover from a bad flash, but an LPC dongle or LPC pod is required.<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Status<br />
! align="left" | Points<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Rom chip'''<br />
| Soldered<br />
| style="background:yellow" | 0<br />
<br />
|- bgcolor="#dddddd"<br />
| '''LPC header'''<br />
| Available, can be used for secondary rom chip<br />
| style="background:lime" | 9<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''JTAG header'''<br />
| No<br />
| style="background:yellow" | 0<br />
<br />
|}<br />
<br />
== Example and support code ==<br />
<br />
Pascal Dornier, the person behind PC Engines, has supplied developers with sample code and documentation and is very responsive via e-mail. Score: 7/10<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Status<br />
! align="left" | Points<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Example and support code'''<br />
| Vendor provides code via e-mail, no NDA/license agreement required.<br />
| style="background:lime" | 7<br />
|}<br />
<br />
<br />
== Background on our rating system ==<br />
<br />
See the [http://www.coreboot.org/Rating_System Rating System] page for more information.</div>Wardhttps://www.coreboot.org/index.php?title=PC_Engines_ALIX.1C_Vendor_Cooperation_Score&diff=6858PC Engines ALIX.1C Vendor Cooperation Score2008-08-21T15:04:49Z<p>Ward: /* Vendor Cooperation Score */</p>
<hr />
<div>== Availability ==<br />
<br />
[http://pcengines.ch/alix1c.htm PC Engines ALIX.1C] is [http://pcengines.ch/order.php widely available] as of August 2008.<br />
<br />
== Vendor Cooperation Score ==<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Points<br />
! align="left" | Max<br />
! align="left" | Rating<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''[[#Documentation]]'''<br />
| style="background:lime" | 59<br />
| 80<br />
| [[Image:four-hares.png]]<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''[[#Hackability]]'''<br />
| style="background:yellow" | 9<br />
| 24<br />
| [[Image:two-hares.png]]<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''[[#Vendor participation]]'''<br />
| style="background:yellow" | 0<br />
| 10<br />
| [[Image:zero-hares.png]]<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''[[#Example and support code]]'''<br />
| style="background:lime" | 7<br />
| 10<br />
| [[Image:three-hares.png]]<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Total'''<br />
| style="background:lime" | 75<br />
| 124<br />
| [[Image:four-hares.png]]<br />
<br />
|}<br />
<br />
== Documentation ==<br />
<br />
Score: 59/80<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Availability<br />
! align="left" | Points<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''CPU (Geode LX)'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Datasheet / register set'''<br />
| Freely available [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/33234F_LX_databook.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#dddddd"<br />
| '''BIOS programming guide'''<br />
| NDA allowing GPL'd code<br />
| style="background:yellow" | 3<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Errata'''<br />
| NDA allowing GPL'd code<br />
| style="background:yellow" | 3<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''Chipset (CS5536)'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Datasheet / register set'''<br />
| Freely available [http://www.amd.com/files/connectivitysolutions/geode/geode_lx/33238G_cs5536_db.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#dddddd"<br />
| '''BIOS programming guide'''<br />
| NDA allowing GPL'd code<br />
| style="background:yellow" | 3<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Errata'''<br />
| Freely available [http://www.amd.com/files/connectivitysolutions/geode/geode_gx/34472D_CS5536_B1_specupdate.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''Super I/O'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Datasheet / register set'''<br />
| Freely available [http://www.itox.com/pages/support/wdt/W83627HF.pdf]<br />
| style="background:lime" | 10<br />
<br />
|- bgcolor="#6699ff"<br />
| colspan="3" | '''Mainboard'''<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Schematics'''<br />
| Freely available [http://pcengines.ch/schema/alix1c.pdf]<br />
| style="background:lime" | 10<br />
<br />
|}<br />
<br />
== Hackability ==<br />
<br />
Score: 9/24. No soldering required to recover from a bad flash, but an LPC dongle or LPC pod is required.<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Status<br />
! align="left" | Points<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Rom chip'''<br />
| Soldered<br />
| style="background:yellow" | 0<br />
<br />
|- bgcolor="#dddddd"<br />
| '''LPC header'''<br />
| Available, can be used for secondary rom chip<br />
| style="background:lime" | 9<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''JTAG header'''<br />
| No<br />
| style="background:yellow" | 0<br />
<br />
|}<br />
<br />
== Vendor participation ==<br />
<br />
PC Engines does not directly take part in the project. Score: 0/10.<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Status<br />
! align="left" | Points<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Vendor participation'''<br />
| No direct vendor participation<br />
| style="background:yellow" | 0<br />
|}<br />
<br />
== Example and support code ==<br />
<br />
Pascal Dornier, the person behind PC Engines, has supplied developers with sample code and documentation and is very responsive via e-mail. Score: 7/10<br />
<br />
{| border="0" style="font-size: smaller"<br />
|- bgcolor="#6699ff"<br />
! align="left" | Item<br />
! align="left" | Status<br />
! align="left" | Points<br />
<br />
|- bgcolor="#eeeeee"<br />
| '''Example and support code'''<br />
| Vendor provides code via e-mail, no NDA/license agreement required.<br />
| style="background:lime" | 7<br />
|}<br />
<br />
<br />
== Background on our rating system ==<br />
<br />
See the [http://www.coreboot.org/Rating_System Rating System] page for more information.</div>Ward