1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <soc/iio.h> 4 5 #include <fsp/util.h> 6 #include <IioPcieConfigUpd.h> 7 8 static IIO_BOARD_SETTINGS_HOB iio_upd_hob; 9 soc_config_iio_pe_ports(FSPM_UPD * mupd,const struct iio_pe_config * config_table,unsigned int num_entries)10void soc_config_iio_pe_ports(FSPM_UPD *mupd, const struct iio_pe_config *config_table, 11 unsigned int num_entries) 12 { 13 int i; 14 uint8_t socket, pe, port; 15 16 const struct iio_pe_config *board_pe_config; 17 const struct iio_port_config *board_port_config; 18 19 IIO_BOARD_SETTINGS_PER_PE *upd_pe_config; 20 IIO_BOARD_SETTINGS_PER_PORT *upd_port_config; 21 22 for (i = 0; i < num_entries; i++) { 23 board_pe_config = &config_table[i]; 24 socket = board_pe_config->socket; 25 pe = board_pe_config->pe; 26 27 upd_pe_config = &(iio_upd_hob.Socket[socket].Pe[pe]); 28 29 if ((socket >= MAX_SOCKET) || (pe >= MAX_IIO_PCIE_PER_SOCKET)) 30 continue; 31 32 for (port = 0; port < MAX_IIO_PORTS_PER_STACK; port++) { 33 upd_port_config = &(upd_pe_config->Port[port]); 34 board_port_config = &(board_pe_config->port_config[port]); 35 36 upd_pe_config->Bifurcation = board_pe_config->bifurcation; 37 upd_pe_config->CxlSupportInUba = board_pe_config->cxl_support; 38 39 upd_port_config->Vpp.Address = board_port_config->vpp_address; 40 upd_port_config->Vpp.Port = board_port_config->vpp_port; 41 upd_port_config->Vpp.MuxAddress = board_port_config->vpp_mux_address; 42 upd_port_config->Vpp.MuxChannel = board_port_config->vpp_mux_channel; 43 44 upd_port_config->Slot.Eip = board_port_config->slot_eip; 45 upd_port_config->Slot.HotPlugSurprise = board_port_config->slot_hps; 46 upd_port_config->Slot.PowerInd = board_port_config->slot_pind; 47 upd_port_config->Slot.AttentionInd = board_port_config->slot_aind; 48 upd_port_config->Slot.PowerCtrl = board_port_config->slot_pctl; 49 upd_port_config->Slot.AttentionBtn = board_port_config->slot_abtn; 50 51 upd_port_config->VppEnabled = board_port_config->vpp_enabled; 52 upd_port_config->VppExpType = board_port_config->vpp_exp_type; 53 54 upd_port_config->SlotImplemented = board_port_config->slot_implemented; 55 upd_port_config->HotPlug = board_port_config->hot_plug; 56 upd_port_config->MrlSensorPresent = board_port_config->mrl_sensor_present; 57 upd_port_config->SlotPowerLimitScale = board_port_config->slot_power_limit_scale; 58 upd_port_config->SlotPowerLimitValue = board_port_config->slot_power_limit_value; 59 upd_port_config->PhysicalSlotNumber = board_port_config->physical_slot_number; 60 } 61 } 62 63 mupd->FspmConfig.IioBoardSettingsHobPtr = (UINT32)&iio_upd_hob; 64 mupd->FspmConfig.IioBoardSettingsHobLength = sizeof(iio_upd_hob); 65 } 66