blob: df7720538e555a6adcb6338c3fd2b907e8407b29 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <bootstate.h>
#include <drivers/ipmi/ipmi_ops.h>
#include <drivers/ocp/dmi/ocp_dmi.h>
#include <gpio.h>
#include <soc/ramstage.h>
#include <soc/lewisburg_pch_gpio_defs.h>
extern struct fru_info_str fru_strings;
static const struct port_information SMBIOS_type8_info[] = {
/*
* Port Information fields:
* Internal Reference Designator,
* Internal Connector Type,
* External Reference Designator,
* External Connector_Type,
* Port Type
*/
{
"J7F5 - BMC JTAG HEADER",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
"J8A1 - MINISAS1",
CONN_SAS_SATA,
NULL,
CONN_NONE,
TYPE_SAS
},
{
"J8A2 - MINISAS2",
CONN_SAS_SATA,
NULL,
CONN_NONE,
TYPE_SAS
},
{
"J8A3 - SATA CONBINE1",
CONN_SAS_SATA,
NULL,
CONN_NONE,
TYPE_SAS
},
{
"J8B1 - ME_DBG",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
"J8D1 - VR_DBG",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
"J8E1 - TPM_MODULE",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
"J8F1 - M.2 CONNECTOR",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
"J9A1 - SATA RAID KEY",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
NULL,
CONN_NONE,
"J9A2 - DEBUG 80 PORT",
CONN_OTHER,
TYPE_OTHER_PORT
},
{
"J9A3 - CPU & PCH XDP",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
NULL,
CONN_NONE,
"J9A5 - USB conn",
CONN_ACCESS_BUS_USB,
TYPE_USB
},
{
"J9B1 - BMC_DBG",
CONN_OTHER,
NULL,
CONN_NONE,
TYPE_OTHER_PORT
},
{
NULL,
CONN_NONE,
"J9D1 - USB3.0 TYPE C",
CONN_ACCESS_BUS_USB,
TYPE_USB
},
{
NULL,
CONN_NONE,
"J9E1 - VGA",
CONN_OTHER,
TYPE_OTHER_PORT
},
{
NULL,
CONN_NONE,
"JA9G1 - ETH0",
CONN_RJ_45,
TYPE_NETWORK_PORT
},
};
void mainboard_silicon_init_params(FSPS_UPD *params)
{
}
static void pull_post_complete_pin(void *unused)
{
/* Pull Low post complete pin */
gpio_output(GPP_B20, 0);
}
#if CONFIG(GENERATE_SMBIOS_TABLES)
static int mainboard_smbios_data(struct device *dev, int *handle, unsigned long *current)
{
int len = 0;
// add port information
len += smbios_write_type8(
current, handle,
SMBIOS_type8_info,
ARRAY_SIZE(SMBIOS_type8_info)
);
return len;
}
#endif
static void tp_oem_smbios_strings(struct device *dev, struct smbios_type11 *t)
{
/* OEM string 1 to 6 */
ocp_oem_smbios_strings(dev, t);
/* OEM string 7 */
if (fru_strings.board_info.custom_count > 1 &&
*(fru_strings.board_info.board_custom + 1) != NULL)
t->count = smbios_add_oem_string(t->eos,
*(fru_strings.board_info.board_custom + 1));
else
t->count = smbios_add_oem_string(t->eos, TBF);
}
static void mainboard_enable(struct device *dev)
{
dev->ops->get_smbios_strings = tp_oem_smbios_strings,
read_fru_areas(CONFIG_BMC_KCS_BASE, CONFIG_FRU_DEVICE_ID, 0, &fru_strings);
#if CONFIG(GENERATE_SMBIOS_TABLES)
dev->ops->get_smbios_data = mainboard_smbios_data;
#endif
}
static void mainboard_final(void *chip_info)
{
}
struct chip_operations mainboard_ops = {
.enable_dev = mainboard_enable,
.final = mainboard_final,
};
BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY, pull_post_complete_pin, NULL);