Richard Spiegel has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/33993
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
With almost everything in place, it's time to add padmelon board. There are 2 versions, one using a fanned version of 00670F00 and one using merlinfalcon (00660F01, also fanned), both SOC FP4 sockets. This code was intended for merlinfalcon version, but as there are some legal issues (documentation) blocking its merge to coreboot, it'll be released for 00670F00, being replaced later with merlinfalcon when the binaries can be merged to coreboot (PSP, video and AGESA). Even both use fanned versions of SOC, the actual fan control is done through a SIO, fintek f81803a.
BUG=b:none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,962 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/1
diff --git a/src/mainboard/amd/padmelon/BiosCallOuts.c b/src/mainboard/amd/padmelon/BiosCallOuts.c new file mode 100644 index 0000000..522a63f --- /dev/null +++ b/src/mainboard/amd/padmelon/BiosCallOuts.c @@ -0,0 +1,25 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2016 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <amdblocks/agesawrapper.h> +#include <amdblocks/BiosCallOuts.h> +#include <soc/southbridge.h> +#include <stdlib.h> +#include <string.h> + +void platform_FchParams_env(FCH_DATA_BLOCK *FchParams_env) +{ + +} diff --git a/src/mainboard/amd/padmelon/BiosCallOuts.h b/src/mainboard/amd/padmelon/BiosCallOuts.h new file mode 100644 index 0000000..8c2a047 --- /dev/null +++ b/src/mainboard/amd/padmelon/BiosCallOuts.h @@ -0,0 +1,46 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#define FAN_INPUT_INTERNAL_DIODE 0 +#define FAN_INPUT_TEMP0 1 +#define FAN_INPUT_TEMP1 2 +#define FAN_INPUT_TEMP2 3 +#define FAN_INPUT_TEMP3 4 +#define FAN_INPUT_TEMP0_FILTER 5 +#define FAN_INPUT_ZERO 6 +#define FAN_INPUT_DISABLED 7 + +#define FAN_AUTOMODE (1 << 0) +#define FAN_LINEARMODE (1 << 1) +#define FAN_STEPMODE ~(1 << 1) +#define FAN_POLARITY_HIGH (1 << 2) +#define FAN_POLARITY_LOW ~(1 << 2) + +/* Normally, 4-wire fan runs at 25KHz and 3-wire fan runs at 100Hz */ +#define FREQ_28KHZ 0x0 +#define FREQ_25KHZ 0x1 +#define FREQ_23KHZ 0x2 +#define FREQ_21KHZ 0x3 +#define FREQ_29KHZ 0x4 +#define FREQ_18KHZ 0x5 +#define FREQ_100HZ 0xF7 +#define FREQ_87HZ 0xF8 +#define FREQ_58HZ 0xF9 +#define FREQ_44HZ 0xFA +#define FREQ_35HZ 0xFB +#define FREQ_29HZ 0xFC +#define FREQ_22HZ 0xFD +#define FREQ_14HZ 0xFE +#define FREQ_11HZ 0xFF diff --git a/src/mainboard/amd/padmelon/Kconfig b/src/mainboard/amd/padmelon/Kconfig new file mode 100644 index 0000000..df4f9f1 --- /dev/null +++ b/src/mainboard/amd/padmelon/Kconfig @@ -0,0 +1,76 @@ +# +# This file is part of the coreboot project. +# +# Copyright (C) 2015-2018 Advanced Micro Devices, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +if BOARD_AMD_PADMELON + +config BOARD_SPECIFIC_OPTIONS # dummy + def_bool y +# select SOC_AMD_MERLINFALCON # missing binaries + select SOC_AMD_STONEYRIDGE_FP4 # alternative version + select BOARD_ROMSIZE_KB_8192 + select DRIVERS_I2C_GENERIC + select DRIVERS_PS2_KEYBOARD + select HAVE_PIRQ_TABLE + select HAVE_MP_TABLE + select HAVE_ACPI_TABLES + select GFXUMA + select STONEYRIDGE_LEGACY_FREE + select ONBOARD_VGA_IS_PRIMARY + select BOOTBLOCK_CONSOLE + select SUPERIO_FINTEK_F81803A + select SUPERIO_FINTEK_COMMON_PRE_RAM + select SUPERIO_FINTEK_F81803A_FAN_CONTROL + select VGA_BIOS + +config VGA_BIOS_FILE + string + default "3rdparty/blobs/soc/amd/merlinfalcon/VBIOS.bin" + +config MAINBOARD_DIR + string + default amd/padmelon + +config MAINBOARD_PART_NUMBER + string + default "Padmelon" + +config MAX_CPUS + int + default 4 + +config IRQ_SLOT_COUNT + int + default 11 + +config HWM_IO_WINDOW + hex + default 0x0100 + help + Select a bit within LPC_IO_PORT_DECODE_ENABLE that will enable + access to IO port HWM_PORT, which is programmed at bootblock. + +config HWM_PORT + hex + default 0x0225 + help + Oddly enough, HWM base address must be and odd address. Hardware + monitor used addresses are HWM_PORT for index and HWM_PORT + 1 + for data. + +# Don't use AMD's Secure OS +config USE_PSPSECUREOS + def_bool n + +endif # BOARD_AMD_PADMELON diff --git a/src/mainboard/amd/padmelon/Kconfig.name b/src/mainboard/amd/padmelon/Kconfig.name new file mode 100644 index 0000000..fb88c39 --- /dev/null +++ b/src/mainboard/amd/padmelon/Kconfig.name @@ -0,0 +1,2 @@ +config BOARD_AMD_PADMELON + bool "Padmelon" diff --git a/src/mainboard/amd/padmelon/Makefile.inc b/src/mainboard/amd/padmelon/Makefile.inc new file mode 100644 index 0000000..aabc221 --- /dev/null +++ b/src/mainboard/amd/padmelon/Makefile.inc @@ -0,0 +1,32 @@ +# +# This file is part of the coreboot project. +# +# Copyright (C) 2015-2017 Advanced Micro Devices, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +bootblock-y += bootblock/bootblock.c +bootblock-y += bootblock/OemCustomize.c +bootblock-y += gpio.c + +romstage-y += BiosCallOuts.c +romstage-y += bootblock/OemCustomize.c +romstage-y += OemCustomize.c + +ramstage-y += BiosCallOuts.c +ramstage-y += gpio.c +ramstage-y += OemCustomize.c +ramstage-$(CONFIG_SUPERIO_FINTEK_F81803A_FAN_CONTROL) += fan_init.c + +CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00 +CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Fch/Common +CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Common +CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/binaryPI diff --git a/src/mainboard/amd/padmelon/OemCustomize.c b/src/mainboard/amd/padmelon/OemCustomize.c new file mode 100644 index 0000000..bb92733 --- /dev/null +++ b/src/mainboard/amd/padmelon/OemCustomize.c @@ -0,0 +1,50 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2017 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <chip.h> +#include <amdblocks/agesawrapper.h> + +#define DIMMS_PER_CHANNEL 1 +#if DIMMS_PER_CHANNEL > MAX_DIMMS_PER_CH +#error "Too many DIMM sockets defined for the mainboard" +#endif + +static const PSO_ENTRY DDR4PlatformMemoryConfiguration[] = { + DRAM_TECHNOLOGY(ANY_SOCKET, DDR4_TECHNOLOGY), + NUMBER_OF_DIMMS_SUPPORTED(ANY_SOCKET, CHANNEL_A, 1), + NUMBER_OF_DIMMS_SUPPORTED(ANY_SOCKET, CHANNEL_B, 1), + NUMBER_OF_CHANNELS_SUPPORTED(ANY_SOCKET, MAX_DRAM_CH), + MOTHER_BOARD_LAYERS(LAYERS_6), + MEMCLK_DIS_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00), + MEMCLK_DIS_MAP(ANY_SOCKET, CHANNEL_B, 0x01, 0x02, 0x08, 0x04, + 0x00, 0x00, 0x00, 0x00), + CKE_TRI_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x02, 0x00, 0x00), + CKE_TRI_MAP(ANY_SOCKET, CHANNEL_B, 0x05, 0x0A, 0x00, 0x00), + ODT_TRI_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x00, 0x02, 0x00), + ODT_TRI_MAP(ANY_SOCKET, CHANNEL_B, 0x01, 0x04, 0x02, 0x08), + CS_TRI_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00), + CS_TRI_MAP(ANY_SOCKET, CHANNEL_B, 0x01, 0x02, 0x04, 0x08, 0x00, + 0x00, 0x00, 0x00), + PSO_END +}; + +void OemPostParams(AMD_POST_PARAMS *PostParams) +{ + PostParams->MemConfig.PlatformMemoryConfiguration = + (PSO_ENTRY *)DDR4PlatformMemoryConfiguration; + PostParams->MemConfig.CfgUmaAbove4G = TRUE; +} diff --git a/src/mainboard/amd/padmelon/acpi/gpe.asl b/src/mainboard/amd/padmelon/acpi/gpe.asl new file mode 100644 index 0000000..03bbc38 --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/gpe.asl @@ -0,0 +1,75 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +Scope(_GPE) { /* Start Scope GPE */ + + /* General event 3 */ + Method(_L03) { + /* DBGO("\_GPE\_L03\n") */ + Notify(_SB.PWRB, 0x02) /* NOTIFY_DEVICE_WAKE */ + } + + /* Legacy PM event - Power Button */ + Method(_L08) { + /* DBGO("\_GPE\_L08\n") */ + _SB.SIO0.CPSI() /* clear psin state in sio */ + Notify(_SB.PCI0.PBR4, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR5, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR6, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR7, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PWRB, 0x02) /* NOTIFY_DEVICE_WAKE */ + } + + /* Temp warning (TWarn) event */ + Method(_L09) { + /* DBGO("\_GPE\_L09\n") */ + /* Notify (_TZ.TZ00, 0x80) */ + } + + /* USB controller PME# */ + Method(_L0B) { + /* DBGO("\_GPE\_L0B\n") */ + Notify(_SB.PCI0.EHC0, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.XHC0, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PWRB, 0x02) /* NOTIFY_DEVICE_WAKE */ + } + + /* ExtEvent0 SCI event */ + Method(_L10) { + /* DBGO("\_GPE\_L10\n") */ + } + + /* ExtEvent1 SCI event */ + Method(_L11) { + /* DBGO("\_GPE\_L11\n") */ + } + + /* GPIO0 or GEvent8 event */ + Method(_L18) { + /* DBGO("\_GPE\_L18\n") */ + Notify(_SB.PCI0.PBR4, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR5, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR6, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR7, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PWRB, 0x02) /* NOTIFY_DEVICE_WAKE */ + } + + /* Azalia SCI event */ + Method(_L1B) { + /* DBGO("\_GPE\_L1B\n") */ + Notify(_SB.PCI0.AZHD, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PWRB, 0x02) /* NOTIFY_DEVICE_WAKE */ + } +} /* End Scope GPE */ diff --git a/src/mainboard/amd/padmelon/acpi/mainboard.asl b/src/mainboard/amd/padmelon/acpi/mainboard.asl new file mode 100644 index 0000000..db5731f --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/mainboard.asl @@ -0,0 +1,28 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* Memory related values */ +Name(LOMH, 0x0) /* Start of unused memory in C0000-E0000 range */ +Name(PBAD, 0x0) /* Address of BIOS area (If TOM2 != 0, Addr >> 16) */ +Name(PBLN, 0x0) /* Length of BIOS area */ + +Name(PCBA, CONFIG_MMCONF_BASE_ADDRESS) /* Base address of PCIe config space */ +Name(PCLN, Multiply(0x100000, CONFIG_MMCONF_BUS_NUMBER)) /* Length of PCIe config space, 1MB each bus */ +Name(HPBA, 0xFED00000) /* Base address of HPET table */ + +/* Some global data */ +Name(OSVR, 3) /* Assume nothing. WinXp = 1, Vista = 2, Linux = 3, WinCE = 4 */ +Name(OSV, Ones) /* Assume nothing */ +Name(PMOD, One) /* Assume APIC */ diff --git a/src/mainboard/amd/padmelon/acpi/routing.asl b/src/mainboard/amd/padmelon/acpi/routing.asl new file mode 100644 index 0000000..37b9613 --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/routing.asl @@ -0,0 +1,251 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* +DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001 + ) + { + #include "routing.asl" + } +*/ + +/* Routing is in System Bus scope */ +Name(PR0, Package(){ + /* NB devices */ + /* Bus 0, Dev 0 - F15 Host Controller */ + + /* Bus 0, Dev 1 - PCI Bridge for Internal Graphics(IGP) */ + /* Bus 0, Dev 1, Func 1 - HDMI Audio Controller */ + Package(){0x0001FFFF, 0, INTG, 0 }, + Package(){0x0001FFFF, 1, INTH, 0 }, + + + /* Bus 0, Dev 2 Func 0,1,2,3,4,5 - PCIe Bridges */ + Package(){0x0002FFFF, 0, INTH, 0 }, + Package(){0x0002FFFF, 1, INTA, 0 }, + Package(){0x0002FFFF, 2, INTB, 0 }, + Package(){0x0002FFFF, 3, INTC, 0 }, + + Package(){0x0003FFFF, 0, INTH, 0 }, + Package(){0x0003FFFF, 1, INTA, 0 }, + Package(){0x0003FFFF, 2, INTB, 0 }, + Package(){0x0003FFFF, 3, INTC, 0 }, + + Package(){0x0008FFFF, 0, INTG, 0 }, + Package(){0x0008FFFF, 1, INTH, 0 }, + Package(){0x0008FFFF, 2, INTE, 0 }, + Package(){0x0008FFFF, 3, INTF, 0 }, + + /* Bus 0, Dev 9, Func 2 - HDAudio */ + Package(){0x0009FFFF, 0, INTG, 0 }, + Package(){0x0009FFFF, 1, INTH, 0 }, + Package(){0x0009FFFF, 2, INTE, 0 }, + Package(){0x0009FFFF, 3, INTF, 0 }, + + /* FCH devices */ + /* Bus 0, Dev 20 - F0:SMBus/ACPI,F2:HDAudio;F3:LPC;F7:SD */ + Package(){0x0014FFFF, 0, INTA, 0 }, + Package(){0x0014FFFF, 1, INTB, 0 }, + Package(){0x0014FFFF, 2, INTC, 0 }, + Package(){0x0014FFFF, 3, INTD, 0 }, + + /* Bus 0, Dev 18 Func 0 - USB: EHCI */ + Package(){0x0012FFFF, 0, INTC, 0 }, + Package(){0x0012FFFF, 1, INTB, 0 }, + + /* Bus 0, Dev 16 Func 0 - USB: xHCI */ + Package(){0x0010FFFF, 0, INTC, 0 }, + Package(){0x0010FFFF, 1, INTB, 0 }, + + /* Bus 0, Dev 17 - SATA controller */ + Package(){0x0011FFFF, 0, INTD, 0 }, +}) + +Name(APR0, Package(){ + /* NB devices in APIC mode */ + /* Bus 0, Dev 0 - F15 Host Controller */ + + /* Bus 0, Dev 1 - PCI Bridge for Internal Graphics(IGP) */ + Package(){0x0001FFFF, 0, 0, 30 }, + Package(){0x0001FFFF, 1, 0, 31 }, + Package(){0x0001FFFF, 2, 0, 28 }, + Package(){0x0001FFFF, 3, 0, 29 }, + + /* Bus 0, Dev 2 - PCIe Bridges */ + Package(){0x0002FFFF, 0, 0, 47 }, + Package(){0x0002FFFF, 1, 0, 48 }, + Package(){0x0002FFFF, 2, 0, 49 }, + Package(){0x0002FFFF, 3, 0, 50 }, + + Package(){0x0003FFFF, 0, 0, 39 }, + Package(){0x0003FFFF, 1, 0, 40 }, + Package(){0x0003FFFF, 2, 0, 41 }, + Package(){0x0003FFFF, 3, 0, 42 }, + + Package(){0x0008FFFF, 0, 0, 38 }, + Package(){0x0008FFFF, 1, 0, 39 }, + Package(){0x0008FFFF, 2, 0, 36 }, + Package(){0x0008FFFF, 3, 0, 37 }, + + /* Bus 0, Dev 9, Func 2 - HDAudio */ + Package(){0x0009FFFF, 0, 0, 46 }, + Package(){0x0009FFFF, 1, 0, 47 }, + Package(){0x0009FFFF, 2, 0, 44 }, + Package(){0x0009FFFF, 3, 0, 45 }, + + /* SB devices in APIC mode */ + /* Bus 0, Dev 20 - F0:SMBus/ACPI,F2:HDAudio;F3:LPC;F7:SD */ + Package(){0x0014FFFF, 0, 0, 16 }, + Package(){0x0014FFFF, 1, 0, 17 }, + Package(){0x0014FFFF, 2, 0, 18 }, + Package(){0x0014FFFF, 3, 0, 19 }, + + /* Bus 0, Dev 18, 19, 22 Func 0 - USB: OHCI */ + Package(){0x0012FFFF, 0, 0, 18 }, + Package(){0x0012FFFF, 1, 0, 17 }, + + /* Bus 0, Dev 16 - USB: XHCI func 0, 1 */ + Package(){0x0010FFFF, 0, 0, 18}, + Package(){0x0010FFFF, 1, 0, 17}, + + /* Bus 0, Dev 17 - SATA controller */ + Package(){0x0011FFFF, 0, 0, 19 }, +}) + +Name(PS4, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS4, Package(){ + /* PCIe slot - Hooked to PCIe slot 4 */ + Package(){0x0000FFFF, 0, 0, 24 }, + Package(){0x0000FFFF, 1, 0, 25 }, + Package(){0x0000FFFF, 2, 0, 26 }, + Package(){0x0000FFFF, 3, 0, 27 }, +}) + +/* GPP 1 */ +Name(PS5, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS5, Package(){ + Package(){0x0000FFFF, 0, 0, 32 }, + Package(){0x0000FFFF, 1, 0, 33 }, + Package(){0x0000FFFF, 2, 0, 34 }, + Package(){0x0000FFFF, 3, 0, 35 }, +}) + +/* GPP 2 */ +Name(PS6, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS6, Package(){ + Package(){0x0000FFFF, 0, 0, 40 }, + Package(){0x0000FFFF, 1, 0, 41 }, + Package(){0x0000FFFF, 2, 0, 42 }, + Package(){0x0000FFFF, 3, 0, 43 }, +}) + +/* GPP 3 */ +Name(PS7, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS7, Package(){ + Package(){0x0000FFFF, 0, 0, 48 }, + Package(){0x0000FFFF, 1, 0, 49 }, + Package(){0x0000FFFF, 2, 0, 50 }, + Package(){0x0000FFFF, 3, 0, 51 }, +}) + +/* GPP 4 */ +Name(PS8, Package(){ + Package(){0x0000FFFF, 0, INTD, 0 }, + Package(){0x0000FFFF, 1, INTA, 0 }, + Package(){0x0000FFFF, 2, INTB, 0 }, + Package(){0x0000FFFF, 3, INTC, 0 }, +}) +Name(APS8, Package(){ + Package(){0x0000FFFF, 0, 0, 27 }, + Package(){0x0000FFFF, 1, 0, 24 }, + Package(){0x0000FFFF, 2, 0, 25 }, + Package(){0x0000FFFF, 3, 0, 26 }, +}) + +Name(PS9, Package(){ + Package(){0x0000FFFF, 0, INTD, 0 }, + Package(){0x0000FFFF, 1, INTA, 0 }, + Package(){0x0000FFFF, 2, INTB, 0 }, + Package(){0x0000FFFF, 3, INTC, 0 }, +}) +Name(APS9, Package(){ + Package(){0x0000FFFF, 0, 0, 35 }, + Package(){0x0000FFFF, 1, 0, 32 }, + Package(){0x0000FFFF, 2, 0, 33 }, + Package(){0x0000FFFF, 3, 0, 34 }, +}) + +/* GFX 2 */ +Name(PSA, Package(){ + Package(){0x0000FFFF, 0, INTD, 0 }, + Package(){0x0000FFFF, 1, INTA, 0 }, + Package(){0x0000FFFF, 2, INTB, 0 }, + Package(){0x0000FFFF, 3, INTC, 0 }, +}) +Name(APSA, Package(){ + Package(){0x0000FFFF, 0, 0, 51 }, + Package(){0x0000FFFF, 1, 0, 48 }, + Package(){0x0000FFFF, 2, 0, 49 }, + Package(){0x0000FFFF, 3, 0, 50 }, +}) + +/* GFX 3 */ +Name(PSB, Package(){ + Package(){0x0000FFFF, 0, INTC, 0 }, + Package(){0x0000FFFF, 1, INTD, 0 }, + Package(){0x0000FFFF, 2, INTA, 0 }, + Package(){0x0000FFFF, 3, INTB, 0 }, +}) +Name(APSB, Package(){ + Package(){0x0000FFFF, 0, 0, 26 }, + Package(){0x0000FFFF, 1, 0, 27 }, + Package(){0x0000FFFF, 2, 0, 24 }, + Package(){0x0000FFFF, 3, 0, 25 }, +}) + +/* GFX 4 */ +Name(PSC, Package(){ + Package(){0x0000FFFF, 0, INTC, 0 }, + Package(){0x0000FFFF, 1, INTD, 0 }, + Package(){0x0000FFFF, 2, INTA, 0 }, + Package(){0x0000FFFF, 3, INTB, 0 }, +}) +Name(APSC, Package(){ + Package(){0x0000FFFF, 0, 0, 34 }, + Package(){0x0000FFFF, 1, 0, 35 }, + Package(){0x0000FFFF, 2, 0, 32 }, + Package(){0x0000FFFF, 3, 0, 33 }, +}) diff --git a/src/mainboard/amd/padmelon/acpi/sleep.asl b/src/mainboard/amd/padmelon/acpi/sleep.asl new file mode 100644 index 0000000..58f0752 --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/sleep.asl @@ -0,0 +1,86 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* Wake status package */ +Name(WKST,Package(){Zero, Zero}) + +/* +* _PTS - Prepare to Sleep method +* +* Entry: +* Arg0=The value of the sleeping state S1=1, S2=2, etc +* +* Exit: +* -none- +* +* The _PTS control method is executed at the beginning of the sleep process +* for S1-S5. The sleeping value is passed to the _PTS control method. This +* control method may be executed a relatively long time before entering the +* sleep state and the OS may abort the operation without notification to +* the ACPI driver. This method cannot modify the configuration or power +* state of any device in the system. +*/ +Method(_PTS, 1) { + /* DBGO("\_PTS\n") */ + /* DBGO("From S0 to S") */ + /* DBGO(Arg0) */ + /* DBGO("\n") */ + + /* Clear wake status structure. */ + Store(0, PEWD) + Store(0, Index(WKST,0)) + Store(0, Index(WKST,1)) + Store(7, UPWS) +} /* End Method(_PTS) */ + +/* +* _BFS OEM Back From Sleep method +* +* Entry: +* Arg0=The value of the sleeping state S1=1, S2=2 +* +* Exit: +* -none- +*/ +Method(_BFS, 1) { + /* DBGO("\_BFS\n") */ + /* DBGO("From S") */ + /* DBGO(Arg0) */ + /* DBGO(" to S0\n") */ +} + +/* +* _WAK System Wake method +* +* Entry: +* Arg0=The value of the sleeping state S1=1, S2=2 +* +* Exit: +* Return package of 2 DWords +* Dword 1 - Status +* 0x00000000 wake succeeded +* 0x00000001 Wake was signaled but failed due to lack of power +* 0x00000002 Wake was signaled but failed due to thermal condition +* Dword 2 - Power Supply state +* if non-zero the effective S-state the power supply entered +*/ +Method(_WAK, 1) { + /* DBGO("\_WAK\n") */ + /* DBGO("From S") */ + /* DBGO(Arg0) */ + /* DBGO(" to S0\n") */ + + Return(WKST) +} /* End Method(_WAK) */ diff --git a/src/mainboard/amd/padmelon/acpi/superio.asl b/src/mainboard/amd/padmelon/acpi/superio.asl new file mode 100644 index 0000000..9befcce --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/superio.asl @@ -0,0 +1,183 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2011 Christoph Grenz christophg+cb@grenz-bonn.de + * Copyright (C) 2013 secunet Security Networks AG + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* + * Include this file into a mainboard's DSDT _SB device tree and it will + * expose the W83627DHG SuperIO and some of its functionality. + * + * It allows the change of IO ports, IRQs and DMA settings on logical + * devices, disabling and reenabling logical devices and controlling power + * saving mode on logical devices or the whole chip. + * + * LDN State + * 0x1 UARTA Implemented, partially tested + * 0x2 UARTB UART only, partially tested + * 0x4 HWM Resources, PM only + * 0x5 KBC Implemented, untested + * 0x6 GPIO6 Not implemented + * 0x7 WDT0&PLED Not implemented + * 0x9 GPIO2-5 Not implemented + * 0xa ACPI/PME/ERP Not implemented + * + * Controllable through preprocessor defines: + * SUPERIO_DEV Device identifier for this SIO (e.g. SIO0) + * SUPERIO_PNP_BASE I/o address of the first PnP configuration register + * F81803A_SHOW_UARTA If defined, UARTA will be exposed. + * F81803A_SHOW_UARTB If defined, UARTB will be exposed. + * F81803A_SHOW_KBC If defined, the KBC will be exposed. + * F81803A_SHOW_PS2M If defined, PS/2 mouse support will be exposed. + * F81803A_SHOW_HWMON If defined, the hardware monitor will be exposed. + * F81803A_SHOW_PME If defined, the PME/EARP/ACPI will be exposed. + */ +#undef SUPERIO_DEV +#define SUPERIO_DEV SIO0 +#undef SUPERIO_CHIP_NAME +#define SUPERIO_CHIP_NAME F81803A +#define SUPERIO_PNP_BASE 0x4E +#include <superio/acpi/pnp.asl> + +Device(SUPERIO_DEV) { + Name (_HID, EisaId("PNP0A05")) + Name (_STR, Unicode("Fintek F81803A Super I/O")) + Name (_UID, SUPERIO_UID(SUPERIO_DEV,)) + + /* Mutex for accesses to the configuration ports */ + Mutex(CRMX, 1) + + /* SuperIO configuration ports */ + OperationRegion (CREG, SystemIO, SUPERIO_PNP_BASE, 0x02) + Field (CREG, ByteAcc, NoLock, Preserve) + { + PNP_ADDR_REG, 8, + PNP_DATA_REG, 8 + } + IndexField (ADDR, DATA, ByteAcc, NoLock, Preserve) + { + Offset (0x07), + PNP_LOGICAL_DEVICE, 8, /* Logical device selector */ + + + Offset (0x30), + PNP_DEVICE_ACTIVE, 1, /* Logical device activation */ + + Offset (0x60), + PNP_IO0_HIGH_BYTE, 8, /* First I/O port base - high byte */ + PNP_IO0_LOW_BYTE, 8, /* First I/O port base - low byte */ + Offset (0x62), + PNP_IO1_HIGH_BYTE, 8, /* Second I/O port base - high byte */ + PNP_IO1_LOW_BYTE, 8, /* Second I/O port base - low byte */ + + Offset (0x70), + PNP_IRQ0, 8, /* First IRQ */ + + offset(0xFB), + APC5, 8, /* PME ACPI Control Register 5 */ + } + + /* PMx-- registers to get the addresses of the ACPI Registers */ + IndexField(PNP_ADDR_REG, PNP_DATA_REG, ByteAcc, NoLock, Preserve) + { + Offset(0x60), /* AcpiPmEvBlk */ + P1EB, 16, /* AcpiPmEvtBlk */ + P1CB, 16, /* AcpiPm1CntBlk */ + Offset(0xEE), + UPWS, 3, + } + + /* AcpiPmEvtBlk registers*/ + OperationRegion(P1E0, SystemIO, P1EB, 0x04) + Field(P1E0, ByteAcc, Nolock, Preserve) + { + Offset(0x02), /* Pm1Enable */ + , 14, + PEWD, 1, /* bit 1: PciExpWakeDis*/ + } + + + /* AcpiPm1CntBlk registers*/ + OperationRegion(P1C0, SystemIO, P1CB, 0x04) + Field(P1C0, ByteAcc, Nolock, Preserve) + { + Offset(0x00), /* PmControl */ + , 10, + P1ST, 3, /* Bits SlpTyp */ + P1SE, 1, /* SlpTypEn*/ + } + + OperationRegion(APCx, SystemIO, APC5, 0x01) + Field(APCx, ByteAcc, Nolock, Preserve) /* bits in PME ACPI CONTROL Reg 5*/ + { + Offset(0x00), /*Control Reg 5 */ + , 7, + PSIN, 1, /* PSIN_FLAG */ + } + + /* routine to clear PSIN_FLAG in ACPI_CONTROL_REG_5 of SIO */ + Method(CPSI, 0, Serialized) + { + /* DBG0("SIO CPSI")*/ + ENTER_CONFIG_MODE(10) + Store(1, PSIN) + EXIT_CONFIG_MODE() + } + + Method(_CRS) + { + /* Announce the used i/o ports to the OS */ + Return (ResourceTemplate () { + IO (Decode16, SUPERIO_PNP_BASE, SUPERIO_PNP_BASE, 0x01, 0x02) + }) + } + + #undef PNP_ENTER_MAGIC_1ST + #undef PNP_ENTER_MAGIC_2ND + #undef PNP_ENTER_MAGIC_3RD + #undef PNP_ENTER_MAGIC_4TH + #undef PNP_EXIT_MAGIC_1ST + #undef PNP_EXIT_SPECIAL_REG + #undef PNP_EXIT_SPECIAL_VAL + #define PNP_ENTER_MAGIC_1ST 0x87 + #define PNP_ENTER_MAGIC_2ND 0x87 + #define PNP_EXIT_MAGIC_1ST 0xaa + #include <superio/acpi/pnp_config.asl> + +#ifdef F81803A_SHOW_UARTA + #undef SUPERIO_UART_LDN + #undef SUPERIO_UART_DDN + #undef SUPERIO_UART_PM_REG + #undef SUPERIO_UART_PM_VAL + #undef SUPERIO_UART_PM_LDN + #define SUPERIO_UART_LDN 1 + #define SUPERIO_UART_PM_REG UAPW + #define SUPERIO_UART_PM_VAL 0 + #define SUPERIO_UART_PM_LDN PNP_NO_LDN_CHANGE + #include <superio/acpi/pnp_uart.asl> +#endif + +#ifdef F81803A_SHOW_UARTB + #undef SUPERIO_UART_LDN + #undef SUPERIO_UART_DDN + #undef SUPERIO_UART_PM_REG + #undef SUPERIO_UART_PM_VAL + #undef SUPERIO_UART_PM_LDN + #define SUPERIO_UART_LDN 2 + #define SUPERIO_UART_PM_REG UBPW + #define SUPERIO_UART_PM_VAL 0 + #define SUPERIO_UART_PM_LDN PNP_NO_LDN_CHANGE + #include <superio/acpi/pnp_uart.asl> +#endif + +} diff --git a/src/mainboard/amd/padmelon/acpi/usb_oc.asl b/src/mainboard/amd/padmelon/acpi/usb_oc.asl new file mode 100644 index 0000000..9566bc4 --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/usb_oc.asl @@ -0,0 +1,39 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* simple name description */ +/* +DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001 + ) + { + #include "usb.asl" + } +*/ + +/* USB overcurrent mapping pins. */ +Name(UOM0, 0) +Name(UOM1, 2) +Name(UOM2, 0) +Name(UOM3, 7) +Name(UOM4, 2) +Name(UOM5, 2) +Name(UOM6, 6) +Name(UOM7, 2) +Name(UOM8, 6) +Name(UOM9, 6) + +/* USB Overcurrent GPEs */ +/* TODO: Update for Gardenia */ diff --git a/src/mainboard/amd/padmelon/acpi_tables.c b/src/mainboard/amd/padmelon/acpi_tables.c new file mode 100644 index 0000000..8d4d1cf --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi_tables.c @@ -0,0 +1,14 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* + * Blank file required by build system assumptions of this file being present. + */ diff --git a/src/mainboard/amd/padmelon/board_info.txt b/src/mainboard/amd/padmelon/board_info.txt new file mode 100644 index 0000000..b351b8e --- /dev/null +++ b/src/mainboard/amd/padmelon/board_info.txt @@ -0,0 +1 @@ +Category: eval diff --git a/src/mainboard/amd/padmelon/bootblock/OemCustomize.c b/src/mainboard/amd/padmelon/bootblock/OemCustomize.c new file mode 100644 index 0000000..5d82988 --- /dev/null +++ b/src/mainboard/amd/padmelon/bootblock/OemCustomize.c @@ -0,0 +1,192 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2016 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <amdblocks/agesawrapper.h> + +#define FILECODE PROC_GNB_PCIE_FAMILY_0X15_F15PCIECOMPLEXCONFIG_FILECODE + +static const PCIe_PORT_DESCRIPTOR PortList[] = { + /* + * Init Port descriptor (PCIe port, Lanes 8-15, + * PCI Device Number 3, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 8, 15), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 3, 1, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x02, 0) + }, + + /* + * Initialize Port descriptor (PCIe port, Lane 7, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 7, 7), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 2, 5, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x03, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lane 6, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 6, 6), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 2, 4, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x04, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lane 5, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PcieUnusedEngine, 5, 5), + PCIE_PORT_DATA_INITIALIZER_V2(PortDisabled, ChannelTypeExt6db, + 2, 3, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x04, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lane4, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 4, 4), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 2, 2, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x06, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lanes 0-3, + * PCI Device Number 2, ...) + */ + { + /* + * Descriptor flags !!!IMPORTANT!!! Terminate last element + * of array + */ + DESCRIPTOR_TERMINATE_LIST, + PCIE_ENGINE_DATA_INITIALIZER(PcieUnusedEngine, 0, 3), + PCIE_PORT_DATA_INITIALIZER_V2(PortDisabled, ChannelTypeExt6db, + 2, 1, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x07, 0) + }, + +}; + + +static const PCIe_DDI_DESCRIPTOR DdiList[] = { + /* DP0 */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 16, 19), + PCIE_DDI_DATA_INITIALIZER(ConnectorTypeDP, Aux1, Hdp1) + }, + /* DP1 */ + { + 0, /*DESCRIPTOR_TERMINATE_LIST, */ + PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 20, 23), + PCIE_DDI_DATA_INITIALIZER(ConnectorTypeDP, Aux2, Hdp2) + }, + /* DP2 */ + { + DESCRIPTOR_TERMINATE_LIST, + PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 24, 27), + PCIE_DDI_DATA_INITIALIZER(ConnectorTypeDP, Aux3, Hdp3) + }, +}; + +static const PCIe_COMPLEX_DESCRIPTOR PcieComplex = { + .Flags = DESCRIPTOR_TERMINATE_LIST, + .SocketId = 0, + .PciePortList = (void *)PortList, + .DdiLinkList = (void *)DdiList +}; + +static const UINT32 AzaliaCodecAlc286Table[] = { + 0x00172051, 0x001721C7, 0x00172222, 0x00172310, + 0x0017FF00, 0x0017FF00, 0x0017FF00, 0x0017FF00, + 0x01271C50, 0x01271D01, 0x01271EA6, 0x01271FB7, + 0x01371C00, 0x01371D00, 0x01371E00, 0x01371F40, + 0x01471C10, 0x01471D01, 0x01471E17, 0x01471F90, + 0x01771CF0, 0x01771D11, 0x01771E11, 0x01771F41, + 0x01871C40, 0x01871D10, 0x01871EA1, 0x01871F04, + 0x01971CF0, 0x01971D11, 0x01971E11, 0x01971F41, + 0x01A71CF0, 0x01A71D11, 0x01A71E11, 0x01A71F41, + 0x01D71C2D, 0x01D71DA5, 0x01D71E67, 0x01D71F40, + 0x01E71C30, 0x01E71D11, 0x01E71E45, 0x01E71F04, + 0x02171C20, 0x02171D10, 0x02171E21, 0x02171F04, + 0x02050071, 0x02040014, 0x02050010, 0x02040C22, + 0x0205004F, 0x0204B029, 0x0205002B, 0x02040C50, + 0x0205002D, 0x02041020, 0x02050020, 0x02040000, + 0x02050019, 0x02040817, 0x02050035, 0x02041AA5, + 0x02050063, 0x02042906, 0x02050063, 0x02042906, + 0xffffffff +}; + +static CONST CODEC_VERB_TABLE_LIST CodecTableList[] = { + { 0x10ec0286, AzaliaCodecAlc286Table}, + { 0x10ec0288, AzaliaCodecAlc286Table}, + { 0x10ec0888, AzaliaCodecAlc286Table}, + { 0x0FFFFFFFF, (void *)0x0FFFFFFFF} +}; + +/*---------------------------------------------------------------------------*/ +/** + * OemCustomizeInitEarly + * + * Description: + * This is the stub function will call the host environment through the + * binary block interface (call-out port) to provide a user hook opportunity. + * + * Parameters: + * @param[in] **PeiServices + * @param[in] *InitEarly + * + * @retval VOID + * + **/ +/*---------------------------------------------------------------------------*/ +VOID OemCustomizeInitEarly(AMD_EARLY_PARAMS *InitEarly) +{ + InitEarly->GnbConfig.PcieComplexList = (void *)&PcieComplex; + InitEarly->PlatformConfig.AzaliaCodecVerbTable = + (uint64_t)(uintptr_t)CodecTableList; + InitEarly->PlatformConfig.AzaliaSsid = 0x157A1022ul; +} diff --git a/src/mainboard/amd/padmelon/bootblock/bootblock.c b/src/mainboard/amd/padmelon/bootblock/bootblock.c new file mode 100644 index 0000000..3ef34d3 --- /dev/null +++ b/src/mainboard/amd/padmelon/bootblock/bootblock.c @@ -0,0 +1,62 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2017-2018 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <bootblock_common.h> +#include <soc/southbridge.h> +#include <amdblocks/lpc.h> +#include <superio/fintek/common/fintek.h> +#include <superio/fintek/f81803a/f81803a.h> +#include <device/pci.h> +#include <device/pci_ops.h> +#include <soc/pci_devs.h> + +#include "../gpio.h" + +#define SERIAL_DEV PNP_DEV(0x4e, F81803A_SP1) + +/* Enable UAT control pins, assuming base address 0x03f8 */ +static void full_serial(void) +{ + u32 temp; + u8 reg; + temp = pci_read_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE); + temp |= DECODE_ENABLE_SERIAL_PORT0; + pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, temp); + reg = inb(0x3fb); + reg |= 3; + outb(reg, 0x3fb); + reg = inb(0x3fc); + reg |= 3; + outb(reg, 0x3fc); +} + +void bootblock_mainboard_early_init(void) +{ + sb_clk_output_48Mhz(2); + /* + * UART enabled by default at reset, just need control pins such as + * RTS, CTS, etc... + */ + full_serial(); +} + +void bootblock_mainboard_init(void) +{ + size_t num_gpios; + const struct soc_amd_gpio *gpios; + + gpios = early_gpio_table(&num_gpios); + program_gpios(gpios, num_gpios); +} diff --git a/src/mainboard/amd/padmelon/devicetree.cb b/src/mainboard/amd/padmelon/devicetree.cb new file mode 100644 index 0000000..c6df430 --- /dev/null +++ b/src/mainboard/amd/padmelon/devicetree.cb @@ -0,0 +1,80 @@ +# +# This file is part of the coreboot project. +# +# Copyright (C) 2015-2017 Advanced Micro Devices, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +chip soc/amd/stoneyridge + + register "spd_addr_lookup" = " + { + { {0xA0, 0x00} }, // socket 0 - Channel 0, slot 0 + }" + + register "uma_mode" = "UMAMODE_AUTO_LEGACY" + #register "uma_size" = "512 * MiB" + + device cpu_cluster 0 on + device lapic 10 on end + end + + device domain 0 on + subsystemid 0x1022 0x1410 inherit + device pci 0.0 on end # Root Complex + device pci 1.0 on end # Internal Graphics P2P bridge 0x9874 + device pci 1.1 on end # Internal Multimedia + device pci 2.0 on end # PCIe Host Bridge + device pci 2.1 on end # No x4 PCIe slot + device pci 2.2 on end # Half mPCIe slot + device pci 2.3 on end # NC + device pci 2.4 on end # RTL8111F + device pci 3.0 on end # PCIe Host Bridge + device pci 8.0 on end # PSP + device pci 9.0 on end # HDA + device pci 9.2 on end # HDA + device pci 10.0 on end # USB + device pci 11.0 on end # SATA + device pci 12.0 on end # USB + device pci 14.0 on # SM + chip drivers/generic/generic #dimm 0-0-0 + device i2c 50 on end + end + chip drivers/generic/generic #dimm 0-1-0 + device i2c 52 on end + end + end # SM + device pci 14.3 on # LPC 0x439d + chip superio/fintek/f81803a + register "conf_key_mode" = "0x77" + device pnp 4e.1 on # COM1 + io 0x60 = 0x3f8 + irq 0x70 = 4 + end + device pnp 4e.2 on # COM2 + io 0x60 = 0x2f8 + irq 0x70 = 3 + end + device pnp 4e.4 off end # HWM + device pnp 4e.5 off end # KBC + device pnp 4e.6 off end # GPIO + device pnp 4e.7 off end # WDT + device pnp 4e.a on end # PME + end # f81803a + end # LPC + device pci 14.7 on end # SD + device pci 18.0 on end + device pci 18.1 on end + device pci 18.2 on end + device pci 18.3 on end + device pci 18.4 on end + device pci 18.5 on end + end #domain +end #soc/amd/stoneyridge diff --git a/src/mainboard/amd/padmelon/dsdt.asl b/src/mainboard/amd/padmelon/dsdt.asl new file mode 100644 index 0000000..e4d89b1 --- /dev/null +++ b/src/mainboard/amd/padmelon/dsdt.asl @@ -0,0 +1,75 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2017 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* DefinitionBlock Statement */ +DefinitionBlock ( + "DSDT.AML", /* Output filename */ + "DSDT", /* Signature */ + 0x02, /* DSDT Revision, needs to be 2 for 64bit */ + "AMD ", /* OEMID */ + "COREBOOT", /* TABLE ID */ + 0x00010001 /* OEM Revision */ + ) +{ /* Start of ASL file */ + /* #include <arch/x86/acpi/debug.asl> */ /* as needed */ + + /* global NVS and variables */ + #include <globalnvs.asl> + + /* Globals for the platform */ + #include "acpi/mainboard.asl" + + /* Describe the USB Overcurrent pins */ + #include "acpi/usb_oc.asl" + + /* PCI IRQ mapping for the Southbridge */ + #include <pcie.asl> + + /* Describe the processor tree (_PR) */ + #include <cpu.asl> + + /* Contains the supported sleep states for this chipset */ + #include <sleepstates.asl> + + /* Contains the Sleep methods (WAK, PTS, GTS, etc.) */ + #include "acpi/sleep.asl" + + /* System Bus */ + Scope(_SB) { /* Start _SB scope */ + /* global utility methods expected within the _SB scope */ + #include <arch/x86/acpi/globutil.asl> + + /* IRQ Routing mapping for this platform (in _SB scope) */ + #include "acpi/routing.asl" + + Device(PWRB) { + Name(_HID, EISAID("PNP0C0C")) + Name(_UID, 0xAA) + Name(_PRW, Package () {3, 0x04}) + Name(_STA, 0x0B) + } + + /* Describe the SOC */ + #include <soc.asl> + + /* Describe the Fintek F81803A SIO */ + #include <superio/fintek/f81803a/acpi/superio.asl> + + } /* End _SB scope */ + + /* Define the General Purpose Events for the platform */ + #include "acpi/gpe.asl" +} +/* End of ASL file */ diff --git a/src/mainboard/amd/padmelon/fan_init.c b/src/mainboard/amd/padmelon/fan_init.c new file mode 100644 index 0000000..0675dc4 --- /dev/null +++ b/src/mainboard/amd/padmelon/fan_init.c @@ -0,0 +1,151 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2019 Richard Spiegel richard.spiegel@silverbackltd.com + * Copyright (C) 2019 Silverback ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <console/console.h> +#include <bootstate.h> +#include <device/pci_ops.h> +#include <amdblocks/lpc.h> +#include <superio/fintek/common/fan_control.h> +#include <soc/southbridge.h> +#include <soc/pci_devs.h> + +#define CPU_FAN 1 +#define SYSTEM_FAN 2 + +/* Boundaries in celcius, sections in percent */ +u8 cpu_boudaries[] = { + 80, + 65, + 50, + 35 +}; + +u8 system_boudaries[] = { + 70, + 55, + 40, + 25 +}; + +u8 cpu_section[] = { + 100, + 85, + 70, + 55, + 40 +}; + +u8 system_section[] = { + 100, + 85, + 70, + 55, + 40 +}; + +static int check_status(const char *name, int status) +{ + if (status != HWM_STATUS_SUCCESS) + printk(BIOS_DEBUG, "%s returned %d\n", name, status); + if (status < HWM_STATUS_SUCCESS) + return status; + return HWM_STATUS_SUCCESS; /* positive values are warnings only */ +} + +static void set_fan(uint8_t fan, external_sensor sensor, temp_sensor_type stype, + fan_temp_source temp_source, fan_type ftype, + fan_mode fmode, fan_pwm_freq fan_freq, + fan_rate_up rate_up, fan_rate_down rate_down, + u8 *boundaries, u8 *sections) +{ + int s; + printk(BIOS_DEBUG, "Set sensor type\n"); + if (sensor != IGNORE_SENSOR) { + s = set_sensor_type(CONFIG_HWM_PORT, sensor, stype); + if (check_status("set_sensor_type", s) < HWM_STATUS_SUCCESS) + return; + } + + printk(BIOS_DEBUG, "Set temperature source\n"); + s = set_fan_temperature_source(CONFIG_HWM_PORT, fan, temp_source); + if (check_status("set_fan_temperature_source", s) < HWM_STATUS_SUCCESS) + return; + + printk(BIOS_DEBUG, "Set fan type mode\n"); + s = set_fan_type_mode(CONFIG_HWM_PORT, fan, ftype, fmode); + if (check_status("fan_type_mode", s) < HWM_STATUS_SUCCESS) + return; + + printk(BIOS_DEBUG, "Set PWM frequency\n"); + s = set_pwm_frequency(CONFIG_HWM_PORT, fan, fan_freq); + if (check_status("set_pwm_frequency", s) < HWM_STATUS_SUCCESS) + return; + + printk(BIOS_DEBUG, "Set fan speed change rate\n"); + s = set_fan_speed_change_rate(CONFIG_HWM_PORT, fan, rate_up, rate_down); + if (check_status("set_fan_speed_change_rate", s) < HWM_STATUS_SUCCESS) + return; + + printk(BIOS_DEBUG, "Set sections\n"); + s = set_sections(CONFIG_HWM_PORT, fan, boundaries, sections); + printk(BIOS_DEBUG, "set_sections returned %d\n", s); + if (check_status("set_sections", s) < HWM_STATUS_SUCCESS) + return; + + printk(BIOS_DEBUG, "Fan %d completed\n", fan); +} + +/* Todo - move this code to SIO */ +static void init_hwm(void) +{ + outb(0x87, 0x4e); + outb(0x87, 0x4e); + outb(0x7, 0x4e); + outb(4, 0x4f); + outb(0x60, 0x4e); + outb(2, 0x4f); + outb(0x61, 0x4e); + outb(0x20, 0x4f); + outb(0x30, 0x4e); + outb(1, 0x4f); + outb(0xaa, 0x4e); +} + +static void init_fan_control(void *unused) +{ + uint32_t reg, t; + + init_hwm(); + /* Open a LPC window to access the hardware monitor */ + reg = pci_read_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE); + t = reg | CONFIG_HWM_IO_WINDOW; + pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, t); + + set_fan(CPU_FAN, IGNORE_SENSOR, TEMP_SENSOR_DEFAULT, + FAN_TEMP_TSI, FAN_TYPE_PWM_PUSH_PULL, FAN_MODE_DEFAULT, + FAN_PWM_FREQ_23500, FAN_UP_RATE_10HZ, FAN_DOWN_RATE_10HZ, + cpu_boudaries, cpu_section); + + set_fan(SYSTEM_FAN, EXTERNAL_SENSOR2, TEMP_SENSOR_BJT, + FAN_TEMP_EXTERNAL_2, FAN_TYPE_DAC_POWER, FAN_MODE_DEFAULT, + FAN_PWM_FREQ_23500, FAN_UP_RATE_10HZ, FAN_DOWN_RATE_10HZ, + system_boudaries, system_section); + + /* restore register */ + pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, reg); +} + +BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY, init_fan_control, NULL); diff --git a/src/mainboard/amd/padmelon/gpio.c b/src/mainboard/amd/padmelon/gpio.c new file mode 100644 index 0000000..88d2925 --- /dev/null +++ b/src/mainboard/amd/padmelon/gpio.c @@ -0,0 +1,61 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2016 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <amdblocks/agesawrapper.h> +#include <amdblocks/BiosCallOuts.h> +#include <soc/southbridge.h> +#include <stdlib.h> +#include <soc/gpio.h> + +#include "gpio.h" + +/* + * As a rule of thumb, GPIO pins used by coreboot should be initialized at + * bootblock while GPIO pins used only by the OS should be initialized at + * ramstage. + */ +const struct soc_amd_gpio gpio_set_stage_reset[] = { + /* NFC PU */ + PAD_GPO(GPIO_64, HIGH), + /* PCIe presence detect */ + PAD_GPO(GPIO_64, HIGH), + /* MUX for Power Express Eval */ + PAD_GPI(GPIO_116, PULL_DOWN), + /* SD power */ + PAD_GPO(GPIO_64, HIGH), +}; + +const struct soc_amd_gpio gpio_set_stage_ram[] = { + /* BT radio disable */ + PAD_GPO(GPIO_14, HIGH), + /* NFC wake */ + PAD_GPO(GPIO_65, HIGH), + /* Webcam */ + PAD_GPO(GPIO_66, HIGH), + /* GPS sleep */ + PAD_GPO(GPIO_70, HIGH), +}; + +const struct soc_amd_gpio *early_gpio_table(size_t *size) +{ + *size = ARRAY_SIZE(gpio_set_stage_reset); + return gpio_set_stage_reset; +} + +const struct soc_amd_gpio *gpio_table(size_t *size) +{ + *size = ARRAY_SIZE(gpio_set_stage_ram); + return gpio_set_stage_ram; +} diff --git a/src/mainboard/amd/padmelon/gpio.h b/src/mainboard/amd/padmelon/gpio.h new file mode 100644 index 0000000..1d3a8a2 --- /dev/null +++ b/src/mainboard/amd/padmelon/gpio.h @@ -0,0 +1,22 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2018 Google Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef MAINBOARD_GPIO_H +#define MAINBOARD_GPIO_H + +const struct soc_amd_gpio *early_gpio_table(size_t *size); +const struct soc_amd_gpio *gpio_table(size_t *size); + +#endif /* MAINBOARD_GPIO_H */ diff --git a/src/mainboard/amd/padmelon/irq_tables.c b/src/mainboard/amd/padmelon/irq_tables.c new file mode 100644 index 0000000..31cfbc1 --- /dev/null +++ b/src/mainboard/amd/padmelon/irq_tables.c @@ -0,0 +1,100 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <console/console.h> +#include <device/pci.h> +#include <string.h> +#include <stdint.h> +#include <arch/pirq_routing.h> + +static void write_pirq_info(struct irq_info *pirq_info, u8 bus, u8 devfn, + u8 link0, u16 bitmap0, u8 link1, u16 bitmap1, + u8 link2, u16 bitmap2, u8 link3, u16 bitmap3, + u8 slot, u8 rfu) +{ + pirq_info->bus = bus; + pirq_info->devfn = devfn; + pirq_info->irq[0].link = link0; + pirq_info->irq[0].bitmap = bitmap0; + pirq_info->irq[1].link = link1; + pirq_info->irq[1].bitmap = bitmap1; + pirq_info->irq[2].link = link2; + pirq_info->irq[2].bitmap = bitmap2; + pirq_info->irq[3].link = link3; + pirq_info->irq[3].bitmap = bitmap3; + pirq_info->slot = slot; + pirq_info->rfu = rfu; +} + +unsigned long write_pirq_routing_table(unsigned long addr) +{ + struct irq_routing_table *pirq; + struct irq_info *pirq_info; + u32 slot_num; + u8 *v; + + u8 sum = 0; + int i; + + /* Align the table to be 16 byte aligned. */ + addr += 15; + addr &= ~15; + + /* This table must be between 0xf0000 & 0x100000 */ + printk(BIOS_INFO, "Writing IRQ routing tables to 0x%lx...", addr); + + pirq = (void *)(addr); + v = (u8 *) (addr); + + pirq->signature = PIRQ_SIGNATURE; + pirq->version = PIRQ_VERSION; + + pirq->rtr_bus = 0; + pirq->rtr_devfn = PCI_DEVFN(0x14, 4); + + pirq->exclusive_irqs = 0; + + pirq->rtr_vendor = 0x1002; + pirq->rtr_device = 0x4384; + + pirq->miniport_data = 0; + + memset(pirq->rfu, 0, sizeof(pirq->rfu)); + + pirq_info = (void *)(&pirq->checksum + 1); + slot_num = 0; + + /* pci bridge */ + write_pirq_info(pirq_info, 0, PCI_DEVFN(0x14, 4), + 0x1, 0xdef8, 0x2, 0xdef8, 0x3, 0xdef8, 0x4, 0xdef8, 0, + 0); + pirq_info++; + + slot_num++; + + pirq->size = 32 + 16 * slot_num; + + for (i = 0; i < pirq->size; i++) + sum += v[i]; + + sum = pirq->checksum - sum; + + if (sum != pirq->checksum) + pirq->checksum = sum; + + printk(BIOS_INFO, "%s done.\n", __func__); + + return (unsigned long)pirq_info; +} diff --git a/src/mainboard/amd/padmelon/mainboard.c b/src/mainboard/amd/padmelon/mainboard.c new file mode 100644 index 0000000..11cf6b0 --- /dev/null +++ b/src/mainboard/amd/padmelon/mainboard.c @@ -0,0 +1,132 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <console/console.h> +#include <device/device.h> +#include <arch/acpi.h> +#include <amdblocks/agesawrapper.h> +#include <amdblocks/amd_pci_util.h> +#include <soc/pci_devs.h> +#include <soc/southbridge.h> + +#include "gpio.h" + +/*********************************************************** + * These arrays set up the FCH PCI_INTR registers 0xC00/0xC01. + * This table is responsible for physically routing the PIC and + * IOAPIC IRQs to the different PCI devices on the system. It + * is read and written via registers 0xC00/0xC01 as an + * Index/Data pair. These values are chipset and mainboard + * dependent and should be updated accordingly. + * + * These values are used by the PCI configuration space, + * MP Tables. TODO: Make ACPI use these values too. + */ +const u8 mainboard_picr_data[] = { + [0x00] = 0x03, 0x04, 0x05, 0x07, 0x0B, 0x0A, 0x1F, 0x1F, + [0x08] = 0xFA, 0xF1, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, + [0x10] = 0x1F, 0x1F, 0x1F, 0x03, 0x1F, 0x1F, 0x1F, 0x1F, + [0x18] = 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, + [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x30] = 0x05, 0x04, 0x05, 0x04, 0x04, 0x05, 0x04, 0x05, + [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x40] = 0x04, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x50] = 0x03, 0x04, 0x05, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, + [0x58] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + [0x60] = 0x1F, 0x1F, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + [0x68] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + [0x70] = 0x03, 0x0F, 0x06, 0x0E, 0x0A, 0x0B, 0x1F, 0x1F, + [0x78] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, +}; + +const u8 mainboard_intr_data[] = { + [0x00] = 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + [0x08] = 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, + [0x10] = 0x09, 0x1F, 0x1F, 0x10, 0x1F, 0x1F, 0x1F, 0x10, + [0x18] = 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, + [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x30] = 0x12, 0x11, 0x12, 0x11, 0x12, 0x11, 0x12, 0x00, + [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x40] = 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x50] = 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, + [0x58] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x60] = 0x1F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x68] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x70] = 0x03, 0x0F, 0x06, 0x0E, 0x0A, 0x0B, 0x1F, 0x1F, + [0x78] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* + * This table defines the index into the picr/intr_data tables for each + * device. Any enabled device and slot that uses hardware interrupts should + * have an entry in this table to define its index into the FCH PCI_INTR + * register 0xC00/0xC01. This index will define the interrupt that it should + * use. Putting PIRQ_A into the PIN A index for a device will tell that + * device to use PIC IRQ 10 if it uses PIN A for its hardware INT. + */ +static const struct pirq_struct mainboard_pirq_data[] = { + { GFX_DEVFN, { PIRQ_A, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { HDA0_DEVFN, { PIRQ_NC, PIRQ_HDA, PIRQ_NC, PIRQ_NC } }, + { PCIE0_DEVFN, { PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D } }, + { PCIE1_DEVFN, { PIRQ_B, PIRQ_C, PIRQ_D, PIRQ_A } }, + { PCIE2_DEVFN, { PIRQ_C, PIRQ_D, PIRQ_A, PIRQ_B } }, + { PCIE3_DEVFN, { PIRQ_D, PIRQ_A, PIRQ_B, PIRQ_C } }, + { PCIE4_DEVFN, { PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D } }, + { PSP_DEVFN, { PIRQ_A, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { HDA1_DEVFN, { PIRQ_HDA, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { SD_DEVFN, { PIRQ_SD, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { SMBUS_DEVFN, { PIRQ_SMBUS, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { SATA_DEVFN, { PIRQ_SATA, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { EHCI1_DEVFN, { PIRQ_EHCI, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { XHCI_DEVFN, { PIRQ_XHCI, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, +}; + +/* PIRQ Setup */ +static void pirq_setup(void) +{ + pirq_data_ptr = mainboard_pirq_data; + pirq_data_size = ARRAY_SIZE(mainboard_pirq_data); + intr_data_ptr = mainboard_intr_data; + picr_data_ptr = mainboard_picr_data; +} + +static void mainboard_init(void *chip_info) +{ + size_t num_gpios; + const struct soc_amd_gpio *gpios; + gpios = gpio_table(&num_gpios); + program_gpios(gpios, num_gpios); +} + +/************************************************* + * enable the dedicated function in padmelon board. + *************************************************/ +static void padmelon_enable(struct device *dev) +{ + printk(BIOS_INFO, "Mainboard " + CONFIG_MAINBOARD_PART_NUMBER " Enable.\n"); + + /* Initialize the PIRQ data structures for consumption */ + pirq_setup(); +} + +struct chip_operations mainboard_ops = { + .init = mainboard_init, + .enable_dev = padmelon_enable, +}; diff --git a/src/mainboard/amd/padmelon/mptable.c b/src/mainboard/amd/padmelon/mptable.c new file mode 100644 index 0000000..63f17f2 --- /dev/null +++ b/src/mainboard/amd/padmelon/mptable.c @@ -0,0 +1,165 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <console/console.h> +#include <arch/smp/mpspec.h> +#include <device/pci.h> +#include <arch/io.h> +#include <arch/ioapic.h> +#include <string.h> +#include <stdint.h> +#include <arch/cpu.h> +#include <cpu/x86/lapic.h> +#include <soc/southbridge.h> +#include <amdblocks/amd_pci_util.h> + +static void smp_add_mpc_entry(struct mp_config_table *mc, unsigned int length) +{ + mc->mpc_length += length; + mc->mpc_entry_count++; +} + +static void my_smp_write_bus(struct mp_config_table *mc, + unsigned char id, const char *bustype) +{ + struct mpc_config_bus *mpc; + mpc = smp_next_mpc_entry(mc); + memset(mpc, '\0', sizeof(*mpc)); + mpc->mpc_type = MP_BUS; + mpc->mpc_busid = id; + memcpy(mpc->mpc_bustype, bustype, sizeof(mpc->mpc_bustype)); + smp_add_mpc_entry(mc, sizeof(*mpc)); +} + +static void *smp_write_config_table(void *v) +{ + struct mp_config_table *mc; + int bus_isa; + + /* + * By the time this function gets called, the IOAPIC registers + * have been written so they can be read to get the correct + * APIC ID and Version + */ + u8 ioapic_id = (io_apic_read(VIO_APIC_VADDR, 0x00) >> 24); + u8 ioapic_ver = (io_apic_read(VIO_APIC_VADDR, 0x01) & 0xFF); + + mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN); + + mptable_init(mc, LOCAL_APIC_ADDR); + memcpy(mc->mpc_oem, "AMD ", 8); + + smp_write_processors(mc); + + my_smp_write_bus(mc, 0, "PCI "); + my_smp_write_bus(mc, 1, "PCI "); + bus_isa = 0x02; + my_smp_write_bus(mc, bus_isa, "ISA "); + + /* I/O APICs: APIC ID Version State Address */ + smp_write_ioapic(mc, ioapic_id, ioapic_ver, VIO_APIC_VADDR); + + smp_write_ioapic(mc, ioapic_id+1, 0x21, (void *)0xFEC20000); + + /* I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# */ +#define IO_LOCAL_INT(type, intr, apicid, pin) \ + smp_write_lintsrc(mc, (type), \ + MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, bus_isa, \ + (intr), (apicid), (pin)) + mptable_add_isa_interrupts(mc, bus_isa, ioapic_id, 0); + + /* PCI interrupts are level triggered, and are + * associated with a specific bus/device/function tuple. + */ +#define PCI_INT(bus, dev, int_sign, pin) \ + smp_write_intsrc(mc, mp_INT, \ + MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, (bus), \ + (((dev)<<2)|(int_sign)), ioapic_id, (pin)) + + /* Internal VGA */ + PCI_INT(0x0, 0x01, 0x0, intr_data_ptr[0x02]); + PCI_INT(0x0, 0x01, 0x1, intr_data_ptr[0x03]); + + /* SMBUS */ + PCI_INT(0x0, 0x14, 0x0, 0x10); + + /* HD Audio */ + PCI_INT(0x0, 0x14, 0x0, intr_data_ptr[0x13]); + + /* USB */ + PCI_INT(0x0, 0x12, 0x0, intr_data_ptr[0x30]); + PCI_INT(0x0, 0x12, 0x1, intr_data_ptr[0x31]); + PCI_INT(0x0, 0x13, 0x0, intr_data_ptr[0x32]); + PCI_INT(0x0, 0x13, 0x1, intr_data_ptr[0x33]); + PCI_INT(0x0, 0x16, 0x0, intr_data_ptr[0x34]); + PCI_INT(0x0, 0x16, 0x1, intr_data_ptr[0x35]); + PCI_INT(0x0, 0x14, 0x2, intr_data_ptr[0x36]); + + /* sata */ + PCI_INT(0x0, 0x11, 0x0, intr_data_ptr[0x40]); + PCI_INT(0x0, 0x11, 0x0, intr_data_ptr[0x41]); + + /* on board NIC & Slot PCIE. */ + + /* PCI slots */ + struct device *dev = dev_find_slot(0, PCI_DEVFN(0x14, 4)); + if (dev && dev->enabled) { + u8 bus_pci = dev->link_list->secondary; + /* PCI_SLOT 0. */ + PCI_INT(bus_pci, 0x5, 0x0, 0x14); + PCI_INT(bus_pci, 0x5, 0x1, 0x15); + PCI_INT(bus_pci, 0x5, 0x2, 0x16); + PCI_INT(bus_pci, 0x5, 0x3, 0x17); + + /* PCI_SLOT 1. */ + PCI_INT(bus_pci, 0x6, 0x0, 0x15); + PCI_INT(bus_pci, 0x6, 0x1, 0x16); + PCI_INT(bus_pci, 0x6, 0x2, 0x17); + PCI_INT(bus_pci, 0x6, 0x3, 0x14); + + /* PCI_SLOT 2. */ + PCI_INT(bus_pci, 0x7, 0x0, 0x16); + PCI_INT(bus_pci, 0x7, 0x1, 0x17); + PCI_INT(bus_pci, 0x7, 0x2, 0x14); + PCI_INT(bus_pci, 0x7, 0x3, 0x15); + } + + /* PCIe Lan*/ + PCI_INT(0x0, 0x06, 0x0, 0x13); + + /* FCH PCIe PortA */ + PCI_INT(0x0, 0x15, 0x0, 0x10); + /* FCH PCIe PortB */ + PCI_INT(0x0, 0x15, 0x1, 0x11); + /* FCH PCIe PortC */ + PCI_INT(0x0, 0x15, 0x2, 0x12); + /* FCH PCIe PortD */ + PCI_INT(0x0, 0x15, 0x3, 0x13); + + /*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# */ + IO_LOCAL_INT(mp_ExtINT, 0, MP_APIC_ALL, 0x0); + IO_LOCAL_INT(mp_NMI, 0, MP_APIC_ALL, 0x1); + /* There is no extension information... */ + + /* Compute the checksums */ + return mptable_finalize(mc); +} + +unsigned long write_smp_table(unsigned long addr) +{ + void *v; + v = smp_write_floating_table(addr, 0); + return (unsigned long)smp_write_config_table(v); +} diff --git a/src/mainboard/amd/padmelon/romstage.c b/src/mainboard/amd/padmelon/romstage.c new file mode 100644 index 0000000..644c7cc --- /dev/null +++ b/src/mainboard/amd/padmelon/romstage.c @@ -0,0 +1,14 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 1:
Due to missing merge of merlinfalcon binaries, loading alternative padmelon (using 00670F00). I do have both boards and tested both versions, though AMD wants the merlinfalcon version which is missing binaries.
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 1:
(5 comments)
https://review.coreboot.org/#/c/33993/1/src/mainboard/amd/padmelon/fan_init.... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/#/c/33993/1/src/mainboard/amd/padmelon/fan_init.... PS1, Line 29: [] [FINTEK_BOUNDARIES_SIZE]
https://review.coreboot.org/#/c/33993/1/src/mainboard/amd/padmelon/fan_init.... PS1, Line 36: [] same here
https://review.coreboot.org/#/c/33993/1/src/mainboard/amd/padmelon/fan_init.... PS1, Line 43: [] [FINTEK_SECTIONS_SIZE]
https://review.coreboot.org/#/c/33993/1/src/mainboard/amd/padmelon/fan_init.... PS1, Line 51: [] same here
https://review.coreboot.org/#/c/33993/1/src/mainboard/amd/padmelon/fan_init.... PS1, Line 112: static void init_hwm(void) this shouldn't be done here
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 1:
(2 comments)
Patch Set 1:
(5 comments)
Thanks for reviewing it so fast. Unfortunately, I found an introduced bug (was not present on earlier versions) and board currently is not booting, thus this has higher priority. Once I fix this bug I'll go back to your requests.
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... PS1, Line 29: []
[FINTEK_BOUNDARIES_SIZE]
Will do
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... PS1, Line 112: static void init_hwm(void)
this shouldn't be done here
Agree, that's why I placed the "todo". Working on it.
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#2).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
With almost everything in place, it's time to add padmelon board. There are 2 versions, one using a fanned version of 00670F00 and one using merlinfalcon (00660F01, also fanned), both SOC FP4 sockets. This code was intended for merlinfalcon version, but as there are some legal issues (documentation) blocking its merge to coreboot, it'll be released for 00670F00, being replaced later with merlinfalcon when the binaries can be merged to coreboot (PSP, video and AGESA). Even both use fanned versions of SOC, the actual fan control is done through a SIO, fintek f81803a.
BUG=b:none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,946 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/2
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 2:
(2 comments)
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 65: device pnp 4e.4 off end # HWM enable this device and set io base address and irq here
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 115: fintek_enable_device(F81803A_HWM, 0x0220, 0xff); this should be done via the corresponding devicetree entries and not manually
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#3).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
With almost everything in place, it's time to add padmelon board. There are 2 versions, one using a fanned version of 00670F00 and one using merlinfalcon (00660F01, also fanned), both SOC FP4 sockets. This code was intended for merlinfalcon version, but as there are some legal issues (documentation) blocking its merge to coreboot, it'll be released for 00670F00, being replaced later with merlinfalcon when the binaries can be merged to coreboot (PSP, video and AGESA). Even both use fanned versions of SOC, the actual fan control is done through a SIO, fintek f81803a.
BUG=b:none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,942 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/3
Martin Roth has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
(2 comments)
You should be able to include the blob
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 37: config VGA_BIOS_FILE : string : default "3rdparty/blobs/soc/amd/merlinfalcon/VBIOS.bin" Leave this section in, and just point to a stoney binary for now.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 20: # select SOC_AMD_MERLINFALCON # missing binaries By doing this, you're not testing any of the merlinfalcon code you've pushed.
Just update the config AGESA_BINARY_PI_FILE to point to a stoney one.
I'd also create an option like "MERLINFALCON_BINARIES_PRESENT" and default it to N then set the correct binaries if it's set to Y. That way you can use the correct binaries just by updating a config instead of having to edit the .config file.
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
Patch Set 2:
(2 comments)
Will have to fix SIO before fixing it here. At least it builds and work.
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
(2 comments)
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 37: config VGA_BIOS_FILE : string : default "3rdparty/blobs/soc/amd/merlinfalcon/VBIOS.bin"
Leave this section in, and just point to a stoney binary for now.
This was wrong, and already removed on patch set 3.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 20: # select SOC_AMD_MERLINFALCON # missing binaries
By doing this, you're not testing any of the merlinfalcon code you've pushed. […]
Will do, though will create the config at 33621 and just select it once available.
Marshall Dawson has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
(6 comments)
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@9 PS3, Line 9: With almost everything in place, it's time to add padmelon board. This is kind of wordy IMO. BTW, what is not in place yet?
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@11 PS3, Line 11: This code was intended for : merlinfalcon version, but as there are some legal issues (documentation) : blocking its merge to coreboot, it'll be released for 00670F00, Why not simply say this is for the 670F00 version. A follow up change will add merlin falcon. No point in confusing the commit message with what you started working on before changing directions.
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@15 PS3, Line 15: Even both use fanned versions of SOC, the actual fan control : is done through a SIO, fintek f81803a. I would remove this, and probably not talk about fanned parts at all. "fanned" has no relevance for fan control. Fanned is the opposite of fanless, which is the term used for low power SKUs and do not require the system designed with a fan.
The only reason that terminology is in coreboot is that different SMU firmware is required.
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@17 PS3, Line 17: I assume you copied the majority of these files from another board, then made a handful of changes. Can you specify what board they were copied from, then what the changes were?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Makefile.inc:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00 : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Fch/Common : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Common : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/binaryPI Maybe I need to go back and look at your soc code. These don't belong in mainboard.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: onst struct soc_amd_gpio gpio_set_stage_reset[] = { : /* NFC PU */ : PAD_GPO(GPIO_64, HIGH), : /* PCIe presence detect */ : PAD_GPO(GPIO_64, HIGH), : /* MUX for Power Express Eval */ : PAD_GPI(GPIO_116, PULL_DOWN), : /* SD power */ : PAD_GPO(GPIO_64, HIGH), : }; : : const struct soc_amd_gpio gpio_set_stage_ram[] = { : /* BT radio disable */ : PAD_GPO(GPIO_14, HIGH), : /* NFC wake */ : PAD_GPO(GPIO_65, HIGH), : /* Webcam */ : PAD_GPO(GPIO_66, HIGH), : /* GPS sleep */ : PAD_GPO(GPIO_70, HIGH), : } Are these real values? They look like stripped down copies of Gardenia. It would be very unusual for an AMD Embedded design to look anything like a Client design.
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
(6 comments)
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@9 PS3, Line 9: With almost everything in place, it's time to add padmelon board.
This is kind of wordy IMO. […]
The AGESA, PSP and video binaries are not yet merged, and apparently won't be for a while. Need some new documentation from AMD.
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@11 PS3, Line 11: This code was intended for : merlinfalcon version, but as there are some legal issues (documentation) : blocking its merge to coreboot, it'll be released for 00670F00,
Why not simply say this is for the 670F00 version. A follow up change will add merlin falcon. […]
For a while I physically had both versions of padmelon. I have to release padmelon 006770F00 to prove code builds with no errors, thus allowing for other code (specially SIO) to be merged. As it's the same SIO in both versions, this works. However, the final intent is merlinfalcon, which unfortunately will depend on AMD.
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@15 PS3, Line 15: Even both use fanned versions of SOC, the actual fan control : is done through a SIO, fintek f81803a.
I would remove this, and probably not talk about fanned parts at all. […]
Ok, will do.
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@17 PS3, Line 17:
I assume you copied the majority of these files from another board, then made a handful of changes. […]
Partially from Marc's work and partially from AMD's gardenia.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Makefile.inc:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00 : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Fch/Common : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Common : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/binaryPI
Maybe I need to go back and look at your soc code. These don't belong in mainboard.
I copy from Marc's code. Might be able to remove it now.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: onst struct soc_amd_gpio gpio_set_stage_reset[] = { : /* NFC PU */ : PAD_GPO(GPIO_64, HIGH), : /* PCIe presence detect */ : PAD_GPO(GPIO_64, HIGH), : /* MUX for Power Express Eval */ : PAD_GPI(GPIO_116, PULL_DOWN), : /* SD power */ : PAD_GPO(GPIO_64, HIGH), : }; : : const struct soc_amd_gpio gpio_set_stage_ram[] = { : /* BT radio disable */ : PAD_GPO(GPIO_14, HIGH), : /* NFC wake */ : PAD_GPO(GPIO_65, HIGH), : /* Webcam */ : PAD_GPO(GPIO_66, HIGH), : /* GPS sleep */ : PAD_GPO(GPIO_70, HIGH), : }
Are these real values? They look like stripped down copies of Gardenia. […]
As good as I could make based on Marc's work. I have not double check against schematic though.
Martin Roth has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
(15 comments)
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: Oddly enough, Remove the commentary?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: and an
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 68: # Don't use AMD's Secure OS : config USE_PSPSECUREOS : def_bool n Ok.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 143: 0x00172051, 0x001721C7, 0x00172222, 0x00172310, Does padmelon use the same codec as gardenia? If not, these should probably be updated.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: UAT UART
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 37: 0x3fb Use the register values in drivers/uart/8350reg.h for these values? Is padmelon restricted to using this serial port at 3f8? If not, consider not hardcoding the base address.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: celcius celsius?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 30: cpu_boudaries boundaries
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 106: return Maybe consider returning a value so you can print a warning that the setup wasn't completed?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 115: 0x0220, 0xff Maybe some #defines to say what these are?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 131: register Maybe describe WHAT register is being restored?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 51: /* Align the table to be 16 byte aligned. */ : addr += 15; : addr &= ~15; Isn't there a macro to do this?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 65: PCI_DEVFN(0x14, 4); Macro?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 69: 0x1002 Don't we have #defines for these?
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 80: PCI_DEVFN(0x14, 4) macro?
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
(15 comments)
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: and
an
Thanks
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: Oddly enough,
Remove the commentary?
I don't think so, as this is the opposite of what is standard. The index address must have bit 0 set, and the data address is the next address. It could have been 221, 223 or 225. 2277 would be invalid because 228 would be outside the 8 bytes IO window. OTOH, I do have code in place that forces bit 0 to be set, so I could use an even address... with the caveat that 226 would be invalid (would become 227).
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 68: # Don't use AMD's Secure OS : config USE_PSPSECUREOS : def_bool n
Ok.
Otherwise it won't even come out of reset...
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 143: 0x00172051, 0x001721C7, 0x00172222, 0x00172310,
Does padmelon use the same codec as gardenia? If not, these should probably be updated.
Probably... as it's not working under windows and I only have embedded Linux installed, I can't actually test. Before you ask, Windows problem is ACPI, and will be fixed some time in the future.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: UAT
UART
Thanks
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 37: 0x3fb
Use the register values in drivers/uart/8350reg.h for these values? […]
Padmelon has com1 and com2, but com1 is what is used for serial debug. Might be a good idea to have it based out of an input base address and run the code for both... I needed it because of my serial cable that does not have the internal jumpers that it's used as a work around, and my serial to USB dongle required all signals. Will do.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: celcius
celsius?
Yes, boundaries are the threshold temperature between 2 sections, each with a different fan speed.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 30: cpu_boudaries
boundaries
Thanks
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 106: return
Maybe consider returning a value so you can print a warning that the setup wasn't completed?
check_status() does the actual check of the statues, and will print a message if status is not 0. However, it's only fatal error is status is negative, positive values are warnings and fan setup continues.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 115: 0x0220, 0xff
Maybe some #defines to say what these are?
Will do.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 131: register
Maybe describe WHAT register is being restored?
Will do.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 51: /* Align the table to be 16 byte aligned. */ : addr += 15; : addr &= ~15;
Isn't there a macro to do this?
Believe so, though I don't remember it out of my mind. Will look.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 65: PCI_DEVFN(0x14, 4);
Macro?
There might already be one for it. Will check
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 69: 0x1002
Don't we have #defines for these?
Not sure, will check.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 80: PCI_DEVFN(0x14, 4)
macro?
Same as above
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 3:
(2 comments)
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 116: /* Open a LPC window to access the hardware monitor */ : reg = pci_read_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE); : t = reg | CONFIG_HWM_IO_WINDOW; : pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, t); : No longer needed, found a way to do it using devicetree and PNP initialization.
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 131: /* restore register */ : pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, reg); : } Same here, as it was complement from above.
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#4).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
With only merlin falcon binaries missing, it's time to add padmelon board. There are 2 versions, one using 00670F00 and one using merlinfalcon. This code was intended for merlinfalcon version, but as there are some legal issues (documentation) blocking its merge to coreboot, it'll be released for 00670F00, being replaced later with merlinfalcon when the binaries can be merged to coreboot (PSP, video and AGESA). Within padmelon board, the actual fan control is done through a SIO, fintek f81803a.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,942 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/4
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#5).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
With only merlin falcon binaries missing, it's time to add padmelon board. There are 2 versions, one using 00670F00 and one using merlinfalcon. This code was intended for merlinfalcon version, but as there are some legal issues (documentation) blocking its merge to coreboot, it'll be released for 00670F00, being replaced later with merlinfalcon when the binaries can be merged to coreboot (PSP, video and AGESA). Within padmelon board, the actual fan control is done through a SIO, fintek f81803a.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,932 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/5
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 5:
(1 comment)
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... PS5, Line 60: static int check_status(const char *name, int status) : { : if (status != HWM_STATUS_SUCCESS) : printk(BIOS_DEBUG, "%s returned %d\n", name, status); : if (status < HWM_STATUS_SUCCESS) : return status; : return HWM_STATUS_SUCCESS; /* positive values are warnings only */ : } : : static void set_fan(uint8_t fan, external_sensor sensor, temp_sensor_type stype, : fan_temp_source temp_source, fan_type ftype, : fan_mode fmode, fan_pwm_freq fan_freq, : fan_rate_up rate_up, fan_rate_down rate_down, : u8 *boundaries, u8 *sections) : { : int s; : printk(BIOS_DEBUG, "Set sensor type\n"); : if (sensor != IGNORE_SENSOR) { : s = set_sensor_type(CONFIG_HWM_PORT, sensor, stype); : if (check_status("set_sensor_type", s) < HWM_STATUS_SUCCESS) : return; : } : : printk(BIOS_DEBUG, "Set temperature source\n"); : s = set_fan_temperature_source(CONFIG_HWM_PORT, fan, temp_source); : if (check_status("set_fan_temperature_source", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan type mode\n"); : s = set_fan_type_mode(CONFIG_HWM_PORT, fan, ftype, fmode); : if (check_status("fan_type_mode", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set PWM frequency\n"); : s = set_pwm_frequency(CONFIG_HWM_PORT, fan, fan_freq); : if (check_status("set_pwm_frequency", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan speed change rate\n"); : s = set_fan_speed_change_rate(CONFIG_HWM_PORT, fan, rate_up, rate_down); : if (check_status("set_fan_speed_change_rate", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set follow\n"); : s = set_fan_follow(CONFIG_HWM_PORT, fan, FAN_FOLLOW_INTERPOLATION); : if (check_status("set_follow", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set sections\n"); : s = set_sections(CONFIG_HWM_PORT, fan, boundaries, sections); : if (check_status("set_sections", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Fan %d completed\n", fan); : } this isn't mainboard-specific, right? if so, i'd suggest moving this function to the common fintek fan control code
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 5:
(1 comment)
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... PS5, Line 60: static int check_status(const char *name, int status) : { : if (status != HWM_STATUS_SUCCESS) : printk(BIOS_DEBUG, "%s returned %d\n", name, status); : if (status < HWM_STATUS_SUCCESS) : return status; : return HWM_STATUS_SUCCESS; /* positive values are warnings only */ : } : : static void set_fan(uint8_t fan, external_sensor sensor, temp_sensor_type stype, : fan_temp_source temp_source, fan_type ftype, : fan_mode fmode, fan_pwm_freq fan_freq, : fan_rate_up rate_up, fan_rate_down rate_down, : u8 *boundaries, u8 *sections) : { : int s; : printk(BIOS_DEBUG, "Set sensor type\n"); : if (sensor != IGNORE_SENSOR) { : s = set_sensor_type(CONFIG_HWM_PORT, sensor, stype); : if (check_status("set_sensor_type", s) < HWM_STATUS_SUCCESS) : return; : } : : printk(BIOS_DEBUG, "Set temperature source\n"); : s = set_fan_temperature_source(CONFIG_HWM_PORT, fan, temp_source); : if (check_status("set_fan_temperature_source", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan type mode\n"); : s = set_fan_type_mode(CONFIG_HWM_PORT, fan, ftype, fmode); : if (check_status("fan_type_mode", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set PWM frequency\n"); : s = set_pwm_frequency(CONFIG_HWM_PORT, fan, fan_freq); : if (check_status("set_pwm_frequency", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan speed change rate\n"); : s = set_fan_speed_change_rate(CONFIG_HWM_PORT, fan, rate_up, rate_down); : if (check_status("set_fan_speed_change_rate", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set follow\n"); : s = set_fan_follow(CONFIG_HWM_PORT, fan, FAN_FOLLOW_INTERPOLATION); : if (check_status("set_follow", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set sections\n"); : s = set_sections(CONFIG_HWM_PORT, fan, boundaries, sections); : if (check_status("set_sections", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Fan %d completed\n", fan); : }
this isn't mainboard-specific, right? if so, i'd suggest moving this function to the common fintek f […]
So other projects can use it without duplicating it... I initially thought of it as an example of how to use the API but I guess there's little room for variation, so will do it. But I'll leave the API also published, just in case someone wants to do it differently.
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 5:
(1 comment)
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... PS5, Line 60: static int check_status(const char *name, int status) : { : if (status != HWM_STATUS_SUCCESS) : printk(BIOS_DEBUG, "%s returned %d\n", name, status); : if (status < HWM_STATUS_SUCCESS) : return status; : return HWM_STATUS_SUCCESS; /* positive values are warnings only */ : } : : static void set_fan(uint8_t fan, external_sensor sensor, temp_sensor_type stype, : fan_temp_source temp_source, fan_type ftype, : fan_mode fmode, fan_pwm_freq fan_freq, : fan_rate_up rate_up, fan_rate_down rate_down, : u8 *boundaries, u8 *sections) : { : int s; : printk(BIOS_DEBUG, "Set sensor type\n"); : if (sensor != IGNORE_SENSOR) { : s = set_sensor_type(CONFIG_HWM_PORT, sensor, stype); : if (check_status("set_sensor_type", s) < HWM_STATUS_SUCCESS) : return; : } : : printk(BIOS_DEBUG, "Set temperature source\n"); : s = set_fan_temperature_source(CONFIG_HWM_PORT, fan, temp_source); : if (check_status("set_fan_temperature_source", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan type mode\n"); : s = set_fan_type_mode(CONFIG_HWM_PORT, fan, ftype, fmode); : if (check_status("fan_type_mode", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set PWM frequency\n"); : s = set_pwm_frequency(CONFIG_HWM_PORT, fan, fan_freq); : if (check_status("set_pwm_frequency", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan speed change rate\n"); : s = set_fan_speed_change_rate(CONFIG_HWM_PORT, fan, rate_up, rate_down); : if (check_status("set_fan_speed_change_rate", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set follow\n"); : s = set_fan_follow(CONFIG_HWM_PORT, fan, FAN_FOLLOW_INTERPOLATION); : if (check_status("set_follow", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set sections\n"); : s = set_sections(CONFIG_HWM_PORT, fan, boundaries, sections); : if (check_status("set_sections", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Fan %d completed\n", fan); : }
So other projects can use it without duplicating it... […]
yes, definitely keep the current api exposed, but move this function there as an additional slightly higher-level api
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#6).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
With only merlin falcon binaries missing, it's time to add padmelon board. There are 2 versions, one using 00670F00 and one using merlinfalcon. This code was intended for merlinfalcon version, but as there are some legal issues (documentation) blocking its merge to coreboot, it'll be released for 00670F00, being replaced later with merlinfalcon when the binaries can be merged to coreboot (PSP, video and AGESA). Within padmelon board, the actual fan control is done through a SIO, fintek f81803a.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,877 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/6
Martin Roth has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 7:
(4 comments)
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: Oddly enough,
I don't think so, as this is the opposite of what is standard. […]
Sure, I just mean remove "Oddly enough" It's not needed.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 68: # Don't use AMD's Secure OS : config USE_PSPSECUREOS : def_bool n
Otherwise it won't even come out of reset...
Sorry, I don't understand. If you include the secureos binary, it doesn't come out of reset? That seems very odd. What features are in the secureos binary that you don't get? Are you sure you're using the correct binary?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 21: # select MERLINFALCON_BINARIES_PRESENT Not needed. Just set it to Y when you run menuconfig.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 29: celcius sorry - my last comment was about the spelling of the word celsius.
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 7:
(4 comments)
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: Oddly enough,
Sure, I just mean remove "Oddly enough" It's not needed.
Ok, will do.
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 68: # Don't use AMD's Secure OS : config USE_PSPSECUREOS : def_bool n
Sorry, I don't understand. […]
I'm not 100% sure now... It was one of the things Marshall told me to remove when we were trying to figure out why it was not coming out of reset, though not the one that solved it. OTOH, as I'm using pre-installed OS on my board, it might cause problems to complete the boot if I enable it. I'll leave to whoever clone this code for their own board to decide if they should use it.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 21: # select MERLINFALCON_BINARIES_PRESENT
Not needed. Just set it to Y when you run menuconfig.
This is temporary until the binaries become available... it makes it easy for me when building for debug. I could also simply remove it from here and leave it only in my debug branch.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 29: celcius
sorry - my last comment was about the spelling of the word celsius.
Opss...sorry myself. Will fix. Though now that I separated part of the code back to SIO folder, maybe this message should be duplicated there too.
Marshall Dawson has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 7:
(6 comments)
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@11 PS3, Line 11: This code was intended for : merlinfalcon version, but as there are some legal issues (documentation) : blocking its merge to coreboot, it'll be released for 00670F00,
For a while I physically had both versions of padmelon. […]
Why not simply say this is for the 670F00 version? As I mentioned before, just describe what this patch does.
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@17 PS3, Line 17:
Partially from Marc's work and partially from AMD's gardenia.
Please note it somewhere. Preferably in the commit message.
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@15 PS7, Line 15: actual filler word. doesn't add any information here.
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@15 PS7, Line 15: a SIO, fintek f81803a through a Fintek F81803A SIO.
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@18 PS7, Line 18: Both versions tested and boot to Linux using SeaBIOS I'm confused. Does this support all versions of Family 15h Models 60h-6Fh? Just that the blobs aren't present? If that's the case, then reword the body of the commit message to remove all the stuff about "This code was intended for merlinfalcon version, but as there are some legal issues (documentation) blocking its merge to coreboot, it'll be released for 00670F00, being replaced later with merlinfalcon when the binaries can be merged to coreboot (PSP, video and AGESA)."
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: onst struct soc_amd_gpio gpio_set_stage_reset[] = { : /* NFC PU */ : PAD_GPO(GPIO_64, HIGH), : /* PCIe presence detect */ : PAD_GPO(GPIO_64, HIGH), : /* MUX for Power Express Eval */ : PAD_GPI(GPIO_116, PULL_DOWN), : /* SD power */ : PAD_GPO(GPIO_64, HIGH), : }; : : const struct soc_amd_gpio gpio_set_stage_ram[] = { : /* BT radio disable */ : PAD_GPO(GPIO_14, HIGH), : /* NFC wake */ : PAD_GPO(GPIO_65, HIGH), : /* Webcam */ : PAD_GPO(GPIO_66, HIGH), : /* GPS sleep */ : PAD_GPO(GPIO_70, HIGH), : }
As good as I could make based on Marc's work. I have not double check against schematic though.
Please update correctly, or note that this patch is work in progress.
Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 7:
(22 comments)
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 18: #define FILECODE PROC_GNB_PCIE_FAMILY_0X15_F15PCIECOMPLEXCONFIG_FILECODE Can we get rid of this FILECODE stuff.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 28: #define SERIAL_DEV PNP_DEV(0x4e, F81803A_SP1) This and fintek includes seem unnecessary, since you are not doing any PNP config actions.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 31: static void full_serial(unsigned int base_port, unsigned int io_enable) full ?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 36: temp |= DECODE_ENABLE_SERIAL_PORT0; Probably wrong
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 38: reg = inb(base_port + UART8250_MCR); arch/io.h
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 39: reg |= UART8250_MCR_DTR | UART8250_MCR_RTS; Why? Hardware flow control is not desired for boot firmware.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 34: device pci 2.0 on end # PCIe Host Bridge Is this really a PCI bridge or a "placeholder" to configure 0:2.1 to 0:2.4 ?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: device pci 2.1 on end # No x4 PCIe slot Slot or no slot?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 37: device pci 2.3 on end # NC If not routed, why on?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 43: device pci 10.0 on end # USB xHCI ?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 45: device pci 12.0 on end # USB EHCI ?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 51: device i2c 52 on end Contradicts SPD map above.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 24: #include <soc/pci_devs.h> some spurious includes there?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 30: u8 cpu_boudaries[FINTEK_BOUNDARIES_SIZE] = { static boundaries ?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.h:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 19: const struct soc_amd_gpio *early_gpio_table(size_t *size); Missing include for the struct.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 29: const struct soc_amd_gpio gpio_set_stage_reset[] = { static
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 41: unsigned long write_pirq_routing_table(unsigned long addr) In general, I'd just submit without MP and PIRQ tables since they are probably not much tested at all.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 65: pirq->rtr_devfn = PCI_DEVFN(0x14, 4); I don't remember what this field in PIRQ structure is supposed to be. But 0:14.4 used to be the parallel PCI bus bridge.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 79: /* pci bridge */ Hmm.. bogus entries?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mainboard.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: * MP Tables. TODO: Make ACPI use these values too. Well ACPI is the more important one to get correct. Perhaps just drop MP and PIRQ table support.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mptable.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 116: /* PCI slots */ Where are they?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 143: PCI_INT(0x0, 0x15, 0x0, 0x10); Is pci 0:15.x stil there?
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 7:
Please add Documentation as well: * how to access the flash IC * a recommended flashing method * a picture of the mainboard * debug ports * known issues (if any) * Additional notes useful for developers
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 7:
(26 comments)
Patch Set 7:
Please add Documentation as well:
- how to access the flash IC
- a recommended flashing method
- a picture of the mainboard
- debug ports
- known issues (if any)
- Additional notes useful for developers
I'm accessing with dediprog. For now dediprog. Should I create a document folder for these?
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@17 PS3, Line 17:
Please note it somewhere. Preferably in the commit message.
Ok, will do.
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@15 PS7, Line 15: a SIO, fintek f81803a
through a Fintek F81803A SIO.
Will do.
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@15 PS7, Line 15: actual
filler word. doesn't add any information here.
Will remove
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@18 PS7, Line 18: Both versions tested and boot to Linux using SeaBIOS
I'm confused. […]
I know that it supports both boards I have, by simply replacing the select SOC_AMD_MERLINFALCON with SOC_AMD_STONEYRIDGE_FP4 Will see how to rework it.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 18: #define FILECODE PROC_GNB_PCIE_FAMILY_0X15_F15PCIECOMPLEXCONFIG_FILECODE
Can we get rid of this FILECODE stuff.
Possibly... will try.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 28: #define SERIAL_DEV PNP_DEV(0x4e, F81803A_SP1)
This and fintek includes seem unnecessary, since you are not doing any PNP config actions.
I was in the past, code moved elsewhere and I missed to remove it. Will do.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 31: static void full_serial(unsigned int base_port, unsigned int io_enable)
full ?
This code is in the process of changing.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 36: temp |= DECODE_ENABLE_SERIAL_PORT0;
Probably wrong
I was doing it only for com port 0, and it's correct. However, code is changing to make it more generic and support ports 0 and 1, as padmelon has both.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 38: reg = inb(base_port + UART8250_MCR);
arch/io. […]
Not sure what you want here, I copied this from an Intel code that also used UART8250_MCR. And it builds fine.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 39: reg |= UART8250_MCR_DTR | UART8250_MCR_RTS;
Why? Hardware flow control is not desired for boot firmware.
It's needed for my setup, I'll get no serial if I don't enable it. Maybe if I had a modified serial cable that does the trick internally to the socket (RTS to CTS, and so on...) it would work, but I don't have such a cable. And unfortunately the cable I bought is solid plastic on the connector, I can't do the solder on it. If I had the problem, others might. On a final product, this code could be drop. Would it be better if I add a comment saying so?
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 34: device pci 2.0 on end # PCIe Host Bridge
Is this really a PCI bridge or a "placeholder" to configure 0:2.1 to 0:2. […]
Code copied from previous owner, will check schematics.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: device pci 2.1 on end # No x4 PCIe slot
Slot or no slot?
same
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 37: device pci 2.3 on end # NC
If not routed, why on?
same
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 43: device pci 10.0 on end # USB
xHCI ?
same
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 45: device pci 12.0 on end # USB
EHCI ?
same
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 51: device i2c 52 on end
Contradicts SPD map above.
Not sure I get it. Please explain.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 24: #include <soc/pci_devs.h>
some spurious includes there?
Maybe. Some of the code that was initially in this file was moved to fintek folder. Will check.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 30: u8 cpu_boudaries[FINTEK_BOUNDARIES_SIZE] = {
static […]
probably static. will fix.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.h:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 19: const struct soc_amd_gpio *early_gpio_table(size_t *size);
Missing include for the struct.
Will investigate. Maybe this file isn't needed anymore, or maybe the file that includes it already included what is needed.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 29: const struct soc_amd_gpio gpio_set_stage_reset[] = {
static
And below too. Will fix.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 41: unsigned long write_pirq_routing_table(unsigned long addr)
In general, I'd just submit without MP and PIRQ tables since they are probably not much tested at al […]
Only test so far was booting to Linux.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 65: pirq->rtr_devfn = PCI_DEVFN(0x14, 4);
I don't remember what this field in PIRQ structure is supposed to be. But 0:14. […]
Will check.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 79: /* pci bridge */
Hmm.. […]
Maybe, need to check. Code started by Marc, I did not review some sections.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mainboard.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: * MP Tables. TODO: Make ACPI use these values too.
Well ACPI is the more important one to get correct. Perhaps just drop MP and PIRQ table support.
These are about programming the registers before loading OS, not about creating a table for the OS. However, it's another table I did not check for correctness.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mptable.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 116: /* PCI slots */
Where are they?
Will check... this section of code was not created by me.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 143: PCI_INT(0x0, 0x15, 0x0, 0x10);
Is pci 0:15. […]
Will check
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#8).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board is compatible with Merlin Falcon (family 15h models 60h-6fh) and Prairie Falcon (family 15h models 70h-7fh). This code is the release for the system using Prairie Falcon, a new release for Merlin Falcon will be made when Merlin Falcon binaries are merged (commit 33615). Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,877 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/8
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 8:
(8 comments)
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 34: device pci 2.0 on end # PCIe Host Bridge
Code copied from previous owner, will check schematics.
It's a real bridge used to control the bridges. There's a second one at 3.0, both return the same device ID.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: device pci 2.1 on end # No x4 PCIe slot
same
Actually mini PCIe half slot. And it's x1.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 36: device pci 2.2 on end # Half mPCIe slo Does not exists.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 37: device pci 2.3 on end # NC
same
Actually LAN 1
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 38: device pci 2.4 on end # RTL8111F LAN 2
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 39: device pci 3.0 on end # PCIe Host Bridge GFX, x8, slotted.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 43: device pci 10.0 on end # USB
same
yes, xhci
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 45: device pci 12.0 on end # USB
same
Yes, EHCI
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 8:
(5 comments)
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 41: unsigned long write_pirq_routing_table(unsigned long addr)
Only test so far was booting to Linux.
All family 15h platforms use the very same file... might even consider making it a family 15h folder specific.... So as grunt was extensively tested and works, I should assume this file is correct.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 79: /* pci bridge */
Maybe, need to check. Code started by Marc, I did not review some sections.
Actually code started even earlier... all family 15h use the same code.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mainboard.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: * MP Tables. TODO: Make ACPI use these values too.
These are about programming the registers before loading OS, not about creating a table for the OS. […]
Seems to be correct, only extensive testing will confirm though.
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mptable.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 116: /* PCI slots */
Will check... this section of code was not created by me.
All family 15h have it, not my decision. Don't know why, might have come from earlier projects/family? As for physically, there are 2 slots only. A mini PCI-e (x1) and a GFX (x8)
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 143: PCI_INT(0x0, 0x15, 0x0, 0x10);
Will check
No.
Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 8:
(1 comment)
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 41: unsigned long write_pirq_routing_table(unsigned long addr)
All family 15h platforms use the very same file... […]
PIRQ table can be completely broken and OS boots just fine. If you find mistakes here, probably all the other fam15 have same errors. My quick solution; push commit without PIRQ and MP, there are Kconfigs for both.
There may be shortcuts taken here. In ideal world, PIRQ tables will be different depending of which SERIRQ the on-board superio needs to drive.
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 8:
(1 comment)
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 41: unsigned long write_pirq_routing_table(unsigned long addr)
PIRQ table can be completely broken and OS boots just fine. […]
Ok... will release a commit without this change, as it also has something horrible at devicetree (will mark when released). Then I'll work to find a solution for the devicetree, and add the necessary kconfig.
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#9).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board is compatible with Merlin Falcon (family 15h models 60h-6fh) and Prairie Falcon (family 15h models 70h-7fh). This code is the release for the system using Prairie Falcon, a new release for Merlin Falcon will be made when Merlin Falcon binaries are merged (commit 33615). Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,849 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/9
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 9:
(1 comment)
https://review.coreboot.org/c/coreboot/+/33993/9/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/9/src/mainboard/amd/padmelon/... PS9, Line 19: #if CONFIG(HAVE_MERLINFALCON_BINARIES) : # { {0xA0, 0x00}, {0xA2, 0x00} }, // socket 0 - Channel 0 & 1, slot 0 : #else : { {0xA0, 0x00} }, // socket 0 - Channel 0, slot 0 : #endif : This is a bad solution, it shows what needs to happen, but the "#" has to be moved manually. Working on finding a better solution. If someone knows a better way, please do point me out.
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 9:
Patch Set 7:
(26 comments)
Patch Set 7:
Please add Documentation as well:
- how to access the flash IC
- a recommended flashing method
- a picture of the mainboard
- debug ports
- known issues (if any)
- Additional notes useful for developers
I'm accessing with dediprog. For now dediprog. Should I create a document folder for these?
Please add the documentation under Documentation/mainboard/amd.
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#10).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board is compatible with Merlin Falcon (family 15h models 60h-6fh) and Prairie Falcon (family 15h models 70h-7fh). This code is the release for the system using Prairie Falcon, a new release for Merlin Falcon will be made when Merlin Falcon binaries are merged (commit 33615). Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,852 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/10
HAOUAS Elyes has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 10:
(5 comments)
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/BiosCallOuts.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 16: #include <amdblocks/agesawrapper.h> : #include <amdblocks/BiosCallOuts.h> : #include <soc/southbridge.h> : #include <stdlib.h> : #include <string.h> do you use all of them ?
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/routing.asl:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 18: DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001 #include <arch/acpi.h> DefinitionBlock ("DSDT.AML","DSDT",0x02, OEM_ID, ACPI_TABLE_CREATOR, 0x00010001
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 17: include <console/console.h> maybe not used
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/gpio.h:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 21: size_t not defined
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 20: #include <soc/gpio.h> you may include <gpio.h> instead
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 10:
(5 comments)
di
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/BiosCallOuts.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 16: #include <amdblocks/agesawrapper.h> : #include <amdblocks/BiosCallOuts.h> : #include <soc/southbridge.h> : #include <stdlib.h> : #include <string.h>
do you use all of them ?
Currently this is just a place holder with only an empty function. I could remove most of them, except BiosCallOuts.
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/routing.asl:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 18: DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001
#include <arch/acpi.h> […]
Not sure why it's not there, it's on my local main tree. Will fix. Here's my local branch: #include <arch/acpi.h> DefinitionBlock ( "DSDT.AML", /* Output filename */ "DSDT", /* Signature */ 0x02, /* DSDT Revision, needs to be 2 for 64bit */ "AMD ", /* OEMID */ "COREBOOT", /* TABLE ID */ 0x00010001 /* OEM Revision */ ) { /* Start of ASL file */
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 17: include <console/console.h>
maybe not used
Will remove. Was being used for debug.
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/gpio.h:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 21: size_t
not defined
Really? Builds fine for me, I thought it was defined in some include from gpio_banks.h. Will check what's happening.
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 20: #include <soc/gpio.h>
you may include <gpio. […]
They are 2 different files with same name. One (below) is local, the other is a file under soc/amd/stoneyridge/include/soc. However, if I make the local include the remote gpio.h instead of gpio_banks.h (as it's currently), it should be ok as the remote one does include gpio_banks.h. This way I remove the line you marked, and only include the local gpio.h.
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 10:
(1 comment)
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/gpio.h:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 21: size_t
Really? Builds fine for me, I thought it was defined in some include from gpio_banks.h. […]
gpio_banks does include stddef.h
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#11).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board is compatible with Merlin Falcon (family 15h models 60h-6fh) and Prairie Falcon (family 15h models 70h-7fh). This code is the release for the system using Prairie Falcon, a new release for Merlin Falcon will be made when Merlin Falcon binaries are merged (commit 33615). Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,846 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/11
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#12).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board is compatible with Merlin Falcon (family 15h models 60h-6fh) and Prairie Falcon (family 15h models 70h-7fh). This code is the release for the system using Prairie Falcon, a new release for Merlin Falcon will be made when Merlin Falcon binaries are merged (commit 33615). Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,846 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/12
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#13).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board is compatible with Merlin Falcon (family 15h models 60h-6fh) and Prairie Falcon (family 15h models 70h-7fh). This code is the release for the system using Prairie Falcon, a new release for Merlin Falcon will be made when Merlin Falcon binaries are merged (commit 33615). Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/irq_tables.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/mptable.c A src/mainboard/amd/padmelon/romstage.c 25 files changed, 1,869 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/13
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 13:
(21 comments)
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/BiosCallOuts.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 16: #include <amdblocks/agesawrapper.h> : #include <amdblocks/BiosCallOuts.h> : #include <soc/southbridge.h> : #include <stdlib.h> : #include <string.h>
Currently this is just a place holder with only an empty function. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/routing.asl:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 18: DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001
Not sure why it's not there, it's on my local main tree. Will fix. Here's my local branch: […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 34: device pci 2.0 on end # PCIe Host Bridge
It's a real bridge used to control the bridges. There's a second one at 3. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: device pci 2.1 on end # No x4 PCIe slot
Actually mini PCIe half slot. And it's x1.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 36: device pci 2.2 on end # Half mPCIe slo
Does not exists.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 37: device pci 2.3 on end # NC
Actually LAN 1
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 38: device pci 2.4 on end # RTL8111F
LAN 2
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 39: device pci 3.0 on end # PCIe Host Bridge
GFX, x8, slotted.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 43: device pci 10.0 on end # USB
yes, xhci
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 45: device pci 12.0 on end # USB
Yes, EHCI
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 51: device i2c 52 on end
Not sure I get it. Please explain.
Done
https://review.coreboot.org/c/coreboot/+/33993/9/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/9/src/mainboard/amd/padmelon/... PS9, Line 19: #if CONFIG(HAVE_MERLINFALCON_BINARIES) : # { {0xA0, 0x00}, {0xA2, 0x00} }, // socket 0 - Channel 0 & 1, slot 0 : #else : { {0xA0, 0x00} }, // socket 0 - Channel 0, slot 0 : #endif :
This is a bad solution, it shows what needs to happen, but the "#" has to be moved manually. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 17: include <console/console.h>
Will remove. Was being used for debug.
Done
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/gpio.h:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 21: size_t
gpio_banks does include stddef. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/10/src/mainboard/amd/padmelon... PS10, Line 20: #include <soc/gpio.h>
They are 2 different files with same name. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 41: unsigned long write_pirq_routing_table(unsigned long addr)
Ok... […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 65: pirq->rtr_devfn = PCI_DEVFN(0x14, 4);
Will check.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 79: /* pci bridge */
Actually code started even earlier... all family 15h use the same code.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mainboard.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 35: * MP Tables. TODO: Make ACPI use these values too.
Seems to be correct, only extensive testing will confirm though.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/mptable.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 116: /* PCI slots */
All family 15h have it, not my decision. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 143: PCI_INT(0x0, 0x15, 0x0, 0x10);
No.
Done
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#14).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Praririe Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Started from Gardenia code, added changes created by Marc and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c 23 files changed, 1,613 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/14
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 14:
(32 comments)
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@9 PS3, Line 9: With almost everything in place, it's time to add padmelon board.
The AGESA, PSP and video binaries are not yet merged, and apparently won't be for a while. […]
Ack
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@11 PS3, Line 11: This code was intended for : merlinfalcon version, but as there are some legal issues (documentation) : blocking its merge to coreboot, it'll be released for 00670F00,
Why not simply say this is for the 670F00 version? As I mentioned before, just describe what this p […]
Done
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@15 PS3, Line 15: Even both use fanned versions of SOC, the actual fan control : is done through a SIO, fintek f81803a.
Ok, will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/3//COMMIT_MSG@17 PS3, Line 17:
Ok, will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 37: config VGA_BIOS_FILE : string : default "3rdparty/blobs/soc/amd/merlinfalcon/VBIOS.bin"
This was wrong, and already removed on patch set 3.
Ack
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 20: # select SOC_AMD_MERLINFALCON # missing binaries
Will do, though will create the config at 33621 and just select it once available.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Makefile.inc:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00 : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Fch/Common : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/Proc/Common : CPPFLAGS_common += -I$(src)/vendorcode/amd/pi/00670F00/binaryPI
I copy from Marc's code. Might be able to remove it now.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 143: 0x00172051, 0x001721C7, 0x00172222, 0x00172310,
Probably... […]
To be solved in the future
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: UAT
Thanks
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: UAT
Thanks
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 37: 0x3fb
Padmelon has com1 and com2, but com1 is what is used for serial debug. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 37: 0x3fb
Padmelon has com1 and com2, but com1 is what is used for serial debug. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 65: device pnp 4e.4 off end # HWM
enable this device and set io base address and irq here
Done
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... PS1, Line 29: []
Will do
Done
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... PS1, Line 36: []
same here
Done
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... PS1, Line 43: []
[FINTEK_SECTIONS_SIZE]
Done
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... PS1, Line 51: []
same here
Done
https://review.coreboot.org/c/coreboot/+/33993/1/src/mainboard/amd/padmelon/... PS1, Line 112: static void init_hwm(void)
Agree, that's why I placed the "todo". Working on it.
Done
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 115: fintek_enable_device(F81803A_HWM, 0x0220, 0xff);
this should be done via the corresponding devicetree entries and not manually
Done
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 116: /* Open a LPC window to access the hardware monitor */ : reg = pci_read_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE); : t = reg | CONFIG_HWM_IO_WINDOW; : pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, t); :
No longer needed, found a way to do it using devicetree and PNP initialization.
Ack
https://review.coreboot.org/c/coreboot/+/33993/2/src/mainboard/amd/padmelon/... PS2, Line 131: /* restore register */ : pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, reg); : }
Same here, as it was complement from above.
Ack
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: celcius
Yes, boundaries are the threshold temperature between 2 sections, each with a different fan speed.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 30: cpu_boudaries
Thanks
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 106: return
check_status() does the actual check of the statues, and will print a message if status is not 0. […]
Ack
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 115: 0x0220, 0xff
Will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 131: register
Will do.
No longer part of this patch, moved (and fixed) on f81803a patch.
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/5/src/mainboard/amd/padmelon/... PS5, Line 60: static int check_status(const char *name, int status) : { : if (status != HWM_STATUS_SUCCESS) : printk(BIOS_DEBUG, "%s returned %d\n", name, status); : if (status < HWM_STATUS_SUCCESS) : return status; : return HWM_STATUS_SUCCESS; /* positive values are warnings only */ : } : : static void set_fan(uint8_t fan, external_sensor sensor, temp_sensor_type stype, : fan_temp_source temp_source, fan_type ftype, : fan_mode fmode, fan_pwm_freq fan_freq, : fan_rate_up rate_up, fan_rate_down rate_down, : u8 *boundaries, u8 *sections) : { : int s; : printk(BIOS_DEBUG, "Set sensor type\n"); : if (sensor != IGNORE_SENSOR) { : s = set_sensor_type(CONFIG_HWM_PORT, sensor, stype); : if (check_status("set_sensor_type", s) < HWM_STATUS_SUCCESS) : return; : } : : printk(BIOS_DEBUG, "Set temperature source\n"); : s = set_fan_temperature_source(CONFIG_HWM_PORT, fan, temp_source); : if (check_status("set_fan_temperature_source", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan type mode\n"); : s = set_fan_type_mode(CONFIG_HWM_PORT, fan, ftype, fmode); : if (check_status("fan_type_mode", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set PWM frequency\n"); : s = set_pwm_frequency(CONFIG_HWM_PORT, fan, fan_freq); : if (check_status("set_pwm_frequency", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set fan speed change rate\n"); : s = set_fan_speed_change_rate(CONFIG_HWM_PORT, fan, rate_up, rate_down); : if (check_status("set_fan_speed_change_rate", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set follow\n"); : s = set_fan_follow(CONFIG_HWM_PORT, fan, FAN_FOLLOW_INTERPOLATION); : if (check_status("set_follow", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Set sections\n"); : s = set_sections(CONFIG_HWM_PORT, fan, boundaries, sections); : if (check_status("set_sections", s) < HWM_STATUS_SUCCESS) : return; : : printk(BIOS_DEBUG, "Fan %d completed\n", fan); : }
yes, definitely keep the current api exposed, but move this function there as an additional slightly […]
Ack
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 29: onst struct soc_amd_gpio gpio_set_stage_reset[] = { : /* NFC PU */ : PAD_GPO(GPIO_64, HIGH), : /* PCIe presence detect */ : PAD_GPO(GPIO_64, HIGH), : /* MUX for Power Express Eval */ : PAD_GPI(GPIO_116, PULL_DOWN), : /* SD power */ : PAD_GPO(GPIO_64, HIGH), : }; : : const struct soc_amd_gpio gpio_set_stage_ram[] = { : /* BT radio disable */ : PAD_GPO(GPIO_14, HIGH), : /* NFC wake */ : PAD_GPO(GPIO_65, HIGH), : /* Webcam */ : PAD_GPO(GPIO_66, HIGH), : /* GPS sleep */ : PAD_GPO(GPIO_70, HIGH), : }
Please update correctly, or note that this patch is work in progress.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/irq_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 51: /* Align the table to be 16 byte aligned. */ : addr += 15; : addr &= ~15;
Believe so, though I don't remember it out of my mind. Will look.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 65: PCI_DEVFN(0x14, 4);
There might already be one for it. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 69: 0x1002
Not sure, will check.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 80: PCI_DEVFN(0x14, 4)
Same as above
Done
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 14:
(19 comments)
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 20: # select SOC_AMD_MERLINFALCON # missing binaries
Done
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: Oddly enough,
Ok, will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: Oddly enough,
Ok, will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 68: # Don't use AMD's Secure OS : config USE_PSPSECUREOS : def_bool n
I'm not 100% sure now... […]
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 68: # Don't use AMD's Secure OS : config USE_PSPSECUREOS : def_bool n
I'm not 100% sure now... […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 18: #define FILECODE PROC_GNB_PCIE_FAMILY_0X15_F15PCIECOMPLEXCONFIG_FILECODE
Possibly... will try.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 28: #define SERIAL_DEV PNP_DEV(0x4e, F81803A_SP1)
I was in the past, code moved elsewhere and I missed to remove it. Will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 31: static void full_serial(unsigned int base_port, unsigned int io_enable)
This code is in the process of changing.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 36: temp |= DECODE_ENABLE_SERIAL_PORT0;
I was doing it only for com port 0, and it's correct. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 38: reg = inb(base_port + UART8250_MCR);
Not sure what you want here, I copied this from an Intel code that also used UART8250_MCR. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 39: reg |= UART8250_MCR_DTR | UART8250_MCR_RTS;
It's needed for my setup, I'll get no serial if I don't enable it. […]
Ack
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/fan_init.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 24: #include <soc/pci_devs.h>
Maybe. Some of the code that was initially in this file was moved to fintek folder. Will check.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 24: #include <soc/pci_devs.h>
Maybe. Some of the code that was initially in this file was moved to fintek folder. Will check.
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 29: celcius
Opss...sorry myself. Will fix. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 29: celcius
Opss...sorry myself. Will fix. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 30: u8 cpu_boudaries[FINTEK_BOUNDARIES_SIZE] = {
probably static. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 30: u8 cpu_boudaries[FINTEK_BOUNDARIES_SIZE] = {
probably static. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.h:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 19: const struct soc_amd_gpio *early_gpio_table(size_t *size);
Will investigate. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/gpio.c:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 29: const struct soc_amd_gpio gpio_set_stage_reset[] = {
And below too. Will fix.
Ack
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 14:
(5 comments)
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@15 PS7, Line 15: actual
Will remove
Done
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@15 PS7, Line 15: a SIO, fintek f81803a
Will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/7//COMMIT_MSG@18 PS7, Line 18: Both versions tested and boot to Linux using SeaBIOS
I know that it supports both boards I have, by simply replacing the select SOC_AMD_MERLINFALCON with […]
Done
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/3/src/mainboard/amd/padmelon/... PS3, Line 64: and
Thanks
Ack
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/7/src/mainboard/amd/padmelon/... PS7, Line 21: # select MERLINFALCON_BINARIES_PRESENT
This is temporary until the binaries become available... […]
Ack
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#15).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Prairie Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Padmelon board was created to accept Prairie Falcon, Brown Falcon and Merlin Falcon. The requested development was for Merlin Falcon. There are some small spec changes (such as number of memory channels) between SOC. Brown Falcon was not investigated, Prairie Falcon is very simi;ar to Stoney Ridge.
Started from Gardenia code, added changes created by Marc and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c 23 files changed, 1,609 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/15
Martin Roth has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 15:
(27 comments)
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG@19 PS15, Line 19: SOC SOCs
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG@20 PS15, Line 20: simi;ar similar
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG@22 PS15, Line 22: Marc Marc Jones
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/BiosCallOuts.h:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 31: fan runs Either "4-wire fans run at" or "a 4-wire fan runs at". Same for the 2nd half of the sentence.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 18: config HAVE_S3_SUPPORT Put this under the mainboard part number?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 22: Select it to change GPIO used for wake. What? This help makes no sense. HAVE_S3_SUPPORT should be about whether the board supports S3 or not.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 61: Select a bit within LPC_IO_PORT_DECODE_ENABLE that will enable : access to IO port HWM_PORT, which is programmed at bootblock. I still have no idea what this does or why it should be a Kconfig option. Can this just be hardcoded in a header file?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 64: config HWM_PORT Again, does this need to be a Kconfig option? There's no prompt, why not just set it in a header file.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 68: HWM Maybe lead with what HWM stands for and what it's used for.
The Hardware monitor is used for xxxx
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/gpe.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 17: You might want to verify the methods in this file. These look like they're left over from other platforms.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/routing.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 17: /* : DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001 : ) : { : #include "routing.asl" : } : */ : Remove this block?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/superio.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 49: #define SUPERIO_PNP_BASE 0x4E It seems a little odd to define this inside an ASL file. Is this value not used anywhere else? Can this be set by a #define in a header file that gets used here?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 52: Device(SUPERIO_DEV) { Why is this in the mainboard instead of the SIO's directory?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/usb_oc.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 17: /* simple name description */ : /* : DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001 : ) : { : #include "usb.asl" : } : */ remove this block?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 38: /* USB Overcurrent GPEs */ : /* TODO: Update for Gardenia */ Just update this? Why would you leave a TODO for Gardenia in the padmelon code? Either remove the comment, or update it.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 1: /* You can remove the license header - there's really nothing to license.
If you want to keep the license for some reason, add the line that says that this file is a part of the coreboot project please.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/board_info.txt:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 2: Can't we fill out any other fields?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 121: /*DESCRIPTOR_TERMINATE_LIST, */ Remove this comment?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 140: AzaliaCodecAlc286Table Is this the correct codec for padmelon?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 162: { 0x10ec0286, AzaliaCodecAlc286Table}, : { 0x10ec0288, AzaliaCodecAlc286Table}, : { 0x10ec0888, AzaliaCodecAlc286Table}, We use the same table for 3 different codecs?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 35: /* Remove this section if HW handshake is not needed */ Is the HW handshake needed? If so, remove the comment. Otherwise, remove the block.
Looking at the comment below, it seems like they're needed for some reason, but I'm not sure why that would be.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 27: #register "uma_size" = "512 * MiB" Remove this?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 54: 51 Is 51 right (which would be 0xA2) or should this be 52 (which would be 0xA4, as shown in the table above?)
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/dsdt.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 70: 0x4E As i said in the other comment, it seem a little odd to have this defined in the ASL file.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 73: #include <superio/fintek/f81803a/acpi/superio.asl> So it is in the SIO directory. Maybe delete the copy out of the mainboard then.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/mainboard.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 35: TODO: Make ACPI use these values too. Either fix it or remove the TODO. Copying TODOs from one board to another is kind of bad form.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/romstage.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 4: * Copyright (C) 2015 Advanced Micro Devices, Inc. : * : What's the copyright on?
Maybe just remove everything and leave a blank file?
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 15:
(27 comments)
What I marked as resolved will be in the next commit, as soon as I send this. What is not marked as resolved will be uploaded on a second commit.
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG@19 PS15, Line 19: SOC
SOCs
Will do.
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG@20 PS15, Line 20: simi;ar
similar
Oops...
https://review.coreboot.org/c/coreboot/+/33993/15//COMMIT_MSG@22 PS15, Line 22: Marc
Marc Jones
Thanks.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/BiosCallOuts.h:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 31: fan runs
Either "4-wire fans run at" or "a 4-wire fan runs at". Same for the 2nd half of the sentence.
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 18: config HAVE_S3_SUPPORT
Put this under the mainboard part number?
Will do.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 22: Select it to change GPIO used for wake.
What? This help makes no sense. […]
Correct, will remove the help.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 61: Select a bit within LPC_IO_PORT_DECODE_ENABLE that will enable : access to IO port HWM_PORT, which is programmed at bootblock.
I still have no idea what this does or why it should be a Kconfig option. […]
Left over from Marc. It's hardcoded on the header file, and it's not 100... it's 0x220 (using an UART window in the LPC host controller). Will remove.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 64: config HWM_PORT
Again, does this need to be a Kconfig option? There's no prompt, why not just set it in a header fi […]
Will do.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 68: HWM
Maybe lead with what HWM stands for and what it's used for. […]
Will do.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/gpe.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 17:
You might want to verify the methods in this file. […]
They are, will revisit.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/routing.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 17: /* : DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001 : ) : { : #include "routing.asl" : } : */ :
Remove this block?
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/superio.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 49: #define SUPERIO_PNP_BASE 0x4E
It seems a little odd to define this inside an ASL file. […]
Will check
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 52: Device(SUPERIO_DEV) {
Why is this in the mainboard instead of the SIO's directory?
True, the whole file should be there. Will move.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/usb_oc.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 17: /* simple name description */ : /* : DefinitionBlock ("DSDT.AML","DSDT",0x01,"XXXXXX","XXXXXXXX",0x00010001 : ) : { : #include "usb.asl" : } : */
remove this block?
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 38: /* USB Overcurrent GPEs */ : /* TODO: Update for Gardenia */
Just update this? Why would you leave a TODO for Gardenia in the padmelon code? Either remove the […]
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi_tables.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 1: /*
You can remove the license header - there's really nothing to license. […]
Ack
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/board_info.txt:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 2:
Can't we fill out any other fields?
Will have to verify. Will try.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 121: /*DESCRIPTOR_TERMINATE_LIST, */
Remove this comment?
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 140: AzaliaCodecAlc286Table
Is this the correct codec for padmelon?
Not sure, copy from Marc's code. Will double check.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 162: { 0x10ec0286, AzaliaCodecAlc286Table}, : { 0x10ec0288, AzaliaCodecAlc286Table}, : { 0x10ec0888, AzaliaCodecAlc286Table},
We use the same table for 3 different codecs?
Not sure, again, got from Marc. Possibly because of 3 different SOCs that can be populated to this board? Will check.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 35: /* Remove this section if HW handshake is not needed */
Is the HW handshake needed? If so, remove the comment. Otherwise, remove the block. […]
They are needed for those who don't have a modified serial cable (connecting DCD to DTR and DSR, plus connecting RTS to CTS). When you buy it on any store, they don't have these modification (my case). Maybe I should add this explanation to the comment.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/devicetree.cb:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 27: #register "uma_size" = "512 * MiB"
Remove this?
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 54: 51
Is 51 right (which would be 0xA2) or should this be 52 (which would be 0xA4, as shown in the table a […]
52 (0xA4). Done.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/dsdt.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 70: 0x4E
As i said in the other comment, it seem a little odd to have this defined in the ASL file.
Will check best way.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 73: #include <superio/fintek/f81803a/acpi/superio.asl>
So it is in the SIO directory. Maybe delete the copy out of the mainboard then.
Will do.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/mainboard.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 35: TODO: Make ACPI use these values too.
Either fix it or remove the TODO. Copying TODOs from one board to another is kind of bad form.
Removed.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/romstage.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 4: * Copyright (C) 2015 Advanced Micro Devices, Inc. : * :
What's the copyright on? […]
This is a placeholder, if there ever is something platform specific to add to romstage. Maybe add a comment to that effect and remove everything else.
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#16).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Prairie Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Padmelon board was created to accept Prairie Falcon, Brown Falcon and Merlin Falcon. The requested development was for Merlin Falcon. There are some small spec changes (such as number of memory channels) between SOCs. Brown Falcon was not investigated, Prairie Falcon is very similar to Stoney Ridge.
Started from Gardenia code, added changes created by Marc Jones and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/superio.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c A src/soc/amd/common/block/include/amdblocks/fch_spi.h A src/soc/amd/common/block/spi/fch_spi.c 25 files changed, 1,742 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/16
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 16:
(12 comments)
re
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 18: config HAVE_S3_SUPPORT
Will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 22: Select it to change GPIO used for wake.
Correct, will remove the help.
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 64: config HWM_PORT
Will do.
It needs to be a config with this name... fintek code requires this to be defined.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 68: HWM
Will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/superio.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 49: #define SUPERIO_PNP_BASE 0x4E
Will check
Ack
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 52: Device(SUPERIO_DEV) {
True, the whole file should be there. Will move.
Done, whole file removed as there's a newer one under superio/fintek/f81803a
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/board_info.txt:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 2:
Will have to verify. Will try.
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 140: AzaliaCodecAlc286Table
Not sure, copy from Marc's code. Will double check.
Correct one is ALC662 adding appropriate hda_ver.c and changing Kconfig.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/bootblock/bootblock.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 35: /* Remove this section if HW handshake is not needed */
They are needed for those who don't have a modified serial cable (connecting DCD to DTR and DSR, plu […]
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/dsdt.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 70: 0x4E
Will check best way.
0x4e is not defined anywhere else, except at devicetree.cb. There's also no header file where I could easely define it, would need to create one... Would that be acceptable?
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 73: #include <superio/fintek/f81803a/acpi/superio.asl>
Will do.
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/romstage.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 4: * Copyright (C) 2015 Advanced Micro Devices, Inc. : * :
This is a placeholder, if there ever is something platform specific to add to romstage. […]
Done
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#17).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Prairie Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Padmelon board was created to accept Prairie Falcon, Brown Falcon and Merlin Falcon. The requested development was for Merlin Falcon. There are some small spec changes (such as number of memory channels) between SOCs. Brown Falcon was not investigated, Prairie Falcon is very similar to Stoney Ridge.
Started from Gardenia code, added changes created by Marc Jones and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/hda_verb.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c A src/soc/amd/common/block/include/amdblocks/fch_spi.h A src/soc/amd/common/block/spi/fch_spi.c 25 files changed, 1,574 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/17
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 17:
(5 comments)
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/Kconfig:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 61: Select a bit within LPC_IO_PORT_DECODE_ENABLE that will enable : access to IO port HWM_PORT, which is programmed at bootblock.
Left over from Marc. It's hardcoded on the header file, and it's not 100... […]
This was wrong, removed! Correct one is HWM_PORT, which is needed.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/gpe.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 17:
They are, will revisit.
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/acpi/superio.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 49: #define SUPERIO_PNP_BASE 0x4E
Ack
It's platform specific, now defined in dsdt.asl.
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/bootblock/OemCustomize.c:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 162: { 0x10ec0286, AzaliaCodecAlc286Table}, : { 0x10ec0288, AzaliaCodecAlc286Table}, : { 0x10ec0888, AzaliaCodecAlc286Table},
Not sure, again, got from Marc. […]
Done
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... File src/mainboard/amd/padmelon/dsdt.asl:
https://review.coreboot.org/c/coreboot/+/33993/15/src/mainboard/amd/padmelon... PS15, Line 70: 0x4E
0x4e is not defined anywhere else, except at devicetree.cb. […]
No response, considered done.
Hello HAOUAS Elyes, Felix Held, Marshall Dawson, Kerry Brown, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#18).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Prairie Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Padmelon board was created to accept Prairie Falcon, Brown Falcon and Merlin Falcon. The requested development was for Merlin Falcon. There are some small spec changes (such as number of memory channels) between SOCs. Brown Falcon was not investigated, Prairie Falcon is very similar to Stoney Ridge.
Started from Gardenia code, added changes created by Marc Jones and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/hda_verb.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c A src/soc/amd/common/block/include/amdblocks/fch_spi.h A src/soc/amd/common/block/spi/fch_spi.c 25 files changed, 1,535 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/18
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 18:
Ping... review please.
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 18: Code-Review+1
can you split the changes to the common amd code into another patch? the rest is probably ready for submitting (only thing that keeps me from +2ing the patch is the mix of mainboard and common code in this patch) and if there are some small changes needed they can be done in a follow-up patch
Richard Spiegel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 18:
Patch Set 18: Code-Review+1
can you split the changes to the common amd code into another patch? the rest is probably ready for submitting (only thing that keeps me from +2ing the patch is the mix of mainboard and common code in this patch) and if there are some small changes needed they can be done in a follow-up patch
Good catch... it should not be here, this is a later development (completely new and apart of this one). Added by mistake. Will remove.
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, Kerry Brown, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#19).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Prairie Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Padmelon board was created to accept Prairie Falcon, Brown Falcon and Merlin Falcon. The requested development was for Merlin Falcon. There are some small spec changes (such as number of memory channels) between SOCs. Brown Falcon was not investigated, Prairie Falcon is very similar to Stoney Ridge.
Started from Gardenia code, added changes created by Marc Jones and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/hda_verb.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c A src/soc/amd/common/block/include/amdblocks/fch_spi.h 24 files changed, 1,440 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/19
Hello Felix Held, HAOUAS Elyes, Marshall Dawson, Kerry Brown, build bot (Jenkins), Martin Roth, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/33993
to look at the new patch set (#20).
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Prairie Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Padmelon board was created to accept Prairie Falcon, Brown Falcon and Merlin Falcon. The requested development was for Merlin Falcon. There are some small spec changes (such as number of memory channels) between SOCs. Brown Falcon was not investigated, Prairie Falcon is very similar to Stoney Ridge.
Started from Gardenia code, added changes created by Marc Jones and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/hda_verb.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c 23 files changed, 1,370 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/93/33993/20
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
Patch Set 20: Code-Review+2
looks good to me as far as i looked and doesn't change common code, so let's get this merged (in 24h)
Patrick Georgi has submitted this change. ( https://review.coreboot.org/c/coreboot/+/33993 )
Change subject: mainboard/amd: Add padmelon board code ......................................................................
mainboard/amd: Add padmelon board code
Padmelon board code was written for Merlin Falcon (family 15h models 60h-6fh), but as the needed binaries are not yet merged (commit 33615), a config HAVE_MERLINFALCON_BINARIES was added. If the binaries are not available, the board defaults to Prairie Falcon, which use the same binaries as Stoney Ridge. Once the binaries are merged, the config will be eliminated. Fan control is done through F81803A SIO, and IRQ/GPIO and other board characteristics are the same regardless of Merlin Falcon or Prairie Falcon.
Padmelon board was created to accept Prairie Falcon, Brown Falcon and Merlin Falcon. The requested development was for Merlin Falcon. There are some small spec changes (such as number of memory channels) between SOCs. Brown Falcon was not investigated, Prairie Falcon is very similar to Stoney Ridge.
Started from Gardenia code, added changes created by Marc Jones and finally revised against schematic, which added changes to GPIO settings.
BUG=none. TEST=Both versions tested and boot to Linux using SeaBIOS.
Change-Id: I5a366ddeb4cfebd177a8744f6edb87aecd4787dd Signed-off-by: Richard Spiegel richard.spiegel@silverbackltd.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/33993 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Felix Held felix-coreboot@felixheld.de --- A src/mainboard/amd/padmelon/BiosCallOuts.c A src/mainboard/amd/padmelon/BiosCallOuts.h A src/mainboard/amd/padmelon/Kconfig A src/mainboard/amd/padmelon/Kconfig.name A src/mainboard/amd/padmelon/Makefile.inc A src/mainboard/amd/padmelon/OemCustomize.c A src/mainboard/amd/padmelon/acpi/gpe.asl A src/mainboard/amd/padmelon/acpi/mainboard.asl A src/mainboard/amd/padmelon/acpi/routing.asl A src/mainboard/amd/padmelon/acpi/sleep.asl A src/mainboard/amd/padmelon/acpi/usb_oc.asl A src/mainboard/amd/padmelon/acpi_tables.c A src/mainboard/amd/padmelon/board_info.txt A src/mainboard/amd/padmelon/bootblock/OemCustomize.c A src/mainboard/amd/padmelon/bootblock/bootblock.c A src/mainboard/amd/padmelon/devicetree.cb A src/mainboard/amd/padmelon/dsdt.asl A src/mainboard/amd/padmelon/fan_init.c A src/mainboard/amd/padmelon/gpio.c A src/mainboard/amd/padmelon/gpio.h A src/mainboard/amd/padmelon/hda_verb.c A src/mainboard/amd/padmelon/mainboard.c A src/mainboard/amd/padmelon/romstage.c 23 files changed, 1,370 insertions(+), 0 deletions(-)
Approvals: build bot (Jenkins): Verified Felix Held: Looks good to me, approved
diff --git a/src/mainboard/amd/padmelon/BiosCallOuts.c b/src/mainboard/amd/padmelon/BiosCallOuts.c new file mode 100644 index 0000000..3ac305d --- /dev/null +++ b/src/mainboard/amd/padmelon/BiosCallOuts.c @@ -0,0 +1,21 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2016 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <amdblocks/BiosCallOuts.h> + +void platform_FchParams_env(FCH_DATA_BLOCK *FchParams_env) +{ + +} diff --git a/src/mainboard/amd/padmelon/BiosCallOuts.h b/src/mainboard/amd/padmelon/BiosCallOuts.h new file mode 100644 index 0000000..239f7d8 --- /dev/null +++ b/src/mainboard/amd/padmelon/BiosCallOuts.h @@ -0,0 +1,46 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#define FAN_INPUT_INTERNAL_DIODE 0 +#define FAN_INPUT_TEMP0 1 +#define FAN_INPUT_TEMP1 2 +#define FAN_INPUT_TEMP2 3 +#define FAN_INPUT_TEMP3 4 +#define FAN_INPUT_TEMP0_FILTER 5 +#define FAN_INPUT_ZERO 6 +#define FAN_INPUT_DISABLED 7 + +#define FAN_AUTOMODE (1 << 0) +#define FAN_LINEARMODE (1 << 1) +#define FAN_STEPMODE ~(1 << 1) +#define FAN_POLARITY_HIGH (1 << 2) +#define FAN_POLARITY_LOW ~(1 << 2) + +/* Normally, 4-wire fans runs at 25KHz and 3-wire fans runs at 100Hz */ +#define FREQ_28KHZ 0x0 +#define FREQ_25KHZ 0x1 +#define FREQ_23KHZ 0x2 +#define FREQ_21KHZ 0x3 +#define FREQ_29KHZ 0x4 +#define FREQ_18KHZ 0x5 +#define FREQ_100HZ 0xF7 +#define FREQ_87HZ 0xF8 +#define FREQ_58HZ 0xF9 +#define FREQ_44HZ 0xFA +#define FREQ_35HZ 0xFB +#define FREQ_29HZ 0xFC +#define FREQ_22HZ 0xFD +#define FREQ_14HZ 0xFE +#define FREQ_11HZ 0xFF diff --git a/src/mainboard/amd/padmelon/Kconfig b/src/mainboard/amd/padmelon/Kconfig new file mode 100644 index 0000000..3d8efb1 --- /dev/null +++ b/src/mainboard/amd/padmelon/Kconfig @@ -0,0 +1,65 @@ +# +# This file is part of the coreboot project. +# +# Copyright (C) 2015-2018 Advanced Micro Devices, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +if BOARD_AMD_PADMELON + +config BOARD_SPECIFIC_OPTIONS # dummy + def_bool y + select SOC_AMD_MERLINFALCON + select BOARD_ROMSIZE_KB_8192 + select DRIVERS_I2C_GENERIC + select DRIVERS_PS2_KEYBOARD + select HAVE_ACPI_TABLES + select GFXUMA + select STONEYRIDGE_LEGACY_FREE + select ONBOARD_VGA_IS_PRIMARY + select BOOTBLOCK_CONSOLE + select SUPERIO_FINTEK_F81803A + select SUPERIO_FINTEK_COMMON_PRE_RAM + select SUPERIO_FINTEK_FAN_CONTROL + select SUPERIO_FINTEK_FAN_API_CALL + select VGA_BIOS + select AZALIA_PLUGIN_SUPPORT + +config MAINBOARD_DIR + string + default amd/padmelon + +config MAINBOARD_PART_NUMBER + string + default "Padmelon" + +config HAVE_S3_SUPPORT + bool + default n + +config MAX_CPUS + int + default 4 + +config IRQ_SLOT_COUNT + int + default 11 + +config HWM_PORT + hex + default 0x0225 + help + HWM base address must be an odd address. Hardware monitor used + addresses are HWM_PORT for index an HWM_PORT + 1 for data. + If changed, make sure fan_init.c IO window setting. The HWM + (Hardware Monitor) is used for fan control within padmelon. + +endif # BOARD_AMD_PADMELON diff --git a/src/mainboard/amd/padmelon/Kconfig.name b/src/mainboard/amd/padmelon/Kconfig.name new file mode 100644 index 0000000..fb88c39 --- /dev/null +++ b/src/mainboard/amd/padmelon/Kconfig.name @@ -0,0 +1,2 @@ +config BOARD_AMD_PADMELON + bool "Padmelon" diff --git a/src/mainboard/amd/padmelon/Makefile.inc b/src/mainboard/amd/padmelon/Makefile.inc new file mode 100644 index 0000000..d73c854 --- /dev/null +++ b/src/mainboard/amd/padmelon/Makefile.inc @@ -0,0 +1,27 @@ +# +# This file is part of the coreboot project. +# +# Copyright (C) 2015-2017 Advanced Micro Devices, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +bootblock-y += bootblock/bootblock.c +bootblock-y += bootblock/OemCustomize.c +bootblock-y += gpio.c + +romstage-y += BiosCallOuts.c +romstage-y += bootblock/OemCustomize.c +romstage-y += OemCustomize.c + +ramstage-y += BiosCallOuts.c +ramstage-y += gpio.c +ramstage-y += OemCustomize.c +ramstage-$(CONFIG_SUPERIO_FINTEK_FAN_API_CALL) += fan_init.c diff --git a/src/mainboard/amd/padmelon/OemCustomize.c b/src/mainboard/amd/padmelon/OemCustomize.c new file mode 100644 index 0000000..bb92733 --- /dev/null +++ b/src/mainboard/amd/padmelon/OemCustomize.c @@ -0,0 +1,50 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2017 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <chip.h> +#include <amdblocks/agesawrapper.h> + +#define DIMMS_PER_CHANNEL 1 +#if DIMMS_PER_CHANNEL > MAX_DIMMS_PER_CH +#error "Too many DIMM sockets defined for the mainboard" +#endif + +static const PSO_ENTRY DDR4PlatformMemoryConfiguration[] = { + DRAM_TECHNOLOGY(ANY_SOCKET, DDR4_TECHNOLOGY), + NUMBER_OF_DIMMS_SUPPORTED(ANY_SOCKET, CHANNEL_A, 1), + NUMBER_OF_DIMMS_SUPPORTED(ANY_SOCKET, CHANNEL_B, 1), + NUMBER_OF_CHANNELS_SUPPORTED(ANY_SOCKET, MAX_DRAM_CH), + MOTHER_BOARD_LAYERS(LAYERS_6), + MEMCLK_DIS_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00), + MEMCLK_DIS_MAP(ANY_SOCKET, CHANNEL_B, 0x01, 0x02, 0x08, 0x04, + 0x00, 0x00, 0x00, 0x00), + CKE_TRI_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x02, 0x00, 0x00), + CKE_TRI_MAP(ANY_SOCKET, CHANNEL_B, 0x05, 0x0A, 0x00, 0x00), + ODT_TRI_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x00, 0x02, 0x00), + ODT_TRI_MAP(ANY_SOCKET, CHANNEL_B, 0x01, 0x04, 0x02, 0x08), + CS_TRI_MAP(ANY_SOCKET, CHANNEL_A, 0x01, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00), + CS_TRI_MAP(ANY_SOCKET, CHANNEL_B, 0x01, 0x02, 0x04, 0x08, 0x00, + 0x00, 0x00, 0x00), + PSO_END +}; + +void OemPostParams(AMD_POST_PARAMS *PostParams) +{ + PostParams->MemConfig.PlatformMemoryConfiguration = + (PSO_ENTRY *)DDR4PlatformMemoryConfiguration; + PostParams->MemConfig.CfgUmaAbove4G = TRUE; +} diff --git a/src/mainboard/amd/padmelon/acpi/gpe.asl b/src/mainboard/amd/padmelon/acpi/gpe.asl new file mode 100644 index 0000000..c7ea19f --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/gpe.asl @@ -0,0 +1,36 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +Scope(_GPE) { /* Start Scope GPE */ + + /* General event 3 */ + Method(_L03) { + /* DBGO("\_GPE\_L03\n") */ + Notify(_SB.PWRB, 0x02) /* SIO psin -> NOTIFY_DEVICE_WAKE */ + } + + /* Power Button - PCIe Wake */ + Method(_L08) { + /* DBGO("\_GPE\_L08\n") */ + _SB.SIO0.CPSI() /* clear psin state in sio */ + Notify(_SB.PCI0.PBR4, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR5, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR6, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR7, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.PBR8, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PCI0.AZHD, 0x02) /* NOTIFY_DEVICE_WAKE */ + Notify(_SB.PWRB, 0x02) /* NOTIFY_DEVICE_WAKE */ + } +} /* End Scope GPE */ diff --git a/src/mainboard/amd/padmelon/acpi/mainboard.asl b/src/mainboard/amd/padmelon/acpi/mainboard.asl new file mode 100644 index 0000000..db5731f --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/mainboard.asl @@ -0,0 +1,28 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* Memory related values */ +Name(LOMH, 0x0) /* Start of unused memory in C0000-E0000 range */ +Name(PBAD, 0x0) /* Address of BIOS area (If TOM2 != 0, Addr >> 16) */ +Name(PBLN, 0x0) /* Length of BIOS area */ + +Name(PCBA, CONFIG_MMCONF_BASE_ADDRESS) /* Base address of PCIe config space */ +Name(PCLN, Multiply(0x100000, CONFIG_MMCONF_BUS_NUMBER)) /* Length of PCIe config space, 1MB each bus */ +Name(HPBA, 0xFED00000) /* Base address of HPET table */ + +/* Some global data */ +Name(OSVR, 3) /* Assume nothing. WinXp = 1, Vista = 2, Linux = 3, WinCE = 4 */ +Name(OSV, Ones) /* Assume nothing */ +Name(PMOD, One) /* Assume APIC */ diff --git a/src/mainboard/amd/padmelon/acpi/routing.asl b/src/mainboard/amd/padmelon/acpi/routing.asl new file mode 100644 index 0000000..64d975e --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/routing.asl @@ -0,0 +1,216 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* Routing is in System Bus scope */ +Name(PR0, Package(){ + /* NB devices */ + /* Bus 0, Dev 0 - F15 Host Controller */ + + /* Bus 0, Dev 1 - PCI Bridge for Internal Graphics(IGP) */ + /* Bus 0, Dev 1, Func 1 - HDMI Audio Controller */ + Package(){0x0001FFFF, 0, INTB, 0 }, + Package(){0x0001FFFF, 1, INTC, 0 }, + + + /* Bus 0, Dev 2 Func 0,1,2,3,4,5 - PCIe Bridges */ + Package(){0x0002FFFF, 0, INTC, 0 }, + Package(){0x0002FFFF, 1, INTD, 0 }, + Package(){0x0002FFFF, 2, INTA, 0 }, + Package(){0x0002FFFF, 3, INTB, 0 }, + + /* FCH devices */ + /* Bus 0, Dev 20 - F0:SMBus/ACPI,F2:HDAudio;F3:LPC;F7:SD */ + Package(){0x0014FFFF, 0, INTA, 0 }, + Package(){0x0014FFFF, 1, INTB, 0 }, + Package(){0x0014FFFF, 2, INTC, 0 }, + Package(){0x0014FFFF, 3, INTD, 0 }, + + /* Bus 0, Dev 18 Func 0 - USB: EHCI */ + Package(){0x0012FFFF, 0, INTC, 0 }, + Package(){0x0012FFFF, 1, INTB, 0 }, + + /* Bus 0, Dev 16 Func 0 - USB: xHCI */ + Package(){0x0010FFFF, 0, INTC, 0 }, + Package(){0x0010FFFF, 1, INTB, 0 }, + + /* Bus 0, Dev 17 - SATA controller */ + Package(){0x0011FFFF, 0, INTD, 0 }, +}) + +Name(APR0, Package(){ + /* NB devices in APIC mode */ + /* Bus 0, Dev 0 - F15 Host Controller */ + + /* Bus 0, Dev 1 - PCI Bridge for Internal Graphics(IGP) */ + Package(){0x0001FFFF, 0, 0, 43 }, + Package(){0x0001FFFF, 1, 0, 40 }, + + /* Bus 0, Dev 2 - PCIe Bridges */ + Package(){0x0002FFFF, 0, 0, 44 }, + Package(){0x0002FFFF, 1, 0, 45 }, + Package(){0x0002FFFF, 2, 0, 46 }, + Package(){0x0002FFFF, 3, 0, 47 }, + + Package(){0x0003FFFF, 0, 0, 49 }, + Package(){0x0003FFFF, 1, 0, 50 }, + Package(){0x0003FFFF, 2, 0, 51 }, + Package(){0x0003FFFF, 3, 0, 52 }, + + Package(){0x0008FFFF, 0, 0, 35 }, + Package(){0x0008FFFF, 1, 0, 32 }, + Package(){0x0008FFFF, 2, 0, 33 }, + Package(){0x0008FFFF, 3, 0, 34 }, + + /* SB devices in APIC mode */ + /* Bus 0, Dev 20 - F0:SMBus/ACPI,F2:HDAudio;F3:LPC;F7:SD */ + Package(){0x0014FFFF, 0, 0, 16 }, + Package(){0x0014FFFF, 1, 0, 17 }, + Package(){0x0014FFFF, 2, 0, 18 }, + Package(){0x0014FFFF, 3, 0, 19 }, + + /* Bus 0, Dev 18, 19, 22 Func 0 - USB: OHCI */ + /* Bus 0, Dev 18, 19, 22 Func 1 - USB: EHCI */ + Package(){0x0012FFFF, 0, 0, 18 }, + Package(){0x0012FFFF, 1, 0, 17 }, + + Package(){0x0013FFFF, 0, 0, 18 }, + Package(){0x0013FFFF, 1, 0, 17 }, + + /* Bus 0, Dev 16 - USB: XHCI func 0, 1 */ + Package(){0x0010FFFF, 0, 0, 18}, + Package(){0x0010FFFF, 1, 0, 17}, + + /* Bus 0, Dev 17 - SATA controller */ + Package(){0x0011FFFF, 0, 0, 19 }, + + /* Bus 0, Dev 9, Func 2 - HDAudio */ + Package(){0x0009FFFF, 0, 0, 46 }, + Package(){0x0009FFFF, 1, 0, 47 }, + Package(){0x0009FFFF, 2, 0, 44 }, + Package(){0x0009FFFF, 3, 0, 45 }, +}) + +Name(PS4, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS4, Package(){ + /* PCIe slot - Hooked to PCIe slot 4 */ + Package(){0x0000FFFF, 0, 0, 24 }, + Package(){0x0000FFFF, 1, 0, 25 }, + Package(){0x0000FFFF, 2, 0, 26 }, + Package(){0x0000FFFF, 3, 0, 27 }, +}) + +/* GPP 1 */ +Name(PS5, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS5, Package(){ + Package(){0x0000FFFF, 0, 0, 32 }, + Package(){0x0000FFFF, 1, 0, 33 }, + Package(){0x0000FFFF, 2, 0, 34 }, + Package(){0x0000FFFF, 3, 0, 35 }, +}) + +/* GPP 2 */ +Name(PS6, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS6, Package(){ + Package(){0x0000FFFF, 0, 0, 40 }, + Package(){0x0000FFFF, 1, 0, 41 }, + Package(){0x0000FFFF, 2, 0, 42 }, + Package(){0x0000FFFF, 3, 0, 43 }, +}) + +/* GPP 3 */ +Name(PS7, Package(){ + Package(){0x0000FFFF, 0, INTA, 0 }, + Package(){0x0000FFFF, 1, INTB, 0 }, + Package(){0x0000FFFF, 2, INTC, 0 }, + Package(){0x0000FFFF, 3, INTD, 0 }, +}) +Name(APS7, Package(){ + Package(){0x0000FFFF, 0, 0, 48 }, + Package(){0x0000FFFF, 1, 0, 49 }, + Package(){0x0000FFFF, 2, 0, 50 }, + Package(){0x0000FFFF, 3, 0, 51 }, +}) + +/* GPP 4 */ +Name(PS8, Package(){ + Package(){0x0000FFFF, 0, INTD, 0 }, + Package(){0x0000FFFF, 1, INTA, 0 }, + Package(){0x0000FFFF, 2, INTB, 0 }, + Package(){0x0000FFFF, 3, INTC, 0 }, +}) +Name(APS8, Package(){ + Package(){0x0000FFFF, 0, 0, 27 }, + Package(){0x0000FFFF, 1, 0, 28 }, + Package(){0x0000FFFF, 2, 0, 28 }, + Package(){0x0000FFFF, 3, 0, 30 }, +}) + +/* GFX 2 */ +Name(PSA, Package(){ + Package(){0x0000FFFF, 0, INTD, 0 }, + Package(){0x0000FFFF, 1, INTA, 0 }, + Package(){0x0000FFFF, 2, INTB, 0 }, + Package(){0x0000FFFF, 3, INTC, 0 }, +}) +Name(APSA, Package(){ + Package(){0x0000FFFF, 0, 0, 51 }, + Package(){0x0000FFFF, 1, 0, 48 }, + Package(){0x0000FFFF, 2, 0, 49 }, + Package(){0x0000FFFF, 3, 0, 50 }, +}) + +/* GFX 3 */ +Name(PSB, Package(){ + Package(){0x0000FFFF, 0, INTC, 0 }, + Package(){0x0000FFFF, 1, INTD, 0 }, + Package(){0x0000FFFF, 2, INTA, 0 }, + Package(){0x0000FFFF, 3, INTB, 0 }, +}) +Name(APSB, Package(){ + Package(){0x0000FFFF, 0, 0, 26 }, + Package(){0x0000FFFF, 1, 0, 27 }, + Package(){0x0000FFFF, 2, 0, 24 }, + Package(){0x0000FFFF, 3, 0, 25 }, +}) + +/* GFX 4 */ +Name(PSC, Package(){ + Package(){0x0000FFFF, 0, INTC, 0 }, + Package(){0x0000FFFF, 1, INTD, 0 }, + Package(){0x0000FFFF, 2, INTA, 0 }, + Package(){0x0000FFFF, 3, INTB, 0 }, +}) +Name(APSC, Package(){ + Package(){0x0000FFFF, 0, 0, 34 }, + Package(){0x0000FFFF, 1, 0, 35 }, + Package(){0x0000FFFF, 2, 0, 32 }, + Package(){0x0000FFFF, 3, 0, 33 }, +}) diff --git a/src/mainboard/amd/padmelon/acpi/sleep.asl b/src/mainboard/amd/padmelon/acpi/sleep.asl new file mode 100644 index 0000000..58f0752 --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/sleep.asl @@ -0,0 +1,86 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* Wake status package */ +Name(WKST,Package(){Zero, Zero}) + +/* +* _PTS - Prepare to Sleep method +* +* Entry: +* Arg0=The value of the sleeping state S1=1, S2=2, etc +* +* Exit: +* -none- +* +* The _PTS control method is executed at the beginning of the sleep process +* for S1-S5. The sleeping value is passed to the _PTS control method. This +* control method may be executed a relatively long time before entering the +* sleep state and the OS may abort the operation without notification to +* the ACPI driver. This method cannot modify the configuration or power +* state of any device in the system. +*/ +Method(_PTS, 1) { + /* DBGO("\_PTS\n") */ + /* DBGO("From S0 to S") */ + /* DBGO(Arg0) */ + /* DBGO("\n") */ + + /* Clear wake status structure. */ + Store(0, PEWD) + Store(0, Index(WKST,0)) + Store(0, Index(WKST,1)) + Store(7, UPWS) +} /* End Method(_PTS) */ + +/* +* _BFS OEM Back From Sleep method +* +* Entry: +* Arg0=The value of the sleeping state S1=1, S2=2 +* +* Exit: +* -none- +*/ +Method(_BFS, 1) { + /* DBGO("\_BFS\n") */ + /* DBGO("From S") */ + /* DBGO(Arg0) */ + /* DBGO(" to S0\n") */ +} + +/* +* _WAK System Wake method +* +* Entry: +* Arg0=The value of the sleeping state S1=1, S2=2 +* +* Exit: +* Return package of 2 DWords +* Dword 1 - Status +* 0x00000000 wake succeeded +* 0x00000001 Wake was signaled but failed due to lack of power +* 0x00000002 Wake was signaled but failed due to thermal condition +* Dword 2 - Power Supply state +* if non-zero the effective S-state the power supply entered +*/ +Method(_WAK, 1) { + /* DBGO("\_WAK\n") */ + /* DBGO("From S") */ + /* DBGO(Arg0) */ + /* DBGO(" to S0\n") */ + + Return(WKST) +} /* End Method(_WAK) */ diff --git a/src/mainboard/amd/padmelon/acpi/usb_oc.asl b/src/mainboard/amd/padmelon/acpi/usb_oc.asl new file mode 100644 index 0000000..bd98ed2 --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi/usb_oc.asl @@ -0,0 +1,27 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * Copyright (C) 2013 Sage Electronic Engineering, LLC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* USB overcurrent mapping pins. */ +Name(UOM0, 0) +Name(UOM1, 2) +Name(UOM2, 0) +Name(UOM3, 7) +Name(UOM4, 2) +Name(UOM5, 2) +Name(UOM6, 6) +Name(UOM7, 2) +Name(UOM8, 6) +Name(UOM9, 6) diff --git a/src/mainboard/amd/padmelon/acpi_tables.c b/src/mainboard/amd/padmelon/acpi_tables.c new file mode 100644 index 0000000..e06f6a6 --- /dev/null +++ b/src/mainboard/amd/padmelon/acpi_tables.c @@ -0,0 +1,3 @@ +/* + * Blank file required by build system assumptions of this file being present. + */ diff --git a/src/mainboard/amd/padmelon/board_info.txt b/src/mainboard/amd/padmelon/board_info.txt new file mode 100644 index 0000000..4bca78c --- /dev/null +++ b/src/mainboard/amd/padmelon/board_info.txt @@ -0,0 +1,7 @@ +Vendor name: AMD +Board name: Padmelon +Category: desktop +ROM package: SOIC-8 +ROM protocol: SPI +ROM socketed: n +Flashrom support: dediprog header diff --git a/src/mainboard/amd/padmelon/bootblock/OemCustomize.c b/src/mainboard/amd/padmelon/bootblock/OemCustomize.c new file mode 100644 index 0000000..02f83cc --- /dev/null +++ b/src/mainboard/amd/padmelon/bootblock/OemCustomize.c @@ -0,0 +1,159 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2016 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <amdblocks/agesawrapper.h> + +static const PCIe_PORT_DESCRIPTOR PortList[] = { + /* + * Init Port descriptor (PCIe port, Lanes 8-15, + * PCI Device Number 3, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 8, 15), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 3, 1, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x02, 0) + }, + + /* + * Initialize Port descriptor (PCIe port, Lane 7, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 7, 7), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 2, 5, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x03, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lane 6, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 6, 6), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 2, 4, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x04, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lane 5, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PcieUnusedEngine, 5, 5), + PCIE_PORT_DATA_INITIALIZER_V2(PortDisabled, ChannelTypeExt6db, + 2, 3, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x04, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lane4, + * PCI Device Number 2, ...) + */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 4, 4), + PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, + 2, 2, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x06, 0) + }, + /* + * Initialize Port descriptor (PCIe port, Lanes 0-3, + * PCI Device Number 2, ...) + */ + { + /* + * Descriptor flags !!!IMPORTANT!!! Terminate last element + * of array + */ + DESCRIPTOR_TERMINATE_LIST, + PCIE_ENGINE_DATA_INITIALIZER(PcieUnusedEngine, 0, 3), + PCIE_PORT_DATA_INITIALIZER_V2(PortDisabled, ChannelTypeExt6db, + 2, 1, + HotplugDisabled, + PcieGenMaxSupported, + PcieGenMaxSupported, + AspmDisabled, 0x07, 0) + }, + +}; + + +static const PCIe_DDI_DESCRIPTOR DdiList[] = { + /* DP0 */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 16, 19), + PCIE_DDI_DATA_INITIALIZER(ConnectorTypeDP, Aux1, Hdp1) + }, + /* DP1 */ + { + 0, + PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 20, 23), + PCIE_DDI_DATA_INITIALIZER(ConnectorTypeDP, Aux2, Hdp2) + }, + /* DP2 */ + { + DESCRIPTOR_TERMINATE_LIST, + PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 24, 27), + PCIE_DDI_DATA_INITIALIZER(ConnectorTypeDP, Aux3, Hdp3) + }, +}; + +static const PCIe_COMPLEX_DESCRIPTOR PcieComplex = { + .Flags = DESCRIPTOR_TERMINATE_LIST, + .SocketId = 0, + .PciePortList = (void *)PortList, + .DdiLinkList = (void *)DdiList +}; + +/*---------------------------------------------------------------------------*/ +/** + * OemCustomizeInitEarly + * + * Description: + * This is the stub function will call the host environment through the + * binary block interface (call-out port) to provide a user hook opportunity. + * + * Parameters: + * @param[in] **PeiServices + * @param[in] *InitEarly + * + * @retval VOID + * + **/ +/*---------------------------------------------------------------------------*/ +VOID OemCustomizeInitEarly(AMD_EARLY_PARAMS *InitEarly) +{ + InitEarly->GnbConfig.PcieComplexList = (void *)&PcieComplex; +} diff --git a/src/mainboard/amd/padmelon/bootblock/bootblock.c b/src/mainboard/amd/padmelon/bootblock/bootblock.c new file mode 100644 index 0000000..8649287 --- /dev/null +++ b/src/mainboard/amd/padmelon/bootblock/bootblock.c @@ -0,0 +1,64 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2017-2018 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <bootblock_common.h> +#include <soc/southbridge.h> +#include <amdblocks/lpc.h> +#include <device/pci.h> +#include <device/pci_ops.h> +#include <soc/pci_devs.h> +#include <drivers/uart/uart8250reg.h> +#include <arch/io.h> +#include "../gpio.h" + +/* Enable IO access to port, then enable UART HW control pins */ +static void enable_serial(unsigned int base_port, unsigned int io_enable) +{ + u32 temp; + u8 reg; + temp = pci_read_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE); + temp |= io_enable; + pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, temp); + + /* + * Remove this section if HW handshake is not needed. This is needed + * only for those who don't have a modified serial cable (connecting + * DCD to DTR and DSR, plus connecting RTS to CTS). When you buy cables + * on any store, they don't have these modification. + */ + reg = inb(base_port + UART8250_MCR); + reg |= UART8250_MCR_DTR | UART8250_MCR_RTS; + outb(reg, base_port + UART8250_MCR); +} + +void bootblock_mainboard_early_init(void) +{ + sb_clk_output_48Mhz(2); + /* + * UARTs enabled by default at reset, just need RTS, CTS + * and access to the IO address. + */ + enable_serial(0x03f8, DECODE_ENABLE_SERIAL_PORT0); + enable_serial(0x02f8, DECODE_ENABLE_SERIAL_PORT1); +} + +void bootblock_mainboard_init(void) +{ + size_t num_gpios; + const struct soc_amd_gpio *gpios; + + gpios = early_gpio_table(&num_gpios); + program_gpios(gpios, num_gpios); +} diff --git a/src/mainboard/amd/padmelon/devicetree.cb b/src/mainboard/amd/padmelon/devicetree.cb new file mode 100644 index 0000000..9baee2f --- /dev/null +++ b/src/mainboard/amd/padmelon/devicetree.cb @@ -0,0 +1,84 @@ +# +# This file is part of the coreboot project. +# +# Copyright (C) 2015-2017 Advanced Micro Devices, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +chip soc/amd/stoneyridge + + register "spd_addr_lookup" = " + { +#if CONFIG(HAVE_MERLINFALCON_BINARIES) + { {0xA0, 0x00}, {0xA4, 0x00} }, // socket 0 - Channel 0 & 1, slot 0 +#else + { {0xA0, 0x00} }, // socket 0 - Channel 0, slot 0 +#endif + }" + + register "uma_mode" = "UMAMODE_AUTO_LEGACY" + + device cpu_cluster 0 on + device lapic 10 on end + end + + device domain 0 on + subsystemid 0x1022 0x1410 inherit + device pci 0.0 on end # Root Complex + device pci 1.0 on end # Internal Graphics P2P bridge 0x9874 + device pci 1.1 on end # Internal Multimedia + device pci 2.0 on end # PCIe Host Bridge + device pci 2.1 on end # mini PCIe slot x1 + device pci 2.3 on end # LAN RTL8111F + device pci 2.4 on end # LAN RTL8111F + device pci 3.0 on end # GFX host bridge + device pci 8.0 on end # PSP + device pci 9.0 on end # HDA + device pci 9.2 on end # HDA + device pci 10.0 on end # USB xHCI + device pci 11.0 on end # SATA + device pci 12.0 on end # USB EHCI + device pci 14.0 on # SM + chip drivers/generic/generic #dimm 0-0-0 + device i2c 50 on end + end + chip drivers/generic/generic #dimm 0-1-0 + device i2c 52 on end + end + end # SM + device pci 14.3 on # LPC 0x439d + chip superio/fintek/f81803a + device pnp 4e.1 on # COM1 + io 0x60 = 0x3f8 + irq 0x70 = 4 + end + device pnp 4e.2 on # COM2 + io 0x60 = 0x2f8 + irq 0x70 = 3 + end + device pnp 4e.4 on # HWM + io 0x60 = 0x220 + irq 0x70 = 0 + end + device pnp 4e.5 off end # KBC + device pnp 4e.6 off end # GPIO + device pnp 4e.7 off end # WDT + device pnp 4e.a off end # PME + end # f81803a + end # LPC + device pci 14.7 on end # SD + device pci 18.0 on end + device pci 18.1 on end + device pci 18.2 on end + device pci 18.3 on end + device pci 18.4 on end + device pci 18.5 on end + end #domain +end #soc/amd/stoneyridge diff --git a/src/mainboard/amd/padmelon/dsdt.asl b/src/mainboard/amd/padmelon/dsdt.asl new file mode 100644 index 0000000..493c4ac --- /dev/null +++ b/src/mainboard/amd/padmelon/dsdt.asl @@ -0,0 +1,80 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2017 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* DefinitionBlock Statement */ +#include <arch/acpi.h> +DefinitionBlock ( + "DSDT.AML", /* Output filename */ + "DSDT", /* Signature */ + 0x02, /* DSDT Revision, needs to be 2 for 64bit */ + OEM_ID, + ACPI_TABLE_CREATOR, + 0x00010001 /* OEM Revision */ + ) +{ /* Start of ASL file */ + /* #include <arch/x86/acpi/debug.asl> */ /* as needed */ + + /* global NVS and variables */ + #include <globalnvs.asl> + + /* Globals for the platform */ + #include "acpi/mainboard.asl" + + /* Describe the USB Overcurrent pins */ + #include "acpi/usb_oc.asl" + + /* PCI IRQ mapping for the Southbridge */ + #include <pcie.asl> + + /* Describe the processor tree (_PR) */ + #include <cpu.asl> + + /* Contains the supported sleep states for this chipset */ + #include <sleepstates.asl> + + /* Contains the Sleep methods (WAK, PTS, GTS, etc.) */ + #include "acpi/sleep.asl" + + /* System Bus */ + Scope(_SB) { /* Start _SB scope */ + /* global utility methods expected within the _SB scope */ + #include <arch/x86/acpi/globutil.asl> + + /* IRQ Routing mapping for this platform (in _SB scope) */ + #include "acpi/routing.asl" + + Device(PWRB) { + Name(_HID, EISAID("PNP0C0C")) + Name(_UID, 0xAA) + Name(_PRW, Package () {3, 0x04}) + Name(_STA, 0x0B) + } + + /* Describe the SOC */ + #include <soc.asl> + + /* Describe the Fintek F81803A SIO */ + #define SUPERIO_DEV SIO0 + #define SUPERIO_PNP_BASE 0x4E + #define F81803A_SHOW_UARTA + #define F81803A_SHOW_PME + #include <superio/fintek/f81803a/acpi/superio.asl> + + } /* End _SB scope */ + + /* Define the General Purpose Events for the platform */ + #include "acpi/gpe.asl" +} +/* End of ASL file */ diff --git a/src/mainboard/amd/padmelon/fan_init.c b/src/mainboard/amd/padmelon/fan_init.c new file mode 100644 index 0000000..2c32005 --- /dev/null +++ b/src/mainboard/amd/padmelon/fan_init.c @@ -0,0 +1,99 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2019 Richard Spiegel richard.spiegel@silverbackltd.com + * Copyright (C) 2019 Silverback ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <bootstate.h> +#include <superio/fintek/common/fan_control.h> +#include <amdblocks/lpc.h> +#include <device/pci_ops.h> +#include <soc/pci_devs.h> + +#define CPU_FAN 1 +#define SYSTEM_FAN 2 + +/* Boundaries in celsius, sections in percent */ +static u8 cpu_boudaries[FINTEK_BOUNDARIES_SIZE] = { + 80, + 65, + 50, + 35 +}; + +static u8 system_boudaries[FINTEK_BOUNDARIES_SIZE] = { + 70, + 55, + 40, + 25 +}; + +static u8 cpu_section[FINTEK_SECTIONS_SIZE] = { + 100, + 85, + 70, + 55, + 40 +}; + +static u8 system_section[FINTEK_SECTIONS_SIZE] = { + 100, + 85, + 70, + 55, + 40 +}; + +struct fintek_fan cpu_fan = { + CPU_FAN, + IGNORE_SENSOR, + TEMP_SENSOR_DEFAULT, + FAN_TEMP_TSI, + FAN_TYPE_PWM_PUSH_PULL, + FAN_MODE_DEFAULT, + FAN_PWM_FREQ_23500, + FAN_UP_RATE_10HZ, + FAN_DOWN_RATE_10HZ, + FAN_FOLLOW_INTERPOLATION, + cpu_boudaries, + cpu_section +}; + +struct fintek_fan system_fan = { + SYSTEM_FAN, + EXTERNAL_SENSOR2, + TEMP_SENSOR_BJT, + FAN_TEMP_EXTERNAL_2, + FAN_TYPE_DAC_POWER, + FAN_MODE_DEFAULT, + FAN_PWM_FREQ_23500, + FAN_UP_RATE_10HZ, + FAN_DOWN_RATE_10HZ, + FAN_FOLLOW_INTERPOLATION, + system_boudaries, + system_section +}; + +static void init_fan_control(void *unused) +{ + u32 temp; + /* Open a LPC IO access to 0x0220-0x0227 */ + temp = pci_read_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE); + temp |= DECODE_ENABLE_SERIAL_PORT2; + pci_write_config32(SOC_LPC_DEV, LPC_IO_PORT_DECODE_ENABLE, temp); + + set_fan(&cpu_fan); + set_fan(&system_fan); +} + +BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY, init_fan_control, NULL); diff --git a/src/mainboard/amd/padmelon/gpio.c b/src/mainboard/amd/padmelon/gpio.c new file mode 100644 index 0000000..e738618 --- /dev/null +++ b/src/mainboard/amd/padmelon/gpio.c @@ -0,0 +1,67 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015-2016 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <amdblocks/agesawrapper.h> +#include <amdblocks/BiosCallOuts.h> +#include <soc/southbridge.h> +#include <stdlib.h> +#include "gpio.h" + +/* + * As a rule of thumb, GPIO pins used by coreboot should be initialized at + * bootblock while GPIO pins used only by the OS should be initialized at + * ramstage. + */ +static const struct soc_amd_gpio gpio_set_stage_reset[] = { + /* GFX presense detect */ + PAD_GPI(GPIO_9, PULL_DOWN), + /* VDDP_VCTRL */ + PAD_GPO(GPIO_40, HIGH), + /* PC SPKR */ + PAD_NF(GPIO_91, SPKR, PULL_NONE), +}; + +static const struct soc_amd_gpio gpio_set_stage_ram[] = { +#if CONFIG(HAVE_S3_SUPPORT) + /* PCIE_WAKE - default, do not program */ + + /* DEVSLP1 */ + PAD_NF(GPIO_70, DEVSLP1, PULL_UP), + /* WLAND */ + PAD_SCI(GPIO_137, PULL_UP, LEVEL_LOW), + PAD_WAKE(GPIO_137, PULL_UP, LEVEL_LOW, S3), +#else + /* PCIE_WAKE */ + PAD_GPI(GPIO_2, PULL_DOWN), + /* DEVSLP1 - default as GPIO, do not program */ + + /* WLAND - default as GPIO, do not program */ + +#endif /* HAVE_S3_SUPPORT */ + /* BLINK - reselect GPIO OUTPUT HIGH to force BLINK */ + PAD_GPO(GPIO_11, HIGH), +}; + +const struct soc_amd_gpio *early_gpio_table(size_t *size) +{ + *size = ARRAY_SIZE(gpio_set_stage_reset); + return gpio_set_stage_reset; +} + +const struct soc_amd_gpio *gpio_table(size_t *size) +{ + *size = ARRAY_SIZE(gpio_set_stage_ram); + return gpio_set_stage_ram; +} diff --git a/src/mainboard/amd/padmelon/gpio.h b/src/mainboard/amd/padmelon/gpio.h new file mode 100644 index 0000000..b448d3c --- /dev/null +++ b/src/mainboard/amd/padmelon/gpio.h @@ -0,0 +1,24 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2018 Google Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef MAINBOARD_GPIO_H +#define MAINBOARD_GPIO_H + +#include <soc/gpio.h> + +const struct soc_amd_gpio *early_gpio_table(size_t *size); +const struct soc_amd_gpio *gpio_table(size_t *size); + +#endif /* MAINBOARD_GPIO_H */ diff --git a/src/mainboard/amd/padmelon/hda_verb.c b/src/mainboard/amd/padmelon/hda_verb.c new file mode 100644 index 0000000..23d566d --- /dev/null +++ b/src/mainboard/amd/padmelon/hda_verb.c @@ -0,0 +1,43 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2017 Arthur Heymans arthur@aheymans.xyz + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <device/azalia_device.h> + +const u32 cim_verb_data[] = { + /* coreboot specific header */ + /* Realtek ALC662 rev1 */ + 0x10ec0662, /* Vendor ID */ + 0x80865756, /* Subsystem ID */ + 10, /* Number of entries */ + + /* Pin Widget Verb Table */ + + AZALIA_PIN_CFG(0, 0x14, 0x01014010), + AZALIA_PIN_CFG(0, 0x15, 0x411111f0), + AZALIA_PIN_CFG(0, 0x16, 0x411111f0), + AZALIA_PIN_CFG(0, 0x18, 0x01a19840), + AZALIA_PIN_CFG(0, 0x19, 0x02a19c50), + AZALIA_PIN_CFG(0, 0x1a, 0x0181304f), + AZALIA_PIN_CFG(0, 0x1b, 0x02214c20), + AZALIA_PIN_CFG(0, 0x1c, 0x593301f0), + AZALIA_PIN_CFG(0, 0x1d, 0x4004c601), + AZALIA_PIN_CFG(0, 0x1e, 0x01441130), +}; + +const u32 pc_beep_verbs[0] = {}; + +const u32 pc_beep_verbs_size = ARRAY_SIZE(pc_beep_verbs); +const u32 cim_verb_data_size = ARRAY_SIZE(cim_verb_data); diff --git a/src/mainboard/amd/padmelon/mainboard.c b/src/mainboard/amd/padmelon/mainboard.c new file mode 100644 index 0000000..e106b4a --- /dev/null +++ b/src/mainboard/amd/padmelon/mainboard.c @@ -0,0 +1,132 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <console/console.h> +#include <device/device.h> +#include <arch/acpi.h> +#include <amdblocks/agesawrapper.h> +#include <amdblocks/amd_pci_util.h> +#include <soc/pci_devs.h> +#include <soc/southbridge.h> + +#include "gpio.h" + +/*********************************************************** + * These arrays set up the FCH PCI_INTR registers 0xC00/0xC01. + * This table is responsible for physically routing the PIC and + * IOAPIC IRQs to the different PCI devices on the system. It + * is read and written via registers 0xC00/0xC01 as an + * Index/Data pair. These values are chipset and mainboard + * dependent and should be updated accordingly. + * + * These values are used by the PCI configuration space, + * MP Tables. + */ +const u8 mainboard_picr_data[] = { + [0x00] = 0x03, 0x04, 0x05, 0x07, 0x0B, 0x0A, 0x1F, 0x1F, + [0x08] = 0xFA, 0xF1, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, + [0x10] = 0x1F, 0x1F, 0x1F, 0x03, 0x1F, 0x1F, 0x1F, 0x1F, + [0x18] = 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, + [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x30] = 0x05, 0x04, 0x05, 0x04, 0x04, 0x05, 0x04, 0x05, + [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x40] = 0x04, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x50] = 0x03, 0x04, 0x05, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, + [0x58] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + [0x60] = 0x1F, 0x1F, 0x07, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + [0x68] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + [0x70] = 0x03, 0x0F, 0x06, 0x0E, 0x0A, 0x0B, 0x1F, 0x1F, + [0x78] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, +}; + +const u8 mainboard_intr_data[] = { + [0x00] = 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + [0x08] = 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, + [0x10] = 0x09, 0x1F, 0x1F, 0x10, 0x1F, 0x1F, 0x1F, 0x10, + [0x18] = 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x20] = 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, + [0x28] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x30] = 0x12, 0x11, 0x12, 0x11, 0x12, 0x11, 0x12, 0x00, + [0x38] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x40] = 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x48] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x50] = 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, + [0x58] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x60] = 0x1F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x68] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + [0x70] = 0x03, 0x0F, 0x06, 0x0E, 0x0A, 0x0B, 0x1F, 0x1F, + [0x78] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* + * This table defines the index into the picr/intr_data tables for each + * device. Any enabled device and slot that uses hardware interrupts should + * have an entry in this table to define its index into the FCH PCI_INTR + * register 0xC00/0xC01. This index will define the interrupt that it should + * use. Putting PIRQ_A into the PIN A index for a device will tell that + * device to use PIC IRQ 10 if it uses PIN A for its hardware INT. + */ +static const struct pirq_struct mainboard_pirq_data[] = { + { GFX_DEVFN, { PIRQ_A, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { HDA0_DEVFN, { PIRQ_NC, PIRQ_HDA, PIRQ_NC, PIRQ_NC } }, + { PCIE0_DEVFN, { PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D } }, + { PCIE1_DEVFN, { PIRQ_B, PIRQ_C, PIRQ_D, PIRQ_A } }, + { PCIE2_DEVFN, { PIRQ_C, PIRQ_D, PIRQ_A, PIRQ_B } }, + { PCIE3_DEVFN, { PIRQ_D, PIRQ_A, PIRQ_B, PIRQ_C } }, + { PCIE4_DEVFN, { PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D } }, + { PSP_DEVFN, { PIRQ_A, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { HDA1_DEVFN, { PIRQ_HDA, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { SD_DEVFN, { PIRQ_SD, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { SMBUS_DEVFN, { PIRQ_SMBUS, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { SATA_DEVFN, { PIRQ_SATA, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { EHCI1_DEVFN, { PIRQ_EHCI, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, + { XHCI_DEVFN, { PIRQ_XHCI, PIRQ_NC, PIRQ_NC, PIRQ_NC } }, +}; + +/* PIRQ Setup */ +static void pirq_setup(void) +{ + pirq_data_ptr = mainboard_pirq_data; + pirq_data_size = ARRAY_SIZE(mainboard_pirq_data); + intr_data_ptr = mainboard_intr_data; + picr_data_ptr = mainboard_picr_data; +} + +static void mainboard_init(void *chip_info) +{ + size_t num_gpios; + const struct soc_amd_gpio *gpios; + gpios = gpio_table(&num_gpios); + program_gpios(gpios, num_gpios); +} + +/************************************************* + * enable the dedicated function in padmelon board. + *************************************************/ +static void padmelon_enable(struct device *dev) +{ + printk(BIOS_INFO, "Mainboard " + CONFIG_MAINBOARD_PART_NUMBER " Enable.\n"); + + /* Initialize the PIRQ data structures for consumption */ + pirq_setup(); +} + +struct chip_operations mainboard_ops = { + .init = mainboard_init, + .enable_dev = padmelon_enable, +}; diff --git a/src/mainboard/amd/padmelon/romstage.c b/src/mainboard/amd/padmelon/romstage.c new file mode 100644 index 0000000..68bf0e8 --- /dev/null +++ b/src/mainboard/amd/padmelon/romstage.c @@ -0,0 +1,4 @@ +/* + * This is a placeholder, if there ever is something platform specific to + * add to romstage, do it here. + */