Author: sduplichan Date: Sat Feb 26 18:49:49 2011 New Revision: 6382 URL: https://tracker.coreboot.org/trac/coreboot/changeset/6382
Log: Add support for the ASRock E350M1, an AMD family 14h Fusion board. A video option rom must be added for UMA graphics support. It can be extracted from the supplied UEFI BIOS.
ASRock E350M1 support is based on the AMD persimmon project. The major differences are SIO model and DIMM SDP addressing. With this coreboot and seabios, the board can boot DOS from a SATA drive and can boot WinPE from a USB flash drive. I was unable to get Windows setup to run.
The board has a socketed SPI flash BIOS chip and a serial port header. The SIO is Nuvoton NCT5572D. Using coreboot's existing Winbond w83627hf is a good enough match to get the serial port and keyboard working.
Signed-off-by: Scott Duplichan scott@notabs.org Acked-by: Peter Stuge peter@stuge.se Acked-by: Stefan Reinauer stefan.reinauer@coreboot.org
Deleted: trunk/src/mainboard/asrock/e350m1/acpi/ssdt2.asl trunk/src/mainboard/asrock/e350m1/acpi/ssdt3.asl trunk/src/mainboard/asrock/e350m1/acpi/ssdt4.asl trunk/src/mainboard/asrock/e350m1/acpi/ssdt5.asl Modified: trunk/src/mainboard/asrock/Kconfig trunk/src/mainboard/asrock/e350m1/Kconfig trunk/src/mainboard/asrock/e350m1/devicetree.cb trunk/src/mainboard/asrock/e350m1/dimmSpd.c trunk/src/mainboard/asrock/e350m1/dsdt.asl trunk/src/mainboard/asrock/e350m1/mainboard.c trunk/src/mainboard/asrock/e350m1/mptable.c trunk/src/mainboard/asrock/e350m1/romstage.c
Modified: trunk/src/mainboard/asrock/Kconfig ============================================================================== --- trunk/src/mainboard/asrock/Kconfig Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/Kconfig Sat Feb 26 18:49:49 2011 (r6382) @@ -23,10 +23,12 @@
config BOARD_ASROCK_939A785GMH bool "939A785GMH/128M" +config BOARD_ASROCK_E350M1 + bool "E350M1"
endchoice
-source "src/mainboard/asrock/939a785gmh/Kconfig" +source "src/mainboard/asrock/e350m1/Kconfig"
config MAINBOARD_VENDOR string
Modified: trunk/src/mainboard/asrock/e350m1/Kconfig ============================================================================== --- trunk/src/mainboard/asrock/e350m1/Kconfig Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/e350m1/Kconfig Sat Feb 26 18:49:49 2011 (r6382) @@ -17,7 +17,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #
-if BOARD_AMD_PERSIMMON +if BOARD_ASROCK_E350M1
config BOARD_SPECIFIC_OPTIONS # dummy def_bool y @@ -28,7 +28,7 @@ select NORTHBRIDGE_AMD_AGESA_WRAPPER_FAMILY14_ROOT_COMPLEX select NORTHBRIDGE_AMD_AGESA_WRAPPER_FAMILY14 select SOUTHBRIDGE_AMD_CIMX_WRAPPER_SB800 - select SUPERIO_FINTEK_F81865F + select SUPERIO_WINBOND_W83627HF select BOARD_HAS_FADT select HAVE_BUS_CONFIG select HAVE_OPTION_TABLE @@ -56,7 +56,7 @@
config MAINBOARD_DIR string - default amd/persimmon + default asrock/e350m1
config APIC_ID_OFFSET hex @@ -64,7 +64,7 @@
config MAINBOARD_PART_NUMBER string - default "Persimmon" + default "E350M1"
config HW_MEM_HOLE_SIZEK hex @@ -132,16 +132,15 @@
config SIO_PORT hex - default 0x4e + default 0x2e
config ONBOARD_VGA_IS_PRIMARY bool default y
-#define CONFIG_VGA_BIOS_ID "1002,9804" config VGA_BIOS_ID string - default "1002,9804" + default "1002,9802"
config DRIVERS_PS2_KEYBOARD bool @@ -151,5 +150,5 @@ bool default n
-endif # BOARD_AMD_PERSIMMON +endif # BOARD_ASROCK_E350M1
Modified: trunk/src/mainboard/asrock/e350m1/devicetree.cb ============================================================================== --- trunk/src/mainboard/asrock/e350m1/devicetree.cb Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/e350m1/devicetree.cb Sat Feb 26 18:49:49 2011 (r6382) @@ -55,30 +55,46 @@ device pci 14.1 on end # IDE 0x439c device pci 14.2 on end # HDA 0x4383 device pci 14.3 on # LPC 0x439d - chip superio/fintek/f81865f - device pnp 4e.0 off # Floppy + chip superio/winbond/w83627hf + device pnp 2e.0 off # Floppy io 0x60 = 0x3f0 irq 0x70 = 6 drq 0x74 = 2 end - device pnp 4e.3 off end # Parallel Port - device pnp 4e.4 off end # Hardware Monitor - device pnp 4e.5 on # Keyboard - io 0x60 = 0x60 - io 0x62 = 0x64 - irq 0x70 = 1 + device pnp 2e.1 off # Parallel Port + io 0x60 = 0x378 + irq 0x70 = 7 end - device pnp 4e.6 off end # GPIO - device pnp 4e.a off end # PME - device pnp 4e.10 on # COM1 + device pnp 2e.2 on # Com1 io 0x60 = 0x3f8 irq 0x70 = 4 end - device pnp 4e.11 off # COM2 + device pnp 2e.3 off # Com2 io 0x60 = 0x2f8 irq 0x70 = 3 end - end # f81865f + device pnp 2e.5 on # Keyboard + io 0x60 = 0x60 + io 0x62 = 0x64 + irq 0x70 = 1 + irq 0x72 = 12 + end + device pnp 2e.6 off # CIR + io 0x60 = 0x100 + end + device pnp 2e.7 off # GAME_MIDI_GIPO1 + io 0x60 = 0x220 + io 0x62 = 0x300 + irq 0x70 = 9 + end + device pnp 2e.8 off end # GPIO2 + device pnp 2e.9 off end # GPIO3 + device pnp 2e.a off end # ACPI + device pnp 2e.b on # HW Monitor + io 0x60 = 0x290 + irq 0x70 = 5 + end + end end #LPC device pci 14.4 on end # PCI 0x4384 device pci 14.5 on end # USB 2
Modified: trunk/src/mainboard/asrock/e350m1/dimmSpd.c ============================================================================== --- trunk/src/mainboard/asrock/e350m1/dimmSpd.c Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/e350m1/dimmSpd.c Sat Feb 26 18:49:49 2011 (r6382) @@ -34,8 +34,8 @@ { // socket 0 { - {0xA0, 0xA2}, // channel 0 dimms - {0xA4, 0xA8}, // channel 1 dimms + {0xA0, 0xA4}, // channel 0 dimms + {0x00, 0x00}, // channel 1 dimms }, // socket 1 {
Modified: trunk/src/mainboard/asrock/e350m1/dsdt.asl ============================================================================== --- trunk/src/mainboard/asrock/e350m1/dsdt.asl Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/e350m1/dsdt.asl Sat Feb 26 18:49:49 2011 (r6382) @@ -22,8 +22,8 @@ "DSDT.AML", /* Output filename */ "DSDT", /* Signature */ 0x02, /* DSDT Revision, needs to be 2 for 64bit */ - "AMD ", /* OEMID */ - "PERSIMMO", /* TABLE ID */ + "ASROCK", /* OEMID */ + "E350M1 ", /* TABLE ID */ 0x00010001 /* OEM Revision */ ) { /* Start of ASL file */
Modified: trunk/src/mainboard/asrock/e350m1/mainboard.c ============================================================================== --- trunk/src/mainboard/asrock/e350m1/mainboard.c Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/e350m1/mainboard.c Sat Feb 26 18:49:49 2011 (r6382) @@ -49,11 +49,11 @@ uint64_t uma_memory_base, uma_memory_size;
/************************************************* -* enable the dedicated function in persimmon board. +* enable the dedicated function in e350m1 board. *************************************************/ -static void persimmon_enable(device_t dev) +static void e350m1_enable(device_t dev) { - printk(BIOS_INFO, "Mainboard Persimmon Enable. dev=0x%p\n", dev); + printk(BIOS_INFO, "Mainboard " CONFIG_MAINBOARD_PART_NUMBER " Enable.\n"); #if (CONFIG_GFXUMA == 1) msr_t msr, msr2; uint32_t sys_mem; @@ -110,6 +110,6 @@ return 0; } struct chip_operations mainboard_ops = { - CHIP_NAME("AMD PERSIMMON Mainboard") - .enable_dev = persimmon_enable, + CHIP_NAME(CONFIG_MAINBOARD_VENDOR " " CONFIG_MAINBOARD_PART_NUMBER " Mainboard") + .enable_dev = e350m1_enable, };
Modified: trunk/src/mainboard/asrock/e350m1/mptable.c ============================================================================== --- trunk/src/mainboard/asrock/e350m1/mptable.c Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/e350m1/mptable.c Sat Feb 26 18:49:49 2011 (r6382) @@ -50,7 +50,7 @@ mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN);
mptable_init(mc, LAPIC_ADDR); - memcpy(mc->mpc_oem, "AMD ", 8); + memcpy(mc->mpc_oem, "ASROCK ", 8);
smp_write_processors(mc);
Modified: trunk/src/mainboard/asrock/e350m1/romstage.c ============================================================================== --- trunk/src/mainboard/asrock/e350m1/romstage.c Sat Feb 26 14:34:01 2011 (r6381) +++ trunk/src/mainboard/asrock/e350m1/romstage.c Sat Feb 26 18:49:49 2011 (r6382) @@ -31,7 +31,7 @@ #include <console/loglevel.h> #include "agesawrapper.h" #include "cpu/x86/bist.h" -#include "superio/fintek/f81865f/f81865f_early_serial.c" +#include "superio/winbond/w83627hf/early_serial.c" #include "cpu/x86/lapic/boot_cpu.c" #include "pc80/i8254.c" #include "pc80/i8259.c" @@ -40,7 +40,7 @@
void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx);
-#define SERIAL_DEV PNP_DEV(0x4e, F81865F_SP1) +#define SERIAL_DEV PNP_DEV(CONFIG_SIO_PORT, W83627HF_SP1)
void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx) { @@ -52,7 +52,7 @@ sb_poweron_init();
post_code(0x31); - f81865f_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); + w83627hf_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); uart_init(); console_init(); }