Lines Matching +full:ssif +full:- +full:bmc
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
95 if (h->type != 38 || h->length <
101 switch (s->interface_type) {
105 info->address = IPMI_BAR_ADDR(s->base_address) |
106 IPMI_BAM_ADDR_LSB(s->base_address_modifier);
107 info->io_mode = IPMI_BAR_MODE(s->base_address);
108 switch (IPMI_BAM_REG_SPACING(s->base_address_modifier)) {
110 info->offset = 1;
113 info->offset = 4;
116 info->offset = 2;
124 if ((s->base_address & 0xffffffffffffff00) != 0) {
125 printf("SMBIOS: Invalid SSIF SMBus address, using BMC I2C slave address instead\n");
126 info->address = s->i2c_slave_address;
129 info->address = IPMI_BAR_ADDR(s->base_address);
134 if (s->length > offsetof(struct ipmi_entry, interrupt_number)) {
135 if (s->interrupt_number > 15)
136 printf("SMBIOS: Non-ISA IRQ %d for IPMI\n",
137 s->interrupt_number);
139 info->irq = s->interrupt_number;
141 info->iface_type = s->interface_type;
184 table = pmap_mapbios(addr, header->length);
188 pmap_unmapbios(header, header->length);
193 table = pmap_mapbios(header->structure_table_address,
194 header->structure_table_length);
195 smbios_walk_table(table, header->number_structures,
196 header->structure_table_length, smbios_ipmi_info, info);
199 pmap_unmapbios(table, header->structure_table_length);
200 pmap_unmapbios(header, header->length);
236 return (info->iface_type != 0);
248 for (i = 0; i < e->length; i++) {