blob: a07edb80e8ac9d3e4215ba86a37837c78f8f5bb8 [file] [log] [blame]
Patrick Georgiac959032020-05-05 22:49:26 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Johnny Linf9e12e82020-04-20 19:03:41 +08002
Patrick Rudolph7a593ab2024-01-25 15:15:00 +01003#include <cpu/x86/smm.h>
Johnny Linf9e12e82020-04-20 19:03:41 +08004#include <drivers/ipmi/ipmi_ops.h>
5#include <drivers/ocp/dmi/ocp_dmi.h>
Johnny Linf9e12e82020-04-20 19:03:41 +08006#include <soc/ramstage.h>
Patrick Rudolph7a593ab2024-01-25 15:15:00 +01007#include <soc/smmrelocate.h>
Jonathan Zhang75985f12020-01-16 11:20:09 -08008
Johnny Linf9e12e82020-04-20 19:03:41 +08009extern struct fru_info_str fru_strings;
10
BryantOud9da6982020-04-20 20:39:39 -070011static const struct port_information SMBIOS_type8_info[] = {
12 /*
13 * Port Information fields:
14 * Internal Reference Designator,
15 * Internal Connector Type,
16 * External Reference Designator,
17 * External Connector_Type,
18 * Port Type
19 */
20 {
21 "J7F5 - BMC JTAG HEADER",
22 CONN_OTHER,
23 NULL,
24 CONN_NONE,
25 TYPE_OTHER_PORT
26 },
27 {
28 "J8A1 - MINISAS1",
29 CONN_SAS_SATA,
30 NULL,
31 CONN_NONE,
32 TYPE_SAS
33 },
34 {
35 "J8A2 - MINISAS2",
36 CONN_SAS_SATA,
37 NULL,
38 CONN_NONE,
39 TYPE_SAS
40 },
41 {
42 "J8A3 - SATA CONBINE1",
43 CONN_SAS_SATA,
44 NULL,
45 CONN_NONE,
46 TYPE_SAS
47 },
48 {
49 "J8B1 - ME_DBG",
50 CONN_OTHER,
51 NULL,
52 CONN_NONE,
53 TYPE_OTHER_PORT
54 },
55 {
56 "J8D1 - VR_DBG",
57 CONN_OTHER,
58 NULL,
59 CONN_NONE,
60 TYPE_OTHER_PORT
61 },
62 {
63 "J8E1 - TPM_MODULE",
64 CONN_OTHER,
65 NULL,
66 CONN_NONE,
67 TYPE_OTHER_PORT
68 },
69 {
70 "J8F1 - M.2 CONNECTOR",
71 CONN_OTHER,
72 NULL,
73 CONN_NONE,
74 TYPE_OTHER_PORT
75 },
76 {
77 "J9A1 - SATA RAID KEY",
78 CONN_OTHER,
79 NULL,
80 CONN_NONE,
81 TYPE_OTHER_PORT
82 },
83 {
84 NULL,
85 CONN_NONE,
86 "J9A2 - DEBUG 80 PORT",
87 CONN_OTHER,
88 TYPE_OTHER_PORT
89 },
90 {
91 "J9A3 - CPU & PCH XDP",
92 CONN_OTHER,
93 NULL,
94 CONN_NONE,
95 TYPE_OTHER_PORT
96 },
97 {
98 NULL,
99 CONN_NONE,
100 "J9A5 - USB conn",
101 CONN_ACCESS_BUS_USB,
102 TYPE_USB
103 },
104 {
105 "J9B1 - BMC_DBG",
106 CONN_OTHER,
107 NULL,
108 CONN_NONE,
109 TYPE_OTHER_PORT
110 },
111 {
112 NULL,
113 CONN_NONE,
114 "J9D1 - USB3.0 TYPE C",
115 CONN_ACCESS_BUS_USB,
116 TYPE_USB
117 },
118 {
119 NULL,
120 CONN_NONE,
121 "J9E1 - VGA",
122 CONN_OTHER,
123 TYPE_OTHER_PORT
124 },
125 {
126 NULL,
127 CONN_NONE,
128 "JA9G1 - ETH0",
129 CONN_RJ_45,
130 TYPE_NETWORK_PORT
131 },
132};
133
Jonathan Zhang75985f12020-01-16 11:20:09 -0800134void mainboard_silicon_init_params(FSPS_UPD *params)
135{
136}
BryantOu4fc59af2020-04-15 23:17:01 -0700137
BryantOud9da6982020-04-20 20:39:39 -0700138#if CONFIG(GENERATE_SMBIOS_TABLES)
139static int mainboard_smbios_data(struct device *dev, int *handle, unsigned long *current)
140{
141 int len = 0;
142
143 // add port information
144 len += smbios_write_type8(
145 current, handle,
146 SMBIOS_type8_info,
147 ARRAY_SIZE(SMBIOS_type8_info)
148 );
149
150 return len;
151}
152#endif
Johnny Linf9e12e82020-04-20 19:03:41 +0800153
154static void tp_oem_smbios_strings(struct device *dev, struct smbios_type11 *t)
155{
156 /* OEM string 1 to 6 */
157 ocp_oem_smbios_strings(dev, t);
158
159 /* OEM string 7 */
160 if (fru_strings.board_info.custom_count > 1 &&
161 *(fru_strings.board_info.board_custom + 1) != NULL)
162 t->count = smbios_add_oem_string(t->eos,
163 *(fru_strings.board_info.board_custom + 1));
164 else
165 t->count = smbios_add_oem_string(t->eos, TBF);
166}
167
168static void mainboard_enable(struct device *dev)
169{
Elyes Haouas7ac796c2022-09-29 12:46:46 +0200170 dev->ops->get_smbios_strings = tp_oem_smbios_strings;
Johnny Linf9e12e82020-04-20 19:03:41 +0800171 read_fru_areas(CONFIG_BMC_KCS_BASE, CONFIG_FRU_DEVICE_ID, 0, &fru_strings);
BryantOud9da6982020-04-20 20:39:39 -0700172#if CONFIG(GENERATE_SMBIOS_TABLES)
173 dev->ops->get_smbios_data = mainboard_smbios_data;
174#endif
Johnny Linf9e12e82020-04-20 19:03:41 +0800175}
176
177static void mainboard_final(void *chip_info)
178{
Johnny Linf9e12e82020-04-20 19:03:41 +0800179}
180
Patrick Rudolph7a593ab2024-01-25 15:15:00 +0100181void smm_mainboard_pci_resource_store_init(struct smm_pci_resource_info *slots, size_t size)
182{
183 soc_ubox_store_resources(slots, size);
184}
185
Johnny Linf9e12e82020-04-20 19:03:41 +0800186struct chip_operations mainboard_ops = {
187 .enable_dev = mainboard_enable,
188 .final = mainboard_final,
189};