Board:asus/m4a785t-m: Difference between revisions

From coreboot
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
This HOWTO explains how to use coreboot on the '''[http://www.asus.com/product.aspx?P_ID=ef0qgvMIwOUagAVl ASUS M4A785-M]''' board.
This HOWTO explains how to use coreboot on the '''[http://www.asus.com/product.aspx?P_ID=ef0qgvMIwOUagAVl ASUS M4A785-M]''' board.
<div class="boilerplate" style="background-color: yellow; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px dotted #aaa;">'''The content on this page is outdated.'''</div>


== Status ==
== Status ==
Line 29: Line 26:
|RAM_SODIMM_status = N/A
|RAM_SODIMM_status = N/A
|RAM_DDR_status = N/A
|RAM_DDR_status = N/A
|RAM_DDR_comments = N/A
|RAM_DDR2_status = Unknown
|RAM_DDR2_status = Unknown
|RAM_DDR3_status = No
|RAM_DDR3_status = No
|RAM_DDR3_comments = 2G works, 4G or more needs to be restested.
|RAM_DDR3_comments = 2G works, 4G or more have issues.
|RAM_dualchannel_status = Untested
|RAM_dualchannel_status = Untested
|RAM_ecc_status = Untested
|RAM_ecc_status = Untested
Line 90: Line 86:
|Powersave_status = Untested
|Powersave_status = Untested
|ACPI_status = Untested
|ACPI_status = Untested
|Reboot_status = Untested
|Reboot_status = OK
|Poweroff_status = OK
|Poweroff_status = OK
|LEDs_status = Untested
|LEDs_status = Untested

Revision as of 21:13, 1 November 2015

This HOWTO explains how to use coreboot on the ASUS M4A785-M board.

Status

RAM issue

  • 32bit untested.
  • 64bit was tested and works with 2G of RAM.
    • When using more than 4G of RAM, I can't boot GNU/Linux anymore:
      • USB devices not seen, some errors -71), with mem=4000M, that works ok again.
      • SATA devices are also not seen, and with mem=4000M, it also works ok again.

Status

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: AMD Athlon64 X2 240e.
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown How to test?
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown How to test?
L3 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multiple CPU support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multi-core support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Hardware virtualization OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
RAM
EDO OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SDRAM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SO-DIMM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR2 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
DDR3 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | No 2G works, 4G or more have issues.
Dual channel support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
ECC support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested I'm not sure if hardware supports it.
On-board Hardware
On-board IDE 3.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
On-board IDE 2.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SATA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested At least 2 of the 6 SATA port works. The rest is untested.
On-board SCSI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
On-board USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK tested in SeaBIOS and with the linux-libre kernel.
On-board VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested I only tested the external GPU, see below for more informations.
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested in linux-libre and ipxe, works flawlessly.
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Not tested but it boots fine with it and the sound card appears.
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board FireWire OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Smartcard reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board CompactFlash OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board PCMCIA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Wifi OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Bluetooth OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SD card reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Add-on slots/cards
ISA add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Audio/Modem-Riser (AMR/CNR) cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested booting on an ATA sil card: booting on it works when adding its PCI ID to coreboot.
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Mini-PCI-Express add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
PCI-X add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
AGP graphics cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x1 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PCI Express x2 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PCI Express x4 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PCI Express x8 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PCI Express x16 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works with "02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GT218 [GeForce 210] [10de:0a65] (rev a2)"
PCI Express x32 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
HTX add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Legacy / Super I/O
Floppy OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A There is no floppy connector. There seem to be an unpopulated header for it.
Serial port 1 (COM1) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK 10 pins intel header
Serial port 2 (COM2) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Parallel port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Headers on board only.
PS/2 keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PS/2 mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Game port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Infrared OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
DiskOnChip OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Input
Trackpoint OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Displayport OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Thinklight OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Miscellaneous
Sensors / fan control OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Hardware watchdog OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
SMBus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
CAN bus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
CPU frequency scaling OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Other powersaving features OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Reboot OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Poweroff OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Suspend OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Nonstandard LEDs OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
High precision event timers (HPET) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Random number generator (RNG) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on modem ring OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
TPM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Flashrom OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine from coreboot to coreboot, and from BIOS to coreboot. From coreboot to BIOS works but you may have to do some tricks like clearing CMOS to make it start again.

proprietary components status

  • CPU Microcode (optional)
  • VGA option rom (optional): wihtout it you will get no graphics, Note that if you use an external graphic card, SeaBIOS will probably(depending on its configuration) load the option rom(that you don't have to touch) from the graphic card.

features

  • compatible with nvramtool

Introduction

This pages is about the port to the M4A785T-M, this mainboard is very similar to the M4A785-M, but:

  • it has DDR3 instead of DDR2

Building the serial port adapter

The serial port is available on the 10 pin "intel" header.

Adapting GNU/Linux

Before booting with coreboot, do the following:

  • blacklist the snd-hda* modules (refer to the usual way to get help for the GNU/Linux distribution you want to run for doing that)
  • 32bit GNU/Linux trisquel distribution tested
  • 64bit GNU/Linux trisquel distribution failed to initialize the USB.

Building Coreboot

To build coreboot for this mainboard:

  • checkout coreboot revision d5c998be99709c92f200b3b08aed2ca3fee2d519
  • optionally apply the azalia patch below in the azalia section of this page.
  • select the stable revision of seabios for more anti-brick safety
  • Configure and Build it as usual(for having graphics you need to extract your VGA BIOS ROM from your BIOS)

SerialICE

  • Selecting the ASUS M4A77TD-PRO mainboard makes the serialICE shell appear once flashed(however running the BIOS under SerialICE fails at some point).

Howto

WARNING, This Howto is for SerialICE and not for coreboot, don't flash the resulting image unless you really know what you're doing...
git clone http://review.coreboot.org/p/serialice.git
cd serialice
make menuconfig
make
cd ../
cd qemu-0.15.x
sh build.sh
ln -s ../SerialICE/simba/*.lua ./

Add the following to asus_m4a77td_pro.lua:

microcode_patchlevel_eax = 0x010000b7

function do_mainboard_setup()
	do_minimal_setup()
	do_default_setup()
	enable_hook(cpumsr_hooks, filter_amd_microcode)
end

Failing

It fails like that(it inits the 2 cores and we have 1 core(qemu)):

[fffc06a:0c0f] e25f.e260   LAPIC: [00000380] <= 00000000
[fffc06a:1321] e26b.e26d   PCI: 0:18.0 [60] => 00010000
[fffc06a:12e3] e273.e275   PCI: 0:18.3 [e8] => 00075f79
[fffc06a:1397] e27e.e27f   CPUID: eax: 00000001; ecx: 0000001b => 00100f62.00020800.00802009.178bfbff
[fffc06a:1321] e290.e292   PCI: 0:18.3 [e8] => 00075f79
[fffc06a:1397] e297.e298   CPUID: eax: 00000001; ecx: 0000001b => 00100f62.00020800.00802009.178bfbff
[fffc06a:121e] e2a5.e2a6   CPUID: eax: 80000001; ecx: 0000001b => 00100f62.10001b26.000037ff.efd3fbff
[fffc06a:12ff] e2bb.e2bc   CPUID: eax: 80000008; ecx: 0000001b => 00003030.00000000.00002001.00000000
[fffc06a:130c] e2bf.e2c0   CPU MSR: [c001001f] => 00584000.00000008
[fffc06a:131d] e2c4.e2c5   CPU MSR: [c001001f] <= 00584000.00000008
[fffc06a:131d] e2cf.e2d1   PCI: 0:18.3 [90] => 00000000
[fffc06a:1348] e2dc.e2dd   CPUID: eax: 80000008; ecx: 0000001b => 00003030.00000000.00002001.00000000
[fffc06a:135d] e2e2.e2e3   CPU MSR: [c001001f] <= 00584000.00000008
[fffc06a:0b7d] e2f2.e2f3   CPU MSR: [0000001b] => 00000000.fee00900
[fffc06a:0b7d] e2f4.e2f5   LAPIC: [00000020] => 00000000
[fffc06a:127a] e2f9.e2fa   CPUID: eax: 00000001; ecx: 0000001b => 00100f62.00020800.00802009.178bfbff
[fffc06a:1289] e2f9.e2fb   CPUID: eax: 80000008; ecx: 00802009 => 00003030.00000000.00002001.00000000
[fffc06a:1057] e302.e304   PCI: 0:18.0 [68] => 004fac0f
[fffc06a:1071] e30d.e30f   PCI: 0:18.0 [68] <= 004fac2f
Readback error! 30/72
Readback error! a/63
Readback error! 72/30
Readback error! 3e/30
Readback error! 20/30
Readback error! 63/30
Readback error! 66/30
Readback error! 45/30
Readback error! a/31
Readback error! 52/62
Readback error! 3e/2e
Readback error! 52/66
Readback error! 20/66
Readback error! 4f/66
Readback error! 30/65
Readback error! 52/62
Readback error! a/30
Readback error! a/30
Readback error! 3e/30
[fffc06a:0c50] e31d.e31e   CPU MSR: [0000001b] => 00000000.00000000

Azalia

This diff permits not to have to blacklist the intel hda module:

diff --git a/src/mainboard/asus/m4a785t-m/devicetree.cb b/src/mainboard/asus/m4a785t-m/devicetree.cb
index 0299fc2..6880770 100644
--- a/src/mainboard/asus/m4a785t-m/devicetree.cb
+++ b/src/mainboard/asus/m4a785t-m/devicetree.cb
@@ -57,7 +57,7 @@ chip northbridge/amd/amdfam10/root_complex
 						end
 					end # SM
 					device pci 14.1 on end # IDE    0x439c
-					device pci 14.2 on end # HDA    0x4383
+					device pci 14.2 off end # HDA    0x4383
 					device pci 14.3 on # LPC	0x439d
 						chip superio/ite/it8712f
 							device pnp 2e.0 off end #  Floppy

it seem to have worked with only one revision of the linux kernel(the previous and next version broke it) from the parabola GNU/Linux distribution:

[    0.000000] Linux version 3.7.3-1-LIBRE (nobody@root) (gcc version 4.7.2 (GCC) ) #1 SMP PREEMPT Fri Jan 18 14:16:00 UYST 2013
[...]
[   12.299818] hda-intel: azx_get_response timeout, switching to polling mode: last cmd=0x200f0000
[   13.167704] r8169 0000:03:00.0 enp3s0: link up
[   13.167712] IPv6: ADDRCONF(NETDEV_CHANGE): enp3s0: link becomes ready
[   13.305107] hda-intel: Codec #2 probe error; disabling it...
[   13.383482] input: HDA ATI SB Line as /devices/pci0000:00/0000:00:14.2/sound/card0/input6
[   13.383597] input: HDA ATI SB Front Mic as /devices/pci0000:00/0000:00:14.2/sound/card0/input7
[   13.383692] input: HDA ATI SB Rear Mic as /devices/pci0000:00/0000:00:14.2/sound/card0/input8
[   13.383789] input: HDA ATI SB Front Headphone as /devices/pci0000:00/0000:00:14.2/sound/card0/input9
[   13.383899] input: HDA ATI SB Line Out Side as /devices/pci0000:00/0000:00:14.2/sound/card0/input10
[   13.383995] input: HDA ATI SB Line Out CLFE as /devices/pci0000:00/0000:00:14.2/sound/card0/input11
[   13.384080] input: HDA ATI SB Line Out Surround as /devices/pci0000:00/0000:00:14.2/sound/card0/input12
[   13.384160] input: HDA ATI SB Line Out Front as /devices/pci0000:00/0000:00:14.2/sound/card0/input13
[   13.384663] snd_hda_intel 0000:01:05.1: setting latency timer to 64
[   13.408194] input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:05.1/sound/card1/input14
[   13.408610] hda_intel: Disabling MSI
[   13.408626] hda-intel: 0000:02:00.1: Handle VGA-switcheroo audio client
[   14.203934] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:02.0/0000:02:00.1/sound/card2/input15
[   14.204079] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:02.0/0000:02:00.1/sound/card2/input16
[   14.204124] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:02.0/0000:02:00.1/sound/card2/input17
[   14.204166] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:02.0/0000:02:00.1/sound/card2/input18
[...]

TODO

  • Add defaults for the nvram settings.
  • find a clean way to merge the patch for the PCIe graphic card.
  • fix the Audio CODEC(it's the same than the x60 and it works on the x60)
  • handle suspend to ram
  • lock SMM/SMI
  • make it possible to run the BIOS under serialICE
  • 64bit support