blob: 019fff2a88f73be6565b739f285160c7387df328 [file] [log] [blame]
Angel Pons381c4eb2020-04-03 01:22:06 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Kyösti Mälkkie75deb62014-06-26 09:12:54 +03002
Elyes HAOUAS19f5ba82018-10-14 14:52:06 +02003#include <AGESA.h>
Kyösti Mälkki53052fe2016-04-27 09:04:11 +03004#include <PlatformMemoryConfiguration.h>
Kyösti Mälkkie75deb62014-06-26 09:12:54 +03005
Kyösti Mälkkif27cb242017-03-04 07:51:21 +02006#include <northbridge/amd/agesa/state_machine.h>
Kyösti Mälkkie75deb62014-06-26 09:12:54 +03007
Kyösti Mälkkie52738b2017-09-21 12:32:43 +03008static const PCIe_PORT_DESCRIPTOR PortList[] = {
Kyösti Mälkkie75deb62014-06-26 09:12:54 +03009 {
Kyösti Mälkki9d035fa2015-05-23 14:27:44 +030010 0,
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030011 PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 3, 3),
12 PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, 2, 5,
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030013 HotplugDisabled,
14 PcieGenMaxSupported,
15 PcieGenMaxSupported,
16 AspmDisabled, 0x01, 0)
17 },
18 /* Initialize Port descriptor (PCIe port, Lanes 1, PCI Device Number 2, ...) */
19 {
Kyösti Mälkki9d035fa2015-05-23 14:27:44 +030020 0,
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030021 PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 2, 2),
22 PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, 2, 4,
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030023 HotplugDisabled,
24 PcieGenMaxSupported,
25 PcieGenMaxSupported,
26 AspmDisabled, 0x02, 0)
27 },
28 /* Initialize Port descriptor (PCIe port, Lanes 2, PCI Device Number 2, ...) */
29 {
Kyösti Mälkki9d035fa2015-05-23 14:27:44 +030030 0,
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030031 PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 1, 1),
32 PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, 2, 3,
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030033 HotplugDisabled,
34 PcieGenMaxSupported,
35 PcieGenMaxSupported,
36 AspmDisabled, 0x03, 0)
37 },
38 /* Initialize Port descriptor (PCIe port, Lanes 3, PCI Device Number 2, ...) */
39 {
40 0,
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030041 PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 0, 0),
42 PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, 2, 2,
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030043 HotplugDisabled,
44 PcieGenMaxSupported,
45 PcieGenMaxSupported,
46 AspmDisabled, 0x04, 0)
47 },
48 /* Initialize Port descriptor (PCIe port, Lanes 4-7, PCI Device Number 4, ...) */
49 {
Kyösti Mälkki9d035fa2015-05-23 14:27:44 +030050 DESCRIPTOR_TERMINATE_LIST,
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030051 PCIE_ENGINE_DATA_INITIALIZER(PciePortEngine, 4, 7),
52 PCIE_PORT_DATA_INITIALIZER_V2(PortEnabled, ChannelTypeExt6db, 2, 1,
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030053 HotplugDisabled,
54 PcieGenMaxSupported,
55 PcieGenMaxSupported,
56 AspmDisabled, 0x05, 0)
57 }
58};
59
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030060static const PCIe_DDI_DESCRIPTOR DdiList[] = {
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030061 /* DP0 to HDMI0/DP */
62 {
63 0,
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030064 PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 8, 11),
65 PCIE_DDI_DATA_INITIALIZER(ConnectorTypeHDMI, Aux1, Hdp1)
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030066 },
67 /* DP1 to FCH */
68 {
Dave Frodin83405a12014-06-05 11:49:04 -060069 DESCRIPTOR_TERMINATE_LIST,
Kyösti Mälkkie52738b2017-09-21 12:32:43 +030070 PCIE_ENGINE_DATA_INITIALIZER(PcieDdiEngine, 12, 15),
71 PCIE_DDI_DATA_INITIALIZER(ConnectorTypeHDMI, Aux2, Hdp2)
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030072 },
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030073};
74
75static const PCIe_COMPLEX_DESCRIPTOR PcieComplex = {
76 .Flags = DESCRIPTOR_TERMINATE_LIST,
77 .SocketId = 0,
78 .PciePortList = PortList,
79 .DdiLinkList = DdiList
80};
81
Kyösti Mälkkif27cb242017-03-04 07:51:21 +020082void board_BeforeInitReset(struct sysinfo *cb, AMD_RESET_PARAMS *Reset)
83{
84 FCH_RESET_INTERFACE *FchReset = &Reset->FchInterface;
Julius Wernercd49cce2019-03-05 16:53:33 -080085 FchReset->Xhci0Enable = CONFIG(HUDSON_XHCI_ENABLE);
Kyösti Mälkkif27cb242017-03-04 07:51:21 +020086 FchReset->Xhci1Enable = FALSE;
87}
88
Kyösti Mälkkif27cb242017-03-04 07:51:21 +020089void board_BeforeInitEarly(struct sysinfo *cb, AMD_EARLY_PARAMS *InitEarly)
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030090{
Kyösti Mälkki87df2672017-09-23 14:36:16 +030091 InitEarly->GnbConfig.PcieComplexList = &PcieComplex;
Kyösti Mälkkie75deb62014-06-26 09:12:54 +030092}
93
Kyösti Mälkki53052fe2016-04-27 09:04:11 +030094/*----------------------------------------------------------------------------------------
Paul Menzel8a017aa2020-05-29 02:48:42 +020095 * CUSTOMER OVERRIDES MEMORY TABLE
Kyösti Mälkki53052fe2016-04-27 09:04:11 +030096 *----------------------------------------------------------------------------------------
97 */
98
99/*
100 * Platform Specific Overriding Table allows IBV/OEM to pass in platform information to AGESA
101 * (e.g. MemClk routing, the number of DIMM slots per channel,...). If PlatformSpecificTable
102 * is populated, AGESA will base its settings on the data from the table. Otherwise, it will
103 * use its default conservative settings.
104 */
Kyösti Mälkkif27cb242017-03-04 07:51:21 +0200105static CONST PSO_ENTRY ROMDATA PlatformMemoryTable[] = {
Kyösti Mälkki53052fe2016-04-27 09:04:11 +0300106 #define SEED_A 0x12
107 HW_RXEN_SEED(
108 ANY_SOCKET, CHANNEL_A, ALL_DIMMS,
109 SEED_A, SEED_A, SEED_A, SEED_A, SEED_A, SEED_A, SEED_A, SEED_A,
110 SEED_A),
111
Kyösti Mälkkie52738b2017-09-21 12:32:43 +0300112 NUMBER_OF_DIMMS_SUPPORTED(ANY_SOCKET, ANY_CHANNEL, ONE_DIMM),
113 NUMBER_OF_CHANNELS_SUPPORTED(ANY_SOCKET, ONE_DIMM),
114 MOTHER_BOARD_LAYERS(LAYERS_6),
Kyösti Mälkki53052fe2016-04-27 09:04:11 +0300115
Kyösti Mälkkie52738b2017-09-21 12:32:43 +0300116 MEMCLK_DIS_MAP(ANY_SOCKET, ANY_CHANNEL, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
117 CKE_TRI_MAP(ANY_SOCKET, ANY_CHANNEL, 0x01, 0x02, 0x04, 0x08), /* TODO: bit2map, bit3map */
118 ODT_TRI_MAP(ANY_SOCKET, ANY_CHANNEL, 0x01, 0x02, 0x04, 0x08),
119 CS_TRI_MAP(ANY_SOCKET, ANY_CHANNEL, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00),
Kyösti Mälkki53052fe2016-04-27 09:04:11 +0300120
121 PSO_END
122};
123
Kyösti Mälkkif27cb242017-03-04 07:51:21 +0200124void board_BeforeInitPost(struct sysinfo *cb, AMD_POST_PARAMS *InitPost)
125{
126 InitPost->MemConfig.PlatformMemoryConfiguration = (PSO_ENTRY *)PlatformMemoryTable;
127}
128
129void board_BeforeInitMid(struct sysinfo *cb, AMD_MID_PARAMS *InitMid)
130{
131 /* 0 iGpuVgaAdapter, 1 iGpuVgaNonAdapter; */
132 InitMid->GnbMidConfiguration.iGpuVgaMode = 0;
133}